@shznet/pdf-sign-control 1.0.0 → 1.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 CHANGED
@@ -108,6 +108,9 @@ Updates a field's properties.
108
108
  #### `getFields(): SignatureField[]`
109
109
  Returns the current list of fields.
110
110
 
111
+ #### `clearFields(): void`
112
+ Remove all fields from the document.
113
+
111
114
  #### `setFields(fields: SignatureField[]): void`
112
115
  Replace all fields with a new set.
113
116
 
@@ -121,6 +124,7 @@ Subscribe to events:
121
124
  - `field:remove`: Fired when a field is removed - `(data: { fieldId: string }) => void`
122
125
  - `field:update`: Fired when a field is updated - `(data: { fieldId: string, updates: Partial<SignatureField> }) => void`
123
126
  - `fields:change`: Fired when any field changes - `(fields: SignatureField[]) => void`
127
+ - `field:selection-change`: Fired when selection changes - `(data: { field: SignatureField | null }) => void`
124
128
 
125
129
  ### Printing
126
130
 
package/dist/index.js CHANGED
@@ -17887,9 +17887,10 @@ class ha {
17887
17887
  this.element.appendChild(e), this.fieldElements.set(t.id, e);
17888
17888
  });
17889
17889
  }
17890
+ selectedFieldId = null;
17890
17891
  createFieldElement(t) {
17891
17892
  const e = document.createElement("div");
17892
- e.className = "sc-signature-field", e.dataset.id = t.id, e.dataset.moveable = String(t.draggable !== !1), e.style.position = "absolute", e.style.pointerEvents = "auto", e.style.boxSizing = "border-box", e.style.border = "1px solid #0056b3", e.style.backgroundColor = "rgba(0, 86, 179, 0.1)", e.style.cursor = t.draggable !== !1 ? "move" : "default", t.style && Object.assign(e.style, t.style);
17893
+ e.className = "sc-signature-field", e.dataset.id = t.id, e.dataset.moveable = String(t.draggable !== !1), e.style.position = "absolute", e.style.pointerEvents = "auto", e.style.boxSizing = "border-box", e.style.border = "1px solid #7FA1C3", e.style.backgroundColor = "rgba(127, 161, 195, 0.1)", e.style.cursor = t.draggable !== !1 ? "move" : "default", t.style && Object.assign(e.style, t.style);
17893
17894
  const s = document.createElement("div");
17894
17895
  if (s.className = "sc-field-content", s.style.overflow = "hidden", s.style.display = "flex", s.style.alignItems = "center", s.style.justifyContent = "center", t.type === "text")
17895
17896
  s.textContent = t.content || "", s.style.whiteSpace = "pre-wrap", s.style.fontSize = "7pt", s.style.fontFamily = "sans-serif", s.style.lineHeight = "1.2", s.style.textAlign = "center";
@@ -17902,12 +17903,20 @@ class ha {
17902
17903
  const i = document.createElement("img");
17903
17904
  i.src = t.content || "", i.style.maxWidth = "100%", i.style.maxHeight = "100%", i.style.pointerEvents = "none", s.appendChild(i);
17904
17905
  }
17905
- return e.appendChild(s), t.resizable !== !1 && this.addResizeHandles(e), t.deletable !== !1 && this.addDeleteButton(e, t.id), this.updateElementPosition(e, t), e;
17906
+ return e.addEventListener("mousedown", (i) => {
17907
+ this.eventBus.emit("field:focus", { fieldId: t.id });
17908
+ }), e.addEventListener("touchstart", (i) => {
17909
+ this.eventBus.emit("field:focus", { fieldId: t.id });
17910
+ }, { passive: !1 }), e.appendChild(s), t.resizable !== !1 && this.addResizeHandles(e), t.deletable !== !1 && this.addDeleteButton(e, t.id), e.addEventListener("mouseenter", () => {
17911
+ this.selectedFieldId !== t.id && this.updateVisuals(e, t, !0, !1);
17912
+ }), e.addEventListener("mouseleave", () => {
17913
+ this.selectedFieldId !== t.id && this.updateVisuals(e, t, !1, !1);
17914
+ }), this.updateElementPosition(e, t), this.selectedFieldId === t.id && this.updateVisuals(e, t, !0, !0), e;
17906
17915
  }
