@shznet/pdf-sign-react 0.2.2 → 0.2.3

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
@@ -36,7 +36,7 @@ export function App() {
36
36
  ```
37
37
 
38
38
  ```tsx
39
- <button onClick={() => controlRef.current?.print({ withSignatures: true })}>
39
+ <button onClick={() => controlRef.current?.print()}>
40
40
  Print PDF
41
41
  </button>
42
42
  ```
@@ -46,10 +46,105 @@ export function App() {
46
46
  | Prop | Type | Description |
47
47
  |------|------|-------------|
48
48
  | `src` | `string \| Uint8Array \| ArrayBuffer` | PDF source to load. |
49
- | `viewMode` | `'single' \| 'scroll'` | Initial view mode. |
49
+ | `page` | `number` | Current page number (1-based). Supports two-way binding via state. |
50
+ | `viewMode` | `'single' \| 'scroll'` | View mode - changes trigger re-render. |
51
+ | `scale` | `number` | Zoom scale - changes trigger re-render. |
50
52
  | `zoomable` | `boolean` | Enable/disable gesture zooming (default: true). |
51
- | `fields` | `SignatureField[]` | Initial fields to render. |
53
+ | `fields` | `SignatureField[]` | Controlled fields list. |
54
+ | `pdfLoaderOptions` | `PdfLoaderOptions` | PDF.js configuration (workerSrc, etc.). |
55
+ | `onReady` | `(control: PdfSignControl) => void` | Callback when control is initialized. |
52
56
  | `onLoad` | `() => void` | Callback when PDF is loaded. |
53
- | `onPageChange` | `(page: number, total: number) => void` | Callback when page changes. |
57
+ | `onPageChange` | `(page: number, total: number) => void` | Callback when page changes (enables two-way binding). |
54
58
  | `onScaleChange` | `(scale: number) => void` | Callback when zoom level changes. |
55
- | `onFieldsChange` | `(fields: SignatureField[]) => void` | Callback when fields are added/removed/updated. |
59
+ | `onFieldsChange` | `(fields: SignatureField[]) => void` | Callback when fields are modified. |
60
+ | `onError` | `(error: Error) => void` | Callback on errors. |
61
+
62
+ ## Two-Way Binding Example
63
+
64
+ ```tsx
65
+ import { PdfSignReact } from '@shznet/pdf-sign-react';
66
+ import { useState } from 'react';
67
+
68
+ export function App() {
69
+ const [currentPage, setCurrentPage] = useState(1);
70
+ const [totalPages, setTotalPages] = useState(0);
71
+ const [scale, setScale] = useState(1.0);
72
+
73
+ return (
74
+ <div>
75
+ <div>
76
+ <button onClick={() => setCurrentPage(p => Math.max(1, p - 1))}>
77
+ Previous
78
+ </button>
79
+ <span>Page {currentPage} / {totalPages}</span>
80
+ <button onClick={() => setCurrentPage(p => Math.min(totalPages, p + 1))}>
81
+ Next
82
+ </button>
83
+
84
+ <button onClick={() => setScale(s => s + 0.25)}>Zoom In</button>
85
+ <button onClick={() => setScale(s => Math.max(0.25, s - 0.25))}>Zoom Out</button>
86
+ </div>
87
+
88
+ <PdfSignReact
89
+ src="https://example.com/doc.pdf"
90
+ page={currentPage}
91
+ scale={scale}
92
+ onPageChange={(page, total) => {
93
+ setCurrentPage(page); // Two-way binding
94
+ setTotalPages(total);
95
+ }}
96
+ onScaleChange={setScale} // Two-way binding
97
+ style={{ height: '600px' }}
98
+ />
99
+ </div>
100
+ );
101
+ }
102
+ ```
103
+
104
+ ## Ref Methods
105
+
106
+ Access methods via `ref` for imperative control:
107
+
108
+ ```tsx
109
+ const pdfRef = useRef<PdfSignReactRef>(null);
110
+
111
+ // Navigation
112
+ pdfRef.current?.goToPage(5);
113
+ pdfRef.current?.nextPage();
114
+ pdfRef.current?.previousPage();
115
+ const currentPage = pdfRef.current?.getCurrentPage();
116
+ const totalPages = pdfRef.current?.getTotalPages();
117
+
118
+ // Zoom
119
+ pdfRef.current?.setScale(1.5);
120
+ const scale = pdfRef.current?.getScale();
121
+
122
+ // View Mode
123
+ await pdfRef.current?.setViewMode('single');
124
+ const mode = pdfRef.current?.getViewMode();
125
+
126
+ // Page Dimensions
127
+ const dims = await pdfRef.current?.getPageDimensions(0); // Page 1 (0-based index)
128
+ console.log(`Page size: ${dims?.width} x ${dims?.height} points`);
129
+
130
+ // Field Management
131
+ await pdfRef.current?.addField({
132
+ id: 'sig1',
133
+ pageIndex: 0,
134
+ rect: { x: 100, y: 100, width: 200, height: 80 },
135
+ type: 'signature',
136
+ content: '<svg>...</svg>',
137
+ draggable: true,
138
+ resizable: true
139
+ });
140
+
141
+ pdfRef.current?.removeField('sig1');
142
+ pdfRef.current?.updateField('sig1', { rect: { x: 150, y: 150, width: 200, height: 80 } });
143
+ const fields = pdfRef.current?.getFields();
144
+
145
+ // Printing
146
+ await pdfRef.current?.print({ withSignatures: false });
147
+
148
+ // Direct Control Access
149
+ const control = pdfRef.current?.getControl();
150
+ ```
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { jsx as an } from "react/jsx-runtime";
2
- import { forwardRef as on, useRef as rs, useImperativeHandle as hn, useEffect as Kt } from "react";
2
+ import { forwardRef as on, useRef as rs, useImperativeHandle as hn, useEffect as Vt } from "react";
3
3
  var vi = (c) => {
4
4
  throw TypeError(c);
5
5
  }, Ds = (c, t, e) => t.has(c) || vi("Cannot " + e), Y = (c, t, e) => (Ds(c, t, "read from private field"), e ? e.call(c) : t.get(c)), Ft = (c, t, e) => t.has(c) ? vi("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(c) : t.set(c, e), mt = (c, t, e, s) => (Ds(c, t, "write to private field"), t.set(c, e), e), It = (c, t, e) => (Ds(c, t, "access private method"), e), ln = (c, t, e, s) => ({
@@ -361,38 +361,38 @@ function L(c, t, e, s = !1) {
361
361
  writable: !1
362
362
  }), e;
363
363
  }
364
- const Xt = (function() {
364
+ const Yt = (function() {
365
365
  function c(t, e) {
366
366
  this.message = t, this.name = e;
367
367
  }
368
368
  return c.prototype = new Error(), c.constructor = c, c;
369
369
  })();
370
- class Xs extends Xt {
370
+ class Xs extends Yt {
371
371
  constructor(t, e) {
372
372
  super(t, "PasswordException"), this.code = e;
373
373
  }
374
374
  }
375
- class os extends Xt {
375
+ class os extends Yt {
376
376
  constructor(t, e) {
377
377
  super(t, "UnknownErrorException"), this.details = e;
378
378
  }
379
379
  }
380
- class ys extends Xt {
380
+ class ys extends Yt {
381
381
  constructor(t) {
382
382
  super(t, "InvalidPDFException");
383
383
  }
384
384
  }
385
- class We extends Xt {
385
+ class We extends Yt {
386
386
  constructor(t, e, s) {
387
387
  super(t, "ResponseException"), this.status = e, this.missing = s;
388
388
  }
389
389
  }
390
- class bn extends Xt {
390
+ class bn extends Yt {
391
391
  constructor(t) {
392
392
  super(t, "FormatError");
393
393
  }
394
394
  }
395
- class $t extends Xt {
395
+ class $t extends Yt {
396
396
  constructor(t) {
397
397
  super(t, "AbortException");
398
398
  }
@@ -913,7 +913,7 @@ class ke {
913
913
  return T.applyInverseTransform(s, this.transform), s;
914
914
  }
915
915
  }
916
- class Rs extends Xt {
916
+ class Rs extends Yt {
917
917
  constructor(t, e = 0) {
918
918
  super(t, "RenderingCancelledException"), this.extraDelay = e;
919
919
  }
@@ -1110,7 +1110,7 @@ function Et(c) {
1110
1110
  } = c.getTransform().invertSelf();
1111
1111
  return [t, e, s, i, n, r];
1112
1112
  }
1113
- function jt(c, t, e = !1, s = !0) {
1113
+ function Wt(c, t, e = !1, s = !0) {
1114
1114
  if (t instanceof ke) {
1115
1115
  const {
1116
1116
  pageWidth: i,
@@ -8025,7 +8025,7 @@ class he {
8025
8025
  }
8026
8026
  for (const c in Ee)
8027
8027
  he.prototype[c] !== void 0 && (he.prototype[Ee[c]] = he.prototype[c]);
8028
- class Wt {
8028
+ class qt {
8029
8029
  static #t = null;
8030
8030
  static #e = "";
8031
8031
  static get workerPort() {
@@ -9209,7 +9209,7 @@ class yt {
9209
9209
  pageX: r,
9210
9210
  pageY: a
9211
9211
  } = s.rawDims;
9212
- this.#b = [1, 0, 0, -1, -r, a + n], this.#o = i, this.#n = n, yt.#P(), e.style.setProperty("--min-font-size", yt.#_), jt(e, s), this.#t.promise.finally(() => {
9212
+ this.#b = [1, 0, 0, -1, -r, a + n], this.#o = i, this.#n = n, yt.#P(), e.style.setProperty("--min-font-size", yt.#_), Wt(e, s), this.#t.promise.finally(() => {
9213
9213
  yt.#A.delete(this), this.#r = null, this.#p = null;
9214
9214
  }).catch(() => {
9215
9215
  });
@@ -9241,7 +9241,7 @@ class yt {
9241
9241
  onBefore: e = null
9242
9242
  }) {
9243
9243
  const s = t.scale * kt.pixelRatio, i = t.rotation;
9244
- if (i !== this.#u && (e?.(), this.#u = i, jt(this.#h, {
9244
+ if (i !== this.#u && (e?.(), this.#u = i, Wt(this.#h, {
9245
9245
  rotation: i
9246
9246
  })), s !== this.#d) {
9247
9247
  e?.(), this.#d = s;
@@ -9421,7 +9421,7 @@ function Gi(c = {}) {
9421
9421
  };
9422
9422
  l || (l = Cs.create({
9423
9423
  verbosity: d,
9424
- port: Wt.workerPort
9424
+ port: qt.workerPort
9425
9425
  }), t._worker = l);
9426
9426
  const de = {
9427
9427
  docId: e,
@@ -10011,14 +10011,14 @@ class Nr {
10011
10011
  return this._stats;
10012
10012
  }
10013
10013
  }
10014
- var Vt, Pt, Ht, le, gs, Jt, ne, St, Ue, Wi, qi, me, _e, Xe;
10014
+ var Gt, Pt, Ht, le, gs, Jt, ne, St, Ue, Wi, qi, me, _e, Xe;
10015
10015
  const rt = class Ae {
10016
10016
  constructor({
10017
10017
  name: t = null,
10018
10018
  port: e = null,
10019
10019
  verbosity: s = fn()
10020
10020
  } = {}) {
10021
- if (Ft(this, St), Ft(this, Vt, Promise.withResolvers()), Ft(this, Pt, null), Ft(this, Ht, null), Ft(this, le, null), this.name = t, this.destroyed = !1, this.verbosity = s, e) {
10021
+ if (Ft(this, St), Ft(this, Gt, Promise.withResolvers()), Ft(this, Pt, null), Ft(this, Ht, null), Ft(this, le, null), this.name = t, this.destroyed = !1, this.verbosity = s, e) {
10022
10022
  if (Y(Ae, ne).has(e))
10023
10023
  throw new Error("Cannot use more than one PDFWorker per port.");
10024
10024
  Y(Ae, ne).set(e, this), It(this, St, Wi).call(this, e);
@@ -10026,7 +10026,7 @@ const rt = class Ae {
10026
10026
  It(this, St, qi).call(this);
10027
10027
  }
10028
10028
  get promise() {
10029
- return Y(this, Vt).promise;
10029
+ return Y(this, Gt).promise;
10030
10030
  }
10031
10031
  get port() {
10032
10032
  return Y(this, Ht);
@@ -10047,8 +10047,8 @@ const rt = class Ae {
10047
10047
  return new Ae(t);
10048
10048
  }
10049
10049
  static get workerSrc() {
10050
- if (Wt.workerSrc)
10051
- return Wt.workerSrc;
10050
+ if (qt.workerSrc)
10051
+ return qt.workerSrc;
10052
10052
  throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
10053
10053
  }
10054
10054
  static get _setupFakeWorkerGlobal() {
@@ -10059,8 +10059,8 @@ const rt = class Ae {
10059
10059
  )).WorkerMessageHandler)());
10060
10060
  }
10061
10061
  };
10062
- Vt = /* @__PURE__ */ new WeakMap(), Pt = /* @__PURE__ */ new WeakMap(), Ht = /* @__PURE__ */ new WeakMap(), le = /* @__PURE__ */ new WeakMap(), gs = /* @__PURE__ */ new WeakMap(), Jt = /* @__PURE__ */ new WeakMap(), ne = /* @__PURE__ */ new WeakMap(), St = /* @__PURE__ */ new WeakSet(), Ue = function() {
10063
- Y(this, Vt).resolve(), Y(this, Pt).send("configure", {
10062
+ Gt = /* @__PURE__ */ new WeakMap(), Pt = /* @__PURE__ */ new WeakMap(), Ht = /* @__PURE__ */ new WeakMap(), le = /* @__PURE__ */ new WeakMap(), gs = /* @__PURE__ */ new WeakMap(), Jt = /* @__PURE__ */ new WeakMap(), ne = /* @__PURE__ */ new WeakMap(), St = /* @__PURE__ */ new WeakSet(), Ue = function() {
10063
+ Y(this, Gt).resolve(), Y(this, Pt).send("configure", {
10064
10064
  verbosity: this.verbosity
10065
10065
  });
10066
10066
  }, Wi = function(c) {
@@ -10079,7 +10079,7 @@ Vt = /* @__PURE__ */ new WeakMap(), Pt = /* @__PURE__ */ new WeakMap(), Ht = /*
10079
10079
  const t = new Worker(c, {
10080
10080
  type: "module"
10081
10081
  }), e = new ve("main", "worker", t), s = () => {
10082
- i.abort(), e.destroy(), t.terminate(), this.destroyed ? Y(this, Vt).reject(new Error("Worker was destroyed")) : It(this, St, me).call(this);
10082
+ i.abort(), e.destroy(), t.terminate(), this.destroyed ? Y(this, Gt).reject(new Error("Worker was destroyed")) : It(this, St, me).call(this);
10083
10083
  }, i = new AbortController();
10084
10084
  t.addEventListener("error", () => {
10085
10085
  Y(this, le) || s();
@@ -10115,7 +10115,7 @@ Vt = /* @__PURE__ */ new WeakMap(), Pt = /* @__PURE__ */ new WeakMap(), Ht = /*
10115
10115
  }, me = function() {
10116
10116
  Y(rt, Jt) || (I("Setting up fake worker."), mt(rt, Jt, !0)), rt._setupFakeWorkerGlobal.then((c) => {
10117
10117
  if (this.destroyed) {
10118
- Y(this, Vt).reject(new Error("Worker was destroyed"));
10118
+ Y(this, Gt).reject(new Error("Worker was destroyed"));
10119
10119
  return;
10120
10120
  }
10121
10121
  const t = new jn();
@@ -10123,7 +10123,7 @@ Vt = /* @__PURE__ */ new WeakMap(), Pt = /* @__PURE__ */ new WeakMap(), Ht = /*
10123
10123
  const e = `fake${ln(rt, gs)._++}`, s = new ve(e + "_worker", e, t);
10124
10124
  c.setup(s, t), mt(this, Pt, new ve(e, e + "_worker", t)), It(this, St, Ue).call(this);
10125
10125
  }).catch((c) => {
10126
- Y(this, Vt).reject(new Error(`Setting up fake worker failed: "${c.message}".`));
10126
+ Y(this, Gt).reject(new Error(`Setting up fake worker failed: "${c.message}".`));
10127
10127
  });
10128
10128
  }, _e = /* @__PURE__ */ new WeakSet(), Xe = function() {
10129
10129
  try {
@@ -10131,7 +10131,7 @@ Vt = /* @__PURE__ */ new WeakMap(), Pt = /* @__PURE__ */ new WeakMap(), Ht = /*
10131
10131
  } catch {
10132
10132
  return null;
10133
10133
  }
10134
- }, Ft(rt, _e), Ft(rt, gs, 0), Ft(rt, Jt, !1), Ft(rt, ne, /* @__PURE__ */ new WeakMap()), dt && (mt(rt, Jt, !0), Wt.workerSrc ||= "./pdf.worker.mjs"), rt._isSameOrigin = (c, t) => {
10134
+ }, Ft(rt, _e), Ft(rt, gs, 0), Ft(rt, Jt, !1), Ft(rt, ne, /* @__PURE__ */ new WeakMap()), dt && (mt(rt, Jt, !0), qt.workerSrc ||= "./pdf.worker.mjs"), rt._isSameOrigin = (c, t) => {
10135
10135
  const e = URL.parse(c);
10136
10136
  if (!e?.origin || e.origin === "null")
10137
10137
  return !1;
@@ -10913,7 +10913,7 @@ class Ye extends $r {
10913
10913
  return document.createElementNS(Rt, t);
10914
10914
  }
10915
10915
  }
10916
- const zr = 9, qt = /* @__PURE__ */ new WeakSet(), Ur = (/* @__PURE__ */ new Date()).getTimezoneOffset() * 60 * 1e3;
10916
+ const zr = 9, Xt = /* @__PURE__ */ new WeakSet(), Ur = (/* @__PURE__ */ new Date()).getTimezoneOffset() * 60 * 1e3;
10917
10917
  class fs {
10918
10918
  static create(t) {
10919
10919
  switch (t.data.annotationType) {
@@ -10932,7 +10932,7 @@ class fs {
10932
10932
  case "Sig":
10933
10933
  return new Wr(t);
10934
10934
  }
10935
- return new Yt(t);
10935
+ return new Kt(t);
10936
10936
  case it.POPUP:
10937
10937
  return new Ts(t);
10938
10938
  case it.FREETEXT:
@@ -11114,7 +11114,7 @@ class K {
11114
11114
  viewport: i
11115
11115
  }
11116
11116
  } = this, n = document.createElement("section");
11117
- n.setAttribute("data-annotation-id", e.id), !(this instanceof Yt) && !(this instanceof zs) && (n.tabIndex = 0);
11117
+ n.setAttribute("data-annotation-id", e.id), !(this instanceof Kt) && !(this instanceof zs) && (n.tabIndex = 0);
11118
11118
  const {
11119
11119
  style: r
11120
11120
  } = n;
@@ -11365,7 +11365,7 @@ class K {
11365
11365
  if (n === -1 || r === e)
11366
11366
  continue;
11367
11367
  const o = typeof a == "string" ? a : null, h = document.querySelector(`[data-element-id="${r}"]`);
11368
- if (h && !qt.has(h)) {
11368
+ if (h && !Xt.has(h)) {
11369
11369
  I(`_getElementsByName - element not allowed: ${r}`);
11370
11370
  continue;
11371
11371
  }
@@ -11381,7 +11381,7 @@ class K {
11381
11381
  const {
11382
11382
  exportValue: n
11383
11383
  } = i, r = i.getAttribute("data-element-id");
11384
- r !== e && qt.has(i) && s.push({
11384
+ r !== e && Xt.has(i) && s.push({
11385
11385
  id: r,
11386
11386
  exportValue: n,
11387
11387
  domElement: i
@@ -11575,7 +11575,7 @@ class zs extends K {
11575
11575
  }
11576
11576
  const u = document.querySelector(`[data-element-id="${d}"]`);
11577
11577
  if (u) {
11578
- if (!qt.has(u)) {
11578
+ if (!Xt.has(u)) {
11579
11579
  I(`_bindResetFormAction - element not allowed: ${d}`);
11580
11580
  continue;
11581
11581
  }
@@ -11607,7 +11607,7 @@ class Gr extends K {
11607
11607
  })), !this.data.popupRef && this.hasPopupData && (this.hasOwnCommentButton = !0, this._createPopup()), this.container.append(t), this.container;
11608
11608
  }
11609
11609
  }
11610
- class Yt extends K {
11610
+ class Kt extends K {
11611
11611
  render() {
11612
11612
  return this.container;
11613
11613
  }
@@ -11678,7 +11678,7 @@ class Yt extends K {
11678
11678
  e ? t.setAttribute("required", !0) : t.removeAttribute("required"), t.setAttribute("aria-required", e);
11679
11679
  }
11680
11680
  }
11681
- class jr extends Yt {
11681
+ class jr extends Kt {
11682
11682
  constructor(t) {
11683
11683
  const e = t.renderForms || t.data.hasOwnCanvas || !t.data.hasAppearance && !!t.data.fieldValue;
11684
11684
  super(t, {
@@ -11715,7 +11715,7 @@ class jr extends Yt {
11715
11715
  commitKey: 1,
11716
11716
  focused: !1
11717
11717
  };
11718
- this.data.multiLine ? (s = document.createElement("textarea"), s.textContent = a ?? n, this.data.doNotScroll && (s.style.overflowY = "hidden")) : (s = document.createElement("input"), s.type = this.data.password ? "password" : "text", s.setAttribute("value", a ?? n), this.data.doNotScroll && (s.style.overflowX = "hidden")), this.data.hasOwnCanvas && (s.hidden = !0), qt.add(s), this.contentElement = s, s.setAttribute("data-element-id", e), s.disabled = this.data.readOnly, s.name = this.data.fieldName, s.tabIndex = 0;
11718
+ this.data.multiLine ? (s = document.createElement("textarea"), s.textContent = a ?? n, this.data.doNotScroll && (s.style.overflowY = "hidden")) : (s = document.createElement("input"), s.type = this.data.password ? "password" : "text", s.setAttribute("value", a ?? n), this.data.doNotScroll && (s.style.overflowX = "hidden")), this.data.hasOwnCanvas && (s.hidden = !0), Xt.add(s), this.contentElement = s, s.setAttribute("data-element-id", e), s.disabled = this.data.readOnly, s.name = this.data.fieldName, s.tabIndex = 0;
11719
11719
  const {
11720
11720
  datetimeFormat: h,
11721
11721
  datetimeType: l,
@@ -11908,14 +11908,14 @@ class jr extends Yt {
11908
11908
  return this._setTextStyle(s), this._setBackgroundColor(s), this._setDefaultPropertiesFromJS(s), this.container.append(s), this.container;
11909
11909
  }
11910
11910
  }
11911
- class Wr extends Yt {
11911
+ class Wr extends Kt {
11912
11912
  constructor(t) {
11913
11913
  super(t, {
11914
11914
  isRenderable: !!t.data.hasOwnCanvas
11915
11915
  });
11916
11916
  }
11917
11917
  }
11918
- class qr extends Yt {
11918
+ class qr extends Kt {
11919
11919
  constructor(t) {
11920
11920
  super(t, {
11921
11921
  isRenderable: t.renderForms
@@ -11930,7 +11930,7 @@ class qr extends Yt {
11930
11930
  value: i
11931
11931
  })), this.container.classList.add("buttonWidgetAnnotation", "checkBox");
11932
11932
  const n = document.createElement("input");
11933
- return qt.add(n), n.setAttribute("data-element-id", s), n.disabled = e.readOnly, this._setRequired(n, this.data.required), n.type = "checkbox", n.name = e.fieldName, i && n.setAttribute("checked", !0), n.setAttribute("exportValue", e.exportValue), n.tabIndex = 0, n.addEventListener("change", (r) => {
11933
+ return Xt.add(n), n.setAttribute("data-element-id", s), n.disabled = e.readOnly, this._setRequired(n, this.data.required), n.type = "checkbox", n.name = e.fieldName, i && n.setAttribute("checked", !0), n.setAttribute("exportValue", e.exportValue), n.tabIndex = 0, n.addEventListener("change", (r) => {
11934
11934
  const {
11935
11935
  name: a,
11936
11936
  checked: o
@@ -11959,7 +11959,7 @@ class qr extends Yt {
11959
11959
  }), this._setEventListeners(n, null, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], (r) => r.target.checked)), this._setBackgroundColor(n), this._setDefaultPropertiesFromJS(n), this.container.append(n), this.container;
11960
11960
  }
11961
11961
  }
11962
- class Yi extends Yt {
11962
+ class Yi extends Kt {
11963
11963
  constructor(t) {
11964
11964
  super(t, {
11965
11965
  isRenderable: t.renderForms
@@ -11979,7 +11979,7 @@ class Yi extends Yt {
11979
11979
  value: !1
11980
11980
  });
11981
11981
  const n = document.createElement("input");
11982
- if (qt.add(n), n.setAttribute("data-element-id", s), n.disabled = e.readOnly, this._setRequired(n, this.data.required), n.type = "radio", n.name = e.fieldName, i && n.setAttribute("checked", !0), n.tabIndex = 0, n.addEventListener("change", (r) => {
11982
+ if (Xt.add(n), n.setAttribute("data-element-id", s), n.disabled = e.readOnly, this._setRequired(n, this.data.required), n.type = "radio", n.name = e.fieldName, i && n.setAttribute("checked", !0), n.tabIndex = 0, n.addEventListener("change", (r) => {
11983
11983
  const {
11984
11984
  name: a,
11985
11985
  checked: o
@@ -12029,7 +12029,7 @@ class Xr extends zs {
12029
12029
  })), t;
12030
12030
  }
12031
12031
  }
12032
- class Yr extends Yt {
12032
+ class Yr extends Kt {
12033
12033
  constructor(t) {
12034
12034
  super(t, {
12035
12035
  isRenderable: t.renderForms
@@ -12040,7 +12040,7 @@ class Yr extends Yt {
12040
12040
  const t = this.annotationStorage, e = this.data.id, s = t.getValue(e, {
12041
12041
  value: this.data.fieldValue
12042
12042
  }), i = document.createElement("select");
12043
- qt.add(i), i.setAttribute("data-element-id", e), i.disabled = this.data.readOnly, this._setRequired(i, this.data.required), i.name = this.data.fieldName, i.tabIndex = 0;
12043
+ Xt.add(i), i.setAttribute("data-element-id", e), i.disabled = this.data.readOnly, this._setRequired(i, this.data.required), i.name = this.data.fieldName, i.tabIndex = 0;
12044
12044
  let n = this.data.combo && this.data.options.length > 0;
12045
12045
  this.data.combo || (i.size = this.data.options.length, this.data.multiSelect && (i.multiple = !0)), i.addEventListener("resetform", (l) => {
12046
12046
  const d = this.data.defaultFieldValue;
@@ -12977,7 +12977,7 @@ class Vs {
12977
12977
  const {
12978
12978
  annotations: e
12979
12979
  } = t, s = this.div;
12980
- jt(s, this.viewport);
12980
+ Wt(s, this.viewport);
12981
12981
  const i = /* @__PURE__ */ new Map(), n = [], r = {
12982
12982
  data: null,
12983
12983
  layer: s,
@@ -13100,7 +13100,7 @@ class Vs {
13100
13100
  viewport: t
13101
13101
  }) {
13102
13102
  const e = this.div;
13103
- this.viewport = t, jt(e, {
13103
+ this.viewport = t, Wt(e, {
13104
13104
  rotation: t.rotation
13105
13105
  }), this.#h(), e.hidden = !1;
13106
13106
  }
@@ -13696,7 +13696,7 @@ class M {
13696
13696
  return [(t + 5 * s) / 6, (e + 5 * i) / 6, (5 * s + n) / 6, (5 * i + r) / 6, (s + n) / 2, (i + r) / 2];
13697
13697
  }
13698
13698
  }
13699
- class Gt {
13699
+ class jt {
13700
13700
  #t;
13701
13701
  #e = [];
13702
13702
  #i;
@@ -13712,12 +13712,12 @@ class Gt {
13712
13712
  #p = [];
13713
13713
  static #m = 8;
13714
13714
  static #f = 2;
13715
- static #c = Gt.#m + Gt.#f;
13715
+ static #c = jt.#m + jt.#f;
13716
13716
  constructor({
13717
13717
  x: t,
13718
13718
  y: e
13719
13719
  }, s, i, n, r, a = 0) {
13720
- this.#t = s, this.#d = n * i, this.#s = r, this.#r.set([NaN, NaN, NaN, NaN, t, e], 6), this.#i = a, this.#h = Gt.#m * i, this.#l = Gt.#c * i, this.#u = i, this.#p.push(t, e);
13720
+ this.#t = s, this.#d = n * i, this.#s = r, this.#r.set([NaN, NaN, NaN, NaN, t, e], 6), this.#i = a, this.#h = jt.#m * i, this.#l = jt.#c * i, this.#u = i, this.#p.push(t, e);
13721
13721
  }
13722
13722
  isEmpty() {
13723
13723
  return isNaN(this.#r[8]);
@@ -13877,7 +13877,7 @@ class tn extends M {
13877
13877
  return this.#e;
13878
13878
  }
13879
13879
  newOutliner(t, e, s, i, n, r = 0) {
13880
- return new Gt(t, e, s, i, n, r);
13880
+ return new jt(t, e, s, i, n, r);
13881
13881
  }
13882
13882
  getNewOutline(t, e) {
13883
13883
  const [s, i, n, r] = this.#e, [a, o, h, l] = this.#t, d = n * h, u = r * l, p = s * h + a, f = i * l + o, g = this.newOutliner({
@@ -14053,7 +14053,7 @@ class aa extends M {
14053
14053
  return ["highlightOutline"];
14054
14054
  }
14055
14055
  }
14056
- class Ps extends Gt {
14056
+ class Ps extends jt {
14057
14057
  newFreeDrawOutline(t, e, s, i, n, r) {
14058
14058
  return new oa(t, e, s, i, n, r);
14059
14059
  }
@@ -17352,7 +17352,7 @@ class Lt {
17352
17352
  render({
17353
17353
  viewport: t
17354
17354
  }) {
17355
- this.viewport = t, jt(this.div, t);
17355
+ this.viewport = t, Wt(this.div, t);
17356
17356
  for (const e of this.#c.getEditors(this.pageIndex))
17357
17357
  this.add(e), e.rebuild();
17358
17358
  this.updateMode();
@@ -17362,7 +17362,7 @@ class Lt {
17362
17362
  }) {
17363
17363
  this.#c.commitOrRemove(), this.#A();
17364
17364
  const e = this.viewport.rotation, s = t.rotation;
17365
- if (this.viewport = t, jt(this.div, {
17365
+ if (this.viewport = t, Wt(this.div, {
17366
17366
  rotation: s
17367
17367
  }), e !== s)
17368
17368
  for (const i of this.#r.values())
@@ -17530,7 +17530,7 @@ globalThis.pdfjsLib = {
17530
17530
  getRGB: De,
17531
17531
  getUuid: Si,
17532
17532
  getXfaPageViewport: Mn,
17533
- GlobalWorkerOptions: Wt,
17533
+ GlobalWorkerOptions: qt,
17534
17534
  ImageKind: je,
17535
17535
  InvalidPDFException: ys,
17536
17536
  isDataScheme: Ze,
@@ -17550,7 +17550,7 @@ globalThis.pdfjsLib = {
17550
17550
  RenderingCancelledException: Rs,
17551
17551
  renderRichText: Ti,
17552
17552
  ResponseException: We,
17553
- setLayerDimensions: jt,
17553
+ setLayerDimensions: Wt,
17554
17554
  shadow: L,
17555
17555
  SignatureExtractor: ee,
17556
17556
  stopEvent: Q,
@@ -17566,7 +17566,7 @@ globalThis.pdfjsLib = {
17566
17566
  class ca {
17567
17567
  document = null;
17568
17568
  constructor(t = {}) {
17569
- t.workerSrc ? Wt.workerSrc = t.workerSrc : Wt.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${Xi}/pdf.worker.min.mjs`;
17569
+ t.workerSrc ? qt.workerSrc = t.workerSrc : qt.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${Xi}/pdf.worker.min.mjs`;
17570
17570
  }
17571
17571
  async loadDocument(t) {
17572
17572
  try {
@@ -18296,6 +18296,29 @@ class ya {
18296
18296
  getScale() {
18297
18297
  return this.currentScale;
18298
18298
  }
18299
+ /**
18300
+ * Get dimensions of a specific page in PDF points
18301
+ * @param pageIndex - Zero-based page index
18302
+ * @returns Page dimensions { width: number, height: number } or null if page doesn't exist
18303
+ */
18304
+ async getPageDimensions(t) {
18305
+ if (!this.pdfDocument)
18306
+ throw new Error("PDF not loaded");
18307
+ if (t < 0 || t >= this.pdfDocument.numPages)
18308
+ return null;
18309
+ const e = this.pageInfo.get(t);
18310
+ if (e)
18311
+ return { width: e.width, height: e.height };
18312
+ try {
18313
+ const s = (await this.pdfDocument.getPage(t + 1)).getViewport({ scale: 1 }), i = {
18314
+ width: s.width,
18315
+ height: s.height
18316
+ };
18317
+ return this.pageInfo.set(t, i), i;
18318
+ } catch (s) {
18319
+ return console.error(`Failed to get dimensions for page ${t}:`, s), null;
18320
+ }
18321
+ }
18299
18322
  // Field Management
18300
18323
  fields = [];
18301
18324
  setFields(t) {
@@ -18516,6 +18539,9 @@ class wa {
18516
18539
  getScale() {
18517
18540
  return this.viewer.getScale();
18518
18541
  }
18542
+ async getPageDimensions(t) {
18543
+ return this.viewer.getPageDimensions(t);
18544
+ }
18519
18545
  // Event handling
18520
18546
  on(t, e) {
18521
18547
  this.viewer.on(t, e);
@@ -18566,12 +18592,23 @@ const xa = on((c, t) => {
18566
18592
  getViewMode: () => s.current?.getViewMode() ?? "scroll",
18567
18593
  print: async (n) => {
18568
18594
  s.current && await s.current.print(n);
18569
- }
18595
+ },
18596
+ getPageDimensions: async (n) => s.current ? await s.current.getPageDimensions(n) : null,
18597
+ addField: async (n) => {
18598
+ s.current && await s.current.addField(n);
18599
+ },
18600
+ removeField: (n) => {
18601
+ s.current?.removeField(n);
18602
+ },
18603
+ updateField: (n, r) => {
18604
+ s.current?.updateField(n, r);
18605
+ },
18606
+ getFields: () => s.current?.getFields() ?? []
18570
18607
  }));
18571
18608
  const i = rs(c);
18572
- return Kt(() => {
18609
+ return Vt(() => {
18573
18610
  i.current = c;
18574
- }), Kt(() => {
18611
+ }), Vt(() => {
18575
18612
  if (!(!e.current || s.current))
18576
18613
  return s.current = new wa({
18577
18614
  container: e.current,
@@ -18585,16 +18622,18 @@ const xa = on((c, t) => {
18585
18622
  }), s.current.on("field:add", (n) => i.current.onFieldAdd?.(n)), s.current.on("field:remove", (n) => i.current.onFieldRemove?.(n)), s.current.on("field:update", (n) => i.current.onFieldUpdate?.(n)), s.current.on("fields:change", (n) => i.current.onFieldsChange?.(n)), c.onReady && c.onReady(s.current), () => {
18586
18623
  s.current?.destroy(), s.current = null;
18587
18624
  };
18588
- }, []), Kt(() => {
18625
+ }, []), Vt(() => {
18589
18626
  s.current && c.src && s.current.load(c.src).then(() => c.onLoad?.()).catch((n) => c.onError?.(n));
18590
- }, [c.src]), Kt(() => {
18627
+ }, [c.src]), Vt(() => {
18628
+ s.current && c.page !== void 0 && s.current.getCurrentPage() !== c.page && s.current.goToPage(c.page);
18629
+ }, [c.page]), Vt(() => {
18591
18630
  s.current && c.viewMode && s.current.setViewMode(c.viewMode);
18592
- }, [c.viewMode]), Kt(() => {
18631
+ }, [c.viewMode]), Vt(() => {
18593
18632
  if (s.current && c.scale !== void 0) {
18594
18633
  const n = s.current.getScale();
18595
18634
  Math.abs(n - c.scale) > 1e-3 && s.current.setScale(c.scale);
18596
18635
  }
18597
- }, [c.scale]), Kt(() => {
18636
+ }, [c.scale]), Vt(() => {
18598
18637
  if (s.current && c.fields) {
18599
18638
  const n = s.current.getFields();
18600
18639
  if (JSON.stringify(n) === JSON.stringify(c.fields))
@@ -21,16 +21,30 @@ export interface PdfSignReactRef {
21
21
  /** Set view mode */
22
22
  setViewMode(mode: ViewMode): Promise<void>;
23
23
  /** Get current view mode */
24
- /** Get current view mode */
25
24
  getViewMode(): ViewMode;
26
25
  /** Print the PDF */
27
26
  print(options?: {
28
27
  withSignatures?: boolean;
29
28
  }): Promise<void>;
29
+ /** Get dimensions of a specific page in PDF points */
30
+ getPageDimensions(pageIndex: number): Promise<{
31
+ width: number;
32
+ height: number;
33
+ } | null>;
34
+ /** Add a signature field */
35
+ addField(field: SignatureField): Promise<void>;
36
+ /** Remove a signature field by ID */
37
+ removeField(fieldId: string): void;
38
+ /** Update a signature field */
39
+ updateField(fieldId: string, updates: Partial<SignatureField>): void;
40
+ /** Get all signature fields */
41
+ getFields(): SignatureField[];
30
42
  }
31
43
  export interface PdfSignReactProps {
32
44
  /** PDF source URL or ArrayBuffer - auto-loads when provided */
33
45
  src?: string | Uint8Array | ArrayBuffer;
46
+ /** Initial page number */
47
+ page?: number;
34
48
  /** Initial view mode: 'scroll' or 'single' */
35
49
  viewMode?: ViewMode;
36
50
  /** Current zoom scale */
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-sign-react.d.ts","sourceRoot":"","sources":["../../src/lib/pdf-sign-react.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf-sign-react.d.ts","sourceRoot":"","sources":["../../src/lib/pdf-sign-react.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shznet/pdf-sign-react",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "React wrapper for @shznet/pdf-sign-control",
5
5
  "license": "MIT",
6
6
  "repository": {