@manuscripts/style-guide 1.13.9-LEAN-3311.0 → 1.13.9-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 (65) hide show
  1. package/dist/cjs/components/Menus/Menus.js +2 -19
  2. package/dist/cjs/hooks/use-menus.js +2 -2
  3. package/dist/cjs/index.js +0 -4
  4. package/dist/cjs/lib/files.js +125 -77
  5. package/dist/es/components/Menus/Menus.js +2 -19
  6. package/dist/es/hooks/use-menus.js +2 -2
  7. package/dist/es/index.js +0 -4
  8. package/dist/es/lib/files.js +117 -73
  9. package/dist/types/components/Menus/Menus.d.ts +2 -2
  10. package/dist/types/hooks/use-menus.d.ts +2 -2
  11. package/dist/types/index.d.ts +0 -4
  12. package/dist/types/lib/files.d.ts +19 -24
  13. package/dist/types/lib/menus.d.ts +1 -6
  14. package/package.json +1 -1
  15. package/dist/cjs/components/FileManager/FileActions.js +0 -134
  16. package/dist/cjs/components/FileManager/FileContainer.js +0 -39
  17. package/dist/cjs/components/FileManager/FileCreatedDate.js +0 -25
  18. package/dist/cjs/components/FileManager/FileManager.js +0 -60
  19. package/dist/cjs/components/FileManager/FileManagerDragLayer.js +0 -55
  20. package/dist/cjs/components/FileManager/FileManagerProvider.js +0 -39
  21. package/dist/cjs/components/FileManager/FileName.js +0 -27
  22. package/dist/cjs/components/FileManager/FileSectionAlert.js +0 -170
  23. package/dist/cjs/components/FileManager/FileTypeIcon.js +0 -20
  24. package/dist/cjs/components/FileManager/FileUploader.js +0 -85
  25. package/dist/cjs/components/FileManager/InlineFilesSection.js +0 -133
  26. package/dist/cjs/components/FileManager/OtherFilesSection.js +0 -101
  27. package/dist/cjs/components/FileManager/SupplementsSection.js +0 -118
  28. package/dist/cjs/components/FileManager/index.js +0 -32
  29. package/dist/cjs/components/FileManager/util.js +0 -138
  30. package/dist/cjs/components/InsertTableDialog.js +0 -130
  31. package/dist/cjs/hooks/use-files.js +0 -39
  32. package/dist/es/components/FileManager/FileActions.js +0 -104
  33. package/dist/es/components/FileManager/FileContainer.js +0 -33
  34. package/dist/es/components/FileManager/FileCreatedDate.js +0 -18
  35. package/dist/es/components/FileManager/FileManager.js +0 -33
  36. package/dist/es/components/FileManager/FileManagerDragLayer.js +0 -48
  37. package/dist/es/components/FileManager/FileManagerProvider.js +0 -12
  38. package/dist/es/components/FileManager/FileName.js +0 -20
  39. package/dist/es/components/FileManager/FileSectionAlert.js +0 -163
  40. package/dist/es/components/FileManager/FileTypeIcon.js +0 -13
  41. package/dist/es/components/FileManager/FileUploader.js +0 -58
  42. package/dist/es/components/FileManager/InlineFilesSection.js +0 -103
  43. package/dist/es/components/FileManager/OtherFilesSection.js +0 -74
  44. package/dist/es/components/FileManager/SupplementsSection.js +0 -91
  45. package/dist/es/components/FileManager/index.js +0 -16
  46. package/dist/es/components/FileManager/util.js +0 -128
  47. package/dist/es/components/InsertTableDialog.js +0 -100
  48. package/dist/es/hooks/use-files.js +0 -35
  49. package/dist/types/components/FileManager/FileActions.d.ts +0 -19
  50. package/dist/types/components/FileManager/FileContainer.d.ts +0 -1
  51. package/dist/types/components/FileManager/FileCreatedDate.d.ts +0 -8
  52. package/dist/types/components/FileManager/FileManager.d.ts +0 -30
  53. package/dist/types/components/FileManager/FileManagerDragLayer.d.ts +0 -2
  54. package/dist/types/components/FileManager/FileManagerProvider.d.ts +0 -15
  55. package/dist/types/components/FileManager/FileName.d.ts +0 -6
  56. package/dist/types/components/FileManager/FileSectionAlert.d.ts +0 -13
  57. package/dist/types/components/FileManager/FileTypeIcon.d.ts +0 -5
  58. package/dist/types/components/FileManager/FileUploader.d.ts +0 -5
  59. package/dist/types/components/FileManager/InlineFilesSection.d.ts +0 -6
  60. package/dist/types/components/FileManager/OtherFilesSection.d.ts +0 -5
  61. package/dist/types/components/FileManager/SupplementsSection.d.ts +0 -5
  62. package/dist/types/components/FileManager/index.d.ts +0 -16
  63. package/dist/types/components/FileManager/util.d.ts +0 -25
  64. package/dist/types/components/InsertTableDialog.d.ts +0 -22
  65. package/dist/types/hooks/use-files.d.ts +0 -8