17907
17916
  addResizeHandles(t) {
17908
17917
  ["nw", "ne", "sw", "se", "n", "e", "s", "w"].forEach((s) => {
17909
17918
  const i = document.createElement("div");
17910
- i.className = `sc-resize-handle sc-resize-${s}`, i.dataset.handle = s, i.style.position = "absolute", i.style.backgroundColor = "white", i.style.border = "1px solid #0056b3", i.style.zIndex = "2", i.style.boxSizing = "border-box";
17919
+ i.className = `sc-resize-handle sc-resize-${s}`, i.dataset.handle = s, i.style.position = "absolute", i.style.backgroundColor = "white", i.style.border = "1px solid #0056b3", i.style.zIndex = "2", i.style.boxSizing = "border-box", i.style.display = "none";
17911
17920
  const n = "8px", r = "6px", a = "14px";
17912
17921
  switch (s) {
17913
17922
  // Corners
@@ -17942,12 +17951,25 @@ class ha {
17942
17951
  }
17943
17952
  addDeleteButton(t, e) {
17944
17953
  const s = document.createElement("div");
17945
- s.className = "sc-delete-btn", s.innerHTML = '<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>', s.title = "Delete Field", s.style.position = "absolute", s.style.top = "0", s.style.right = "0", s.style.transform = "translate(50%, -50%)", s.style.width = "20px", s.style.height = "20px", s.style.borderRadius = "50%", s.style.backgroundColor = "#ff4d4f", s.style.color = "white", s.style.display = "flex", s.style.alignItems = "center", s.style.justifyContent = "center", s.style.cursor = "pointer", s.style.zIndex = "20", s.style.boxShadow = "0 2px 4px rgba(0,0,0,0.2)", s.style.opacity = "0", s.style.transition = "opacity 0.2s", t.addEventListener("mouseenter", () => s.style.opacity = "1"), t.addEventListener("mouseleave", () => s.style.opacity = "0"), s.addEventListener("click", (i) => {
17954
+ s.className = "sc-delete-btn", s.innerHTML = '<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>', s.title = "Delete Field", s.style.position = "absolute", s.style.top = "0", s.style.right = "0", s.style.transform = "translate(50%, -50%)", s.style.width = "20px", s.style.height = "20px", s.style.borderRadius = "50%", s.style.backgroundColor = "#ff4d4f", s.style.color = "white", s.style.display = "flex", s.style.alignItems = "center", s.style.justifyContent = "center", s.style.cursor = "pointer", s.style.zIndex = "20", s.style.boxShadow = "0 2px 4px rgba(0,0,0,0.2)", s.style.display = "none", s.addEventListener("click", (i) => {
17946
17955
  i.preventDefault(), i.stopPropagation(), this.eventBus.emit("field:delete", { fieldId: e });
17947
17956
  }), s.addEventListener("touchstart", (i) => {
17948
17957
  i.preventDefault(), i.stopPropagation(), this.eventBus.emit("field:delete", { fieldId: e });
17949
17958
  }, { passive: !1 }), t.appendChild(s);
17950
17959
  }
17960
+ select(t) {
17961
+ this.selectedFieldId = t, this.fields.forEach((e) => {
17962
+ const s = this.fieldElements.get(e.id);
17963
+ if (!s) return;
17964
+ const i = e.id === t;
17965
+ this.updateVisuals(s, e, i, i);
17966
+ });
17967
+ }
17968
+ updateVisuals(t, e, s, i) {
17969
+ t.querySelectorAll(".sc-resize-handle").forEach((a) => a.style.display = s ? "block" : "none");
17970
+ const r = t.querySelector(".sc-delete-btn");
17971
+ r && (r.style.display = s ? "flex" : "none"), i ? (t.style.border = "1px solid #0056b3", t.style.backgroundColor = "rgba(0, 86, 179, 0.1)") : s ? (t.style.border = "1px solid #0056b3", t.style.backgroundColor = "rgba(0, 86, 179, 0.05)") : (t.style.border = e.style?.border || "1px solid #7FA1C3", t.style.backgroundColor = e.style?.backgroundColor || "rgba(127, 161, 195, 0.1)");
17972
+ }
17951
17973
  updatePositions() {
17952
17974
  this.pageHeight !== 0 && this.fields.forEach((t) => {
17953
17975
  const e = this.fieldElements.get(t.id);
@@ -17982,7 +18004,7 @@ class tn {
17982
18004
  eventBus;
17983
18005
  element;
17984
18006
  constructor(t) {
17985
- this.container = t.container, this.pageIndex = t.pageIndex, this.scale = t.scale, this.eventBus = t.eventBus, this.element = document.createElement("div"), this.element.className = "page-view", this.element.dataset.pageIndex = this.pageIndex.toString(), this.element.style.position = "relative", this.element.style.flexShrink = "0", this.element.style.boxShadow = "0 2px 8px rgba(0,0,0,0.15)", this.canvasLayer = new ra(), this.element.appendChild(this.canvasLayer.getElement()), this.signatureLayer = new ha(this.eventBus), this.element.appendChild(this.signatureLayer.getElement()), t.pageDimensions && this.signatureLayer.setPageDimensions(
18007
+ this.container = t.container, this.pageIndex = t.pageIndex, this.scale = t.scale, this.eventBus = t.eventBus, this.element = document.createElement("div"), this.element.className = "page-view", this.element.dataset.pageIndex = this.pageIndex.toString(), this.element.style.position = "relative", this.element.style.flexShrink = "0", this.element.style.boxShadow = "0 2px 8px rgba(0,0,0,0.15)", this.element.style.margin = "0 auto", this.canvasLayer = new ra(), this.element.appendChild(this.canvasLayer.getElement()), this.signatureLayer = new ha(this.eventBus), this.element.appendChild(this.signatureLayer.getElement()), t.pageDimensions && this.signatureLayer.setPageDimensions(
17986
18008
  t.pageDimensions.width,
17987
18009
  t.pageDimensions.height,
17988
18010
  this.scale
@@ -17996,6 +18018,9 @@ class tn {
17996
18018
  setFields(t) {
17997
18019
  this.signatureLayer.setFields(t);
17998
18020
  }
18021
+ selectField(t) {
18022
+ this.signatureLayer.select(t);
18023
+ }
17999
18024
  async render() {
18000
18025
  if (!this.pdfPage) return;
18001
18026
  const t = this.pdfPage.getViewport({ scale: this.scale });
@@ -18058,7 +18083,7 @@ class ca {
18058
18083
  this.container = t, this.pdfDocument = e, this.eventBus = s, this.totalPages = e.numPages, this.scale = i ?? 1, this.pageInfo = n ?? /* @__PURE__ */ new Map(), this.initContainer(), await this.renderCurrentPage();
18059
18084
  }
18060
18085
  initContainer() {
18061
- this.container.innerHTML = "", this.container.style.position = "relative", this.container.style.overflow = "auto", this.container.style.display = "flex", this.container.style.flexDirection = "column", this.container.style.alignItems = "center", this.container.style.padding = "20px", this.pageContainer = document.createElement("div"), this.pageContainer.className = "single-page-container", this.container.appendChild(this.pageContainer);
18086
+ this.container.innerHTML = "", this.container.style.position = "relative", this.container.style.overflow = "auto", this.container.style.display = "flex", this.container.style.flexDirection = "column", this.container.style.alignItems = "", this.container.style.padding = "20px", this.pageContainer = document.createElement("div"), this.pageContainer.className = "single-page-container", this.container.appendChild(this.pageContainer);
18062
18087
  }
18063
18088
  async renderCurrentPage() {
18064
18089
  this.pageView && (this.pageView.destroy(), this.pageView = null), this.pageContainer.innerHTML = "";
@@ -18096,7 +18121,10 @@ class ca {
18096
18121
  return this.totalPages;
18097
18122
  }
18098
18123
  setScale(t) {
18099
- this.scale = t, this.pageView && this.pageView.updateScalePreview(t), this.eventBus.emit("scale:change", { scale: t }), this.zoomTimeout && clearTimeout(this.zoomTimeout), this.zoomTimeout = setTimeout(() => {
18124
+ const e = this.scale, s = t, i = this.container, n = i.clientWidth, r = i.clientHeight, a = i.scrollLeft, o = i.scrollTop, l = a + n / 2, h = o + r / 2, c = s / e;
18125
+ this.scale = t, this.pageView && this.pageView.updateScalePreview(t), this.eventBus.emit("scale:change", { scale: t });
18126
+ const u = l * c - n / 2, f = h * c - r / 2;
18127
+ i.scrollLeft = u, i.scrollTop = f, this.zoomTimeout && clearTimeout(this.zoomTimeout), this.zoomTimeout = setTimeout(() => {
18100
18128
  this.pageView && this.pageView.updateScaleFull(t), this.zoomTimeout = null;
18101
18129
  }, 150);
18102
18130
  }
@@ -18109,6 +18137,9 @@ class ca {
18109
18137
  this.pageView.setFields(e);
18110
18138
  }
18111
18139
  }
18140
+ selectField(t) {
18141
+ this.pageView?.selectField(t);
18142
+ }
18112
18143
  destroy() {
18113
18144
  this.zoomTimeout && (clearTimeout(this.zoomTimeout), this.zoomTimeout = null), this.pageView && (this.pageView.destroy(), this.pageView = null), this.container.innerHTML = "";
18114
18145
  }
@@ -18130,7 +18161,7 @@ class da {
18130
18161
  this.isDestroyed = !1, this.container = t, this.pdfDocument = e, this.eventBus = s, this.totalPages = e.numPages, this.scale = i ?? 1, this.pageInfo = n ?? /* @__PURE__ */ new Map(), this.initContainer(), await this.renderAllPages(), this.isDestroyed || this.setupIntersectionObserver();
18131
18162
  }
18132
18163
  initContainer() {
18133
- this.container.innerHTML = "", this.container.style.position = "relative", this.container.style.overflow = "auto", this.container.style.display = "flex", this.container.style.flexDirection = "column", this.container.style.gap = "20px", this.container.style.alignItems = "center", this.container.style.padding = "20px", this.container.scrollTop = 0;
18164
+ this.container.innerHTML = "", this.container.style.position = "relative", this.container.style.overflow = "auto", this.container.style.display = "flex", this.container.style.flexDirection = "column", this.container.style.gap = "20px", this.container.style.alignItems = "", this.container.style.padding = "20px", this.container.scrollTop = 0;
18134
18165
  }
18135
18166
  async renderAllPages() {
18136
18167
  this.pageViews.forEach((t) => t.destroy()), this.pageViews = [];
@@ -18206,8 +18237,28 @@ class da {
18206
18237
  return this.totalPages;
18207
18238
  }
18208
18239
  setScale(t) {
18209
- this.scale = t, this.pageViews.forEach((e) => e.updateScalePreview(t)), this.eventBus.emit("scale:change", { scale: t }), this.zoomTimeout && clearTimeout(this.zoomTimeout), this.zoomTimeout = setTimeout(() => {
18210
- this.pageViews.forEach((e) => e.updateScaleFull(t)), this.zoomTimeout = null;
18240
+ const e = this.scale, s = this.container, i = s.clientHeight, r = s.scrollTop + i / 2;
18241
+ let a = -1, o = 0;
18242
+ for (let l = 0; l < this.pageViews.length; l++) {
18243
+ const h = this.pageViews[l], c = h.element.offsetTop, u = h.element.offsetHeight, f = c + u;
18244
+ if (r < f) {
18245
+ a = l, o = (r - c) / u;
18246
+ break;
18247
+ }
18248
+ }
18249
+ if (a === -1 && this.pageViews.length > 0) {
18250
+ a = this.pageViews.length - 1;
18251
+ const l = this.pageViews[a];
18252
+ o = (r - l.element.offsetTop) / l.element.offsetHeight;
18253
+ }
18254
+ if (this.scale = t, this.pageViews.forEach((l) => l.updateScalePreview(t)), this.eventBus.emit("scale:change", { scale: t }), a !== -1) {
18255
+ const l = this.pageViews[a], h = l.element.offsetTop, c = l.element.offsetHeight, u = h + o * c;
18256
+ s.scrollTop = u - i / 2;
18257
+ const f = s.clientWidth, p = s.scrollLeft + f / 2, b = t / e;
18258
+ s.scrollLeft = p * b - f / 2;
18259
+ }
18260
+ this.zoomTimeout && clearTimeout(this.zoomTimeout), this.zoomTimeout = setTimeout(() => {
18261
+ this.pageViews.forEach((l) => l.updateScaleFull(t)), this.zoomTimeout = null;
18211
18262
  }, 150);
18212
18263
  }
18213
18264
  getScale() {
@@ -18219,6 +18270,9 @@ class da {
18219
18270
  e.setFields(s);
18220
18271
  });
18221
18272
  }
18273
+ selectField(t) {
18274
+ this.pageViews.forEach((e) => e.selectField(t));
18275
+ }
18222
18276
  destroy() {
18223
18277
  this.isDestroyed = !0, this.zoomTimeout && (clearTimeout(this.zoomTimeout), this.zoomTimeout = null), this.observer && (this.observer.disconnect(), this.observer = null), this.pageViews.forEach((t) => t.destroy()), this.pageViews = [], this.container.innerHTML = "";
18224
18278
  }
@@ -18235,6 +18289,7 @@ class ua {
18235
18289
  readyPromise = null;
18236
18290
  currentScale = 1;
18237
18291
  isDestroyed = !1;
18292
+ selectedFieldId = null;
18238
18293
  constructor(t) {
18239
18294
  this.container = t.container, this.eventBus = new nn(), this.loader = new na(t.pdfLoaderOptions), this.currentViewMode = t.viewMode ?? "scroll", t.fields && (this.fields = [...t.fields]), this.zoomHandler = new rn({
18240
18295
  container: this.container,
@@ -18246,6 +18301,11 @@ class ua {
18246
18301
  this.handleFieldDrop(e.fieldId, e.clientX, e.clientY, e.elementX, e.elementY);
18247
18302
  }), this.eventBus.on("field:ui:resize", (e) => {
18248
18303
  this.updateField(e.fieldId, e.updates);
18304
+ }), this.eventBus.on("field:focus", (e) => {
18305
+ this.selectField(e.fieldId);
18306
+ }), this.container.addEventListener("mousedown", (e) => {
18307
+ const s = e.target;
18308
+ s.closest(".sc-signature-field") || s.closest(".sc-resize-handle") || s.closest(".sc-delete-btn") || this.selectField(null);
18249
18309
  });
18250
18310
  }
18251
18311
  async load(t) {
@@ -18272,7 +18332,7 @@ class ua {
18272
18332
  this.strategy.destroy();
18273
18333
  return;
18274
18334
  }
18275
- this.fields.length > 0 && this.strategy.setFields(this.fields);
18335
+ this.fields.length > 0 && this.strategy.setFields(this.fields), this.selectedFieldId && this.strategy.selectField(this.selectedFieldId);
18276
18336
  }
18277
18337
  }
18278
18338
  createStrategy(t) {
@@ -18341,7 +18401,7 @@ class ua {
18341
18401
  throw new Error("PDF document not loaded");
18342
18402
  if (!this.strategy)
18343
18403
  throw new Error("PDF viewer not ready. Please wait for PDF to fully load.");
18344
- if (this.readyPromise && await this.readyPromise, t.pageNumber < 1 || t.pageNumber > this.pdfDocument.numPages)
18404
+ if (this.readyPromise && await this.readyPromise, typeof t.pageNumber != "number" || isNaN(t.pageNumber) || t.pageNumber < 1 || t.pageNumber > this.pdfDocument.numPages)
18345
18405
  throw new Error(`Invalid page number: ${t.pageNumber}. Document has ${this.pdfDocument.numPages} pages.`);
18346
18406
  if (t.rect.width <= 0 || t.rect.height <= 0)
18347
18407
  throw new Error("Field width and height must be greater than 0");
@@ -18363,12 +18423,22 @@ class ua {
18363
18423
  this.fields.push(t), this.strategy?.setFields(this.fields), this.eventBus.emit("field:add", t), this.eventBus.emit("fields:change", this.fields);
18364
18424
  }
18365
18425
  removeField(t) {
18366
- this.fields = this.fields.filter((e) => e.id !== t), this.strategy?.setFields(this.fields), this.eventBus.emit("field:remove", { fieldId: t }), this.eventBus.emit("fields:change", this.fields);
18426
+ this.selectedFieldId === t && this.selectField(null), this.fields = this.fields.filter((e) => e.id !== t), this.strategy?.setFields(this.fields), this.eventBus.emit("field:remove", { fieldId: t }), this.eventBus.emit("fields:change", this.fields);
18367
18427
  }
18368
18428
  updateField(t, e) {
18369
18429
  const s = this.fields.findIndex((i) => i.id === t);
18370
18430
  s !== -1 && (this.fields[s] = { ...this.fields[s], ...e }, this.strategy?.setFields(this.fields), this.eventBus.emit("field:update", { fieldId: t, updates: e }), this.eventBus.emit("fields:change", this.fields));
18371
18431
  }
18432
+ selectField(t) {
18433
+ if (this.selectedFieldId === t)
18434
+ return;
18435
+ this.selectedFieldId = t, this.strategy?.selectField(t);
18436
+ let e = null;
18437
+ t && (e = this.fields.find((s) => String(s.id) === String(t)) || null, e || console.warn(`[PdfSignControl] Selection warning: Field with ID "${t}" not found in local state. Available IDs:`, this.fields.map((s) => s.id))), this.eventBus.emit("field:selection-change", { field: e });
18438
+ }
18439
+ clearFields() {
18440
+ this.selectField(null), this.fields = [], this.strategy?.setFields(this.fields), this.eventBus.emit("fields:change", this.fields);
18441
+ }
18372
18442
  handleFieldDrop(t, e, s, i, n) {
18373
18443
  const r = this.fields.find((v) => v.id === t);
18374
18444
  if (!r) return;
@@ -18574,6 +18644,9 @@ class pa {
18574
18644
  updateField(t, e) {
18575
18645
  this.viewer.updateField(t, e);
18576
18646
  }
18647
+ clearFields() {
18648
+ this.viewer.clearFields();
18649
+ }
18577
18650
  async print(t) {
18578
18651
  return this.viewer.print(t);
18579
18652
  }
@@ -23,6 +23,7 @@ export declare class PdfSignControl {
23
23
  addField(field: any): Promise<void>;
24
24
  removeField(fieldId: string): void;
25
25
  updateField(fieldId: string, updates: any): void;
26
+ clearFields(): void;
26
27
  print(options?: {
27
28
  withSignatures?: boolean;
28
29
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"PdfSignControl.d.ts","sourceRoot":"","sources":["../../src/lib/PdfSignControl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE7D,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAY;gBAEd,OAAO,EAAE,qBAAqB;IAIpC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,WAAW,IAAI,QAAQ;IAKvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,QAAQ,IAAI,IAAI;IAIhB,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAKvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,QAAQ,IAAI,MAAM;IAIZ,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAK9F,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAI9C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAK/C,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;IAI9B,SAAS,IAAI,GAAG,EAAE;IAIZ,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAI1C,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE,OAAO;CAGV"}
1
+ {"version":3,"file":"PdfSignControl.d.ts","sourceRoot":"","sources":["../../src/lib/PdfSignControl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE7D,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAY;gBAEd,OAAO,EAAE,qBAAqB;IAIpC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,WAAW,IAAI,QAAQ;IAKvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,QAAQ,IAAI,IAAI;IAIhB,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAKvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,QAAQ,IAAI,MAAM;IAIZ,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAK9F,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAI9C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAK/C,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;IAI9B,SAAS,IAAI,GAAG,EAAE;IAIZ,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAIhD,WAAW,IAAI,IAAI;IAIb,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE,OAAO;CAGV"}
@@ -23,6 +23,7 @@ export declare class PdfPageView {
23
23
  constructor(options: PdfPageViewOptions);
24
24
  setPdfPage(pdfPage: PDFPageProxy): void;
25
25
  setFields(fields: SignatureField[]): void;
26
+ selectField(fieldId: string | null): void;
26
27
  render(): Promise<void>;
27
28
  /**
28
29
  * Quick preview render (lower quality, faster)
@@ -1 +1 @@
1
- {"version":3,"file":"PdfPageView.d.ts","sourceRoot":"","sources":["../../../src/lib/engine/PdfPageView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAA6B;IAC5C,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAW;IAEpB,OAAO,EAAE,WAAW,CAAC;gBAEhB,OAAO,EAAE,kBAAkB;IAgCvC,UAAU,CAAC,OAAO,EAAE,YAAY;IAahC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE;IAI5B,MAAM;IAcZ;;OAEG;IACG,aAAa;IAanB;;OAEG;IACG,UAAU;IAahB,WAAW,CAAC,KAAK,EAAE,MAAM;IAKzB;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAKhC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM;IAK7B,OAAO;CAKV"}
1
+ {"version":3,"file":"PdfPageView.d.ts","sourceRoot":"","sources":["../../../src/lib/engine/PdfPageView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAA6B;IAC5C,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAW;IAEpB,OAAO,EAAE,WAAW,CAAC;gBAEhB,OAAO,EAAE,kBAAkB;IAiCvC,UAAU,CAAC,OAAO,EAAE,YAAY;IAahC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE;IAIlC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5B,MAAM;IAcZ;;OAEG;IACG,aAAa;IAanB;;OAEG;IACG,UAAU;IAahB,WAAW,CAAC,KAAK,EAAE,MAAM;IAKzB;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAKhC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM;IAK7B,OAAO;CAKV"}
@@ -17,6 +17,7 @@ export declare class PdfViewer {
17
17
  private readyPromise;
18
18
  private currentScale;
19
19
  private isDestroyed;
20
+ private selectedFieldId;
20
21
  constructor(options: PdfViewerOptions);
21
22
  load(source: string | Uint8Array | ArrayBuffer): Promise<void>;
22
23
  private initStrategy;
@@ -45,6 +46,8 @@ export declare class PdfViewer {
45
46
  addField(field: SignatureField): Promise<void>;
46
47
  removeField(fieldId: string): void;
47
48
  updateField(fieldId: string, updates: Partial<SignatureField>): void;
49
+ selectField(fieldId: string | null): void;
50
+ clearFields(): void;
48
51
  private handleFieldDrop;
49
52
  on(event: string, handler: (data: any) => void): void;
50
53
  off(event: string, handler: (data: any) => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"PdfViewer.d.ts","sourceRoot":"","sources":["../../../src/lib/engine/PdfViewer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKzE,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,WAAW,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,gBAAgB;IAkC/B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YA4BtD,YAAY;IAuB1B,OAAO,CAAC,cAAc;IAUhB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD,WAAW,IAAI,QAAQ;IAIvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,QAAQ,IAAI,IAAI;IAIhB,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,QAAQ,IAAI,MAAM;IAIlB;;;;OAIG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAiC7F,OAAO,CAAC,MAAM,CAAwB;IAEtC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAKzC,SAAS,IAAI,cAAc,EAAE;IAIvB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkEpD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAUpE,OAAO,CAAC,eAAe;IA0FvB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAI9C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAIzC,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgMlE,OAAO;CAQV"}
1
+ {"version":3,"file":"PdfViewer.d.ts","sourceRoot":"","sources":["../../../src/lib/engine/PdfViewer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKzE,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,WAAW,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAuB;gBAElC,OAAO,EAAE,gBAAgB;IAgD/B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YA4BtD,YAAY;IA4B1B,OAAO,CAAC,cAAc;IAUhB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD,WAAW,IAAI,QAAQ;IAIvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5B,QAAQ,IAAI,IAAI;IAIhB,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,QAAQ,IAAI,MAAM;IAIlB;;;;OAIG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAiC7F,OAAO,CAAC,MAAM,CAAwB;IAEtC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAKzC,SAAS,IAAI,cAAc,EAAE;IAIvB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkEpD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUlC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAUpE,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAqBzC,WAAW,IAAI,IAAI;IAOnB,OAAO,CAAC,eAAe;IA0FvB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAI9C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAIzC,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgMlE,OAAO;CAQV"}
@@ -17,9 +17,12 @@ export declare class SignatureLayer {
17
17
  private handleDragEnd;
18
18
  private handleResizeEnd;
19
19
  private render;
20
+ private selectedFieldId;
20
21
  private createFieldElement;
21
22
  private addResizeHandles;
22
23
  private addDeleteButton;
24
+ select(fieldId: string | null): void;
25
+ private updateVisuals;
23
26
  private updatePositions;
24
27
  private updateElementPosition;
25
28
  destroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureLayer.d.ts","sourceRoot":"","sources":["../../../src/lib/layers/SignatureLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,qBAAa,cAAc;IACvB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,SAAgB,EAAE,EAAE,MAAM,CAAC;gBAEf,QAAQ,EAAE,QAAQ;IAqB9B,UAAU,IAAI,WAAW;IAIzB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE;IAKlC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAS9D,QAAQ,CAAC,KAAK,EAAE,MAAM;IAMtB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,kBAAkB;IA4E1B,OAAO,CAAC,gBAAgB;IA6ExB,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,qBAAqB;IAwC7B,OAAO;CAMV"}
1
+ {"version":3,"file":"SignatureLayer.d.ts","sourceRoot":"","sources":["../../../src/lib/layers/SignatureLayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,qBAAa,cAAc;IACvB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,SAAgB,EAAE,EAAE,MAAM,CAAC;gBAEf,QAAQ,EAAE,QAAQ;IAqB9B,UAAU,IAAI,WAAW;IAIzB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE;IAKlC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAS9D,QAAQ,CAAC,KAAK,EAAE,MAAM;IAMtB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,eAAe,CAAuB;IAE9C,OAAO,CAAC,kBAAkB;IA4G1B,OAAO,CAAC,gBAAgB;IAgFxB,OAAO,CAAC,eAAe;IA0CvB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAW7B,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,qBAAqB;IAwC7B,OAAO;CAMV"}
@@ -18,6 +18,7 @@ export interface IViewModeStrategy {
18
18
  getCurrentPage(): number;
19
19
  getTotalPages(): number;
20
20
  setFields(fields: SignatureField[]): void;
21
+ selectField(fieldId: string | null): void;
21
22
  addField?(field: SignatureField): void;
22
23
  removeField?(fieldId: string): void;
23
24
  updateField?(fieldId: string, updates: Partial<SignatureField>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"IViewModeStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/IViewModeStrategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjL,OAAO,IAAI,IAAI,CAAC;IAGhB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,IAAI,MAAM,CAAC;IAGnB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,IAAI,IAAI,CAAC;IACjB,YAAY,IAAI,IAAI,CAAC;IACrB,cAAc,IAAI,MAAM,CAAC;IACzB,aAAa,IAAI,MAAM,CAAC;IAGxB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAG1C,QAAQ,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CACzE"}
1
+ {"version":3,"file":"IViewModeStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/IViewModeStrategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjL,OAAO,IAAI,IAAI,CAAC;IAGhB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,IAAI,MAAM,CAAC;IAGnB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,IAAI,IAAI,CAAC;IACjB,YAAY,IAAI,IAAI,CAAC;IACrB,cAAc,IAAI,MAAM,CAAC;IACzB,aAAa,IAAI,MAAM,CAAC;IAGxB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAC1C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAG1C,QAAQ,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CACzE"}
@@ -33,6 +33,7 @@ export declare class ScrollStrategy implements IViewModeStrategy {
33
33
  setScale(scale: number): void;
34
34
  getScale(): number;
35
35
  setFields(fields: SignatureField[]): void;
36
+ selectField(fieldId: string | null): void;
36
37
  destroy(): void;
37
38
  }
38
39
  //# sourceMappingURL=ScrollStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/ScrollStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IACpD,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAO;IAEpB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAA6D;IAEvE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtL,OAAO,CAAC,aAAa;YAYP,cAAc;IA6C5B,OAAO,CAAC,yBAAyB;IAuCjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAgBlC,QAAQ,IAAI,IAAI;IAIhB,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAiB7B,QAAQ,IAAI,MAAM;IAIlB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IASzC,OAAO,IAAI,IAAI;CAclB"}
1
+ {"version":3,"file":"ScrollStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/ScrollStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,cAAe,YAAW,iBAAiB;IACpD,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAO;IAEpB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAA6D;IAEvE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtL,OAAO,CAAC,aAAa;YAYP,cAAc;IA6C5B,OAAO,CAAC,yBAAyB;IAuCjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAgBlC,QAAQ,IAAI,IAAI;IAIhB,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA0E7B,QAAQ,IAAI,MAAM;IAIlB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IASzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMzC,OAAO,IAAI,IAAI;CAclB"}
@@ -31,6 +31,7 @@ export declare class SinglePageStrategy implements IViewModeStrategy {
31
31
  setScale(scale: number): void;
32
32
  getScale(): number;
33
33
  setFields(fields: SignatureField[]): void;
34
+ selectField(fieldId: string | null): void;
34
35
  destroy(): void;
35
36
  }
36
37
  //# sourceMappingURL=SinglePageStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SinglePageStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/SinglePageStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IACxD,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAO;IAEpB,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAA6D;IAEvE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtL,OAAO,CAAC,aAAa;YAcP,iBAAiB;IAyC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMlC,QAAQ,IAAI,IAAI;IAIhB,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAqB7B,QAAQ,IAAI,MAAM;IAIlB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAQzC,OAAO,IAAI,IAAI;CAWlB"}
1
+ {"version":3,"file":"SinglePageStrategy.d.ts","sourceRoot":"","sources":["../../../src/lib/strategies/SinglePageStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IACxD,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAO;IAEpB,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAA6D;IAEvE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtL,OAAO,CAAC,aAAa;YAcP,iBAAiB;IAyC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMlC,QAAQ,IAAI,IAAI;IAIhB,YAAY,IAAI,IAAI;IAIpB,cAAc,IAAI,MAAM;IAIxB,aAAa,IAAI,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAuD7B,QAAQ,IAAI,MAAM;IAIlB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAQzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIzC,OAAO,IAAI,IAAI;CAWlB"}
@@ -18,6 +18,12 @@ export interface PageChangeEvent {
18
18
  export interface ScaleChangeEvent {
19
19
  scale: number;
20
20
  }
21
+ /**
22
+ * Event data for field selection change
23
+ */
24
+ export interface SelectionChangeEvent {
25
+ field: SignatureField | null;
26
+ }
21
27
  /**
22
28
  * Page dimensions in PDF points
23
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,SAAS,EAAE,WAAW,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,IAAI,EAAE;QACF,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE/B,oCAAoC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,SAAS,EAAE,WAAW,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,IAAI,EAAE;QACF,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE/B,oCAAoC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAClB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shznet/pdf-sign-control",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Core PDF signing logic for @shznet/pdf-sign",
5
5
  "license": "MIT",
6
6
  "repository": {