react-pdf-editor-1 1.2.43 → 1.2.45
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 +28 -1
- package/package.json +1 -1
- package/src/index.d.ts +2 -0
- package/src/index.js +46 -4
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
package/src/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ declare module 'pdf_editor_aleon35_react_plugin' {
|
|
|
16
16
|
mode?: "split" | "regular",
|
|
17
17
|
fileName?: string;
|
|
18
18
|
onFileFailed?: (message: string) => void;
|
|
19
|
+
hideUndoRedoButtons?: boolean;
|
|
19
20
|
}
|
|
20
21
|
) => {
|
|
21
22
|
combineFiles: () => void;
|
|
@@ -29,5 +30,6 @@ declare module 'pdf_editor_aleon35_react_plugin' {
|
|
|
29
30
|
splitPages: () => void;
|
|
30
31
|
extractPages: () => void;
|
|
31
32
|
selectedPages: number[];
|
|
33
|
+
onDocumentUpdated: (listener: (pdfData: Uint8Array) => void) => () => void;
|
|
32
34
|
};
|
|
33
35
|
}
|
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,
|
|
@@ -18,7 +18,8 @@ export const useCreateIframeAndLoadViewer = ({
|
|
|
18
18
|
notarySeal,
|
|
19
19
|
initialSigners,
|
|
20
20
|
modifiedUiElements,
|
|
21
|
-
textTagDefaults
|
|
21
|
+
textTagDefaults,
|
|
22
|
+
hideUndoRedoButtons
|
|
22
23
|
}) => {
|
|
23
24
|
const [internalIsReady, setInternalIsReady] = useState(false); // Add this state variable
|
|
24
25
|
const [selectedPages, setSelectedPages] = useState([]);
|
|
@@ -30,6 +31,7 @@ export const useCreateIframeAndLoadViewer = ({
|
|
|
30
31
|
const [notarySealIds, setNotarySealIds] = useState([]);
|
|
31
32
|
const [authTokens, setAuthTokens] = useState(null);
|
|
32
33
|
const [signatureModalOpen, setSignatureModalOpen] = useState(false);
|
|
34
|
+
const documentUpdatedListeners = useRef(new Set());
|
|
33
35
|
|
|
34
36
|
const createIframe = () => {
|
|
35
37
|
const iframe = document.createElement('iframe');
|
|
@@ -54,7 +56,7 @@ export const useCreateIframeAndLoadViewer = ({
|
|
|
54
56
|
// When the iframe is loaded, post the file to it
|
|
55
57
|
iframe.onload = function() {
|
|
56
58
|
const targetOrigin = window.location.origin;
|
|
57
|
-
const message = { files, fileName, tools, locale, licenseKey, mode, uuid, customData, initialAnnotations, notarySeal, initialSigners, modifiedUiElements, authInfo, defaultAnnotationEditorMode, textTagDefaults };
|
|
59
|
+
const message = { files, fileName, tools, locale, licenseKey, mode, uuid, customData, initialAnnotations, notarySeal, initialSigners, modifiedUiElements, authInfo, defaultAnnotationEditorMode, textTagDefaults, hideUndoRedoButtons };
|
|
58
60
|
|
|
59
61
|
// Set up a function to send the message
|
|
60
62
|
const sendMessage = () => {
|
|
@@ -98,6 +100,16 @@ export const useCreateIframeAndLoadViewer = ({
|
|
|
98
100
|
if (event.data.type === "annotation-modal-open-change") {
|
|
99
101
|
setSignatureModalOpen(event.data.message);
|
|
100
102
|
}
|
|
103
|
+
if (event.data?.type === 'document-updated') {
|
|
104
|
+
documentUpdatedListeners.current.forEach((listener) => {
|
|
105
|
+
try {
|
|
106
|
+
listener(event.data.message);
|
|
107
|
+
}
|
|
108
|
+
catch (listenerError) {
|
|
109
|
+
console.error('Error running document-updated listener', listenerError);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
101
113
|
});
|
|
102
114
|
};
|
|
103
115
|
|
|
@@ -135,6 +147,10 @@ export const useCreateIframeAndLoadViewer = ({
|
|
|
135
147
|
return () => window.parent.removeEventListener('message', handleIframeLoaded);
|
|
136
148
|
}, []);
|
|
137
149
|
|
|
150
|
+
useEffect(() => () => {
|
|
151
|
+
documentUpdatedListeners.current.clear();
|
|
152
|
+
}, []);
|
|
153
|
+
|
|
138
154
|
const [clickedTag, setClickedTag] = useState(null);
|
|
139
155
|
|
|
140
156
|
const handleTagClicked = (event) => {
|
|
@@ -180,6 +196,18 @@ export const useCreateIframeAndLoadViewer = ({
|
|
|
180
196
|
};
|
|
181
197
|
}, []);
|
|
182
198
|
|
|
199
|
+
useEffect(() => {
|
|
200
|
+
if (typeof hideUndoRedoButtons === 'undefined') {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
if (!internalIsReady) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
// @ts-ignore
|
|
207
|
+
const iframeWin = document?.getElementById('webviewer-1')?.contentWindow;
|
|
208
|
+
iframeWin?.postMessage({ hideUndoRedoButtons }, window.location.origin);
|
|
209
|
+
}, [hideUndoRedoButtons, internalIsReady]);
|
|
210
|
+
|
|
183
211
|
const download = () => {
|
|
184
212
|
// @ts-ignore
|
|
185
213
|
var iframeWin = document?.getElementById('webviewer-1')?.contentWindow;
|
|
@@ -387,6 +415,19 @@ export const useCreateIframeAndLoadViewer = ({
|
|
|
387
415
|
});
|
|
388
416
|
};
|
|
389
417
|
|
|
418
|
+
const onDocumentUpdated = useCallback((listener) => {
|
|
419
|
+
if (typeof listener !== 'function') {
|
|
420
|
+
console.warn('onDocumentUpdated requires a function listener');
|
|
421
|
+
return () => {};
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
documentUpdatedListeners.current.add(listener);
|
|
425
|
+
|
|
426
|
+
return () => {
|
|
427
|
+
documentUpdatedListeners.current.delete(listener);
|
|
428
|
+
};
|
|
429
|
+
}, []);
|
|
430
|
+
|
|
390
431
|
return {
|
|
391
432
|
requestBuffer,
|
|
392
433
|
finalizeDocument,
|
|
@@ -408,6 +449,7 @@ export const useCreateIframeAndLoadViewer = ({
|
|
|
408
449
|
notarySealIds,
|
|
409
450
|
hasSeal,
|
|
410
451
|
authTokens,
|
|
411
|
-
signatureModalOpen
|
|
452
|
+
signatureModalOpen,
|
|
453
|
+
onDocumentUpdated
|
|
412
454
|
};
|
|
413
455
|
};
|