@@ -45,7 +45,6 @@ exports.ColumnChangeWarningDialog = exports.Label = exports.Block = exports.Bloc
45
45
  const react_1 = __importStar(require("react"));
46
46
  const styled_components_1 = __importDefault(require("styled-components"));
47
47
  const Dialog_1 = require("../Dialog");
48
- const InsertTableDialog_1 = require("../InsertTableDialog");
49
48
  const Submenu_1 = require("./Submenu");
50
49
  const MenusContainer = styled_components_1.default.div `
51
50
  display: flex;
@@ -70,11 +69,6 @@ const MenuContainer = styled_components_1.default.div `
70
69
  `;
71
70
  const Menus = ({ menus, innerRef, handleClick, }) => {
72
71
  const [columnMenu, setColumnMenu] = (0, react_1.useState)(undefined);
73
- const [openDialog, setOpenDialog] = (0, react_1.useState)(false);
74
- const [indices, setIndices] = (0, react_1.useState)([]);
75
- const toggleDialog = () => {
76
- setOpenDialog(!openDialog);
77
- };
78
72
  return (react_1.default.createElement(MenusContainer, { ref: innerRef },
79
73
  menus.map((menu, index) => {
80
74
  return (react_1.default.createElement(MenuContainer, { key: `menu-${index}`, isEnabled: menu.isEnabled },
@@ -84,17 +78,7 @@ const Menus = ({ menus, innerRef, handleClick, }) => {
84
78
  }, isOpen: menu.isOpen },
85
79
  react_1.default.createElement(Submenu_1.Text, null, menu.label)),
86
80
  menu.isEnabled && menu.isOpen && menu.submenu && (react_1.default.createElement(Submenu_1.SubmenusContainer, null, menu.submenu.map((submenu, sindex) => {
87
- return (react_1.default.createElement(Submenu_1.Submenu, { key: `${index}-${sindex}`, menu: submenu, handleClick: (i) => {
88
- const indices = [index, sindex, ...i];
89
- if ('id' in submenu &&
90
- submenu.id === 'insert-table-element') {
91
- setIndices(indices);
92
- toggleDialog();
93
- }
94
- else {
95
- handleClick(indices);
96
- }
97
- }, setColumnMenu: setColumnMenu }));
81
+ return (react_1.default.createElement(Submenu_1.Submenu, { key: `${index}-${sindex}`, menu: submenu, handleClick: (i) => handleClick([index, sindex, ...i]), setColumnMenu: setColumnMenu }));
98
82
  })))));
99
83
  }),
100
84
  react_1.default.createElement(exports.ColumnChangeWarningDialog, { isOpen: !!columnMenu, primaryAction: () => {
@@ -102,8 +86,7 @@ const Menus = ({ menus, innerRef, handleClick, }) => {
102
86
  columnMenu.run();
103
87
  setColumnMenu(undefined);
104
88
  }
105
- }, secondaryAction: () => setColumnMenu(undefined) }),
106
- openDialog && (react_1.default.createElement(InsertTableDialog_1.InsertTableDialog, { run: (tableConfig) => handleClick(indices, tableConfig), open: openDialog, onClose: toggleDialog }))));
89
+ }, secondaryAction: () => setColumnMenu(undefined) })));
107
90
  };
108
91
  exports.Menus = Menus;
109
92
  exports.orderedListContextMenu = [
@@ -53,13 +53,13 @@ const getMenuAt = (state, position) => {
53
53
  const useMenus = (menus) => {
54
54
  const [pointer, setPointer] = (0, react_1.useState)(initialPointer);
55
55
  const state = getMenuState(menus, pointer);
56
- const handleClick = (0, react_1.useCallback)((indices, tableConfig) => {
56
+ const handleClick = (0, react_1.useCallback)((indices) => {
57
57
  const menu = getMenuAt(state, indices);
58
58
  if (!menu || !menu.isEnabled) {
59
59
  return;
60
60
  }
61
61
  if (menu.run) {
62
- menu.run(tableConfig);
62
+ menu.run();
63
63
  setPointer([-1, -1, -1]);
64
64
  }
65
65
  else if (menu.submenu) {
package/dist/cjs/index.js CHANGED
@@ -40,11 +40,8 @@ __exportStar(require("./components/RadioButton"), exports);
40
40
  __exportStar(require("./components/AutoSaveInput"), exports);
41
41
  __exportStar(require("./components/Avatar"), exports);
42
42
  __exportStar(require("./components/Dialog"), exports);
43
- __exportStar(require("./components/InsertTableDialog"), exports);
44
43
  __exportStar(require("./components/Checkbox"), exports);
45
44
  __exportStar(require("./components/Form"), exports);
46
- __exportStar(require("./components/FileManager"), exports);
47
- __exportStar(require("./components/FileManager/util"), exports);
48
45
  __exportStar(require("./components/Resizer"), exports);
49
46
  __exportStar(require("./components/SaveStatus"), exports);
50
47
  __exportStar(require("./components/StyledModal"), exports);
@@ -70,7 +67,6 @@ __exportStar(require("./components/RelativeDate"), exports);
70
67
  __exportStar(require("./components/Menus"), exports);
71
68
  __exportStar(require("./components/SelectField"), exports);
72
69
  __exportStar(require("./hooks/use-dropdown"), exports);
73
- __exportStar(require("./hooks/use-files"), exports);
74
70
  __exportStar(require("./hooks/use-menus"), exports);
75
71
  __exportStar(require("./hooks/use-scroll-detection"), exports);
76
72
  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
  };
@@ -16,7 +16,6 @@
16
16
  import React, { useState } from 'react';
17
17
  import styled from 'styled-components';
18
18
  import { Category, Dialog } from '../Dialog';
19
- import { InsertTableDialog } from '../InsertTableDialog';
20
19
  import { Submenu, SubmenusContainer, Text } from './Submenu';
21
20
  const MenusContainer = styled.div `
