@manuscripts/style-guide 1.13.10 → 1.13.11-LEAN-3771.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.
Files changed (55) hide show
  1. package/dist/cjs/index.js +0 -3
  2. package/dist/cjs/lib/files.js +125 -77
  3. package/dist/es/index.js +0 -3
  4. package/dist/es/lib/files.js +117 -73
  5. package/dist/types/index.d.ts +0 -3
  6. package/dist/types/lib/files.d.ts +19 -24
  7. package/package.json +1 -1
  8. package/dist/cjs/components/FileManager/FileActions.js +0 -134
  9. package/dist/cjs/components/FileManager/FileContainer.js +0 -39
  10. package/dist/cjs/components/FileManager/FileCreatedDate.js +0 -25
  11. package/dist/cjs/components/FileManager/FileManager.js +0 -60
  12. package/dist/cjs/components/FileManager/FileManagerDragLayer.js +0 -55
  13. package/dist/cjs/components/FileManager/FileManagerProvider.js +0 -39
  14. package/dist/cjs/components/FileManager/FileName.js +0 -27
  15. package/dist/cjs/components/FileManager/FileSectionAlert.js +0 -170
  16. package/dist/cjs/components/FileManager/FileTypeIcon.js +0 -20
  17. package/dist/cjs/components/FileManager/FileUploader.js +0 -85
  18. package/dist/cjs/components/FileManager/InlineFilesSection.js +0 -133
  19. package/dist/cjs/components/FileManager/OtherFilesSection.js +0 -101
  20. package/dist/cjs/components/FileManager/SupplementsSection.js +0 -118
  21. package/dist/cjs/components/FileManager/index.js +0 -32
  22. package/dist/cjs/components/FileManager/util.js +0 -138
  23. package/dist/cjs/hooks/use-files.js +0 -39
  24. package/dist/es/components/FileManager/FileActions.js +0 -104
  25. package/dist/es/components/FileManager/FileContainer.js +0 -33
  26. package/dist/es/components/FileManager/FileCreatedDate.js +0 -18
  27. package/dist/es/components/FileManager/FileManager.js +0 -33
  28. package/dist/es/components/FileManager/FileManagerDragLayer.js +0 -48
  29. package/dist/es/components/FileManager/FileManagerProvider.js +0 -12
  30. package/dist/es/components/FileManager/FileName.js +0 -20
  31. package/dist/es/components/FileManager/FileSectionAlert.js +0 -163
  32. package/dist/es/components/FileManager/FileTypeIcon.js +0 -13
  33. package/dist/es/components/FileManager/FileUploader.js +0 -58
  34. package/dist/es/components/FileManager/InlineFilesSection.js +0 -103
  35. package/dist/es/components/FileManager/OtherFilesSection.js +0 -74
  36. package/dist/es/components/FileManager/SupplementsSection.js +0 -91
  37. package/dist/es/components/FileManager/index.js +0 -16
  38. package/dist/es/components/FileManager/util.js +0 -128
  39. package/dist/es/hooks/use-files.js +0 -35
  40. package/dist/types/components/FileManager/FileActions.d.ts +0 -19
  41. package/dist/types/components/FileManager/FileContainer.d.ts +0 -1
  42. package/dist/types/components/FileManager/FileCreatedDate.d.ts +0 -8
  43. package/dist/types/components/FileManager/FileManager.d.ts +0 -30
  44. package/dist/types/components/FileManager/FileManagerDragLayer.d.ts +0 -2
  45. package/dist/types/components/FileManager/FileManagerProvider.d.ts +0 -15
  46. package/dist/types/components/FileManager/FileName.d.ts +0 -6
  47. package/dist/types/components/FileManager/FileSectionAlert.d.ts +0 -13
  48. package/dist/types/components/FileManager/FileTypeIcon.d.ts +0 -5
  49. package/dist/types/components/FileManager/FileUploader.d.ts +0 -5
  50. package/dist/types/components/FileManager/InlineFilesSection.d.ts +0 -6
  51. package/dist/types/components/FileManager/OtherFilesSection.d.ts +0 -5
  52. package/dist/types/components/FileManager/SupplementsSection.d.ts +0 -5
  53. package/dist/types/components/FileManager/index.d.ts +0 -16
  54. package/dist/types/components/FileManager/util.d.ts +0 -25
  55. package/dist/types/hooks/use-files.d.ts +0 -8
