cozy-viewer 13.0.2 → 13.2.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/CHANGELOG.md +38 -0
- package/dist/Footer/BottomSheetContent.d.ts +3 -1
- package/dist/Footer/BottomSheetContent.js +6 -3
- package/dist/Footer/FooterContent.d.ts +3 -1
- package/dist/Footer/FooterContent.js +5 -2
- package/dist/NoViewer/NoViewer.js +2 -0
- package/dist/Panel/ActionMenuWrapper.js +3 -1
- package/dist/Panel/Qualification.js +6 -4
- package/dist/Panel/QualificationListItemContact.js +2 -1
- package/dist/ViewerContainer.js +24 -5
- package/dist/ViewerInformationsWrapper.js +2 -1
- package/dist/ViewersByFile/AudioViewer.js +2 -0
- package/dist/ViewersByFile/BlankPaperViewer.js +2 -0
- package/dist/ViewersByFile/ImageViewer.js +2 -0
- package/dist/ViewersByFile/NoNetworkViewer.js +2 -0
- package/dist/ViewersByFile/PdfJsViewer.d.ts +10 -3
- package/dist/ViewersByFile/PdfJsViewer.js +120 -16
- package/dist/ViewersByFile/PdfMobileViewer.js +2 -0
- package/dist/ViewersByFile/TextViewer.js +2 -0
- package/dist/ViewersByFile/VideoViewer.js +2 -0
- package/dist/components/PdfToolbarButton.js +13 -7
- package/dist/components/ViewerControls.js +1 -1
- package/dist/stylesheet.css +18 -0
- package/package.json +3 -3
- package/src/Footer/BottomSheetContent.jsx +4 -3
- package/src/Footer/FooterContent.jsx +13 -2
- package/src/Panel/ActionMenuWrapper.jsx +45 -42
- package/src/Panel/Qualification.jsx +5 -4
- package/src/Panel/QualificationListItemContact.jsx +1 -0
- package/src/ViewerContainer.jsx +10 -5
- package/src/ViewerInformationsWrapper.jsx +1 -0
- package/src/ViewersByFile/PdfJsViewer.jsx +136 -19
- package/src/ViewersByFile/styles.styl +19 -0
- package/src/components/PdfToolbarButton.jsx +8 -6
- package/src/components/ViewerControls.jsx +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,44 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [13.2.0](https://github.com/cozy/cozy-libs/compare/cozy-viewer@13.1.0...cozy-viewer@13.2.0) (2025-01-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **viewer:** Remove horizontal scroolbar ([9b0c2c3](https://github.com/cozy/cozy-libs/commit/9b0c2c33c5d0f60a195342cf84b36ca6a2398085))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* **viewer:** Add input for select current page ([7aa912e](https://github.com/cozy/cozy-libs/commit/7aa912e63df7b53341b11157ac2d9c7fe383f2fc))
|
|
17
|
+
* **viewer:** Auto hide toolbar buttons ([90e656a](https://github.com/cozy/cozy-libs/commit/90e656af5627ab627d2cad2d19a14b56b99a4e76))
|
|
18
|
+
* **viewer:** Increase display limit for all pages ([b4a1b4a](https://github.com/cozy/cozy-libs/commit/b4a1b4a62839a89666db3c81df7b98eec5f30afa))
|
|
19
|
+
* **viewer:** Replace old Viewer buttons ([ef2fbee](https://github.com/cozy/cozy-libs/commit/ef2fbee8a49bc6bbef7f7d7ded266beaf7c2470a))
|
|
20
|
+
* **viewer:** Update style of toolbar ([5f6008d](https://github.com/cozy/cozy-libs/commit/5f6008dba900fea754b45b403d39ab758553fa56))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# [13.1.0](https://github.com/cozy/cozy-libs/compare/cozy-viewer@13.0.2...cozy-viewer@13.1.0) (2025-01-13)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
* **Viewer:** Now hide edit option on mobile if read only ([ce2f287](https://github.com/cozy/cozy-libs/commit/ce2f287494a943547762d5f189a74d38554d9f05))
|
|
32
|
+
* **Viewer:** Now isReadOnly manage public and private share ([6e0aba3](https://github.com/cozy/cozy-libs/commit/6e0aba3abd9dee753656e9aef82ecb53931e14aa))
|
|
33
|
+
* **Viewer:** Now show edit option on qualification according to share ([73034bf](https://github.com/cozy/cozy-libs/commit/73034bf13bb18ba269aa70902902f214b31d87fb))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Features
|
|
37
|
+
|
|
38
|
+
* **Viewer:** Disable qualification modification on public ([f41540e](https://github.com/cozy/cozy-libs/commit/f41540ea791d31878dfa2325bca4cc7f867c010a))
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
6
44
|
## [13.0.2](https://github.com/cozy/cozy-libs/compare/cozy-viewer@13.0.1...cozy-viewer@13.0.2) (2025-01-13)
|
|
7
45
|
|
|
8
46
|
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
export default BottomSheetContent;
|
|
2
|
-
declare function BottomSheetContent({ file, isPublic }: {
|
|
2
|
+
declare function BottomSheetContent({ file, isPublic, isReadOnly }: {
|
|
3
3
|
file: any;
|
|
4
4
|
isPublic: any;
|
|
5
|
+
isReadOnly: any;
|
|
5
6
|
}): JSX.Element[];
|
|
6
7
|
declare namespace BottomSheetContent {
|
|
7
8
|
namespace propTypes {
|
|
8
9
|
const file: PropTypes.Validator<object>;
|
|
9
10
|
const isPublic: PropTypes.Requireable<boolean>;
|
|
11
|
+
const isReadOnly: PropTypes.Requireable<boolean>;
|
|
10
12
|
}
|
|
11
13
|
}
|
|
12
14
|
import PropTypes from "prop-types";
|
|
@@ -21,7 +21,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
21
21
|
|
|
22
22
|
var BottomSheetContent = function BottomSheetContent(_ref) {
|
|
23
23
|
var file = _ref.file,
|
|
24
|
-
isPublic = _ref.isPublic
|
|
24
|
+
isPublic = _ref.isPublic,
|
|
25
|
+
isReadOnly = _ref.isReadOnly;
|
|
25
26
|
var panelBlocks = (0, _getPanelBlocks.default)({
|
|
26
27
|
panelBlocksSpecs: (0, _getPanelBlocks.getPanelBlocksSpecs)(isPublic),
|
|
27
28
|
file: file
|
|
@@ -33,14 +34,16 @@ var BottomSheetContent = function BottomSheetContent(_ref) {
|
|
|
33
34
|
disableElevation: index === panelBlocks.length - 1
|
|
34
35
|
}, /*#__PURE__*/_react.default.createElement(PanelBlock, {
|
|
35
36
|
file: file,
|
|
36
|
-
isPublic: isPublic
|
|
37
|
+
isPublic: isPublic,
|
|
38
|
+
isReadOnly: isReadOnly
|
|
37
39
|
}));
|
|
38
40
|
});
|
|
39
41
|
};
|
|
40
42
|
|
|
41
43
|
BottomSheetContent.propTypes = {
|
|
42
44
|
file: _propTypes.default.object.isRequired,
|
|
43
|
-
isPublic: _propTypes.default.bool
|
|
45
|
+
isPublic: _propTypes.default.bool,
|
|
46
|
+
isReadOnly: _propTypes.default.bool
|
|
44
47
|
};
|
|
45
48
|
|
|
46
49
|
var _default = exports.default = BottomSheetContent;
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
export default FooterContent;
|
|
2
|
-
declare function FooterContent({ file, toolbarRef, children, isPublic }: {
|
|
2
|
+
declare function FooterContent({ file, toolbarRef, children, isPublic, isReadOnly }: {
|
|
3
3
|
file: any;
|
|
4
4
|
toolbarRef: any;
|
|
5
5
|
children: any;
|
|
6
6
|
isPublic: any;
|
|
7
|
+
isReadOnly: any;
|
|
7
8
|
}): JSX.Element;
|
|
8
9
|
declare namespace FooterContent {
|
|
9
10
|
namespace propTypes {
|
|
10
11
|
const file: PropTypes.Validator<object>;
|
|
11
12
|
const toolbarRef: PropTypes.Requireable<object>;
|
|
12
13
|
const isPublic: PropTypes.Requireable<boolean>;
|
|
14
|
+
const isReadOnly: PropTypes.Requireable<boolean>;
|
|
13
15
|
const children: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
|
|
14
16
|
}
|
|
15
17
|
}
|
|
@@ -61,7 +61,8 @@ var FooterContent = function FooterContent(_ref2) {
|
|
|
61
61
|
var file = _ref2.file,
|
|
62
62
|
toolbarRef = _ref2.toolbarRef,
|
|
63
63
|
children = _ref2.children,
|
|
64
|
-
isPublic = _ref2.isPublic
|
|
64
|
+
isPublic = _ref2.isPublic,
|
|
65
|
+
isReadOnly = _ref2.isReadOnly;
|
|
65
66
|
var styles = useStyles();
|
|
66
67
|
var toolbarProps = (0, _react.useMemo)(function () {
|
|
67
68
|
return {
|
|
@@ -90,7 +91,8 @@ var FooterContent = function FooterContent(_ref2) {
|
|
|
90
91
|
FooterActionButtonsWithFile: FooterActionButtonsWithFile
|
|
91
92
|
})), /*#__PURE__*/_react.default.createElement(_BottomSheetContent.default, {
|
|
92
93
|
file: file,
|
|
93
|
-
isPublic: isPublic
|
|
94
|
+
isPublic: isPublic,
|
|
95
|
+
isReadOnly: isReadOnly
|
|
94
96
|
}));
|
|
95
97
|
};
|
|
96
98
|
|
|
@@ -98,6 +100,7 @@ FooterContent.propTypes = {
|
|
|
98
100
|
file: _propTypes.default.object.isRequired,
|
|
99
101
|
toolbarRef: _propTypes.default.object,
|
|
100
102
|
isPublic: _propTypes.default.bool,
|
|
103
|
+
isReadOnly: _propTypes.default.bool,
|
|
101
104
|
children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.arrayOf(_propTypes.default.node)])
|
|
102
105
|
};
|
|
103
106
|
|
|
@@ -25,11 +25,13 @@ var styles = {
|
|
|
25
25
|
"viewer-pdfviewer": "styles__viewer-pdfviewer___3MJPk",
|
|
26
26
|
"viewer-textviewer": "styles__viewer-textviewer___1fl1c",
|
|
27
27
|
"viewer-canceled": "styles__viewer-canceled___3KRBk",
|
|
28
|
+
"viewer-pdfviewer-input-page": "styles__viewer-pdfviewer-input-page___9HErK",
|
|
28
29
|
"viewer-textviewer-content": "styles__viewer-textviewer-content___30dhP",
|
|
29
30
|
"viewer-filename": "styles__viewer-filename___1-DIz",
|
|
30
31
|
"viewer-pdfviewer-pdf": "styles__viewer-pdfviewer-pdf___3R4jL",
|
|
31
32
|
"viewer-pdfviewer-page": "styles__viewer-pdfviewer-page___VvOF3",
|
|
32
33
|
"viewer-pdfviewer-toolbar": "styles__viewer-pdfviewer-toolbar___2Eat3",
|
|
34
|
+
"viewer-pdfviewer-toolbar--hidden": "styles__viewer-pdfviewer-toolbar--hidden___3LBfu",
|
|
33
35
|
"viewer-pdfMobile": "styles__viewer-pdfMobile___ym7we",
|
|
34
36
|
"viewer-pdfMobile--image": "styles__viewer-pdfMobile--image___3_zsS"
|
|
35
37
|
};
|
|
@@ -34,6 +34,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
34
34
|
var ActionMenuWrapper = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
35
35
|
var file = _ref.file,
|
|
36
36
|
optionFile = _ref.optionFile,
|
|
37
|
+
isReadOnly = _ref.isReadOnly,
|
|
37
38
|
onClose = _ref.onClose;
|
|
38
39
|
var name = optionFile.name,
|
|
39
40
|
value = optionFile.value;
|
|
@@ -47,7 +48,7 @@ var ActionMenuWrapper = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref)
|
|
|
47
48
|
var _useAlert = (0, _Alert.useAlert)(),
|
|
48
49
|
showAlert = _useAlert.showAlert;
|
|
49
50
|
|
|
50
|
-
var isEditable = (0, _helpers.isEditableAttribute)(name, file);
|
|
51
|
+
var isEditable = (0, _helpers.isEditableAttribute)(name, file) && !isReadOnly;
|
|
51
52
|
var editPath = "".concat(file.metadata.qualification.label, "/").concat(file._id, "/edit/information?metadata=").concat(optionFile.name);
|
|
52
53
|
|
|
53
54
|
var handleCopy = /*#__PURE__*/function () {
|
|
@@ -134,6 +135,7 @@ ActionMenuWrapper.propTypes = {
|
|
|
134
135
|
name: _propTypes.default.string,
|
|
135
136
|
value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])
|
|
136
137
|
}),
|
|
138
|
+
isReadOnly: _propTypes.default.bool,
|
|
137
139
|
onClose: _propTypes.default.func
|
|
138
140
|
};
|
|
139
141
|
|
|
@@ -59,6 +59,7 @@ var ComponentFromMetadataQualificationType = {
|
|
|
59
59
|
|
|
60
60
|
var Qualification = function Qualification(_ref) {
|
|
61
61
|
var file = _ref.file,
|
|
62
|
+
isPublic = _ref.isPublic,
|
|
62
63
|
isReadOnly = _ref.isReadOnly;
|
|
63
64
|
var _file$metadata = file.metadata,
|
|
64
65
|
metadata = _file$metadata === void 0 ? {} : _file$metadata;
|
|
@@ -115,13 +116,13 @@ var Qualification = function Qualification(_ref) {
|
|
|
115
116
|
file: file
|
|
116
117
|
}), (0, _qualification.hasSupportedQualification)(file) ? /*#__PURE__*/_react.default.createElement(_QualificationListItemQualification.default, {
|
|
117
118
|
file: file,
|
|
118
|
-
isReadOnly: isReadOnly,
|
|
119
|
+
isReadOnly: isPublic ? true : isReadOnly,
|
|
119
120
|
onClick: function onClick() {
|
|
120
121
|
return setShowQualifModal(true);
|
|
121
122
|
}
|
|
122
123
|
}) : /*#__PURE__*/_react.default.createElement(_QualificationListItemQualificationEmpty.default, {
|
|
123
124
|
file: file,
|
|
124
|
-
isReadOnly: isReadOnly,
|
|
125
|
+
isReadOnly: isPublic ? true : isReadOnly,
|
|
125
126
|
onClick: function onClick() {
|
|
126
127
|
return setShowQualifModal(true);
|
|
127
128
|
}
|
|
@@ -139,7 +140,7 @@ var Qualification = function Qualification(_ref) {
|
|
|
139
140
|
key: idx
|
|
140
141
|
}, /*#__PURE__*/_react.default.createElement(QualificationListItemComp, {
|
|
141
142
|
file: file,
|
|
142
|
-
isReadOnly: isReadOnly,
|
|
143
|
+
isReadOnly: isPublic ? true : isReadOnly,
|
|
143
144
|
ref: actionBtnRef.current[idx],
|
|
144
145
|
formattedMetadataQualification: meta,
|
|
145
146
|
toggleActionsMenu: function toggleActionsMenu(val) {
|
|
@@ -153,7 +154,8 @@ var Qualification = function Qualification(_ref) {
|
|
|
153
154
|
onClose: hideActionsMenu,
|
|
154
155
|
file: file,
|
|
155
156
|
optionFile: optionFile,
|
|
156
|
-
ref: actionBtnRef.current[optionFile.id]
|
|
157
|
+
ref: actionBtnRef.current[optionFile.id],
|
|
158
|
+
isReadOnly: isPublic ? true : isReadOnly
|
|
157
159
|
})));
|
|
158
160
|
};
|
|
159
161
|
|
package/dist/ViewerContainer.js
CHANGED
|
@@ -29,6 +29,8 @@ var _cozyClient = require("cozy-client");
|
|
|
29
29
|
|
|
30
30
|
var _permission = require("cozy-client/dist/models/permission");
|
|
31
31
|
|
|
32
|
+
var _cozySharing = require("cozy-sharing");
|
|
33
|
+
|
|
32
34
|
var _Modal = _interopRequireDefault(require("cozy-ui/transpiled/react/Modal"));
|
|
33
35
|
|
|
34
36
|
var _proptypes = require("cozy-ui/transpiled/react/proptypes");
|
|
@@ -90,6 +92,10 @@ var ViewerContainer = function ViewerContainer(props) {
|
|
|
90
92
|
|
|
91
93
|
var client = (0, _cozyClient.useClient)();
|
|
92
94
|
(0, _I18n.useExtendI18n)(_locales.locales);
|
|
95
|
+
|
|
96
|
+
var _useSharingContext = (0, _cozySharing.useSharingContext)(),
|
|
97
|
+
hasWriteAccess = _useSharingContext.hasWriteAccess;
|
|
98
|
+
|
|
93
99
|
var currentFile = files[currentIndex];
|
|
94
100
|
var fileCount = files.length;
|
|
95
101
|
var hasPrevious = currentIndex > 0;
|
|
@@ -110,17 +116,30 @@ var ViewerContainer = function ViewerContainer(props) {
|
|
|
110
116
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
111
117
|
while (1) switch (_context.prev = _context.next) {
|
|
112
118
|
case 0:
|
|
113
|
-
|
|
119
|
+
if (!isPublic) {
|
|
120
|
+
_context.next = 6;
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
_context.next = 3;
|
|
114
125
|
return (0, _permission.isDocumentReadOnly)({
|
|
115
126
|
document: currentFile,
|
|
116
127
|
client: client
|
|
117
128
|
});
|
|
118
129
|
|
|
119
|
-
case
|
|
120
|
-
|
|
130
|
+
case 3:
|
|
131
|
+
_context.t0 = _context.sent;
|
|
132
|
+
_context.next = 7;
|
|
133
|
+
break;
|
|
134
|
+
|
|
135
|
+
case 6:
|
|
136
|
+
_context.t0 = !hasWriteAccess(currentFile._id);
|
|
137
|
+
|
|
138
|
+
case 7:
|
|
139
|
+
res = _context.t0;
|
|
121
140
|
setIsReadOnly(res);
|
|
122
141
|
|
|
123
|
-
case
|
|
142
|
+
case 9:
|
|
124
143
|
case "end":
|
|
125
144
|
return _context.stop();
|
|
126
145
|
}
|
|
@@ -133,7 +152,7 @@ var ViewerContainer = function ViewerContainer(props) {
|
|
|
133
152
|
}();
|
|
134
153
|
|
|
135
154
|
getIsReadOnly();
|
|
136
|
-
}, [client, currentFile]);
|
|
155
|
+
}, [client, currentFile, hasWriteAccess, isPublic]);
|
|
137
156
|
return /*#__PURE__*/_react.default.createElement(_Alert.default, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
138
157
|
id: "viewer-wrapper",
|
|
139
158
|
className: (0, _classnames.default)(styles['viewer-wrapper'], className)
|
|
@@ -50,7 +50,8 @@ var ViewerInformationsWrapper = function ViewerInformationsWrapper(_ref) {
|
|
|
50
50
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !disableFooter && /*#__PURE__*/_react.default.createElement(_Footer.default, null, /*#__PURE__*/_react.default.createElement(_FooterContent.default, {
|
|
51
51
|
file: currentFile,
|
|
52
52
|
toolbarRef: toolbarRef,
|
|
53
|
-
isPublic: isPublic
|
|
53
|
+
isPublic: isPublic,
|
|
54
|
+
isReadOnly: isReadOnly
|
|
54
55
|
}, children)), validForPanel && /*#__PURE__*/_react.default.createElement(_InformationPanel.default, null, /*#__PURE__*/_react.default.createElement(_PanelContent.default, {
|
|
55
56
|
file: currentFile,
|
|
56
57
|
isPublic: isPublic,
|
|
@@ -25,11 +25,13 @@ var styles = {
|
|
|
25
25
|
"viewer-pdfviewer": "styles__viewer-pdfviewer___3MJPk",
|
|
26
26
|
"viewer-textviewer": "styles__viewer-textviewer___1fl1c",
|
|
27
27
|
"viewer-canceled": "styles__viewer-canceled___3KRBk",
|
|
28
|
+
"viewer-pdfviewer-input-page": "styles__viewer-pdfviewer-input-page___9HErK",
|
|
28
29
|
"viewer-textviewer-content": "styles__viewer-textviewer-content___30dhP",
|
|
29
30
|
"viewer-filename": "styles__viewer-filename___1-DIz",
|
|
30
31
|
"viewer-pdfviewer-pdf": "styles__viewer-pdfviewer-pdf___3R4jL",
|
|
31
32
|
"viewer-pdfviewer-page": "styles__viewer-pdfviewer-page___VvOF3",
|
|
32
33
|
"viewer-pdfviewer-toolbar": "styles__viewer-pdfviewer-toolbar___2Eat3",
|
|
34
|
+
"viewer-pdfviewer-toolbar--hidden": "styles__viewer-pdfviewer-toolbar--hidden___3LBfu",
|
|
33
35
|
"viewer-pdfMobile": "styles__viewer-pdfMobile___ym7we",
|
|
34
36
|
"viewer-pdfMobile--image": "styles__viewer-pdfMobile--image___3_zsS"
|
|
35
37
|
};
|
|
@@ -27,11 +27,13 @@ var styles = {
|
|
|
27
27
|
"viewer-pdfviewer": "styles__viewer-pdfviewer___3MJPk",
|
|
28
28
|
"viewer-textviewer": "styles__viewer-textviewer___1fl1c",
|
|
29
29
|
"viewer-canceled": "styles__viewer-canceled___3KRBk",
|
|
30
|
+
"viewer-pdfviewer-input-page": "styles__viewer-pdfviewer-input-page___9HErK",
|
|
30
31
|
"viewer-textviewer-content": "styles__viewer-textviewer-content___30dhP",
|
|
31
32
|
"viewer-filename": "styles__viewer-filename___1-DIz",
|
|
32
33
|
"viewer-pdfviewer-pdf": "styles__viewer-pdfviewer-pdf___3R4jL",
|
|
33
34
|
"viewer-pdfviewer-page": "styles__viewer-pdfviewer-page___VvOF3",
|
|
34
35
|
"viewer-pdfviewer-toolbar": "styles__viewer-pdfviewer-toolbar___2Eat3",
|
|
36
|
+
"viewer-pdfviewer-toolbar--hidden": "styles__viewer-pdfviewer-toolbar--hidden___3LBfu",
|
|
35
37
|
"viewer-pdfMobile": "styles__viewer-pdfMobile___ym7we",
|
|
36
38
|
"viewer-pdfMobile--image": "styles__viewer-pdfMobile--image___3_zsS"
|
|
37
39
|
};
|
|
@@ -51,11 +51,13 @@ var styles = {
|
|
|
51
51
|
"viewer-pdfviewer": "styles__viewer-pdfviewer___3MJPk",
|
|
52
52
|
"viewer-textviewer": "styles__viewer-textviewer___1fl1c",
|
|
53
53
|
"viewer-canceled": "styles__viewer-canceled___3KRBk",
|
|
54
|
+
"viewer-pdfviewer-input-page": "styles__viewer-pdfviewer-input-page___9HErK",
|
|
54
55
|
"viewer-textviewer-content": "styles__viewer-textviewer-content___30dhP",
|
|
55
56
|
"viewer-filename": "styles__viewer-filename___1-DIz",
|
|
56
57
|
"viewer-pdfviewer-pdf": "styles__viewer-pdfviewer-pdf___3R4jL",
|
|
57
58
|
"viewer-pdfviewer-page": "styles__viewer-pdfviewer-page___VvOF3",
|
|
58
59
|
"viewer-pdfviewer-toolbar": "styles__viewer-pdfviewer-toolbar___2Eat3",
|
|
60
|
+
"viewer-pdfviewer-toolbar--hidden": "styles__viewer-pdfviewer-toolbar--hidden___3LBfu",
|
|
59
61
|
"viewer-pdfMobile": "styles__viewer-pdfMobile___ym7we",
|
|
60
62
|
"viewer-pdfMobile--image": "styles__viewer-pdfMobile--image___3_zsS"
|
|
61
63
|
};
|
|
@@ -25,11 +25,13 @@ var styles = {
|
|
|
25
25
|
"viewer-pdfviewer": "styles__viewer-pdfviewer___3MJPk",
|
|
26
26
|
"viewer-textviewer": "styles__viewer-textviewer___1fl1c",
|
|
27
27
|
"viewer-canceled": "styles__viewer-canceled___3KRBk",
|
|
28
|
+
"viewer-pdfviewer-input-page": "styles__viewer-pdfviewer-input-page___9HErK",
|
|
28
29
|
"viewer-textviewer-content": "styles__viewer-textviewer-content___30dhP",
|
|
29
30
|
"viewer-filename": "styles__viewer-filename___1-DIz",
|
|
30
31
|
"viewer-pdfviewer-pdf": "styles__viewer-pdfviewer-pdf___3R4jL",
|
|
31
32
|
"viewer-pdfviewer-page": "styles__viewer-pdfviewer-page___VvOF3",
|
|
32
33
|
"viewer-pdfviewer-toolbar": "styles__viewer-pdfviewer-toolbar___2Eat3",
|
|
34
|
+
"viewer-pdfviewer-toolbar--hidden": "styles__viewer-pdfviewer-toolbar--hidden___3LBfu",
|
|
33
35
|
"viewer-pdfMobile": "styles__viewer-pdfMobile___ym7we",
|
|
34
36
|
"viewer-pdfMobile--image": "styles__viewer-pdfMobile--image___3_zsS"
|
|
35
37
|
};
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
export const MIN_SCALE: 0.25;
|
|
2
2
|
export const MAX_SCALE: 3;
|
|
3
|
-
export const MAX_PAGES:
|
|
3
|
+
export const MAX_PAGES: 40;
|
|
4
|
+
export const MAX_SIZE_FILE: 10485760;
|
|
4
5
|
export class PdfJsViewer extends React.Component<any, any, any> {
|
|
5
|
-
constructor(
|
|
6
|
-
|
|
6
|
+
constructor();
|
|
7
|
+
inputRef: React.RefObject<any>;
|
|
7
8
|
resizeListener: import("lodash").DebouncedFunc<() => void> | undefined;
|
|
9
|
+
mouseMoveListener: import("lodash").DebouncedFunc<() => void> | undefined;
|
|
10
|
+
onMouseMove: () => void;
|
|
8
11
|
onKeyUp: (e: any) => void;
|
|
9
12
|
toggleGestures(enable: any): void;
|
|
10
13
|
setWrapperSize: () => void;
|
|
@@ -16,6 +19,10 @@ export class PdfJsViewer extends React.Component<any, any, any> {
|
|
|
16
19
|
previousPage: () => void;
|
|
17
20
|
scaleUp: () => void;
|
|
18
21
|
scaleDown: () => void;
|
|
22
|
+
handleInputPageChange: (evt: any) => void;
|
|
23
|
+
handleInputPageKeyDown: (evt: any) => void;
|
|
24
|
+
handleInputPageFocus: () => void;
|
|
25
|
+
handleInputPageBlur: () => void;
|
|
19
26
|
wrapper: HTMLDivElement | null | undefined;
|
|
20
27
|
}
|
|
21
28
|
export namespace PdfJsViewer {
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.default = exports.PdfJsViewer = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_PAGES = void 0;
|
|
8
|
+
exports.default = exports.PdfJsViewer = exports.MIN_SCALE = exports.MAX_SIZE_FILE = exports.MAX_SCALE = exports.MAX_PAGES = void 0;
|
|
9
9
|
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
11
|
|
|
@@ -61,19 +61,32 @@ var styles = {
|
|
|
61
61
|
"viewer-pdfviewer": "styles__viewer-pdfviewer___3MJPk",
|
|
62
62
|
"viewer-textviewer": "styles__viewer-textviewer___1fl1c",
|
|
63
63
|
"viewer-canceled": "styles__viewer-canceled___3KRBk",
|
|
64
|
+
"viewer-pdfviewer-input-page": "styles__viewer-pdfviewer-input-page___9HErK",
|
|
64
65
|
"viewer-textviewer-content": "styles__viewer-textviewer-content___30dhP",
|
|
65
66
|
"viewer-filename": "styles__viewer-filename___1-DIz",
|
|
66
67
|
"viewer-pdfviewer-pdf": "styles__viewer-pdfviewer-pdf___3R4jL",
|
|
67
68
|
"viewer-pdfviewer-page": "styles__viewer-pdfviewer-page___VvOF3",
|
|
68
69
|
"viewer-pdfviewer-toolbar": "styles__viewer-pdfviewer-toolbar___2Eat3",
|
|
70
|
+
"viewer-pdfviewer-toolbar--hidden": "styles__viewer-pdfviewer-toolbar--hidden___3LBfu",
|
|
69
71
|
"viewer-pdfMobile": "styles__viewer-pdfMobile___ym7we",
|
|
70
72
|
"viewer-pdfMobile--image": "styles__viewer-pdfMobile--image___3_zsS"
|
|
71
73
|
};
|
|
72
74
|
var MIN_SCALE = exports.MIN_SCALE = 0.25;
|
|
73
75
|
var MAX_SCALE = exports.MAX_SCALE = 3;
|
|
74
|
-
var MAX_PAGES = exports.MAX_PAGES =
|
|
76
|
+
var MAX_PAGES = exports.MAX_PAGES = 40;
|
|
77
|
+
var MAX_SIZE_FILE = exports.MAX_SIZE_FILE = 10485760; // 10MB
|
|
78
|
+
|
|
75
79
|
var KEY_CODE_UP = 38;
|
|
76
80
|
var KEY_CODE_DOWN = 40;
|
|
81
|
+
var OPACITY_DELAY = 1000;
|
|
82
|
+
var timeoutOpacity;
|
|
83
|
+
|
|
84
|
+
var makeInputPageStyle = function makeInputPageStyle(nbPages) {
|
|
85
|
+
var maxWidth = Math.max(1, String(Math.abs(nbPages)).length - 1);
|
|
86
|
+
return {
|
|
87
|
+
maxWidth: "".concat(maxWidth, ".5rem")
|
|
88
|
+
};
|
|
89
|
+
};
|
|
77
90
|
|
|
78
91
|
var PdfJsViewer = exports.PdfJsViewer = /*#__PURE__*/function (_Component) {
|
|
79
92
|
(0, _inherits2.default)(PdfJsViewer, _Component);
|
|
@@ -84,23 +97,41 @@ var PdfJsViewer = exports.PdfJsViewer = /*#__PURE__*/function (_Component) {
|
|
|
84
97
|
var _this;
|
|
85
98
|
|
|
86
99
|
(0, _classCallCheck2.default)(this, PdfJsViewer);
|
|
87
|
-
|
|
88
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
89
|
-
args[_key] = arguments[_key];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
100
|
+
_this = _super.call(this);
|
|
93
101
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
|
|
94
102
|
totalPages: 1,
|
|
95
103
|
scale: 1,
|
|
96
104
|
currentPage: 1,
|
|
105
|
+
inputPageValue: 1,
|
|
97
106
|
loaded: false,
|
|
98
107
|
errored: false,
|
|
99
108
|
width: null,
|
|
100
|
-
renderAllPages: false
|
|
109
|
+
renderAllPages: false,
|
|
110
|
+
toolbarDisplayed: true,
|
|
111
|
+
keepToolbarDisplayed: false,
|
|
112
|
+
isInputPageFocused: false
|
|
113
|
+
});
|
|
114
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMouseMove", function () {
|
|
115
|
+
if (!_this.state.toolbarDisplayed) {
|
|
116
|
+
_this.setState({
|
|
117
|
+
toolbarDisplayed: true
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (timeoutOpacity) {
|
|
122
|
+
clearTimeout(timeoutOpacity);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
timeoutOpacity = setTimeout(function () {
|
|
126
|
+
_this.setState({
|
|
127
|
+
toolbarDisplayed: false
|
|
128
|
+
});
|
|
129
|
+
}, OPACITY_DELAY);
|
|
101
130
|
});
|
|
102
131
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onKeyUp", function (e) {
|
|
103
132
|
if (e.keyCode === KEY_CODE_UP) _this.previousPage();else if (e.keyCode === KEY_CODE_DOWN) _this.nextPage();
|
|
133
|
+
|
|
134
|
+
_this.onMouseMove();
|
|
104
135
|
});
|
|
105
136
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setWrapperSize", function () {
|
|
106
137
|
var width = _this.wrapper ? _this.wrapper.getBoundingClientRect().width : null;
|
|
@@ -114,7 +145,7 @@ var PdfJsViewer = exports.PdfJsViewer = /*#__PURE__*/function (_Component) {
|
|
|
114
145
|
|
|
115
146
|
_this.setState({
|
|
116
147
|
totalPages: numPages,
|
|
117
|
-
renderAllPages: numPages <= MAX_PAGES,
|
|
148
|
+
renderAllPages: numPages <= MAX_PAGES && parseInt(_this.props.file.size, 10) <= MAX_SIZE_FILE,
|
|
118
149
|
loaded: true
|
|
119
150
|
});
|
|
120
151
|
});
|
|
@@ -128,15 +159,19 @@ var PdfJsViewer = exports.PdfJsViewer = /*#__PURE__*/function (_Component) {
|
|
|
128
159
|
});
|
|
129
160
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "nextPage", function () {
|
|
130
161
|
_this.setState(function (state) {
|
|
162
|
+
var value = Math.min(state.currentPage + 1, state.totalPages);
|
|
131
163
|
return {
|
|
132
|
-
currentPage:
|
|
164
|
+
currentPage: value,
|
|
165
|
+
inputPageValue: value
|
|
133
166
|
};
|
|
134
167
|
});
|
|
135
168
|
});
|
|
136
169
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "previousPage", function () {
|
|
137
170
|
_this.setState(function (state) {
|
|
171
|
+
var value = Math.max(state.currentPage - 1, 1);
|
|
138
172
|
return {
|
|
139
|
-
currentPage:
|
|
173
|
+
currentPage: value,
|
|
174
|
+
inputPageValue: value
|
|
140
175
|
};
|
|
141
176
|
});
|
|
142
177
|
});
|
|
@@ -160,6 +195,37 @@ var PdfJsViewer = exports.PdfJsViewer = /*#__PURE__*/function (_Component) {
|
|
|
160
195
|
};
|
|
161
196
|
});
|
|
162
197
|
});
|
|
198
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleInputPageChange", function (evt) {
|
|
199
|
+
var value = evt.target.value;
|
|
200
|
+
|
|
201
|
+
if (value === '' || value <= _this.state.totalPages && value > 0) {
|
|
202
|
+
_this.setState({
|
|
203
|
+
inputPageValue: value
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleInputPageKeyDown", function (evt) {
|
|
208
|
+
if (evt.keyCode === 13) {
|
|
209
|
+
_this.inputRef.current.blur();
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleInputPageFocus", function () {
|
|
213
|
+
_this.setState({
|
|
214
|
+
isInputPageFocused: true,
|
|
215
|
+
keepToolbarDisplayed: true
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleInputPageBlur", function () {
|
|
219
|
+
_this.setState(function (state) {
|
|
220
|
+
return {
|
|
221
|
+
keepToolbarDisplayed: false,
|
|
222
|
+
isInputPageFocused: false,
|
|
223
|
+
inputPageValue: state.inputPageValue ? state.inputPageValue : state.currentPage,
|
|
224
|
+
currentPage: state.inputPageValue ? parseInt(state.inputPageValue, 10) : state.currentPage
|
|
225
|
+
};
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
_this.inputRef = /*#__PURE__*/_react.default.createRef();
|
|
163
229
|
return _this;
|
|
164
230
|
}
|
|
165
231
|
|
|
@@ -168,14 +234,21 @@ var PdfJsViewer = exports.PdfJsViewer = /*#__PURE__*/function (_Component) {
|
|
|
168
234
|
value: function componentDidMount() {
|
|
169
235
|
this.setWrapperSize();
|
|
170
236
|
this.resizeListener = (0, _throttle.default)(this.setWrapperSize, 500);
|
|
237
|
+
this.mouseMoveListener = (0, _throttle.default)(this.onMouseMove, OPACITY_DELAY / 2);
|
|
171
238
|
window.addEventListener('resize', this.resizeListener);
|
|
239
|
+
document.addEventListener('mousemove', this.mouseMoveListener);
|
|
172
240
|
document.addEventListener('keyup', this.onKeyUp, false);
|
|
173
241
|
}
|
|
174
242
|
}, {
|
|
175
243
|
key: "componentWillUnmount",
|
|
176
244
|
value: function componentWillUnmount() {
|
|
177
245
|
window.removeEventListener('resize', this.resizeListener);
|
|
246
|
+
document.removeEventListener('mousemove', this.mouseMoveListener);
|
|
178
247
|
document.removeEventListener('keyup', this.onKeyUp, false);
|
|
248
|
+
|
|
249
|
+
if (timeoutOpacity) {
|
|
250
|
+
clearTimeout(timeoutOpacity);
|
|
251
|
+
}
|
|
179
252
|
}
|
|
180
253
|
}, {
|
|
181
254
|
key: "toggleGestures",
|
|
@@ -203,15 +276,20 @@ var PdfJsViewer = exports.PdfJsViewer = /*#__PURE__*/function (_Component) {
|
|
|
203
276
|
errored = _this$state.errored,
|
|
204
277
|
totalPages = _this$state.totalPages,
|
|
205
278
|
currentPage = _this$state.currentPage,
|
|
279
|
+
inputPageValue = _this$state.inputPageValue,
|
|
206
280
|
scale = _this$state.scale,
|
|
207
281
|
width = _this$state.width,
|
|
208
|
-
renderAllPages = _this$state.renderAllPages
|
|
282
|
+
renderAllPages = _this$state.renderAllPages,
|
|
283
|
+
toolbarDisplayed = _this$state.toolbarDisplayed,
|
|
284
|
+
keepToolbarDisplayed = _this$state.keepToolbarDisplayed,
|
|
285
|
+
isInputPageFocused = _this$state.isInputPageFocused;
|
|
209
286
|
if (errored) return /*#__PURE__*/_react.default.createElement(_NoViewer.default, {
|
|
210
287
|
file: file,
|
|
211
288
|
renderFallbackExtraContent: renderFallbackExtraContent
|
|
212
289
|
});
|
|
213
|
-
var pageWidth = width ? width
|
|
290
|
+
var pageWidth = width && totalPages > 1 ? width - 15 : width; // Remove the scrollbar width to avoid a horizontal scrollbar
|
|
214
291
|
|
|
292
|
+
var pageInputValue = inputPageValue || inputPageValue === '' ? inputPageValue : currentPage.toString();
|
|
215
293
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
216
294
|
className: styles['viewer-pdfviewer'],
|
|
217
295
|
ref: function ref(_ref2) {
|
|
@@ -229,16 +307,28 @@ var PdfJsViewer = exports.PdfJsViewer = /*#__PURE__*/function (_Component) {
|
|
|
229
307
|
key: page,
|
|
230
308
|
pageNumber: page + 1,
|
|
231
309
|
width: pageWidth,
|
|
310
|
+
scale: scale,
|
|
232
311
|
renderAnnotations: false,
|
|
233
312
|
className: (0, _classnames.default)('u-mv-1', styles['viewer-pdfviewer-page'])
|
|
234
313
|
});
|
|
235
314
|
}) : /*#__PURE__*/_react.default.createElement(_reactPdf.Page, {
|
|
236
315
|
pageNumber: currentPage,
|
|
237
316
|
width: pageWidth,
|
|
317
|
+
scale: scale,
|
|
238
318
|
renderAnnotations: false,
|
|
239
319
|
className: styles['viewer-pdfviewer-page']
|
|
240
320
|
})), loaded && /*#__PURE__*/_react.default.createElement("div", {
|
|
241
|
-
className: (0, _classnames.default)(styles['viewer-pdfviewer-toolbar'], 'u-p-half')
|
|
321
|
+
className: (0, _classnames.default)(styles['viewer-pdfviewer-toolbar'], 'u-p-half', (0, _defineProperty2.default)({}, styles['viewer-pdfviewer-toolbar--hidden'], !toolbarDisplayed && !keepToolbarDisplayed)),
|
|
322
|
+
onMouseEnter: function onMouseEnter() {
|
|
323
|
+
return !isInputPageFocused && _this2.setState({
|
|
324
|
+
keepToolbarDisplayed: true
|
|
325
|
+
});
|
|
326
|
+
},
|
|
327
|
+
onMouseLeave: function onMouseLeave() {
|
|
328
|
+
return !isInputPageFocused && _this2.setState({
|
|
329
|
+
keepToolbarDisplayed: false
|
|
330
|
+
});
|
|
331
|
+
}
|
|
242
332
|
}, !renderAllPages && /*#__PURE__*/_react.default.createElement("span", {
|
|
243
333
|
className: "u-mh-half"
|
|
244
334
|
}, /*#__PURE__*/_react.default.createElement(_PdfToolbarButton.default, {
|
|
@@ -246,7 +336,21 @@ var PdfJsViewer = exports.PdfJsViewer = /*#__PURE__*/function (_Component) {
|
|
|
246
336
|
onClick: this.previousPage,
|
|
247
337
|
disabled: currentPage === 1,
|
|
248
338
|
label: t('Viewer.previous')
|
|
249
|
-
}),
|
|
339
|
+
}), /*#__PURE__*/_react.default.createElement("label", {
|
|
340
|
+
htmlFor: "input-page"
|
|
341
|
+
}, /*#__PURE__*/_react.default.createElement("input", {
|
|
342
|
+
ref: this.inputRef,
|
|
343
|
+
id: "input-page",
|
|
344
|
+
className: styles['viewer-pdfviewer-input-page'],
|
|
345
|
+
type: "text",
|
|
346
|
+
inputMode: "numeric",
|
|
347
|
+
style: makeInputPageStyle(totalPages),
|
|
348
|
+
value: pageInputValue,
|
|
349
|
+
onChange: this.handleInputPageChange,
|
|
350
|
+
onKeyDown: this.handleInputPageKeyDown,
|
|
351
|
+
onFocus: this.handleInputPageFocus,
|
|
352
|
+
onBlur: this.handleInputPageBlur
|
|
353
|
+
}), "/", totalPages), /*#__PURE__*/_react.default.createElement(_PdfToolbarButton.default, {
|
|
250
354
|
icon: "bottom",
|
|
251
355
|
onClick: this.nextPage,
|
|
252
356
|
disabled: currentPage === totalPages,
|