@manuscripts/style-guide 0.31.0 → 0.31.1
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 +14 -2
- package/dist/cjs/components/FileManager/InlineFilesSection.js +1 -3
- package/dist/es/components/FileManager/FileManager.js +15 -3
- package/dist/es/components/FileManager/InlineFilesSection.js +3 -5
- package/dist/types/components/FileManager/InlineFilesSection.d.ts +8 -3
- package/package.json +1 -1
|
@@ -34,6 +34,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
34
34
|
exports.FileManager = exports.PermissionsContext = void 0;
|
|
35
35
|
const react_1 = __importStar(require("react"));
|
|
36
36
|
const react_tooltip_1 = __importDefault(require("react-tooltip"));
|
|
37
|
+
const inlineFiles_1 = __importDefault(require("../../lib/inlineFiles"));
|
|
37
38
|
const AlertMessage_1 = require("../AlertMessage");
|
|
38
39
|
const Inspector_1 = require("../Inspector");
|
|
39
40
|
const InspectorSection_1 = require("../InspectorSection");
|
|
@@ -74,13 +75,24 @@ const FileManager = ({ submissionId, attachments, modelMap, enableDragAndDrop, c
|
|
|
74
75
|
const handleDownloadFile = (0, react_1.useCallback)((publicUrl) => {
|
|
75
76
|
return handleDownload(publicUrl);
|
|
76
77
|
}, [handleDownload]);
|
|
78
|
+
const inlineFiles = (0, react_1.useMemo)(() => (0, inlineFiles_1.default)(modelMap, attachments), [modelMap.values(), attachments]);
|
|
79
|
+
const inlineAttachmentsIds = (0, react_1.useMemo)(() => {
|
|
80
|
+
const attachmentsIDs = new Set();
|
|
81
|
+
inlineFiles.map(({ attachments }) => {
|
|
82
|
+
if (attachments) {
|
|
83
|
+
attachments.map((attachment) => attachmentsIDs.add(attachment.id));
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return attachmentsIDs;
|
|
87
|
+
}, [inlineFiles]);
|
|
77
88
|
const getFileSectionExternalFile = (fileSection) => {
|
|
78
89
|
const isSupplementOrOtherFilesTab = fileSection === util_1.FileSectionType.Supplements ||
|
|
79
90
|
fileSection === util_1.FileSectionType.OtherFile;
|
|
80
91
|
const itemsData = attachments.filter((element) => {
|
|
81
92
|
const designation = util_1.namesWithDesignationMap.get(element.type.label);
|
|
82
93
|
return (designation !== undefined &&
|
|
83
|
-
util_1.designationWithFileSectionsMap.get(designation) === fileSection
|
|
94
|
+
util_1.designationWithFileSectionsMap.get(designation) === fileSection &&
|
|
95
|
+
!inlineAttachmentsIds.has(element.id));
|
|
84
96
|
});
|
|
85
97
|
const itemsDataWithTitle = (0, util_1.generateAttachmentsTitles)(itemsData, fileSection);
|
|
86
98
|
const filesItems = itemsDataWithTitle.map((element) => {
|
|
@@ -130,7 +142,7 @@ const FileManager = ({ submissionId, attachments, modelMap, enableDragAndDrop, c
|
|
|
130
142
|
react_1.default.createElement("div", null, "Files excluded from the final submission.")))),
|
|
131
143
|
react_1.default.createElement(Inspector_1.InspectorTabPanels, { style: { overflowY: 'visible', position: 'relative' } },
|
|
132
144
|
react_1.default.createElement(Inspector_1.InspectorTabPanel, null,
|
|
133
|
-
react_1.default.createElement(InlineFilesSection_1.InlineFilesSection, {
|
|
145
|
+
react_1.default.createElement(InlineFilesSection_1.InlineFilesSection, { inlineFiles: inlineFiles, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, isEditor: enableDragAndDrop, dispatch: dispatch })),
|
|
134
146
|
react_1.default.createElement(Inspector_1.InspectorTabPanel, null,
|
|
135
147
|
react_1.default.createElement(FilesSection_1.FilesSection, { submissionId: submissionId, enableDragAndDrop: enableDragAndDrop, handleUpload: handleUploadFile, fileSection: util_1.FileSectionType.Supplements, filesItem: getFileSectionExternalFile(util_1.FileSectionType.Supplements), state: state, dispatch: dispatch })),
|
|
136
148
|
react_1.default.createElement(Inspector_1.InspectorTabPanel, null,
|
|
@@ -26,14 +26,12 @@ exports.InlineFilesSection = void 0;
|
|
|
26
26
|
const react_1 = __importStar(require("react"));
|
|
27
27
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
28
28
|
const use_dropdown_1 = require("../../hooks/use-dropdown");
|
|
29
|
-
const inlineFiles_1 = __importDefault(require("../../lib/inlineFiles"));
|
|
30
29
|
const dots_icon_1 = __importDefault(require("../icons/dots-icon"));
|
|
31
30
|
const FileInfo_1 = require("./FileSectionItem/FileInfo");
|
|
32
31
|
const FileSectionItem_1 = require("./FileSectionItem/FileSectionItem");
|
|
33
32
|
const ItemActions_1 = require("./FileSectionItem/ItemActions");
|
|
34
33
|
const util_1 = require("./util");
|
|
35
|
-
const InlineFilesSection = ({ submissionId, handleReplace, handleDownload,
|
|
36
|
-
const inlineFiles = (0, react_1.useMemo)(() => (0, inlineFiles_1.default)(modelMap, attachments), [modelMap, attachments]);
|
|
34
|
+
const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, inlineFiles, isEditor, dispatch, }) => {
|
|
37
35
|
const onElementClick = (0, react_1.useCallback)((e) => {
|
|
38
36
|
if (!isEditor) {
|
|
39
37
|
return;
|
|
@@ -7,8 +7,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import React, { createContext, useCallback, useReducer } from 'react';
|
|
10
|
+
import React, { createContext, useCallback, useMemo, useReducer } from 'react';
|
|
11
11
|
import ReactTooltip from 'react-tooltip';
|
|
12
|
+
import getInlineFiles from '../../lib/inlineFiles';
|
|
12
13
|
import { AlertMessage, AlertMessageType } from '../AlertMessage';
|
|
13
14
|
import { InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabPanels, InspectorTabs, } from '../Inspector';
|
|
14
15
|
import { InspectorSection } from '../InspectorSection';
|
|
@@ -49,13 +50,24 @@ export const FileManager = ({ submissionId, attachments, modelMap, enableDragAnd
|
|
|
49
50
|
const handleDownloadFile = useCallback((publicUrl) => {
|
|
50
51
|
return handleDownload(publicUrl);
|
|
51
52
|
}, [handleDownload]);
|
|
53
|
+
const inlineFiles = useMemo(() => getInlineFiles(modelMap, attachments), [modelMap.values(), attachments]);
|
|
54
|
+
const inlineAttachmentsIds = useMemo(() => {
|
|
55
|
+
const attachmentsIDs = new Set();
|
|
56
|
+
inlineFiles.map(({ attachments }) => {
|
|
57
|
+
if (attachments) {
|
|
58
|
+
attachments.map((attachment) => attachmentsIDs.add(attachment.id));
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return attachmentsIDs;
|
|
62
|
+
}, [inlineFiles]);
|
|
52
63
|
const getFileSectionExternalFile = (fileSection) => {
|
|
53
64
|
const isSupplementOrOtherFilesTab = fileSection === FileSectionType.Supplements ||
|
|
54
65
|
fileSection === FileSectionType.OtherFile;
|
|
55
66
|
const itemsData = attachments.filter((element) => {
|
|
56
67
|
const designation = namesWithDesignationMap.get(element.type.label);
|
|
57
68
|
return (designation !== undefined &&
|
|
58
|
-
designationWithFileSectionsMap.get(designation) === fileSection
|
|
69
|
+
designationWithFileSectionsMap.get(designation) === fileSection &&
|
|
70
|
+
!inlineAttachmentsIds.has(element.id));
|
|
59
71
|
});
|
|
60
72
|
const itemsDataWithTitle = generateAttachmentsTitles(itemsData, fileSection);
|
|
61
73
|
const filesItems = itemsDataWithTitle.map((element) => {
|
|
@@ -105,7 +117,7 @@ export const FileManager = ({ submissionId, attachments, modelMap, enableDragAnd
|
|
|
105
117
|
React.createElement("div", null, "Files excluded from the final submission.")))),
|
|
106
118
|
React.createElement(InspectorTabPanels, { style: { overflowY: 'visible', position: 'relative' } },
|
|
107
119
|
React.createElement(InspectorTabPanel, null,
|
|
108
|
-
React.createElement(InlineFilesSection, {
|
|
120
|
+
React.createElement(InlineFilesSection, { inlineFiles: inlineFiles, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, isEditor: enableDragAndDrop, dispatch: dispatch })),
|
|
109
121
|
React.createElement(InspectorTabPanel, null,
|
|
110
122
|
React.createElement(FilesSection, { submissionId: submissionId, enableDragAndDrop: enableDragAndDrop, handleUpload: handleUploadFile, fileSection: FileSectionType.Supplements, filesItem: getFileSectionExternalFile(FileSectionType.Supplements), state: state, dispatch: dispatch })),
|
|
111
123
|
React.createElement(InspectorTabPanel, null,
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import React, { useCallback
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
import { useDropdown } from '../../hooks/use-dropdown';
|
|
4
|
-
import getInlineFiles from '../../lib/inlineFiles';
|
|
5
4
|
import DotsIcon from '../icons/dots-icon';
|
|
6
5
|
import { FileDescription, FileInfoContainer, FileNameTitleContainer, FileTitle, } from './FileSectionItem/FileInfo';
|
|
7
6
|
import { ActionsIcon, Item, } from './FileSectionItem/FileSectionItem';
|
|
8
7
|
import { ItemActions } from './FileSectionItem/ItemActions';
|
|
9
|
-
import { extensionsWithFileTypesMap, fileTypesWithIconMap } from './util';
|
|
10
|
-
export const InlineFilesSection = ({ submissionId, handleReplace, handleDownload,
|
|
11
|
-
const inlineFiles = useMemo(() => getInlineFiles(modelMap, attachments), [modelMap, attachments]);
|
|
8
|
+
import { extensionsWithFileTypesMap, fileTypesWithIconMap, } from './util';
|
|
9
|
+
export const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, inlineFiles, isEditor, dispatch, }) => {
|
|
12
10
|
const onElementClick = useCallback((e) => {
|
|
13
11
|
if (!isEditor) {
|
|
14
12
|
return;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Model } from '@manuscripts/manuscripts-json-schema';
|
|
2
1
|
import React, { Dispatch } from 'react';
|
|
3
2
|
import { SubmissionAttachment } from './FileSectionItem/FileSectionItem';
|
|
4
3
|
import { Action } from './FileSectionState';
|
|
4
|
+
import { FileType } from './util';
|
|
5
5
|
export interface ExternalFileRef {
|
|
6
6
|
url: string;
|
|
7
7
|
kind?: string;
|
|
@@ -9,8 +9,13 @@ export interface ExternalFileRef {
|
|
|
9
9
|
}
|
|
10
10
|
export declare const InlineFilesSection: React.FC<{
|
|
11
11
|
submissionId: string;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
inlineFiles: {
|
|
13
|
+
id: string;
|
|
14
|
+
label: string;
|
|
15
|
+
type: FileType;
|
|
16
|
+
caption?: string;
|
|
17
|
+
attachments?: SubmissionAttachment[];
|
|
18
|
+
}[];
|
|
14
19
|
handleReplace: (submissionId: string, attachmentId: string, name: string, file: File, typeId: string) => Promise<boolean>;
|
|
15
20
|
handleDownload: (url: string) => void;
|
|
16
21
|
isEditor: boolean;
|
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.1",
|
|
5
5
|
"repository": "gitlab:atypon-opensource/manuscripts-style-guide",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "dist/cjs",
|