package/dist/cjs/index.js CHANGED
@@ -42,8 +42,6 @@ __exportStar(require("./components/Avatar"), exports);
42
42
  __exportStar(require("./components/Dialog"), exports);
43
43
  __exportStar(require("./components/Checkbox"), exports);
44
44
  __exportStar(require("./components/Form"), exports);
45
- __exportStar(require("./components/FileManager"), exports);
46
- __exportStar(require("./components/FileManager/util"), exports);
47
45
  __exportStar(require("./components/Resizer"), exports);
48
46
  __exportStar(require("./components/SaveStatus"), exports);
49
47
  __exportStar(require("./components/StyledModal"), exports);
@@ -68,7 +66,6 @@ __exportStar(require("./components/RelativeDate"), exports);
68
66
  __exportStar(require("./components/Menus"), exports);
69
67
  __exportStar(require("./components/SelectField"), exports);
70
68
  __exportStar(require("./hooks/use-dropdown"), exports);
71
- __exportStar(require("./hooks/use-files"), exports);
72
69
  __exportStar(require("./hooks/use-menus"), exports);
73
70
  __exportStar(require("./hooks/use-scroll-detection"), exports);
74
71
  var use_deep_compare_1 = require("./hooks/use-deep-compare");
@@ -1,84 +1,132 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSupplements = exports.getInlineFiles = exports.isModelFile = void 0;
4
- const json_schema_1 = require("@manuscripts/json-schema");
5
- const util_1 = require("../components/FileManager/util");
6
- const isModelFile = (file) => {
7
- return file.modelId;
8
- };
9
- exports.isModelFile = isModelFile;
10
- const MISSING_FILE = {
11
- id: '',
12
- name: 'Missing file',
13
- type: {
14
- id: 'missing',
15
- },
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
4
  };
