@manuscripts/style-guide 0.30.25 → 0.31.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 (42) hide show
  1. package/dist/cjs/components/FileManager/FileManager.js +1 -1
  2. package/dist/cjs/components/FileManager/InlineFilesSection.js +9 -9
  3. package/dist/cjs/components/Resizer/Resizer.js +109 -0
  4. package/dist/cjs/components/Resizer/ResizerButton.js +30 -0
  5. package/dist/cjs/components/Resizer/ResizerButtonInner.js +169 -0
  6. package/dist/cjs/components/Resizer/ResizerInner.js +74 -0
  7. package/dist/cjs/components/Resizer/index.js +16 -0
  8. package/dist/cjs/components/Resizer/types.js +2 -0
  9. package/dist/cjs/components/icons/attach.js +24 -0
  10. package/dist/cjs/components/icons/index.js +7 -1
  11. package/dist/cjs/components/icons/missing-image.js +12 -0
  12. package/dist/cjs/components/icons/upload.js +11 -0
  13. package/dist/cjs/index.js +1 -0
  14. package/dist/cjs/lib/inlineFiles.js +23 -11
  15. package/dist/es/components/FileManager/FileManager.js +1 -1
  16. package/dist/es/components/FileManager/InlineFilesSection.js +10 -10
  17. package/dist/es/components/Resizer/Resizer.js +102 -0
  18. package/dist/es/components/Resizer/ResizerButton.js +23 -0
  19. package/dist/es/components/Resizer/ResizerButtonInner.js +163 -0
  20. package/dist/es/components/Resizer/ResizerInner.js +68 -0
  21. package/dist/es/components/Resizer/index.js +2 -0
  22. package/dist/es/components/Resizer/types.js +1 -0
  23. package/dist/es/components/icons/attach.js +19 -0
  24. package/dist/es/components/icons/index.js +3 -0
  25. package/dist/es/components/icons/missing-image.js +7 -0
  26. package/dist/es/components/icons/upload.js +6 -0
  27. package/dist/es/index.js +1 -0
  28. package/dist/es/lib/inlineFiles.js +23 -11
  29. package/dist/types/components/FileManager/InlineFilesSection.d.ts +4 -2
  30. package/dist/types/components/Resizer/Resizer.d.ts +36 -0
  31. package/dist/types/components/Resizer/ResizerButton.d.ts +18 -0
  32. package/dist/types/components/Resizer/ResizerButtonInner.d.ts +8 -0
  33. package/dist/types/components/Resizer/ResizerInner.d.ts +4 -0
  34. package/dist/types/components/Resizer/index.d.ts +2 -0
  35. package/dist/types/components/Resizer/types.d.ts +2 -0
  36. package/dist/types/components/icons/attach.d.ts +18 -0
  37. package/dist/types/components/icons/index.d.ts +3 -0
  38. package/dist/types/components/icons/missing-image.d.ts +3 -0
  39. package/dist/types/components/icons/upload.d.ts +3 -0
  40. package/dist/types/index.d.ts +1 -0
  41. package/dist/types/lib/inlineFiles.d.ts +3 -3
  42. package/package.json +1 -1
@@ -130,7 +130,7 @@ const FileManager = ({ submissionId, attachments, modelMap, enableDragAndDrop, c
130
130
  react_1.default.createElement("div", null, "Files excluded from the final submission.")))),
