react-pdf-editor-1 1.2.43 → 1.2.44

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/dist/index.js CHANGED
@@ -68,6 +68,7 @@ var useCreateIframeAndLoadViewer = function useCreateIframeAndLoadViewer(_ref) {
68
68
  _useState16 = _slicedToArray(_useState15, 2),
69
69
  signatureModalOpen = _useState16[0],
70
70
  setSignatureModalOpen = _useState16[1];
71
+ var documentUpdatedListeners = (0, _react.useRef)(new Set());
71
72
  var createIframe = function createIframe() {
72
73
  var iframe = document.createElement('iframe');
73
74
  iframe.src = iframeSrc || "/pdf-ui/index.html";
@@ -120,6 +121,7 @@ var useCreateIframeAndLoadViewer = function useCreateIframeAndLoadViewer(_ref) {
120
121
 
121
122
  // Set up an event listener to listen for a response from the iframe
122
123
  window.parent.addEventListener('message', function (event) {
124
+ var _event$data;
123
125
  if (event.data.type === 'file-received' && event.data.success) {
124
126
  // If the message was received successfully, clear the interval
125
127
  clearInterval(interval);
@@ -148,6 +150,15 @@ var useCreateIframeAndLoadViewer = function useCreateIframeAndLoadViewer(_ref) {
148
150
  if (event.data.type === "annotation-modal-open-change") {
149
151
  setSignatureModalOpen(event.data.message);
150
152
  }
153
+ if (((_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.type) === 'document-updated') {
154
+ documentUpdatedListeners.current.forEach(function (listener) {
155
+ try {
156
+ listener(event.data.message);
157
+ } catch (listenerError) {
158
+ console.error('Error running document-updated listener', listenerError);
159
+ }
160
+ });
161
+ }
151
162
  });
152
163
  };
153
164
  container.current.appendChild(iframe);
@@ -186,6 +197,11 @@ var useCreateIframeAndLoadViewer = function useCreateIframeAndLoadViewer(_ref) {
186
197
  return window.parent.removeEventListener('message', handleIframeLoaded);
187
198
  };
188
199
  }, []);
200
+ (0, _react.useEffect)(function () {
201
+ return function () {
202
+ documentUpdatedListeners.current.clear();
203
+ };
204
+ }, []);
189
205
  var _useState17 = (0, _react.useState)(null),
190
206
  _useState18 = _slicedToArray(_useState17, 2),
191
207
  clickedTag = _useState18[0],
@@ -560,6 +576,16 @@ var useCreateIframeAndLoadViewer = function useCreateIframeAndLoadViewer(_ref) {
560
576
  return _ref9.apply(this, arguments);
561
577
  };
562
578
  }();
579
+ var onDocumentUpdated = (0, _react.useCallback)(function (listener) {
580
+ if (typeof listener !== 'function') {
581
+ console.warn('onDocumentUpdated requires a function listener');
582
+ return function () {};
583
+ }
584
+ documentUpdatedListeners.current.add(listener);
585
+ return function () {
586
+ documentUpdatedListeners.current["delete"](listener);
587
+ };
588
+ }, []);
563
589
  return {
564
590
  requestBuffer: requestBuffer,
565
591
  finalizeDocument: finalizeDocument,
@@ -582,7 +608,8 @@ var useCreateIframeAndLoadViewer = function useCreateIframeAndLoadViewer(_ref) {
582
608
  notarySealIds: notarySealIds,
583
609
  hasSeal: hasSeal,
584
610
  authTokens: authTokens,
585
- signatureModalOpen: signatureModalOpen
611
+ signatureModalOpen: signatureModalOpen,
612
+ onDocumentUpdated: onDocumentUpdated
586
613
  };
587
614
  };
588
615
  exports.useCreateIframeAndLoadViewer = useCreateIframeAndLoadViewer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-pdf-editor-1",
3
- "version": "1.2.43",
3
+ "version": "1.2.44",
4
4
  "description": "## Core",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/index.d.ts CHANGED
@@ -29,5 +29,6 @@ declare module 'pdf_editor_aleon35_react_plugin' {
29
29
  splitPages: () => void;
30
30
  extractPages: () => void;
31
31
  selectedPages: number[];
32
+ onDocumentUpdated: (listener: (pdfData: Uint8Array) => void) => () => void;
32
33
  };
33
34
  }
package/src/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { useEffect, useRef, useState } from 'react';
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
2
 
3
3
  export const useCreateIframeAndLoadViewer = ({
4
4
  files,
@@ -30,6 +30,7 @@ export const useCreateIframeAndLoadViewer = ({
30
30
  const [notarySealIds, setNotarySealIds] = useState([]);
31
31
  const [authTokens, setAuthTokens] = useState(null);
32
32
  const [signatureModalOpen, setSignatureModalOpen] = useState(false);
33
+ const documentUpdatedListeners = useRef(new Set());
33
34
 
34
35
  const createIframe = () => {
35
36
  const iframe = document.createElement('iframe');
@@ -98,6 +99,16 @@ export const useCreateIframeAndLoadViewer = ({
98
99
  if (event.data.type === "annotation-modal-open-change") {
99
100
  setSignatureModalOpen(event.data.message);
100
101
  }
102
+ if (event.data?.type === 'document-updated') {
103
+ documentUpdatedListeners.current.forEach((listener) => {
104
+ try {
105
+ listener(event.data.message);
106
+ }
107
+ catch (listenerError) {
108
+ console.error('Error running document-updated listener', listenerError);
109
+ }
110
+ });
111
+ }
101
112
  });
102
113
  };
103
114
 
@@ -135,6 +146,10 @@ export const useCreateIframeAndLoadViewer = ({
135
146
  return () => window.parent.removeEventListener('message', handleIframeLoaded);
136
147
  }, []);
137
148
 
149
+ useEffect(() => () => {
150
+ documentUpdatedListeners.current.clear();
151
+ }, []);
152
+
138
153
  const [clickedTag, setClickedTag] = useState(null);
139
154
 
140
155
  const handleTagClicked = (event) => {
@@ -387,6 +402,19 @@ export const useCreateIframeAndLoadViewer = ({
387
402
  });
388
403
  };
389
404
 
405
+ const onDocumentUpdated = useCallback((listener) => {
406
+ if (typeof listener !== 'function') {
407
+ console.warn('onDocumentUpdated requires a function listener');
408
+ return () => {};
409
+ }
410
+
411
+ documentUpdatedListeners.current.add(listener);
412
+
413
+ return () => {
414
+ documentUpdatedListeners.current.delete(listener);
415
+ };
416
+ }, []);
417
+
390
418
  return {
391
419
  requestBuffer,
392
420
  finalizeDocument,
@@ -408,6 +436,7 @@ export const useCreateIframeAndLoadViewer = ({
408
436
  notarySealIds,
409
437
  hasSeal,
410
438
  authTokens,
411
- signatureModalOpen
439
+ signatureModalOpen,
440
+ onDocumentUpdated
412
441
  };
413
442
  };