17
- const getFile = (files, id) => {
18
- return files.filter((f) => f.id === id)[0] || MISSING_FILE;
19
- };
20
- const getFigureFiles = (element, modelMap, files) => {
21
- const figureFiles = [];
22
- element.containedObjectIDs.map((id) => {
23
- const model = modelMap.get(id);
24
- if (model && model.objectType === json_schema_1.ObjectTypes.Figure) {
25
- const figure = model;
26
- if (figure.src) {
27
- figureFiles.push(Object.assign(Object.assign({}, getFile(files, figure.src)), { modelId: figure._id }));
28
- }
29
- }
30
- });
31
- return figureFiles;
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isImageFile = exports.getFileTypeIcon = exports.getFileIcon = exports.getFileType = exports.FileType = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const icons_1 = require("../components/icons");
9
+ var FileType;
10
+ (function (FileType) {
11
+ FileType[FileType["Image"] = 0] = "Image";
12
+ FileType[FileType["Audio"] = 1] = "Audio";
13
+ FileType[FileType["Video"] = 2] = "Video";
14
+ FileType[FileType["PlainDocument"] = 3] = "PlainDocument";
15
+ FileType[FileType["SheetsWorkbooks"] = 4] = "SheetsWorkbooks";
16
+ FileType[FileType["Latex"] = 5] = "Latex";
17
+ FileType[FileType["CodeFile"] = 6] = "CodeFile";
18
+ FileType[FileType["PdfFile"] = 7] = "PdfFile";
19
+ FileType[FileType["CompressedFile"] = 8] = "CompressedFile";
20
+ FileType[FileType["PlainText"] = 9] = "PlainText";
21
+ FileType[FileType["Figure"] = 10] = "Figure";
22
+ FileType[FileType["GraphicalAbstract"] = 11] = "GraphicalAbstract";
23
+ })(FileType = exports.FileType || (exports.FileType = {}));
24
+ const extension2type = new Map([
25
+ ['png', FileType.Image],
26
+ ['jpg', FileType.Image],
27
+ ['jpeg', FileType.Image],
28
+ ['jfif', FileType.Image],
29
+ ['gif', FileType.Image],
30
+ ['svg', FileType.Image],
31
+ ['tif', FileType.Image],
32
+ ['tiff', FileType.Image],
33
+ ['mp3', FileType.Audio],
34
+ ['wav', FileType.Audio],
35
+ ['wma', FileType.Audio],
36
+ ['flac', FileType.Audio],
37
+ ['avi', FileType.Video],
38
+ ['mp4', FileType.Video],
39
+ ['mov', FileType.Video],
40
+ ['wmv', FileType.Video],
41
+ ['doc', FileType.PlainDocument],
42
+ ['docx', FileType.PlainDocument],
43
+ ['rtf', FileType.PlainDocument],
44
+ ['xls', FileType.SheetsWorkbooks],
45
+ ['xlsx', FileType.SheetsWorkbooks],
46
+ ['xml', FileType.SheetsWorkbooks],
47
+ ['tex', FileType.Latex],
48
+ ['js', FileType.CodeFile],
49
+ ['py', FileType.CodeFile],
50
+ ['tsx', FileType.CodeFile],
51
+ ['html', FileType.CodeFile],
52
+ ['pdf', FileType.PdfFile],
53
+ ['zip', FileType.CompressedFile],
54
+ ['rar', FileType.CompressedFile],
55
+ ['arj', FileType.CompressedFile],
56
+ ['tar.gz', FileType.CompressedFile],
57
+ ['tgz', FileType.CompressedFile],
58
+ ['txt', FileType.PlainText],
59
+ ]);
60
+ const type2icon = new Map([
61
+ [
62
+ FileType.Audio,
63
+ react_1.default.createElement(icons_1.FileAudioIcon, { key: FileType.Audio, className: "file-icon" }),
64
+ ],
65
+ [
66
+ FileType.Video,
67
+ react_1.default.createElement(icons_1.FileVideoIcon, { key: FileType.Video, className: "file-icon" }),
68
+ ],
69
+ [
70
+ FileType.PlainDocument,
71
+ react_1.default.createElement(icons_1.FileDocumentIcon, { key: FileType.PlainDocument, color: "#1A9BC7", className: "file-icon" }),
72
+ ],
73
+ [
74
+ FileType.SheetsWorkbooks,
75
+ react_1.default.createElement(icons_1.FileTableIcon, { key: FileType.SheetsWorkbooks, className: "file-icon" }),
76
+ ],
77
+ [
78
+ FileType.Latex,
79
+ react_1.default.createElement(icons_1.FileLatexIcon, { key: FileType.Latex, color: "#1A9BC7", className: "file-icon" }),
80
+ ],
81
+ [
82
+ FileType.CodeFile,
83
+ react_1.default.createElement(icons_1.FileCodeIcon, { key: FileType.CodeFile, className: "file-icon" }),
84
+ ],
85
+ [
86
+ FileType.PdfFile,
87
+ react_1.default.createElement(icons_1.FilePdfIcon, { key: FileType.PdfFile, className: "file-icon" }),
88
+ ],
89
+ [
90
+ FileType.CompressedFile,
91
+ react_1.default.createElement(icons_1.FileCompressedIcon, { key: FileType.CompressedFile, className: "file-icon" }),
92
+ ],
93
+ [
94
+ FileType.PlainText,
95
+ react_1.default.createElement(icons_1.FileDocumentIcon, { key: FileType.PlainText, color: "#FFBD26", className: "file-icon" }),
96
+ ],
97
+ [
98
+ FileType.Image,
99
+ react_1.default.createElement(icons_1.FileImageIcon, { key: FileType.Image, className: "file-icon" }),
100
+ ],
101
+ [
102
+ FileType.Figure,
103
+ react_1.default.createElement(icons_1.FileFigureIcon, { key: FileType.Figure, className: "file-icon" }),
104
+ ],
105
+ [
106
+ FileType.GraphicalAbstract,
107
+ react_1.default.createElement(icons_1.FileGraphicalAbstractIcon, { key: FileType.GraphicalAbstract, className: "file-icon" }),
108
+ ],
109
+ [undefined, react_1.default.createElement(icons_1.FileUnknownIcon, { key: undefined, className: "file-icon" })],
110
+ ]);
111
+ const getFileType = (name) => {
112
+ const extension = getExtension(name);
113
+ return extension2type.get(extension.toLowerCase());
32
114
  };
33
- const getSupplementFiles = (supplement, files) => {
34
- if (supplement.href) {
35
- const href = supplement.href;
36
- if (href) {
37
- return [
38
- Object.assign(Object.assign({}, getFile(files, href)), { modelId: supplement._id }),
39
- ];
40
- }
41
- }
42
- return [];
115
+ exports.getFileType = getFileType;
116
+ const getFileIcon = (name) => {
117
+ const type = (0, exports.getFileType)(name);
118
+ return type2icon.get(type);
43
119
  };
44
- const getInlineFiles = (modelMap, files) => {
45
- var _a;
46
- const elements = [];
47
- const orders = getOrderByType(modelMap);
48
- const sections = (0, json_schema_1.getModelsByType)(modelMap, json_schema_1.ObjectTypes.Section);
49
- const graphicalAbstractElementIds = (_a = sections.filter((s) => s.category === 'MPSectionCategory:abstract-graphical')[0]) === null || _a === void 0 ? void 0 : _a.elementIDs;
50
- graphicalAbstractElementIds === null || graphicalAbstractElementIds === void 0 ? void 0 : graphicalAbstractElementIds.map((id) => {
51
- const figure = modelMap.get(id);
52
- if (figure) {
53
- elements.push({
54
- modelId: id,
55
- type: util_1.FileType.GraphicalAbstract,
56
- label: 'Graphical Abstract',
57
- files: getFigureFiles(figure, modelMap, files),
58
- });
59
- }
60
- });
61
- const figures = (0, json_schema_1.getModelsByType)(modelMap, json_schema_1.ObjectTypes.FigureElement);
62
- const figureOrder = orders.get(json_schema_1.ObjectTypes.FigureElement);
63
- if (figureOrder) {
64
- }
65
- figures === null || figures === void 0 ? void 0 : figures.filter((f) => !(graphicalAbstractElementIds === null || graphicalAbstractElementIds === void 0 ? void 0 : graphicalAbstractElementIds.includes(f._id))).map((figure, index) => ({
66
- modelId: figure._id,
67
- type: util_1.FileType.Figure,
68
- label: `Figure ${index + 1}`,
69
- files: getFigureFiles(figure, modelMap, files),
70
- })).forEach((e) => elements.push(e));
71
- return elements;
120
+ exports.getFileIcon = getFileIcon;
121
+ const getFileTypeIcon = (type) => {
122
+ return type2icon.get(type);
72
123
  };
73
- exports.getInlineFiles = getInlineFiles;
74
- const getSupplements = (modelMap, files) => {
75
- const supplements = (0, json_schema_1.getModelsByType)(modelMap, json_schema_1.ObjectTypes.Supplement);
76
- return supplements.flatMap((s) => getSupplementFiles(s, files));
124
+ exports.getFileTypeIcon = getFileTypeIcon;
125
+ const isImageFile = (name) => {
126
+ return (0, exports.getFileType)(name) === FileType.Image;
77
127
  };
78
- exports.getSupplements = getSupplements;
79
- const getOrderByType = (modelMap) => {
80
- const groups = new Map();
81
- const orders = (0, json_schema_1.getModelsByType)(modelMap, json_schema_1.ObjectTypes.ElementsOrder);
82
- orders.forEach((o) => groups.set(o.elementType, o));
83
- return groups;
128
+ exports.isImageFile = isImageFile;
129
+ const getExtension = (name) => {
130
+ const index = name.indexOf('.');
131
+ return index ? name.substring(index + 1) : '';
84
132
  };
package/dist/es/index.js CHANGED
@@ -22,8 +22,6 @@ export * from './components/Avatar';
22
22
  export * from './components/Dialog';
23
23
  export * from './components/Checkbox';
24
24
  export * from './components/Form';
25
- export * from './components/FileManager';
26
- export * from './components/FileManager/util';
27
25
  export * from './components/Resizer';
28
26
  export * from './components/SaveStatus';
29
27
  export * from './components/StyledModal';
@@ -48,7 +46,6 @@ export * from './components/RelativeDate';
48
46
  export * from './components/Menus';
49
47
  export * from './components/SelectField';
50
48
  export * from './hooks/use-dropdown';
51
- export * from './hooks/use-files';
52
49
  export * from './hooks/use-menus';
53
50
  export * from './hooks/use-scroll-detection';
54
51
  export { useDeepCompareMemo, useDeepCompareCallback, } from './hooks/use-deep-compare';
@@ -1,78 +1,122 @@
1
- import { getModelsByType, ObjectTypes, } from '@manuscripts/json-schema';
2
- import { FileType } from '../components/FileManager/util';
3
- export const isModelFile = (file) => {
4
- return file.modelId;
1
+ import React from 'react';
2
+ import { FileAudioIcon, FileCodeIcon, FileCompressedIcon, FileDocumentIcon, FileFigureIcon, FileGraphicalAbstractIcon, FileImageIcon, FileLatexIcon, FilePdfIcon, FileTableIcon, FileUnknownIcon, FileVideoIcon, } from '../components/icons';
3
+ export var FileType;
4
+ (function (FileType) {
5
+ FileType[FileType["Image"] = 0] = "Image";
6
+ FileType[FileType["Audio"] = 1] = "Audio";
7
+ FileType[FileType["Video"] = 2] = "Video";
8
+ FileType[FileType["PlainDocument"] = 3] = "PlainDocument";
9
+ FileType[FileType["SheetsWorkbooks"] = 4] = "SheetsWorkbooks";
10
+ FileType[FileType["Latex"] = 5] = "Latex";
11
+ FileType[FileType["CodeFile"] = 6] = "CodeFile";
12
+ FileType[FileType["PdfFile"] = 7] = "PdfFile";
13
+ FileType[FileType["CompressedFile"] = 8] = "CompressedFile";
14
+ FileType[FileType["PlainText"] = 9] = "PlainText";
15
+ FileType[FileType["Figure"] = 10] = "Figure";
16
+ FileType[FileType["GraphicalAbstract"] = 11] = "GraphicalAbstract";
17
+ })(FileType || (FileType = {}));
18
+ const extension2type = new Map([
19
+ ['png', FileType.Image],
20
+ ['jpg', FileType.Image],
21
+ ['jpeg', FileType.Image],
22
+ ['jfif', FileType.Image],
23
+ ['gif', FileType.Image],
24
+ ['svg', FileType.Image],
25
+ ['tif', FileType.Image],
26
+ ['tiff', FileType.Image],
27
+ ['mp3', FileType.Audio],
28
+ ['wav', FileType.Audio],
29
+ ['wma', FileType.Audio],
30
+ ['flac', FileType.Audio],
31
+ ['avi', FileType.Video],
32
+ ['mp4', FileType.Video],
33
+ ['mov', FileType.Video],
34
+ ['wmv', FileType.Video],
35
+ ['doc', FileType.PlainDocument],
36
+ ['docx', FileType.PlainDocument],
37
+ ['rtf', FileType.PlainDocument],
38
+ ['xls', FileType.SheetsWorkbooks],
39
+ ['xlsx', FileType.SheetsWorkbooks],
40
+ ['xml', FileType.SheetsWorkbooks],
41
+ ['tex', FileType.Latex],
42
+ ['js', FileType.CodeFile],
43
+ ['py', FileType.CodeFile],
44
+ ['tsx', FileType.CodeFile],
45
+ ['html', FileType.CodeFile],
46
+ ['pdf', FileType.PdfFile],
47
+ ['zip', FileType.CompressedFile],
48
+ ['rar', FileType.CompressedFile],
49
+ ['arj', FileType.CompressedFile],
50
+ ['tar.gz', FileType.CompressedFile],
51
+ ['tgz', FileType.CompressedFile],
52
+ ['txt', FileType.PlainText],
53
+ ]);
54
+ const type2icon = new Map([
55
+ [
56
+ FileType.Audio,
57
+ React.createElement(FileAudioIcon, { key: FileType.Audio, className: "file-icon" }),
58
+ ],
59
+ [
60
+ FileType.Video,
61
+ React.createElement(FileVideoIcon, { key: FileType.Video, className: "file-icon" }),
62
+ ],
63
+ [
64
+ FileType.PlainDocument,
65
+ React.createElement(FileDocumentIcon, { key: FileType.PlainDocument, color: "#1A9BC7", className: "file-icon" }),
66
+ ],
67
+ [
68
+ FileType.SheetsWorkbooks,
69
+ React.createElement(FileTableIcon, { key: FileType.SheetsWorkbooks, className: "file-icon" }),
70
+ ],
71
+ [
72
+ FileType.Latex,
73
+ React.createElement(FileLatexIcon, { key: FileType.Latex, color: "#1A9BC7", className: "file-icon" }),
74
+ ],
75
+ [
76
+ FileType.CodeFile,
77
+ React.createElement(FileCodeIcon, { key: FileType.CodeFile, className: "file-icon" }),
78
+ ],
79
+ [
80
+ FileType.PdfFile,
81
+ React.createElement(FilePdfIcon, { key: FileType.PdfFile, className: "file-icon" }),
82
+ ],
83
+ [
84
+ FileType.CompressedFile,
85
+ React.createElement(FileCompressedIcon, { key: FileType.CompressedFile, className: "file-icon" }),
86
+ ],
87
+ [
88
+ FileType.PlainText,
89
+ React.createElement(FileDocumentIcon, { key: FileType.PlainText, color: "#FFBD26", className: "file-icon" }),
90
+ ],
91
+ [
92
+ FileType.Image,
93
+ React.createElement(FileImageIcon, { key: FileType.Image, className: "file-icon" }),
94
+ ],
95
+ [
96
+ FileType.Figure,
97
+ React.createElement(FileFigureIcon, { key: FileType.Figure, className: "file-icon" }),
98
+ ],
99
+ [
100
+ FileType.GraphicalAbstract,
101
+ React.createElement(FileGraphicalAbstractIcon, { key: FileType.GraphicalAbstract, className: "file-icon" }),
102
+ ],
103
+ [undefined, React.createElement(FileUnknownIcon, { key: undefined, className: "file-icon" })],
104
+ ]);
105
+ export const getFileType = (name) => {
106
+ const extension = getExtension(name);
107
+ return extension2type.get(extension.toLowerCase());
5
108
  };
6
- const MISSING_FILE = {
7
- id: '',
8
- name: 'Missing file',
9
- type: {
10
- id: 'missing',
11
- },
109
+ export const getFileIcon = (name) => {
110
+ const type = getFileType(name);
111
+ return type2icon.get(type);
12
112
  };
13
- const getFile = (files, id) => {
14
- return files.filter((f) => f.id === id)[0] || MISSING_FILE;
113
+ export const getFileTypeIcon = (type) => {
114
+ return type2icon.get(type);
15
115
  };
16
- const getFigureFiles = (element, modelMap, files) => {
17
- const figureFiles = [];
18
- element.containedObjectIDs.map((id) => {
19
- const model = modelMap.get(id);
20
- if (model && model.objectType === ObjectTypes.Figure) {
21
- const figure = model;
22
- if (figure.src) {
23
- figureFiles.push(Object.assign(Object.assign({}, getFile(files, figure.src)), { modelId: figure._id }));
24
- }
25
- }
26
- });
27
- return figureFiles;
116
+ export const isImageFile = (name) => {
117
+ return getFileType(name) === FileType.Image;
28
118
  };
29
- const getSupplementFiles = (supplement, files) => {
30
- if (supplement.href) {
31
- const href = supplement.href;
32
- if (href) {
33
- return [
34
- Object.assign(Object.assign({}, getFile(files, href)), { modelId: supplement._id }),
35
- ];
36
- }
37
- }
38
- return [];
39
- };
40
- export const getInlineFiles = (modelMap, files) => {
41
- var _a;
42
- const elements = [];
43
- const orders = getOrderByType(modelMap);
44
- const sections = getModelsByType(modelMap, ObjectTypes.Section);
45
- const graphicalAbstractElementIds = (_a = sections.filter((s) => s.category === 'MPSectionCategory:abstract-graphical')[0]) === null || _a === void 0 ? void 0 : _a.elementIDs;
46
- graphicalAbstractElementIds === null || graphicalAbstractElementIds === void 0 ? void 0 : graphicalAbstractElementIds.map((id) => {
47
- const figure = modelMap.get(id);
48
- if (figure) {
49
- elements.push({
50
- modelId: id,
51
- type: FileType.GraphicalAbstract,
52
- label: 'Graphical Abstract',
53
- files: getFigureFiles(figure, modelMap, files),
54
- });
55
- }
56
- });
57
- const figures = getModelsByType(modelMap, ObjectTypes.FigureElement);
58
- const figureOrder = orders.get(ObjectTypes.FigureElement);
59
- if (figureOrder) {
60
- }
61
- figures === null || figures === void 0 ? void 0 : figures.filter((f) => !(graphicalAbstractElementIds === null || graphicalAbstractElementIds === void 0 ? void 0 : graphicalAbstractElementIds.includes(f._id))).map((figure, index) => ({
62
- modelId: figure._id,
63
- type: FileType.Figure,
64
- label: `Figure ${index + 1}`,
65
- files: getFigureFiles(figure, modelMap, files),
66
- })).forEach((e) => elements.push(e));
67
- return elements;
68
- };
69
- export const getSupplements = (modelMap, files) => {
70
- const supplements = getModelsByType(modelMap, ObjectTypes.Supplement);
71
- return supplements.flatMap((s) => getSupplementFiles(s, files));
72
- };
73
- const getOrderByType = (modelMap) => {
74
- const groups = new Map();
75
- const orders = getModelsByType(modelMap, ObjectTypes.ElementsOrder);
76
- orders.forEach((o) => groups.set(o.elementType, o));
77
- return groups;
119
+ const getExtension = (name) => {
120
+ const index = name.indexOf('.');
121
+ return index ? name.substring(index + 1) : '';
78
122
  };
@@ -23,8 +23,6 @@ export * from './components/Avatar';
23
23
  export * from './components/Dialog';
24
24
  export * from './components/Checkbox';
25
25
  export * from './components/Form';
26
- export * from './components/FileManager';
27
- export * from './components/FileManager/util';
28
26
  export * from './components/Resizer';
29
27
  export * from './components/SaveStatus';
30
28
  export * from './components/StyledModal';
@@ -49,7 +47,6 @@ export * from './components/RelativeDate';
49
47
  export * from './components/Menus';
50
48
  export * from './components/SelectField';
51
49
  export * from './hooks/use-dropdown';
52
- export * from './hooks/use-files';
53
50
  export * from './hooks/use-menus';
54
51
  export * from './hooks/use-scroll-detection';
55
52
  export { useDeepCompareMemo, useDeepCompareCallback, } from './hooks/use-deep-compare';
@@ -1,24 +1,19 @@
1
- import { Model } from '@manuscripts/json-schema';
2
- import { FileType } from '../components/FileManager/util';
3
- export type FileDesignation = {
4
- id: string;
5
- label?: string;
6
- };
7
- export type FileAttachment = {
8
- id: string;
9
- name: string;
10
- type: FileDesignation;
11
- createdDate?: Date;
12
- };
13
- export type ModelFile = FileAttachment & {
14
- modelId: string;
15
- };
16
- export type ElementFiles = {
17
- modelId: string;
18
- label: string;
19
- type: FileType;
20
- files: ModelFile[];
21
- };
22
- export declare const isModelFile: (file: FileAttachment) => file is ModelFile;
23
- export declare const getInlineFiles: (modelMap: Map<string, Model>, files: FileAttachment[]) => ElementFiles[];
24
- export declare const getSupplements: (modelMap: Map<string, Model>, files: FileAttachment[]) => ModelFile[];
1
+ /// <reference types="react" />
2
+ export declare enum FileType {
3
+ Image = 0,
4
+ Audio = 1,
5
+ Video = 2,
6
+ PlainDocument = 3,
7
+ SheetsWorkbooks = 4,
8
+ Latex = 5,
9
+ CodeFile = 6,
10
+ PdfFile = 7,
11
+ CompressedFile = 8,
12
+ PlainText = 9,
13
+ Figure = 10,
14
+ GraphicalAbstract = 11
15
+ }
16
+ export declare const getFileType: (name: string) => FileType | undefined;
17
+ export declare const getFileIcon: (name: string) => JSX.Element | undefined;
18
+ export declare const getFileTypeIcon: (type: FileType) => JSX.Element | undefined;
19
+ export declare const isImageFile: (name: string) => 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": "1.13.10",
4
+ "version": "1.13.11-LEAN-3771.0",
5
5
  "repository": "github:Atypon-OpenSource/manuscripts-style-guide",
6
6
  "license": "Apache-2.0",
7
7
  "main": "dist/cjs",
@@ -1,134 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.FileAction = exports.FileActionDropdownList = exports.ActionsIcon = exports.FileActions = void 0;
39
- const react_1 = __importStar(require("react"));
40
- const styled_components_1 = __importDefault(require("styled-components"));
41
- const use_dropdown_1 = require("../../hooks/use-dropdown");
42
- const Dialog_1 = require("../Dialog");
43
- const Dropdown_1 = require("../Dropdown");
44
- const icons_1 = require("../icons");
45
- const FileManager_1 = require("./FileManager");
46
- const FileActions = ({ sectionType, handleDownload, handleReplace, handleDetach, move, className, }) => {
47
- const can = (0, react_1.useContext)(FileManager_1.PermissionsContext);
48
- const { isOpen, toggleOpen, wrapperRef } = (0, use_dropdown_1.useDropdown)();
49
- const [isMoveDialogOpen, setMoveDialogOpen] = (0, react_1.useState)(false);
50
- const showDownload = (can === null || can === void 0 ? void 0 : can.downloadFiles) && handleDownload;
51
- const showReplace = (can === null || can === void 0 ? void 0 : can.replaceFile) && handleReplace;
52
- const showDetach = (can === null || can === void 0 ? void 0 : can.editArticle) && handleDetach;
53
- const showMove = (can === null || can === void 0 ? void 0 : can.moveFile) && move;
54
- const show = showDownload || showReplace || showDetach || showMove;
55
- const fileInputRef = (0, react_1.useRef)(null);
56
- const handleChange = (event) => __awaiter(void 0, void 0, void 0, function* () {
57
- if (handleReplace && event && event.target && event.target.files) {
58
- const file = event.target.files[0];
59
- yield handleReplace(file);
60
- }
61
- });
62
- const openFileDialog = () => {
63
- if (fileInputRef && fileInputRef.current) {
64
- fileInputRef.current.click();
65
- }
66
- };
67
- return show ? (react_1.default.createElement(Dropdown_1.DropdownContainer, { ref: wrapperRef },
68
- react_1.default.createElement(exports.ActionsIcon, { onClick: toggleOpen, type: "button", className: "show-on-hover", "data-cy": "file-actions", "aria-label": "Actions", "aria-pressed": isOpen },
69
- react_1.default.createElement(icons_1.DotsIcon, null)),
70
- isOpen && (react_1.default.createElement(exports.FileActionDropdownList, { "data-cy": "file-actions-dropdown", direction: "right", className: className, width: 192, top: 5, onClick: toggleOpen },
71
- showDownload && (react_1.default.createElement(exports.FileAction, { onClick: handleDownload }, "Download")),
72
- showReplace && (react_1.default.createElement(react_1.default.Fragment, null,
73
- react_1.default.createElement(exports.FileAction, { onClick: openFileDialog }, "Replace"),
74
- react_1.default.createElement("input", { ref: fileInputRef, type: "file", style: { display: 'none' }, onChange: handleChange }))),
75
- showDetach && react_1.default.createElement(exports.FileAction, { onClick: handleDetach }, "Detach"),
76
- showMove && (react_1.default.createElement(exports.FileAction, { onClick: () => setMoveDialogOpen(true) },
77
- "Move to ",
78
- move.sectionType)))),
79
- showMove && (react_1.default.createElement(MoveFileConfirmationDialog, { "data-cy": "file-move-confirm-dialog", isOpen: isMoveDialogOpen, close: () => setMoveDialogOpen(false), source: sectionType, target: move.sectionType, handleMove: move.handler })))) : (react_1.default.createElement(react_1.default.Fragment, null));
80
- };
81
- exports.FileActions = FileActions;
82
- const MoveFileConfirmationDialog = ({ isOpen, close, source, target, handleMove }) => {
83
- const header = `Are you sure you want to move this file to “${target}”?`;
84
- const message = `The file will be removed from “${source}” and added to “${target}”.`;
85
- const handleConfirm = () => __awaiter(void 0, void 0, void 0, function* () {
86
- yield handleMove();
87
- close();
88
- });
89
- return (react_1.default.createElement(Dialog_1.Dialog, { isOpen: isOpen, category: Dialog_1.Category.confirmation, header: header, message: message, actions: {
90
- primary: {
91
- action: handleConfirm,
92
- title: 'Move',
93
- },
94
- secondary: {
95
- action: () => close(),
96
- title: 'Cancel',
97
- },
98
- } }));
99
- };
100
- exports.ActionsIcon = styled_components_1.default.button `
101
- border: none;
102
- background: transparent;
103
- cursor: pointer;
104
- padding: 0 8px;
105
- &:focus {
106
- outline: none;
107
- }
108
- &:hover svg circle {
109
- fill: #1a9bc7;
110
- }
111
- `;
112
- exports.FileActionDropdownList = (0, styled_components_1.default)(Dropdown_1.DropdownList) `
113
- border: 1px solid #e2e2e2;
114
- box-sizing: border-box;
115
- box-shadow: 0 4px 9px rgba(0, 0, 0, 0.3);
116
- border-radius: 8px;
117
- min-width: 180px;
118
- background: ${(props) => props.theme.colors.background.primary};
119
- z-index: 999;
120
- text-align: left;
121
- overflow: hidden;
122
- `;
123
- exports.FileAction = styled_components_1.default.div `
124
- font-family: ${(props) => props.theme.font.family.Lato};
125
- cursor: pointer;
126
- font-size: 16px;
127
- line-height: 24px;
128
- color: ${(props) => props.theme.colors.text.primary};
129
- padding: 16px;
130
- &:hover,
131
- &:focus {
132
- background: #f2fbfc;
133
- }
134
- `;