22
21
  display: flex;
@@ -41,11 +40,6 @@ const MenuContainer = styled.div `
41
40
  `;
42
41
  export const Menus = ({ menus, innerRef, handleClick, }) => {
43
42
  const [columnMenu, setColumnMenu] = useState(undefined);
44
- const [openDialog, setOpenDialog] = useState(false);
45
- const [indices, setIndices] = useState([]);
46
- const toggleDialog = () => {
47
- setOpenDialog(!openDialog);
48
- };
49
43
  return (React.createElement(MenusContainer, { ref: innerRef },
50
44
  menus.map((menu, index) => {
51
45
  return (React.createElement(MenuContainer, { key: `menu-${index}`, isEnabled: menu.isEnabled },
@@ -55,17 +49,7 @@ export const Menus = ({ menus, innerRef, handleClick, }) => {
55
49
  }, isOpen: menu.isOpen },
56
50
  React.createElement(Text, null, menu.label)),
57
51
  menu.isEnabled && menu.isOpen && menu.submenu && (React.createElement(SubmenusContainer, null, menu.submenu.map((submenu, sindex) => {
58
- return (React.createElement(Submenu, { key: `${index}-${sindex}`, menu: submenu, handleClick: (i) => {
59
- const indices = [index, sindex, ...i];
60
- if ('id' in submenu &&
61
- submenu.id === 'insert-table-element') {
62
- setIndices(indices);
63
- toggleDialog();
64
- }
65
- else {
66
- handleClick(indices);
67
- }
68
- }, setColumnMenu: setColumnMenu }));
52
+ return (React.createElement(Submenu, { key: `${index}-${sindex}`, menu: submenu, handleClick: (i) => handleClick([index, sindex, ...i]), setColumnMenu: setColumnMenu }));
69
53
  })))));
70
54
  }),
71
55
  React.createElement(ColumnChangeWarningDialog, { isOpen: !!columnMenu, primaryAction: () => {
@@ -73,8 +57,7 @@ export const Menus = ({ menus, innerRef, handleClick, }) => {
73
57
  columnMenu.run();
74
58
  setColumnMenu(undefined);
75
59
  }
76
- }, secondaryAction: () => setColumnMenu(undefined) }),
77
- openDialog && (React.createElement(InsertTableDialog, { run: (tableConfig) => handleClick(indices, tableConfig), open: openDialog, onClose: toggleDialog }))));
60
+ }, secondaryAction: () => setColumnMenu(undefined) })));
78
61
  };
