@manuscripts/style-guide 0.31.11 → 0.31.12
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/cjs/components/FileManager/FileManager.js +2 -2
- package/dist/cjs/components/FileManager/FileSectionItem/ItemActions.js +33 -6
- package/dist/cjs/components/FileManager/InlineFilesSection.js +6 -4
- package/dist/cjs/lib/inlineFiles.js +3 -2
- package/dist/es/components/FileManager/FileManager.js +2 -2
- package/dist/es/components/FileManager/FileSectionItem/ItemActions.js +33 -6
- package/dist/es/components/FileManager/InlineFilesSection.js +6 -4
- package/dist/es/lib/inlineFiles.js +3 -2
- package/dist/types/components/FileManager/FileManager.d.ts +1 -0
- package/dist/types/components/FileManager/FileSectionItem/FileSectionItem.d.ts +5 -1
- package/dist/types/components/FileManager/FileSectionItem/ItemActions.d.ts +7 -1
- package/dist/types/components/FileManager/InlineFilesSection.d.ts +6 -1
- package/package.json +1 -1
|
@@ -48,7 +48,7 @@ const InlineFilesSection_1 = require("./InlineFilesSection");
|
|
|
48
48
|
const TooltipDiv_1 = require("./TooltipDiv");
|
|
49
49
|
const util_1 = require("./util");
|
|
50
50
|
exports.PermissionsContext = (0, react_1.createContext)(null);
|
|
51
|
-
const FileManager = ({ submissionId, attachments, modelMap, saveModel, enableDragAndDrop, can, handleUpload, handleDownload, handleReplace, handleChangeDesignation, }) => {
|
|
51
|
+
const FileManager = ({ submissionId, attachments, modelMap, saveModel, enableDragAndDrop, can, handleUpload, handleDownload, handleReplace, handleChangeDesignation, handleUpdateInline, }) => {
|
|
52
52
|
const [state, dispatch] = (0, react_1.useReducer)(FileSectionState_1.reducer, (0, FileSectionState_1.getInitialState)());
|
|
53
53
|
const handleReplaceFile = (0, react_1.useCallback)((submissionId, attachmentId, name, file, typeId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
54
54
|
dispatch(FileSectionState_1.actions.HANDLE_UPLOAD_ACTION());
|
|
@@ -154,7 +154,7 @@ const FileManager = ({ submissionId, attachments, modelMap, saveModel, enableDra
|
|
|
154
154
|
react_1.default.createElement("div", null, "Files excluded from the final submission.")))),
|
|
155
155
|
react_1.default.createElement(Inspector_1.InspectorTabPanels, { style: { overflowY: 'visible', position: 'relative' } },
|
|
156
156
|
react_1.default.createElement(Inspector_1.InspectorTabPanel, null,
|
|
157
|
-
react_1.default.createElement(InlineFilesSection_1.InlineFilesSection, { inlineFiles: inlineFiles, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, isEditor: enableDragAndDrop, dispatch: dispatch })),
|
|
157
|
+
react_1.default.createElement(InlineFilesSection_1.InlineFilesSection, { inlineFiles: inlineFiles, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, handleUpdateInline: handleUpdateInline, isEditor: enableDragAndDrop, dispatch: dispatch })),
|
|
158
158
|
react_1.default.createElement(Inspector_1.InspectorTabPanel, null,
|
|
159
159
|
react_1.default.createElement(FilesSection_1.FilesSection, { submissionId: submissionId, enableDragAndDrop: enableDragAndDrop, handleUpload: handleUploadFileWithSupplement, fileSection: util_1.FileSectionType.Supplements, filesItem: getFileSectionExternalFile(util_1.FileSectionType.Supplements), state: state, dispatch: dispatch })),
|
|
160
160
|
react_1.default.createElement(Inspector_1.InspectorTabPanel, null,
|
|
@@ -18,6 +18,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
18
18
|
__setModuleDefault(result, mod);
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
21
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
31
|
exports.ItemActions = void 0;
|
|
23
32
|
const react_1 = __importStar(require("react"));
|
|
@@ -25,22 +34,40 @@ const Dropdown_1 = require("../../Dropdown");
|
|
|
25
34
|
const FileManager_1 = require("../FileManager");
|
|
26
35
|
const FileSectionState_1 = require("../FileSectionState");
|
|
27
36
|
const ItemsAction_1 = require("../ItemsAction");
|
|
28
|
-
const
|
|
37
|
+
const util_1 = require("../util");
|
|
38
|
+
const ItemActions = ({ downloadAttachmentHandler, replaceAttachmentHandler, handleUpdateInline, submissionId, attachmentId, fileName, designation, publicUrl, hideActionList, dispatch, dropDownClassName, }) => {
|
|
29
39
|
const attachmentDesignation = designation == undefined ? 'undefined' : designation;
|
|
40
|
+
const attachmentDesignationName = attachmentDesignation !== 'undefined'
|
|
41
|
+
? util_1.namesWithDesignationMap.get(attachmentDesignation)
|
|
42
|
+
: undefined;
|
|
43
|
+
const canBeReplaced = attachmentDesignationName == undefined ||
|
|
44
|
+
![
|
|
45
|
+
util_1.Designation.MainManuscript,
|
|
46
|
+
util_1.Designation.SubmissionFile,
|
|
47
|
+
util_1.Designation.SubmissionPdf,
|
|
48
|
+
].includes(attachmentDesignationName);
|
|
30
49
|
const fileInputRef = (0, react_1.useRef)(null);
|
|
31
50
|
const [selectedFile, setSelectedFile] = (0, react_1.useState)();
|
|
32
51
|
const can = (0, react_1.useContext)(FileManager_1.PermissionsContext);
|
|
33
|
-
const handleChange = (event) => {
|
|
52
|
+
const handleChange = (event) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
53
|
if (event && event.target && event.target.files) {
|
|
35
54
|
const file = event.target.files[0];
|
|
36
55
|
setSelectedFile(file);
|
|
37
56
|
if (dispatch) {
|
|
38
|
-
dispatch(FileSectionState_1.actions.
|
|
57
|
+
dispatch(FileSectionState_1.actions.HANDLE_UPLOAD_ACTION());
|
|
58
|
+
dispatch(FileSectionState_1.actions.SELECT_DESIGNATION(attachmentDesignationName || util_1.Designation.Document));
|
|
59
|
+
}
|
|
60
|
+
const result = yield replaceAttachmentHandler(submissionId, attachmentId, fileName, file, attachmentDesignation);
|
|
61
|
+
const { uploadAttachment } = result === null || result === void 0 ? void 0 : result.data;
|
|
62
|
+
if (uploadAttachment && handleUpdateInline) {
|
|
63
|
+
handleUpdateInline(uploadAttachment);
|
|
64
|
+
}
|
|
65
|
+
if (dispatch) {
|
|
66
|
+
dispatch(FileSectionState_1.actions.HANDLE_FINISH_UPLOAD());
|
|
39
67
|
}
|
|
40
|
-
replaceAttachmentHandler(submissionId, attachmentId, fileName, file, attachmentDesignation);
|
|
41
68
|
hideActionList();
|
|
42
69
|
}
|
|
43
|
-
};
|
|
70
|
+
});
|
|
44
71
|
const openFileDialog = () => {
|
|
45
72
|
if (fileInputRef && fileInputRef.current) {
|
|
46
73
|
fileInputRef.current.click();
|
|
@@ -50,7 +77,7 @@ const ItemActions = ({ downloadAttachmentHandler, replaceAttachmentHandler, subm
|
|
|
50
77
|
react_1.default.createElement(ItemsAction_1.ActionsItem, { onClick: () => {
|
|
51
78
|
publicUrl !== undefined ? downloadAttachmentHandler(publicUrl) : {};
|
|
52
79
|
} }, "Download"),
|
|
53
|
-
(can === null || can === void 0 ? void 0 : can.replaceFile) && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
80
|
+
(can === null || can === void 0 ? void 0 : can.replaceFile) && canBeReplaced && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
54
81
|
react_1.default.createElement(ItemsAction_1.ActionsItem, { onClick: openFileDialog }, "Replace"),
|
|
55
82
|
react_1.default.createElement("input", { ref: fileInputRef, type: "file", style: { display: 'none' }, onChange: (e) => handleChange(e), value: '' })))));
|
|
56
83
|
};
|
|
@@ -31,7 +31,7 @@ const FileInfo_1 = require("./FileSectionItem/FileInfo");
|
|
|
31
31
|
const FileSectionItem_1 = require("./FileSectionItem/FileSectionItem");
|
|
32
32
|
const ItemActions_1 = require("./FileSectionItem/ItemActions");
|
|
33
33
|
const util_1 = require("./util");
|
|
34
|
-
const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, inlineFiles, isEditor, dispatch, }) => {
|
|
34
|
+
const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, handleUpdateInline, inlineFiles, isEditor, dispatch, }) => {
|
|
35
35
|
const onElementClick = (0, react_1.useCallback)((e) => {
|
|
36
36
|
if (!isEditor) {
|
|
37
37
|
return;
|
|
@@ -46,7 +46,7 @@ const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, inlin
|
|
|
46
46
|
return (react_1.default.createElement("div", null, inlineFiles.map((file, index) => {
|
|
47
47
|
var _a;
|
|
48
48
|
return (react_1.default.createElement(ElementItem, { className: 'item', key: index, id: file.id, onClick: onElementClick },
|
|
49
|
-
react_1.default.createElement(FileReferences, { className: 'refItems' }, (_a = file.attachments) === null || _a === void 0 ? void 0 : _a.map((attachment) => (react_1.default.createElement(FileReference, { key: attachment.id, attachment: attachment, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, dispatch: dispatch })))),
|
|
49
|
+
react_1.default.createElement(FileReferences, { className: 'refItems' }, (_a = file.attachments) === null || _a === void 0 ? void 0 : _a.map((attachment) => (react_1.default.createElement(FileReference, { key: attachment.id, attachment: attachment, submissionId: submissionId, handleReplace: handleReplace, handleUpdateInline: handleUpdateInline, handleDownload: handleDownload, dispatch: dispatch })))),
|
|
50
50
|
react_1.default.createElement(Element, { className: 'element' },
|
|
51
51
|
util_1.fileTypesWithIconMap.get(file.type),
|
|
52
52
|
react_1.default.createElement(FileInfo_1.FileInfoContainer, null,
|
|
@@ -55,7 +55,7 @@ const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, inlin
|
|
|
55
55
|
})));
|
|
56
56
|
};
|
|
57
57
|
exports.InlineFilesSection = InlineFilesSection;
|
|
58
|
-
const FileReference = ({ attachment, submissionId, handleReplace, handleDownload, dispatch, }) => {
|
|
58
|
+
const FileReference = ({ attachment, submissionId, handleReplace, handleDownload, handleUpdateInline, dispatch, }) => {
|
|
59
59
|
const { isOpen, toggleOpen, wrapperRef } = (0, use_dropdown_1.useDropdown)();
|
|
60
60
|
if (!attachment || !attachment.name) {
|
|
61
61
|
return null;
|
|
@@ -68,7 +68,9 @@ const FileReference = ({ attachment, submissionId, handleReplace, handleDownload
|
|
|
68
68
|
handleDownload && handleReplace && submissionId && (react_1.default.createElement(DropdownContainer, { ref: wrapperRef },
|
|
69
69
|
react_1.default.createElement(FileSectionItem_1.ActionsIcon, { onClick: toggleOpen, type: "button", className: 'external_file_dropdown', "aria-label": "Download or Replace", "aria-pressed": isOpen },
|
|
70
70
|
react_1.default.createElement(dots_icon_1.default, null)),
|
|
71
|
-
isOpen && (react_1.default.createElement(ItemActions_1.ItemActions, { replaceAttachmentHandler: handleReplace,
|
|
71
|
+
isOpen && (react_1.default.createElement(ItemActions_1.ItemActions, { replaceAttachmentHandler: handleReplace, handleUpdateInline: (uploadAttachment) => handleUpdateInline &&
|
|
72
|
+
(attachment === null || attachment === void 0 ? void 0 : attachment.modelId) &&
|
|
73
|
+
handleUpdateInline(attachment.modelId, uploadAttachment), downloadAttachmentHandler: handleDownload, submissionId: submissionId, attachmentId: attachment.id, fileName: attachment.name, designation: attachment.type.label, publicUrl: attachment.link, hideActionList: toggleOpen, dispatch: dispatch, dropDownClassName: 'ref_item_dropdown' }))))));
|
|
72
74
|
};
|
|
73
75
|
const ElementItem = (0, styled_components_1.default)(FileSectionItem_1.Item) `
|
|
74
76
|
display: flex;
|
|
@@ -18,13 +18,14 @@ const getAttachment = (externalFileRef, attachmentsMap) => {
|
|
|
18
18
|
};
|
|
19
19
|
const getFigureData = (element, modelMap, attachmentsMap) => {
|
|
20
20
|
const attachments = [];
|
|
21
|
-
element.containedObjectIDs.map((
|
|
21
|
+
element.containedObjectIDs.map((id) => {
|
|
22
22
|
var _a;
|
|
23
|
-
const object = modelMap.get(
|
|
23
|
+
const object = modelMap.get(id);
|
|
24
24
|
if (object && object.objectType === manuscripts_json_schema_1.ObjectTypes.Figure) {
|
|
25
25
|
const externalFileRef = (_a = object.externalFileReferences) === null || _a === void 0 ? void 0 : _a.find((figure) => figure.kind === 'imageRepresentation');
|
|
26
26
|
const attachment = getAttachment(externalFileRef, attachmentsMap);
|
|
27
27
|
if (attachment) {
|
|
28
|
+
attachment.modelId = id;
|
|
28
29
|
attachments.push(attachment);
|
|
29
30
|
}
|
|
30
31
|
}
|
|
@@ -23,7 +23,7 @@ import { InlineFilesSection } from './InlineFilesSection';
|
|
|
23
23
|
import { TooltipDiv } from './TooltipDiv';
|
|
24
24
|
import { Designation, designationWithFileSectionsMap, FileSectionType, generateAttachmentsTitles, namesWithDesignationMap, } from './util';
|
|
25
25
|
export const PermissionsContext = createContext(null);
|
|
26
|
-
export const FileManager = ({ submissionId, attachments, modelMap, saveModel, enableDragAndDrop, can, handleUpload, handleDownload, handleReplace, handleChangeDesignation, }) => {
|
|
26
|
+
export const FileManager = ({ submissionId, attachments, modelMap, saveModel, enableDragAndDrop, can, handleUpload, handleDownload, handleReplace, handleChangeDesignation, handleUpdateInline, }) => {
|
|
27
27
|
const [state, dispatch] = useReducer(reducer, getInitialState());
|
|
28
28
|
const handleReplaceFile = useCallback((submissionId, attachmentId, name, file, typeId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
29
|
dispatch(actions.HANDLE_UPLOAD_ACTION());
|
|
@@ -129,7 +129,7 @@ export const FileManager = ({ submissionId, attachments, modelMap, saveModel, en
|
|
|
129
129
|
React.createElement("div", null, "Files excluded from the final submission.")))),
|
|
130
130
|
React.createElement(InspectorTabPanels, { style: { overflowY: 'visible', position: 'relative' } },
|
|
131
131
|
React.createElement(InspectorTabPanel, null,
|
|
132
|
-
React.createElement(InlineFilesSection, { inlineFiles: inlineFiles, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, isEditor: enableDragAndDrop, dispatch: dispatch })),
|
|
132
|
+
React.createElement(InlineFilesSection, { inlineFiles: inlineFiles, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, handleUpdateInline: handleUpdateInline, isEditor: enableDragAndDrop, dispatch: dispatch })),
|
|
133
133
|
React.createElement(InspectorTabPanel, null,
|
|
134
134
|
React.createElement(FilesSection, { submissionId: submissionId, enableDragAndDrop: enableDragAndDrop, handleUpload: handleUploadFileWithSupplement, fileSection: FileSectionType.Supplements, filesItem: getFileSectionExternalFile(FileSectionType.Supplements), state: state, dispatch: dispatch })),
|
|
135
135
|
React.createElement(InspectorTabPanel, null,
|
|
@@ -1,24 +1,51 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import React, { useContext, useRef, useState, } from 'react';
|
|
2
11
|
import { DropdownList } from '../../Dropdown';
|
|
3
12
|
import { PermissionsContext } from '../FileManager';
|
|
4
13
|
import { actions } from '../FileSectionState';
|
|
5
14
|
import { ActionsItem } from '../ItemsAction';
|
|
6
|
-
|
|
15
|
+
import { Designation, namesWithDesignationMap } from '../util';
|
|
16
|
+
export const ItemActions = ({ downloadAttachmentHandler, replaceAttachmentHandler, handleUpdateInline, submissionId, attachmentId, fileName, designation, publicUrl, hideActionList, dispatch, dropDownClassName, }) => {
|
|
7
17
|
const attachmentDesignation = designation == undefined ? 'undefined' : designation;
|
|
18
|
+
const attachmentDesignationName = attachmentDesignation !== 'undefined'
|
|
19
|
+
? namesWithDesignationMap.get(attachmentDesignation)
|
|
20
|
+
: undefined;
|
|
21
|
+
const canBeReplaced = attachmentDesignationName == undefined ||
|
|
22
|
+
![
|
|
23
|
+
Designation.MainManuscript,
|
|
24
|
+
Designation.SubmissionFile,
|
|
25
|
+
Designation.SubmissionPdf,
|
|
26
|
+
].includes(attachmentDesignationName);
|
|
8
27
|
const fileInputRef = useRef(null);
|
|
9
28
|
const [selectedFile, setSelectedFile] = useState();
|
|
10
29
|
const can = useContext(PermissionsContext);
|
|
11
|
-
const handleChange = (event) => {
|
|
30
|
+
const handleChange = (event) => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
31
|
if (event && event.target && event.target.files) {
|
|
13
32
|
const file = event.target.files[0];
|
|
14
33
|
setSelectedFile(file);
|
|
15
34
|
if (dispatch) {
|
|
16
|
-
dispatch(actions.
|
|
35
|
+
dispatch(actions.HANDLE_UPLOAD_ACTION());
|
|
36
|
+
dispatch(actions.SELECT_DESIGNATION(attachmentDesignationName || Designation.Document));
|
|
37
|
+
}
|
|
38
|
+
const result = yield replaceAttachmentHandler(submissionId, attachmentId, fileName, file, attachmentDesignation);
|
|
39
|
+
const { uploadAttachment } = result === null || result === void 0 ? void 0 : result.data;
|
|
40
|
+
if (uploadAttachment && handleUpdateInline) {
|
|
41
|
+
handleUpdateInline(uploadAttachment);
|
|
42
|
+
}
|
|
43
|
+
if (dispatch) {
|
|
44
|
+
dispatch(actions.HANDLE_FINISH_UPLOAD());
|
|
17
45
|
}
|
|
18
|
-
replaceAttachmentHandler(submissionId, attachmentId, fileName, file, attachmentDesignation);
|
|
19
46
|
hideActionList();
|
|
20
47
|
}
|
|
21
|
-
};
|
|
48
|
+
});
|
|
22
49
|
const openFileDialog = () => {
|
|
23
50
|
if (fileInputRef && fileInputRef.current) {
|
|
24
51
|
fileInputRef.current.click();
|
|
@@ -28,7 +55,7 @@ export const ItemActions = ({ downloadAttachmentHandler, replaceAttachmentHandle
|
|
|
28
55
|
React.createElement(ActionsItem, { onClick: () => {
|
|
29
56
|
publicUrl !== undefined ? downloadAttachmentHandler(publicUrl) : {};
|
|
30
57
|
} }, "Download"),
|
|
31
|
-
(can === null || can === void 0 ? void 0 : can.replaceFile) && (React.createElement(React.Fragment, null,
|
|
58
|
+
(can === null || can === void 0 ? void 0 : can.replaceFile) && canBeReplaced && (React.createElement(React.Fragment, null,
|
|
32
59
|
React.createElement(ActionsItem, { onClick: openFileDialog }, "Replace"),
|
|
33
60
|
React.createElement("input", { ref: fileInputRef, type: "file", style: { display: 'none' }, onChange: (e) => handleChange(e), value: '' })))));
|
|
34
61
|
};
|
|
@@ -6,7 +6,7 @@ import { FileInfoContainer, FileNameTitleContainer, FileTitle, } from './FileSec
|
|
|
6
6
|
import { ActionsIcon, Item, } from './FileSectionItem/FileSectionItem';
|
|
7
7
|
import { ItemActions } from './FileSectionItem/ItemActions';
|
|
8
8
|
import { extensionsWithFileTypesMap, fileTypesWithIconMap, } from './util';
|
|
9
|
-
export const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, inlineFiles, isEditor, dispatch, }) => {
|
|
9
|
+
export const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, handleUpdateInline, inlineFiles, isEditor, dispatch, }) => {
|
|
10
10
|
const onElementClick = useCallback((e) => {
|
|
11
11
|
if (!isEditor) {
|
|
12
12
|
return;
|
|
@@ -21,7 +21,7 @@ export const InlineFilesSection = ({ submissionId, handleReplace, handleDownload
|
|
|
21
21
|
return (React.createElement("div", null, inlineFiles.map((file, index) => {
|
|
22
22
|
var _a;
|
|
23
23
|
return (React.createElement(ElementItem, { className: 'item', key: index, id: file.id, onClick: onElementClick },
|
|
24
|
-
React.createElement(FileReferences, { className: 'refItems' }, (_a = file.attachments) === null || _a === void 0 ? void 0 : _a.map((attachment) => (React.createElement(FileReference, { key: attachment.id, attachment: attachment, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, dispatch: dispatch })))),
|
|
24
|
+
React.createElement(FileReferences, { className: 'refItems' }, (_a = file.attachments) === null || _a === void 0 ? void 0 : _a.map((attachment) => (React.createElement(FileReference, { key: attachment.id, attachment: attachment, submissionId: submissionId, handleReplace: handleReplace, handleUpdateInline: handleUpdateInline, handleDownload: handleDownload, dispatch: dispatch })))),
|
|
25
25
|
React.createElement(Element, { className: 'element' },
|
|
26
26
|
fileTypesWithIconMap.get(file.type),
|
|
27
27
|
React.createElement(FileInfoContainer, null,
|
|
@@ -29,7 +29,7 @@ export const InlineFilesSection = ({ submissionId, handleReplace, handleDownload
|
|
|
29
29
|
React.createElement(FileTitle, null, file.label))))));
|
|
30
30
|
})));
|
|
31
31
|
};
|
|
32
|
-
const FileReference = ({ attachment, submissionId, handleReplace, handleDownload, dispatch, }) => {
|
|
32
|
+
const FileReference = ({ attachment, submissionId, handleReplace, handleDownload, handleUpdateInline, dispatch, }) => {
|
|
33
33
|
const { isOpen, toggleOpen, wrapperRef } = useDropdown();
|
|
34
34
|
if (!attachment || !attachment.name) {
|
|
35
35
|
return null;
|
|
@@ -42,7 +42,9 @@ const FileReference = ({ attachment, submissionId, handleReplace, handleDownload
|
|
|
42
42
|
handleDownload && handleReplace && submissionId && (React.createElement(DropdownContainer, { ref: wrapperRef },
|
|
43
43
|
React.createElement(ActionsIcon, { onClick: toggleOpen, type: "button", className: 'external_file_dropdown', "aria-label": "Download or Replace", "aria-pressed": isOpen },
|
|
44
44
|
React.createElement(DotsIcon, null)),
|
|
45
|
-
isOpen && (React.createElement(ItemActions, { replaceAttachmentHandler: handleReplace,
|
|
45
|
+
isOpen && (React.createElement(ItemActions, { replaceAttachmentHandler: handleReplace, handleUpdateInline: (uploadAttachment) => handleUpdateInline &&
|
|
46
|
+
(attachment === null || attachment === void 0 ? void 0 : attachment.modelId) &&
|
|
47
|
+
handleUpdateInline(attachment.modelId, uploadAttachment), downloadAttachmentHandler: handleDownload, submissionId: submissionId, attachmentId: attachment.id, fileName: attachment.name, designation: attachment.type.label, publicUrl: attachment.link, hideActionList: toggleOpen, dispatch: dispatch, dropDownClassName: 'ref_item_dropdown' }))))));
|
|
46
48
|
};
|
|
47
49
|
const ElementItem = styled(Item) `
|
|
48
50
|
display: flex;
|
|
@@ -15,13 +15,14 @@ const getAttachment = (externalFileRef, attachmentsMap) => {
|
|
|
15
15
|
};
|
|
16
16
|
const getFigureData = (element, modelMap, attachmentsMap) => {
|
|
17
17
|
const attachments = [];
|
|
18
|
-
element.containedObjectIDs.map((
|
|
18
|
+
element.containedObjectIDs.map((id) => {
|
|
19
19
|
var _a;
|
|
20
|
-
const object = modelMap.get(
|
|
20
|
+
const object = modelMap.get(id);
|
|
21
21
|
if (object && object.objectType === ObjectTypes.Figure) {
|
|
22
22
|
const externalFileRef = (_a = object.externalFileReferences) === null || _a === void 0 ? void 0 : _a.find((figure) => figure.kind === 'imageRepresentation');
|
|
23
23
|
const attachment = getAttachment(externalFileRef, attachmentsMap);
|
|
24
24
|
if (attachment) {
|
|
25
|
+
attachment.modelId = id;
|
|
25
26
|
attachments.push(attachment);
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -15,4 +15,5 @@ export declare const FileManager: React.FC<{
|
|
|
15
15
|
handleDownload: (url: string) => void;
|
|
16
16
|
handleReplace: (submissionId: string, attachmentId: string, name: string, file: File, typeId: string) => Promise<any>;
|
|
17
17
|
handleChangeDesignation: (submissionId: string, attachmentId: string, typeId: string, name: string) => Promise<any>;
|
|
18
|
+
handleUpdateInline?: (modelId: string, attachment: SubmissionAttachment) => void;
|
|
18
19
|
}>;
|
|
@@ -20,7 +20,11 @@ export interface FileSectionItemProps {
|
|
|
20
20
|
showDesignationActions?: boolean;
|
|
21
21
|
showActions?: boolean;
|
|
22
22
|
handleDownload?: (url: string) => void;
|
|
23
|
-
handleReplace?: (submissionId: string, attachmentId: string, name: string, file: File, typeId: string) => Promise<
|
|
23
|
+
handleReplace?: (submissionId: string, attachmentId: string, name: string, file: File, typeId: string) => Promise<{
|
|
24
|
+
data: {
|
|
25
|
+
uploadAttachment: SubmissionAttachment;
|
|
26
|
+
};
|
|
27
|
+
}>;
|
|
24
28
|
handleChangeDesignation: (submissionId: string, attachmentId: string, typeId: string, name: string) => Promise<boolean>;
|
|
25
29
|
dispatch?: Dispatch<Action>;
|
|
26
30
|
dragRef?: DragElementWrapper<DragSourceOptions>;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import React, { Dispatch } from 'react';
|
|
2
2
|
import { Maybe } from '../../SubmissionInspector/types';
|
|
3
3
|
import { Action } from '../FileSectionState';
|
|
4
|
+
import { SubmissionAttachment } from './FileSectionItem';
|
|
4
5
|
export declare const ItemActions: React.FC<{
|
|
5
6
|
downloadAttachmentHandler: (url: string) => void;
|
|
6
|
-
replaceAttachmentHandler: (submissionId: string, attachmentId: string, name: string, file: File, typeId: string) => Promise<
|
|
7
|
+
replaceAttachmentHandler: (submissionId: string, attachmentId: string, name: string, file: File, typeId: string) => Promise<{
|
|
8
|
+
data: {
|
|
9
|
+
uploadAttachment: SubmissionAttachment;
|
|
10
|
+
};
|
|
11
|
+
}>;
|
|
12
|
+
handleUpdateInline?: (attachment: SubmissionAttachment) => void;
|
|
7
13
|
submissionId: string;
|
|
8
14
|
attachmentId: string;
|
|
9
15
|
fileName: string;
|
|
@@ -16,8 +16,13 @@ export declare const InlineFilesSection: React.FC<{
|
|
|
16
16
|
caption?: string;
|
|
17
17
|
attachments?: SubmissionAttachment[];
|
|
18
18
|
}[];
|
|
19
|
-
handleReplace: (submissionId: string, attachmentId: string, name: string, file: File, typeId: string) => Promise<
|
|
19
|
+
handleReplace: (submissionId: string, attachmentId: string, name: string, file: File, typeId: string) => Promise<{
|
|
20
|
+
data: {
|
|
21
|
+
uploadAttachment: SubmissionAttachment;
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
20
24
|
handleDownload: (url: string) => void;
|
|
25
|
+
handleUpdateInline?: (modelId: string, attachment: SubmissionAttachment) => void;
|
|
21
26
|
isEditor: boolean;
|
|
22
27
|
dispatch: Dispatch<Action>;
|
|
23
28
|
}>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manuscripts/style-guide",
|
|
3
3
|
"description": "Shared components for Manuscripts applications",
|
|
4
|
-
"version": "0.31.
|
|
4
|
+
"version": "0.31.12",
|
|
5
5
|
"repository": "gitlab:atypon-opensource/manuscripts-style-guide",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "dist/cjs",
|