131
131
  react_1.default.createElement(Inspector_1.InspectorTabPanels, { style: { overflowY: 'visible', position: 'relative' } },
132
132
  react_1.default.createElement(Inspector_1.InspectorTabPanel, null,
133
- react_1.default.createElement(InlineFilesSection_1.InlineFilesSection, { modelMap: modelMap, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, isEditor: enableDragAndDrop, dispatch: dispatch })),
133
+ react_1.default.createElement(InlineFilesSection_1.InlineFilesSection, { modelMap: modelMap, attachments: attachments, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, isEditor: enableDragAndDrop, dispatch: dispatch })),
134
134
  react_1.default.createElement(Inspector_1.InspectorTabPanel, null,
135
135
  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
136
  react_1.default.createElement(Inspector_1.InspectorTabPanel, null,
@@ -32,8 +32,8 @@ const FileInfo_1 = require("./FileSectionItem/FileInfo");
32
32
  const FileSectionItem_1 = require("./FileSectionItem/FileSectionItem");
33
33
  const ItemActions_1 = require("./FileSectionItem/ItemActions");
34
34
  const util_1 = require("./util");
35
- const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, modelMap, isEditor, dispatch, }) => {
36
- const inlineFiles = (0, react_1.useMemo)(() => (0, inlineFiles_1.default)(modelMap), [modelMap]);
35
+ const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, modelMap, attachments, isEditor, dispatch, }) => {
36
+ const inlineFiles = (0, react_1.useMemo)(() => (0, inlineFiles_1.default)(modelMap, attachments), [modelMap, attachments]);
37
37
  const onElementClick = (0, react_1.useCallback)((e) => {
38
38
  if (!isEditor) {
39
39
  return;
@@ -48,7 +48,7 @@ const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, model
48
48
  return (react_1.default.createElement("div", null, inlineFiles.map((file, index) => {
49
49
  var _a;
50
50
  return (react_1.default.createElement(ElementItem, { className: 'item', key: index, id: file.id, onClick: onElementClick },
51
- react_1.default.createElement(FileReferences, { className: 'refItems' }, (_a = file.externalFileReferences) === null || _a === void 0 ? void 0 : _a.map((externalFile, index) => (react_1.default.createElement(FileReference, { key: index, externalFile: externalFile.ref, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, dispatch: dispatch })))),
51
+ 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 })))),
52
52
  react_1.default.createElement(Element, { className: 'element' },
53
53
  util_1.fileTypesWithIconMap.get(file.type),
54
54
  react_1.default.createElement(FileInfo_1.FileInfoContainer, null,
@@ -58,20 +58,20 @@ const InlineFilesSection = ({ submissionId, handleReplace, handleDownload, model
58
58
  })));
59
59
  };
60
60
  exports.InlineFilesSection = InlineFilesSection;
61
- const FileReference = ({ externalFile, submissionId, handleReplace, handleDownload, dispatch, }) => {
61
+ const FileReference = ({ attachment, submissionId, handleReplace, handleDownload, dispatch, }) => {
62
62
  const { isOpen, toggleOpen, wrapperRef } = (0, use_dropdown_1.useDropdown)();
63
- if (!externalFile || !externalFile.filename) {
63
+ if (!attachment || !attachment.name) {
64
64
  return null;
65
65
  }
66
- const fileExtension = externalFile.filename.substring(externalFile.filename.lastIndexOf('.') + 1);
67
- return (react_1.default.createElement(FileReferenceItem, { key: externalFile._id },
66
+ const fileExtension = attachment.name.substring(attachment.name.lastIndexOf('.') + 1);
67
+ return (react_1.default.createElement(FileReferenceItem, { key: attachment.id },
68
68
  react_1.default.createElement(Container, null,
69
69
  util_1.fileTypesWithIconMap.get(util_1.extensionsWithFileTypesMap.get(fileExtension)),
70
- react_1.default.createElement(FileReferenceName, null, externalFile.filename)),
70
+ react_1.default.createElement(FileReferenceName, null, attachment.name)),
71
71
  handleDownload && handleReplace && submissionId && (react_1.default.createElement(DropdownContainer, { ref: wrapperRef },
72
72
  react_1.default.createElement(FileSectionItem_1.ActionsIcon, { onClick: toggleOpen, type: "button", className: 'external_file_dropdown', "aria-label": "Download or Replace", "aria-pressed": isOpen },
73
73
  react_1.default.createElement(dots_icon_1.default, null)),
74
- isOpen && (react_1.default.createElement(ItemActions_1.ItemActions, { replaceAttachmentHandler: handleReplace, downloadAttachmentHandler: handleDownload, submissionId: submissionId, attachmentId: undefined, fileName: externalFile.filename, designation: externalFile.designation, publicUrl: externalFile.publicUrl, hideActionList: toggleOpen, dispatch: dispatch, dropDownClassName: 'ref_item_dropdown' }))))));
74
+ isOpen && (react_1.default.createElement(ItemActions_1.ItemActions, { replaceAttachmentHandler: handleReplace, 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' }))))));
75
75
  };
76
76
  const ElementItem = (0, styled_components_1.default)(FileSectionItem_1.Item) `
77
77
  display: flex;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Resizer = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const ResizerButton_1 = require("./ResizerButton");
9
+ const ResizerInner_1 = require("./ResizerInner");
10
+ const inners = {
11
+ column: {
12
+ end: ResizerInner_1.VerticalEndResizerInner,
13
+ start: ResizerInner_1.VerticalStartResizerInner,
14
+ },
15
+ row: {
16
+ end: ResizerInner_1.HorizontalEndResizerInner,
17
+ start: ResizerInner_1.HorizontalStartResizerInner,
18
+ },
19
+ };
20
+ class Resizer extends react_1.default.Component {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.resizerRef = react_1.default.createRef();
24
+ this.state = {
25
+ isHovering: false,
26
+ isResizing: false,
27
+ startPosition: 0,
28
+ };
29
+ this.scheduleResize = (delta) => {
30
+ if (this.state.isResizing && delta) {
31
+ this.props.onResize(delta);
32
+ }
33
+ };
34
+ this.mouseDownHandler = (e) => {
35
+ e.preventDefault();
36
+ if (!this.resizerRef.current || e.target !== this.resizerRef.current) {
37
+ return;
38
+ }
39
+ if (this.state.isResizing) {
40
+ return;
41
+ }
42
+ this.setState({
43
+ isResizing: true,
44
+ startPosition: this.getPosition(e),
45
+ });
46
+ window.addEventListener('mousemove', this.mouseMoveHandler);
47
+ window.addEventListener('mouseup', this.mouseUpHandler);
48
+ window.addEventListener('mouseout', this.handleOutofBounds);
49
+ };
50
+ this.mouseUpHandler = (e, outOfBounds = false) => {
51
+ window.removeEventListener('mousemove', this.mouseMoveHandler);
52
+ window.removeEventListener('mouseup', this.mouseUpHandler);
53
+ window.removeEventListener('mouseout', this.handleOutofBounds);
54
+ this.setState({
55
+ isResizing: false,
56
+ });
57
+ const position = this.getPosition(e);
58
+ const adjustedPosition = outOfBounds ? position - 32 : position;
59
+ const delta = this.getDelta(adjustedPosition);
60
+ if (delta === 0) {
61
+ this.props.onResizeButton();
62
+ }
63
+ this.props.onResize(delta);
64
+ this.props.onResizeEnd(delta);
65
+ };
66
+ this.mouseMoveHandler = (e) => {
67
+ const position = this.getPosition(e);
68
+ const delta = this.getDelta(position);
69
+ this.scheduleResize(delta);
70
+ };
71
+ this.mouseEnterHandler = () => {
72
+ this.setState({
73
+ isHovering: true,
74
+ });
75
+ };
76
+ this.mouseLeaveHandler = () => {
77
+ this.setState({
78
+ isHovering: false,
79
+ });
80
+ };
81
+ this.handleOutofBounds = (e) => {
82
+ const disableResizeNodes = [
83
+ 'IFRAME',
84
+ 'HTML',
85
+ null,
86
+ ];
87
+ if (this.state.isResizing &&
88
+ disableResizeNodes.includes(e.relatedTarget && e.relatedTarget.nodeName)) {
89
+ this.mouseUpHandler(e, true);
90
+ }
91
+ };
92
+ this.getDelta = (delta) => {
93
+ const { startPosition } = this.state;
94
+ return this.props.side === 'end'
95
+ ? delta - startPosition
96
+ : startPosition - delta;
97
+ };
98
+ this.getPosition = (e) => {
99
+ return this.props.direction === 'row' ? e.screenX : e.screenY;
100
+ };
101
+ }
102
+ render() {
103
+ const { buttonInner, direction, side } = this.props;
104
+ const ResizerInner = inners[direction][side];
105
+ return (react_1.default.createElement(ResizerInner, { ref: this.resizerRef, onMouseDown: this.mouseDownHandler, onMouseEnter: this.mouseEnterHandler, onMouseLeave: this.mouseLeaveHandler },
106
+ react_1.default.createElement(ResizerButton_1.ResizerButton, { direction: direction, isCollapsed: this.props.collapsed, isVisible: this.state.isHovering, onClick: this.props.onResizeButton, side: side, buttonInner: buttonInner })));
107
+ }
108
+ }
109
+ exports.Resizer = Resizer;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ResizerButton = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const ResizerButtonInner_1 = require("./ResizerButtonInner");
9
+ const inners = {
10
+ column: {
11
+ end: ResizerButtonInner_1.VerticalEndResizerButtonInner,
12
+ start: ResizerButtonInner_1.VerticalStartResizerButtonInner,
13
+ },
14
+ row: {
15
+ end: ResizerButtonInner_1.HorizontalEndResizerButtonInner,
16
+ start: ResizerButtonInner_1.HorizontalStartResizerButtonInner,
17
+ },
18
+ };
19
+ class ResizerButton extends react_1.default.PureComponent {
20
+ render() {
21
+ const { buttonInner, direction, side, isCollapsed, onClick, isVisible } = this.props;
22
+ const ResizerButtonInner = buttonInner || inners[direction][side];
23
+ return (react_1.default.createElement(ResizerButtonInner, { "aria-expanded": !isCollapsed, isCollapsed: isCollapsed, isVisible: isVisible, onClick: onClick, onMouseDown: (event) => event.preventDefault() }));
24
+ }
25
+ }
26
+ exports.ResizerButton = ResizerButton;
27
+ ResizerButton.defaultProps = {
28
+ isCollapsed: false,
29
+ isVisible: false,
30
+ };
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.VerticalStartResizerButtonInner = exports.VerticalEndResizerButtonInner = exports.HorizontalStartResizerButtonInner = exports.HorizontalEndResizerButtonInner = void 0;
7
+ const styled_components_1 = __importDefault(require("styled-components"));
8
+ const gridSize = 8;
9
+ const resizerVisibleSize = 2;
10
+ const toggleButtonDepth = gridSize * 4.5;
11
+ const toggleArrowDepth = gridSize * 2;
12
+ const toggleArrowSize = 2;
13
+ const toggleArrowStartOffset = (toggleButtonDepth - toggleArrowDepth) / 2;
14
+ const toggleArrowEndOffset = toggleArrowStartOffset - toggleArrowSize + toggleArrowDepth / 2;
15
+ const opacityTransition = `opacity 200ms ease-in-out 100ms`;
16
+ const transformTransition = `transform 100ms ease-in-out`;
17
+ const ResizerButtonInner = styled_components_1.default.button `
18
+ position: relative;
19
+ background: none;
20
+ border: none;
21
+ color: transparent;
22
+ cursor: pointer;
23
+
24
+ &:focus {
25
+ outline: 1px solid blue;
26
+ }
27
+
28
+ &::before,
29
+ &::after {
30
+ content: '';
31
+ background-color: #ddd;
32
+ border-radius: ${toggleArrowDepth}px;
33
+ position: absolute;
34
+ opacity: ${(props) => (props.isVisible ? 1 : 0.5)};
35
+ transition: ${transformTransition}, ${opacityTransition};
36
+ }
37
+
38
+ &::before {
39
+ transform-origin: ${toggleArrowSize / 2}px
40
+ ${toggleArrowDepth / 2 - toggleArrowSize / 2}px;
41
+ }
42
+
43
+ &::after {
44
+ transform-origin: ${toggleArrowSize / 2}px ${toggleArrowSize / 2}px;
45
+ }
46
+
47
+ &:hover,
48
+ &:focus {
49
+ &::before,
50
+ &::after {
51
+ background-color: #2a6f9d;
52
+ opacity: 1;
53
+ }
54
+ }
55
+ `;
56
+ const HorizontalResizerButtonInner = (0, styled_components_1.default)(ResizerButtonInner) `
57
+ top: calc(50% - ${toggleButtonDepth / 2}px);
58
+ width: ${gridSize * 3}px;
59
+ height: ${toggleButtonDepth}px;
60
+
61
+ &::before,
62
+ &::after {
63
+ width: ${toggleArrowSize}px;
64
+ height: ${toggleArrowDepth / 2}px;
65
+ transform: rotate(0deg);
66
+ }
67
+
68
+ &::before {
69
+ top: ${toggleArrowStartOffset}px;
70
+ }
71
+
72
+ &::after {
73
+ top: ${toggleArrowEndOffset}px;
74
+ }
75
+ `;
76
+ exports.HorizontalEndResizerButtonInner = (0, styled_components_1.default)(HorizontalResizerButtonInner) `
77
+ left: -${resizerVisibleSize / 2}px;
78
+
79
+ &::before,
80
+ &::after {
81
+ left: 8px;
82
+ }
83
+
84
+ &:hover,
85
+ &:focus {
86
+ &::before {
87
+ transform: rotate(${(props) => (props.isCollapsed ? '-40deg' : '40deg')});
88
+ }
89
+ &::after {
90
+ transform: rotate(${(props) => (props.isCollapsed ? '40deg' : '-40deg')});
91
+ }
92
+ }
93
+ `;
94
+ exports.HorizontalStartResizerButtonInner = (0, styled_components_1.default)(HorizontalResizerButtonInner) `
95
+ right: -${resizerVisibleSize / 2}px;
96
+
97
+ &::before,
98
+ &::after {
99
+ right: 16px;
100
+ }
101
+
102
+ &:hover,
103
+ &:focus {
104
+ &::before {
105
+ transform: rotate(${(props) => (props.isCollapsed ? '40deg' : '-40deg')});
106
+ }
107
+ &::after {
108
+ transform: rotate(${(props) => (props.isCollapsed ? '-40deg' : '40deg')});
109
+ }
110
+ }
111
+ `;
112
+ const VerticalResizerButtonInner = (0, styled_components_1.default)(ResizerButtonInner) `
113
+ left: calc(50% - ${toggleButtonDepth / 2}px);
114
+ width: ${toggleButtonDepth}px;
115
+ height: ${gridSize * 3}px;
116
+
117
+ &::before,
118
+ &::after {
119
+ width: ${toggleArrowDepth / 2}px;
120
+ height: ${toggleArrowSize}px;
121
+ }
122
+
123
+ &::before {
124
+ left: ${toggleArrowStartOffset}px;
125
+ }
126
+
127
+ &::after {
128
+ left: ${toggleArrowEndOffset}px;
129
+ }
130
+ `;
131
+ exports.VerticalEndResizerButtonInner = (0, styled_components_1.default)(VerticalResizerButtonInner) `
132
+ bottom: -${resizerVisibleSize / 2}px;
133
+
134
+ &::before,
135
+ &::after {
136
+ bottom: 8px;
137
+ transform-origin: top center;
138
+ }
139
+
140
+ &:hover,
141
+ &:focus {
142
+ &::before {
143
+ transform: rotate(${(props) => (props.isCollapsed ? '40deg' : '-40deg')});
144
+ }
145
+ &::after {
146
+ transform: rotate(${(props) => (props.isCollapsed ? '-40deg' : '40deg')});
147
+ }
148
+ }
149
+ `;
150
+ exports.VerticalStartResizerButtonInner = (0, styled_components_1.default)(VerticalResizerButtonInner) `
151
+ top: -${resizerVisibleSize / 2}px;
152
+
153
+ &::before,
154
+ &::after {
155
+ top: 8px;
156
+ transform: rotate(270deg);
157
+ transform-origin: bottom center;
158
+ }
159
+
160
+ &:hover,
161
+ &:focus {
162
+ &::before {
163
+ transform: rotate(${(props) => (props.isCollapsed ? '-40deg' : '40deg')});
164
+ }
165
+ &::after {
166
+ transform: rotate(${(props) => (props.isCollapsed ? '40deg' : '-40deg')});
167
+ }
168
+ }
169
+ `;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.VerticalEndResizerInner = exports.VerticalStartResizerInner = exports.HorizontalEndResizerInner = exports.HorizontalStartResizerInner = void 0;
7
+ const styled_components_1 = __importDefault(require("styled-components"));
8
+ const ResizerInner = styled_components_1.default.div `
9
+ display: block;
10
+ z-index: 2;
11
+ overflow: visible;
12
+ position: absolute;
13
+
14
+ &::before {
15
+ content: '';
16
+ position: absolute;
17
+ transition: background-color 200ms ease-in-out 100ms;
18
+ background: rgb(240, 240, 240);
19
+ }
20
+
21
+ &:hover::before {
22
+ background: #e2e2e2;
23
+ }
24
+ `;
25
+ const HorizontalResizerInner = (0, styled_components_1.default)(ResizerInner) `
26
+ cursor: ew-resize;
27
+ top: 0;
28
+ height: 100%;
29
+ width: 16px;
30
+
31
+ &::before {
32
+ height: 100%;
33
+ width: 1px;
34
+ }
35
+ `;
36
+ exports.HorizontalStartResizerInner = (0, styled_components_1.default)(HorizontalResizerInner) `
37
+ left: -16px;
38
+
39
+ &::before {
40
+ right: -1px;
41
+ }
42
+ `;
43
+ exports.HorizontalEndResizerInner = (0, styled_components_1.default)(HorizontalResizerInner) `
44
+ right: -16px;
45
+
46
+ &::before {
47
+ left: -1px;
48
+ }
49
+ `;
50
+ const VerticalResizerInner = (0, styled_components_1.default)(ResizerInner) `
51
+ cursor: ns-resize;
52
+ left: 0;
53
+ height: 16px;
54
+ width: 100%;
55
+
56
+ &::before {
57
+ width: 100%;
58
+ height: 1px;
59
+ }
60
+ `;
61
+ exports.VerticalStartResizerInner = (0, styled_components_1.default)(VerticalResizerInner) `
62
+ top: -16px;
63
+
64
+ &::before {
65
+ bottom: -1px;
66
+ }
67
+ `;
68
+ exports.VerticalEndResizerInner = (0, styled_components_1.default)(VerticalResizerInner) `
69
+ bottom: -16px;
70
+
71
+ &::before {
72
+ top: -1px;
73
+ }
74
+ `;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.Resizer = void 0;
14
+ var Resizer_1 = require("./Resizer");
15
+ Object.defineProperty(exports, "Resizer", { enumerable: true, get: function () { return Resizer_1.Resizer; } });
16
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /*!
3
+ * © 2022 Atypon Systems LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ const react_1 = __importDefault(require("react"));
22
+ const AttachIcon = () => (react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
23
+ react_1.default.createElement("path", { d: "M8.85683 5.35715L5.85183 8.36215C5.16883 9.04515 5.16883 10.1531 5.85183 10.8371C6.53483 11.5201 7.64283 11.5201 8.32683 10.8371L12.3928 6.77115C13.7598 5.40415 13.7598 3.18815 12.3928 1.82115C11.0258 0.454148 8.80983 0.454148 7.44283 1.82115L3.02383 6.24115C0.973828 8.29115 0.973828 11.6151 3.02383 13.6661C5.07383 15.7161 8.39783 15.7161 10.4488 13.6661L14.5138 9.60015", stroke: "#6E6E6E", strokeWidth: "1.5", strokeMiterlimit: "10", strokeLinecap: "round", strokeLinejoin: "round" })));
24
+ exports.default = AttachIcon;
@@ -18,7 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.TaskStepNextIcon = exports.TaskStepDoneIcon = exports.TaskStepCurrentIcon = exports.ZoomOutIcon = exports.ZoomInIcon = exports.UserIcon = exports.TickMarkIcon = exports.SearchIcon = exports.ProjectsListIcon = exports.ProjectIcon = exports.ProjectNotificationIcon = exports.OrcidIcon = exports.GoogleIcon = exports.CloseOIcon = exports.BookmarkIcon = exports.BackArrowIcon = exports.AddIconInverted = exports.AddIconActive = exports.AddAuthor = void 0;
21
+ exports.MissingImage = exports.UploadIcon = exports.AttachIcon = exports.TaskStepNextIcon = exports.TaskStepDoneIcon = exports.TaskStepCurrentIcon = exports.ZoomOutIcon = exports.ZoomInIcon = exports.UserIcon = exports.TickMarkIcon = exports.SearchIcon = exports.ProjectsListIcon = exports.ProjectIcon = exports.ProjectNotificationIcon = exports.OrcidIcon = exports.GoogleIcon = exports.CloseOIcon = exports.BookmarkIcon = exports.BackArrowIcon = exports.AddIconInverted = exports.AddIconActive = exports.AddAuthor = void 0;
22
22
  var add_author_1 = require("./add-author");
23
23
  Object.defineProperty(exports, "AddAuthor", { enumerable: true, get: function () { return __importDefault(add_author_1).default; } });
24
24
  var add_icon_active_1 = require("./add-icon-active");
@@ -57,3 +57,9 @@ var task_step_done_1 = require("./task-step-done");
57
57
  Object.defineProperty(exports, "TaskStepDoneIcon", { enumerable: true, get: function () { return __importDefault(task_step_done_1).default; } });
58
58
  var task_step_next_1 = require("./task-step-next");
59
59
  Object.defineProperty(exports, "TaskStepNextIcon", { enumerable: true, get: function () { return __importDefault(task_step_next_1).default; } });
60
+ var attach_1 = require("./attach");
61
+ Object.defineProperty(exports, "AttachIcon", { enumerable: true, get: function () { return __importDefault(attach_1).default; } });
62
+ var upload_1 = require("./upload");
63
+ Object.defineProperty(exports, "UploadIcon", { enumerable: true, get: function () { return __importDefault(upload_1).default; } });
64
+ var missing_image_1 = require("./missing-image");
65
+ Object.defineProperty(exports, "MissingImage", { enumerable: true, get: function () { return __importDefault(missing_image_1).default; } });
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const MissingImage = () => (react_1.default.createElement("svg", { width: "28", height: "32", viewBox: "0 0 28 32", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
8
+ react_1.default.createElement("path", { d: "M2.99979 1.25C2.03237 1.25 1.25073 2.03442 1.25073 3V29C1.25073 29.9665 2.03423 30.75 3.00073 30.75H25.0007C25.9672 30.75 26.7507 29.9665 26.7507 29V11.4383C26.7507 10.9494 26.5462 10.4828 26.1868 10.1515L17.0318 1.71322C16.7092 1.41588 16.287 1.25 15.8467 1.25H15.8372H15.8275H15.8177H15.8078H15.7978H15.7877H15.7775H15.7671H15.7567H15.7462H15.7355H15.7248H15.7139H15.703H15.6919H15.6807H15.6694H15.6581H15.6466H15.635H15.6233H15.6115H15.5996H15.5876H15.5755H15.5633H15.551H15.5386H15.5261H15.5135H15.5008H15.488H15.4751H15.4621H15.449H15.4358H15.4225H15.4091H15.3956H15.382H15.3683H15.3545H15.3406H15.3266H15.3126H15.2984H15.2841H15.2697H15.2553H15.2407H15.2261H15.2113H15.1965H15.1815H15.1665H15.1514H15.1362H15.1209H15.1055H15.09H15.0744H15.0587H15.043H15.0271H15.0111H14.9951H14.979H14.9628H14.9464H14.93H14.9136H14.897H14.8803H14.8636H14.8467H14.8298H14.8128H14.7957H14.7785H14.7612H14.7438H14.7264H14.7089H14.6912H14.6735H14.6557H14.6379H14.6199H14.6019H14.5837H14.5655H14.5472H14.5289H14.5104H14.4919H14.4732H14.4545H14.4357H14.4169H14.3979H14.3789H14.3598H14.3406H14.3213H14.302H14.2825H14.263H14.2435H14.2238H14.204H14.1842H14.1643H14.1443H14.1243H14.1042H14.084H14.0637H14.0433H14.0229H14.0024H13.9818H13.9611H13.9404H13.9196H13.8987H13.8778H13.8567H13.8356H13.8144H13.7932H13.7719H13.7505H13.729H13.7075H13.6859H13.6642H13.6425H13.6206H13.5988H13.5768H13.5548H13.5327H13.5105H13.4883H13.466H13.4436H13.4212H13.3987H13.3761H13.3535H13.3308H13.308H13.2851H13.2622H13.2393H13.2162H13.1931H13.17H13.1467H13.1235H13.1001H13.0767H13.0532H13.0296H13.006H12.9824H12.9586H12.9348H12.911H12.8871H12.8631H12.839H12.8149H12.7908H12.7666H12.7423H12.7179H12.6935H12.6691H12.6446H12.62H12.5954H12.5707H12.5459H12.5211H12.4963H12.4713H12.4464H12.4213H12.3963H12.3711H12.3459H12.3207H12.2954H12.27H12.2446H12.2191H12.1936H12.168H12.1424H12.1167H12.091H12.0652H12.0394H12.0135H11.9876H11.9616H11.9355H11.9094H11.8833H11.8571H11.8309H11.8046H11.7782H11.7519H11.7254H11.6989H11.6724H11.6458H11.6192H11.5925H11.5658H11.539H11.5122H11.4854H11.4585H11.4315H11.4045H11.3775H11.3504H11.3233H11.2961H11.2689H11.2416H11.2143H11.187H11.1596H11.1322H11.1047H11.0772H11.0497H11.0221H10.9944H10.9668H10.939H10.9113H10.8835H10.8556H10.8278H10.7999H10.7719H10.7439H10.7159H10.6878H10.6597H10.6316H10.6034H10.5752H10.5469H10.5187H10.4903H10.462H10.4336H10.4052H10.3767H10.3482H10.3197H10.2911H10.2625H10.2339H10.2052H10.1765H10.1478H10.119H10.0902H10.0614H10.0326H10.0037H9.97477H9.94582H9.91684H9.88784H9.8588H9.82973H9.80064H9.77151H9.74236H9.71318H9.68397H9.65474H9.62547H9.59618H9.56687H9.53752H9.50815H9.47876H9.44934H9.41989H9.39042H9.36092H9.3314H9.30186H9.27229H9.24269H9.21308H9.18344H9.15378H9.12409H9.09438H9.06465H9.0349H9.00513H8.97534H8.94552H8.91569H8.88583H8.85596H8.82606H8.79615H8.76621H8.73626H8.70629H8.6763H8.64629H8.61627H8.58623H8.55617H8.52609H8.49599H8.46588H8.43576H8.40562H8.37546H8.34529H8.3151H8.2849H8.25468H8.22445H8.1942H8.16394H8.13367H8.10339H8.07309H8.04278H8.01246H7.98212H7.95178H7.92142H7.89105H7.86067H7.83029H7.79989H7.76948H7.73906H7.70863H7.67819H7.64775H7.61729H7.58683H7.55636H7.52588H7.49539H7.4649H7.4344H7.40389H7.37338H7.34286H7.31234H7.28181H7.25127H7.22073H7.19019H7.15964H7.12908H7.09853H7.06797H7.0374H7.00684H6.97627H6.9457H6.91512H6.88455H6.85397H6.82339H6.79282H6.76224H6.73166H6.70108H6.6705H6.63992H6.60934H6.57876H6.54819H6.51761H6.48704H6.45647H6.4259H6.39533H6.36477H6.33421H6.30366H6.27311H6.24256H6.21201H6.18148H6.15094H6.12041H6.08989H6.05937H6.02886H5.99836H5.96786H5.93737H5.90689H5.87641H5.84594H5.81548H5.78503H5.75458H5.72415H5.69372H5.66331H5.6329H5.6025H5.57212H5.54174H5.51138H5.48102H5.45068H5.42035H5.39003H5.35973H5.32943H5.29915H5.26888H5.23863H5.20839H5.17816H5.14795H5.11775H5.08757H5.0574H5.02725H4.99711H4.96699H4.93688H4.90679H4.87672H4.84667H4.81663H4.78661H4.75661H4.72662H4.69666H4.66671H4.63678H4.60687H4.57698H4.54712H4.51727H4.48744H4.45763H4.42784H4.39808H4.36833H4.33861H4.30891H4.27923H4.24958H4.21994H4.19033H4.16075H4.13119H4.10165H4.07213H4.04264H4.01318H3.98374H3.95433H3.92494H3.89558H3.86624H3.83693H3.80765H3.7784H3.74917H3.71997H3.6908H3.66165H3.63254H3.60345H3.57439H3.54537H3.51637H3.4874H3.45846H3.42955H3.40068H3.37183H3.34302H3.31423H3.28548H3.25676H3.22808H3.19942H3.1708H3.14222H3.11366H3.08514H3.05666H3.02821H2.99979Z", stroke: "#6E6E6E", strokeWidth: "1.5" }),
9
+ react_1.default.createElement("path", { d: "M8.00073 24C10.1219 20.9815 15.8916 16.7556 22.0007 24", stroke: "#6E6E6E", strokeWidth: "1.5", strokeLinecap: "round" }),
10
+ react_1.default.createElement("path", { d: "M8.00073 8C8.00073 8 8.00073 9.04738 8.00073 11", stroke: "#6E6E6E", strokeWidth: "1.5", strokeLinecap: "round" }),
11
+ react_1.default.createElement("path", { d: "M16.0007 2V12H26.0007", stroke: "#6E6E6E", strokeWidth: "1.5" })));
12
+ exports.default = MissingImage;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const UploadIcon = () => (react_1.default.createElement("svg", { width: "17", height: "18", viewBox: "0 0 17 18", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
8
+ react_1.default.createElement("path", { d: "M8.5 12.5V1.5", stroke: "#6E6E6E", strokeWidth: "1.5", strokeMiterlimit: "10", strokeLinecap: "round", strokeLinejoin: "round" }),
9
+ react_1.default.createElement("path", { d: "M13.5 6.5L8.5 1.5L3.5 6.5", stroke: "#6E6E6E", strokeWidth: "1.5", strokeMiterlimit: "10", strokeLinecap: "round", strokeLinejoin: "round" }),
10
+ react_1.default.createElement("path", { d: "M15.5 16.5H1.5", stroke: "#6E6E6E", strokeWidth: "1.5", strokeMiterlimit: "10", strokeLinecap: "round", strokeLinejoin: "round" })));
11
+ exports.default = UploadIcon;
package/dist/cjs/index.js CHANGED
@@ -48,6 +48,7 @@ __exportStar(require("./components/Form"), exports);
48
48
  __exportStar(require("./components/FileManager"), exports);
49
49
  __exportStar(require("./components/FileManager/util"), exports);
50
50
  __exportStar(require("./components/FileManager/FileSectionItem/FileSectionItem"), exports);
51
+ __exportStar(require("./components/Resizer"), exports);
51
52
  __exportStar(require("./components/SaveStatus"), exports);
52
53
  __exportStar(require("./components/SimpleModal"), exports);
53
54
  __exportStar(require("./components/StyledModal"), exports);
@@ -6,33 +6,44 @@ const util_1 = require("../components/FileManager/util");
6
6
  const getCaptionText = (caption) => caption &&
7
7
  new DOMParser().parseFromString(caption, 'text/html').documentElement
8
8
  .innerText;
9
- const getFigureData = (element, modelMap) => {
10
- const externalFileReferences = [];
9
+ const getAttachment = (externalFileRef, attachmentsMap) => {
10
+ if (!(externalFileRef === null || externalFileRef === void 0 ? void 0 : externalFileRef.url.includes('https://'))) {
11
+ const attachmentId = externalFileRef === null || externalFileRef === void 0 ? void 0 : externalFileRef.url.replace('attachment:', '');
12
+ return attachmentId ? attachmentsMap.get(attachmentId) : undefined;
13
+ }
14
+ else {
15
+ return [...attachmentsMap.values()].find((attachment) => attachment.link === externalFileRef.url);
16
+ }
17
+ };
18
+ const getFigureData = (element, modelMap, attachmentsMap) => {
19
+ const attachments = [];
11
20
  element.containedObjectIDs.map((e) => {
12
21
  var _a;
13
22
  const object = modelMap.get(e);
14
23
  if (object && object.objectType === manuscripts_json_schema_1.ObjectTypes.Figure) {
15
24
  const externalFileRef = (_a = object.externalFileReferences) === null || _a === void 0 ? void 0 : _a.find((figure) => figure.kind === 'imageRepresentation');
16
- if (externalFileRef) {
17
- externalFileReferences.push(externalFileRef);
25
+ const attachment = getAttachment(externalFileRef, attachmentsMap);
26
+ if (attachment) {
27
+ attachments.push(attachment);
18
28
  }
19
29
  }
20
30
  });
21
31
  return {
22
32
  id: element._id,
23
- externalFileReferences,
33
+ attachments,
24
34
  caption: getCaptionText(element.caption),
25
35
  };
26
36
  };
27
- exports.default = (modelMap) => {
37
+ exports.default = (modelMap, attachments) => {
28
38
  const files = [];
39
+ const attachmentsMap = new Map(attachments.map((attachment) => [attachment.id, attachment]));
29
40
  (0, manuscript_transform_1.getModelsByType)(modelMap, manuscripts_json_schema_1.ObjectTypes.Section).map((section) => {
30
41
  var _a, _b;
31
42
  if (section.category === 'MPSectionCategory:abstract-graphical') {
32
43
  (_a = section.elementIDs) === null || _a === void 0 ? void 0 : _a.some((elementId) => {
33
44
  const element = modelMap.get(elementId);
34
45
  if (element && (0, manuscript_transform_1.hasObjectType)(manuscripts_json_schema_1.ObjectTypes.FigureElement)(element)) {
35
- files.unshift(Object.assign(Object.assign({}, getFigureData(element, modelMap)), { label: `Graphical Abstract`, type: util_1.FileType.GraphicalAbstract }));
46
+ files.unshift(Object.assign(Object.assign({}, getFigureData(element, modelMap, attachmentsMap)), { label: `Graphical Abstract`, type: util_1.FileType.GraphicalAbstract }));
36
47
  return true;
37
48
  }
38
49
  });
@@ -47,19 +58,20 @@ exports.default = (modelMap) => {
47
58
  switch (element.objectType) {
48
59
  case manuscripts_json_schema_1.ObjectTypes.FigureElement:
49
60
  case manuscripts_json_schema_1.ObjectTypes.MultiGraphicFigureElement: {
50
- files.push(Object.assign(Object.assign({}, getFigureData(element, modelMap)), { label: `Figure`, type: util_1.FileType.Figure }));
61
+ files.push(Object.assign(Object.assign({}, getFigureData(element, modelMap, attachmentsMap)), { label: `Figure`, type: util_1.FileType.Figure }));
51
62
  break;
52
63
  }
53
64
  case manuscripts_json_schema_1.ObjectTypes.TableElement: {
54
65
  const tableElement = element;
55
66
  const table = modelMap.get(tableElement.containedObjectID);
56
- const externalFileReferences = (_a = table.externalFileReferences) === null || _a === void 0 ? void 0 : _a.filter((file) => file.kind === 'dataset' && file.ref);
57
- if (externalFileReferences && externalFileReferences.length > 0) {
67
+ const externalFileReference = (_a = table.externalFileReferences) === null || _a === void 0 ? void 0 : _a.find((file) => file.kind === 'dataset' && file.ref);
68
+ const attachment = getAttachment(externalFileReference, attachmentsMap);
69
+ if (attachment) {
58
70
  files.push({
59
71
  id: element._id,
60
72
  label: `Table`,
61
73
  type: util_1.FileType.SheetsWorkbooks,
62
- externalFileReferences: table.externalFileReferences,
74
+ attachments: [attachment],
63
75
  caption: getCaptionText(tableElement.caption),
64
76
  });
65
77
  }
@@ -105,7 +105,7 @@ export const FileManager = ({ submissionId, attachments, modelMap, enableDragAnd
105
105
  React.createElement("div", null, "Files excluded from the final submission.")))),
106
106
  React.createElement(InspectorTabPanels, { style: { overflowY: 'visible', position: 'relative' } },
107
107
  React.createElement(InspectorTabPanel, null,
108
- React.createElement(InlineFilesSection, { modelMap: modelMap, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, isEditor: enableDragAndDrop, dispatch: dispatch })),
108
+ React.createElement(InlineFilesSection, { modelMap: modelMap, attachments: attachments, submissionId: submissionId, handleReplace: handleReplace, handleDownload: handleDownload, isEditor: enableDragAndDrop, dispatch: dispatch })),
109
109
  React.createElement(InspectorTabPanel, null,
110
110
  React.createElement(FilesSection, { submissionId: submissionId, enableDragAndDrop: enableDragAndDrop, handleUpload: handleUploadFile, fileSection: FileSectionType.Supplements, filesItem: getFileSectionExternalFile(FileSectionType.Supplements), state: state, dispatch: dispatch })),
111
111
  React.createElement(InspectorTabPanel, null,