79
62
  export const orderedListContextMenu = [
80
63
  { items: ['1.', '2.', '3.'], type: 'order' },
@@ -50,13 +50,13 @@ const getMenuAt = (state, position) => {
50
50
  export const useMenus = (menus) => {
51
51
  const [pointer, setPointer] = useState(initialPointer);
52
52
  const state = getMenuState(menus, pointer);
53
- const handleClick = useCallback((indices, tableConfig) => {
53
+ const handleClick = useCallback((indices) => {
54
54
  const menu = getMenuAt(state, indices);
55
55
  if (!menu || !menu.isEnabled) {
56
56
  return;
57
57
  }
58
58
  if (menu.run) {
59
- menu.run(tableConfig);
59
+ menu.run();
60
60
  setPointer([-1, -1, -1]);
61
61
  }
62
62
  else if (menu.submenu) {
package/dist/es/index.js CHANGED
@@ -20,11 +20,8 @@ export * from './components/RadioButton';
20
20
  export * from './components/AutoSaveInput';
21
21
  export * from './components/Avatar';
22
22
  export * from './components/Dialog';
23
- export * from './components/InsertTableDialog';
24
23
  export * from './components/Checkbox';
25
24
  export * from './components/Form';
26
- export * from './components/FileManager';
27
- export * from './components/FileManager/util';
28
25
  export * from './components/Resizer';
29
26
  export * from './components/SaveStatus';
30
27
  export * from './components/StyledModal';
@@ -50,7 +47,6 @@ export * from './components/RelativeDate';
50
47
  export * from './components/Menus';
51
48
  export * from './components/SelectField';
52
49
  export * from './hooks/use-dropdown';
53
- export * from './hooks/use-files';
54
50
  export * from './hooks/use-menus';
55
51
  export * from './hooks/use-scroll-detection';
56
52
  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
  };
@@ -14,11 +14,11 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import React, { Ref } from 'react';
17
- import { Menu, TableConfig } from '../../lib/menus';
17
+ import { Menu } from '../../lib/menus';
18
18
  interface MenusProps {
19
19
  menus: Menu[];
20
20
  innerRef: Ref<HTMLDivElement>;
21
- handleClick: (position: number[], tableConfig?: TableConfig) => void;
21
+ handleClick: (position: number[]) => void;
22
22
  }
23
23
  export declare const Menus: React.FC<MenusProps>;
24
24
  export declare const orderedListContextMenu: {
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
- import { Menu, MenuSpec, TableConfig } from '../lib/menus';
2
+ import { Menu, MenuSpec } from '../lib/menus';
3
3
  export declare const useMenus: (menus: MenuSpec[]) => {
4
4
  menus: Menu[];
5
- handleClick: (indices: number[], tableConfig?: TableConfig) => void;
5
+ handleClick: (indices: number[]) => void;
6
6
  ref: import("react").RefObject<HTMLDivElement>;
7
7
  };
@@ -21,11 +21,8 @@ export * from './components/RadioButton';
21
21
  export * from './components/AutoSaveInput';
22
22
  export * from './components/Avatar';
23
23
  export * from './components/Dialog';
24
- export * from './components/InsertTableDialog';
25
24
  export * from './components/Checkbox';
26
25
  export * from './components/Form';
27
- export * from './components/FileManager';
28
- export * from './components/FileManager/util';
29
26
  export * from './components/Resizer';
30
27
  export * from './components/SaveStatus';
31
28
  export * from './components/StyledModal';
@@ -51,7 +48,6 @@ export * from './components/RelativeDate';
51
48
  export * from './components/Menus';
52
49
  export * from './components/SelectField';
53
50
  export * from './hooks/use-dropdown';
54
- export * from './hooks/use-files';
55
51
  export * from './hooks/use-menus';
56
52
  export * from './hooks/use-scroll-detection';
57
53
  export { useDeepCompareMemo, useDeepCompareCallback, } from './hooks/use-deep-compare';