@manuscripts/body-editor 3.18.1 → 3.18.3

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.
@@ -16,7 +16,7 @@
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.isAtEndOfTextBlock = exports.ignoreMetaNodeBackspaceCommand = exports.ignoreAtomBlockNodeBackward = exports.isTextSelection = exports.isAtStartOfTextBlock = exports.insertTransGraphicalAbstract = exports.insertTransAbstract = exports.insertTOCSection = exports.insertBibliographySection = exports.insertList = exports.insertKeywords = exports.insertAward = exports.insertAffiliation = exports.insertContributors = exports.insertGraphicalAbstract = exports.insertBackmatterSection = exports.insertAbstractSection = exports.insertSection = exports.insertHeadshotGrid = exports.insertBoxElement = exports.insertInlineFootnote = exports.insertFootnotesElement = exports.insertTableElementFooter = exports.insertInlineEquation = exports.insertCrossReference = exports.canInsertCrossReference = exports.insertInlineCitation = exports.insertLink = exports.insertSectionLabel = exports.findPosBeforeFirstSubsection = exports.insertBreak = exports.deleteBlock = exports.insertBlock = exports.insertAttachment = exports.updateSupplementWeblink = exports.convertLinkToSupplementWeblink = exports.insertSupplementWeblink = exports.insertSupplement = exports.insertTable = exports.insertEmbed = exports.insertFigure = exports.insertGeneralTableFootnote = exports.insertInlineTableFootnote = exports.createBlock = exports.createSelection = exports.canInsert = exports.blockActive = exports.isNodeSelection = exports.markActive = exports.addToStart = void 0;
19
- exports.paste = exports.copySelection = exports.exitEditorToContainer = exports.ignoreEnterInSubtitles = exports.insertHeroImage = exports.activateSearchReplace = exports.activateSearch = exports.autoComplete = exports.addColumns = exports.addHeaderRow = exports.addRows = exports.addInlineComment = exports.addNodeComment = exports.createAndFillTableElement = exports.selectAllIsolating = exports.ignoreAtomBlockNodeForward = void 0;
19
+ exports.paste = exports.copySelection = exports.exitEditorToContainer = exports.ignoreEnterInSubtitles = exports.insertHeroImage = exports.activateSearchReplace = exports.activateSearch = exports.autoComplete = exports.addColumns = exports.addHeaderRow = exports.addRows = exports.addInlineComment = exports.canInsertInlineComment = exports.addNodeComment = exports.createAndFillTableElement = exports.selectAllIsolating = exports.ignoreAtomBlockNodeForward = void 0;
20
20
  const track_changes_plugin_1 = require("@manuscripts/track-changes-plugin");
21
21
  const transform_1 = require("@manuscripts/transform");
22
22
  const prosemirror_model_1 = require("prosemirror-model");
@@ -1289,12 +1289,17 @@ const addNodeComment = (node, state, dispatch) => {
1289
1289
  return false;
1290
1290
  };
1291
1291
  exports.addNodeComment = addNodeComment;
1292
+ const canInsertInlineComment = ($pos) => $pos.parent.canReplaceWith($pos.index(), $pos.index(), transform_1.schema.nodes.highlight_marker);
1293
+ exports.canInsertInlineComment = canInsertInlineComment;
1292
1294
  const addInlineComment = (state, dispatch) => {
1293
1295
  const selection = state.selection;
1294
1296
  const node = getParentNode(selection);
1295
1297
  if (!node) {
1296
1298
  return false;
1297
1299
  }
1300
+ if (!(0, exports.canInsertInlineComment)(selection.$from)) {
1301
+ return false;
1302
+ }
1298
1303
  let from = selection.from;
1299
1304
  let to = selection.to;
1300
1305
  if (from === to) {
@@ -38,6 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.CitationEditor = void 0;
40
40
  const style_guide_1 = require("@manuscripts/style-guide");
41
+ const mui_1 = require("@manuscripts/style-guide/mui");
41
42
  const transform_1 = require("@manuscripts/transform");
42
43
  const react_1 = __importStar(require("react"));
43
44
  const styled_components_1 = __importDefault(require("styled-components"));
@@ -52,33 +53,6 @@ const CitedItemActions = styled_components_1.default.div `
52
53
  display: flex;
53
54
  align-items: center;
54
55
  margin-left: 12px;
55
-
56
- svg.remove-icon {
57
- color: #6e6e6e;
58
- }
59
- `;
60
- const ActionButton = (0, styled_components_1.default)(style_guide_1.IconButton).attrs({
61
- $size: 24,
62
- }) `
63
- &:disabled {
64
- background-color: transparent !important;
65
- border-color: transparent !important;
66
- color: rgb(255, 255, 255);
67
- path,
68
- g {
69
- fill: ${(props) => props.theme.colors.background.tertiary} !important;
70
- }
71
- }
72
- &:not(:disabled):focus,
73
- &:not(:disabled):hover {
74
- path,
75
- g {
76
- fill: ${(props) => props.theme.colors.brand.medium} !important;
77
- }
78
- }
79
- `;
80
- const EditReferenceButton = (0, styled_components_1.default)(ActionButton) `
81
- margin-right: ${(props) => props.theme.grid.unit * 3}px;
82
56
  `;
83
57
  const Actions = (0, styled_components_1.default)(style_guide_1.ButtonGroup) `
84
58
  margin: ${(props) => props.theme.grid.unit * 4}px;
@@ -182,15 +156,15 @@ const CitationEditor = ({ query, rids: $rids, items: $items, citationCounts, sou
182
156
  title: 'Cancel',
183
157
  },
184
158
  } }),
185
- react_1.default.createElement(CitationViewer_1.CitedItems, null, cited.map((item) => (react_1.default.createElement(CitationViewer_1.CitedItem, { key: item.id },
159
+ react_1.default.createElement(CitationViewer_1.CitedItems, null, cited.map((item) => (react_1.default.createElement(CitationViewer_1.CitedItem, { key: item.id, "data-cy": "cited-item" },
186
160
  react_1.default.createElement(ReferenceLine_1.ReferenceLine, { item: item }),
187
161
  react_1.default.createElement(CitedItemActions, null,
188
- react_1.default.createElement(EditReferenceButton, { value: item.id, disabled: !canEdit, onClick: () => setEditingForm({ show: true, item: item }) },
189
- react_1.default.createElement(style_guide_1.EditIcon, null)),
190
- react_1.default.createElement(ActionButton, { disabled: !canEdit, onClick: () => setDeleteDialog({ show: true, id: item.id }) },
191
- react_1.default.createElement(style_guide_1.DeleteSolidIcon, { className: 'remove-icon' }))))))),
162
+ react_1.default.createElement(mui_1.IconButton, { value: item.id, disabled: !canEdit, onClick: () => setEditingForm({ show: true, item: item }) },
163
+ react_1.default.createElement(style_guide_1.EditIcon, { fill: 'currentColor' })),
164
+ react_1.default.createElement(mui_1.IconButton, { "data-cy": "remove-citation", disabled: !canEdit, onClick: () => setDeleteDialog({ show: true, id: item.id }) },
165
+ react_1.default.createElement(style_guide_1.DeleteSolidIcon, { fill: 'currentColor' }))))))),
192
166
  react_1.default.createElement(Actions, null,
193
- react_1.default.createElement(style_guide_1.SecondaryButton, { onClick: onCancel }, "Done"),
194
- react_1.default.createElement(style_guide_1.PrimaryButton, { disabled: !canEdit, onClick: () => setSearching(true) }, "Add Citation"))));
167
+ react_1.default.createElement(mui_1.Button, { variant: "secondary", onClick: onCancel }, "Done"),
168
+ react_1.default.createElement(mui_1.Button, { disabled: !canEdit, onClick: () => setSearching(true) }, "Add Citation"))));
195
169
  };
196
170
  exports.CitationEditor = CitationEditor;
@@ -38,6 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.FigureOptions = void 0;
40
40
  const style_guide_1 = require("@manuscripts/style-guide");
41
+ const mui_1 = require("@manuscripts/style-guide/mui");
41
42
  const react_1 = __importStar(require("react"));
42
43
  const styled_components_1 = __importDefault(require("styled-components"));
43
44
  const files_1 = require("../../lib/files");
@@ -138,20 +139,20 @@ const FigureOptions = ({ can, getDoc, getFiles, onDownload, onUpload, onDetach,
138
139
  } },
139
140
  react_1.default.createElement(style_guide_1.DotsIcon, null)),
140
141
  isOpen && (react_1.default.createElement(OptionsDropdownList, { "$direction": 'right', "$width": 128, "$top": 5, ref: dropdownRef },
141
- showReplace && isEmbedMode && (react_1.default.createElement(ListItemButton, { onClick: () => onReplaceEmbed && onReplaceEmbed() }, "Edit Link")),
142
+ showReplace && isEmbedMode && (react_1.default.createElement(ListItemButton, { variant: "tertiary", onClick: () => onReplaceEmbed && onReplaceEmbed() }, "Edit Link")),
142
143
  showReplace && !isEmbedMode && (react_1.default.createElement(NestedDropdown, { disabled: !showReplace, parentToggleOpen: toggleOpen, buttonText: replaceBtnText, moveLeft: true, list: react_1.default.createElement(react_1.default.Fragment, null,
143
- getSupplements(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (react_1.default.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file, true) },
144
+ getSupplements(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (react_1.default.createElement(ListItemButton, { variant: "tertiary", key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file, true) },
144
145
  (0, style_guide_1.getFileIcon)(file.name),
145
146
  react_1.default.createElement(ListItemText, null, file.name)))),
146
- getOtherFiles(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (react_1.default.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file) },
147
+ getOtherFiles(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (react_1.default.createElement(ListItemButton, { variant: "tertiary", key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file) },
147
148
  (0, style_guide_1.getFileIcon)(file.name),
148
149
  react_1.default.createElement(ListItemText, null, file.name)))),
149
- showUpload && (react_1.default.createElement(UploadButton, { onClick: onUpload, disabled: !showUpload },
150
+ showUpload && (react_1.default.createElement(UploadButton, { variant: "tertiary", onClick: onUpload, disabled: !showUpload },
150
151
  react_1.default.createElement(style_guide_1.UploadIcon, null),
151
152
  " Upload new..."))) })),
152
- showDownload && (react_1.default.createElement(ListItemButton, { onClick: onDownload, disabled: !showDownload }, "Download")),
153
- showDetach && (react_1.default.createElement(ListItemButton, { onClick: onDetach, disabled: !showDetach }, "Detach")),
154
- showDelete() && (react_1.default.createElement(ListItemButton, { onClick: onDelete }, "Delete"))))));
153
+ showDownload && (react_1.default.createElement(ListItemButton, { variant: "tertiary", onClick: onDownload, disabled: !showDownload }, "Download")),
154
+ showDetach && (react_1.default.createElement(ListItemButton, { variant: "tertiary", onClick: onDetach, disabled: !showDetach }, "Detach")),
155
+ showDelete() && (react_1.default.createElement(ListItemButton, { variant: "tertiary", onClick: onDelete }, "Delete"))))));
155
156
  };
156
157
  exports.FigureOptions = FigureOptions;
157
158
  const NestedDropdown = ({ parentToggleOpen, buttonText, disabled, list, moveLeft }) => {
@@ -164,7 +165,7 @@ const NestedDropdown = ({ parentToggleOpen, buttonText, disabled, list, moveLeft
164
165
  }, [toggleOpen, wrapperRef]);
165
166
  useDropdownKeyboardNav(isOpen, nestedListRef, handleArrowLeft, handleArrowLeft);
166
167
  return (react_1.default.createElement(DropdownWrapper, { ref: wrapperRef },
167
- react_1.default.createElement(NestedListButton, { className: "nested-list-button", onClick: toggleOpen, disabled: disabled, onKeyDown: (e) => {
168
+ react_1.default.createElement(NestedListButton, { variant: "tertiary", className: "nested-list-button", onClick: toggleOpen, disabled: disabled, onKeyDown: (e) => {
168
169
  if (e.key === 'ArrowRight') {
169
170
  e.preventDefault();
170
171
  toggleOpen();
@@ -181,26 +182,18 @@ const DropdownWrapper = styled_components_1.default.div ``;
181
182
  const OptionsDropdownList = (0, styled_components_1.default)(style_guide_1.DropdownList) `
182
183
  right: 4%;
183
184
  `;
184
- const OptionsButton = (0, styled_components_1.default)(style_guide_1.IconButton) `
185
- border: 1px solid #e2e2e2 !important;
186
- box-sizing: border-box;
187
- border-radius: 50%;
188
- width: ${(props) => props.theme.grid.unit * 6}px;
189
- height: ${(props) => props.theme.grid.unit * 6}px;
190
- margin: ${(props) => props.theme.grid.unit}px;
191
- visibility: hidden;
192
- background: #ffffff;
193
-
194
- &:hover {
195
- background: #f2fbfc !important;
196
- border: 1px solid #e2e2e2 !important;
185
+ const OptionsButton = (0, styled_components_1.default)(mui_1.IconButton).attrs({
186
+ size: 'small',
187
+ bordered: true,
188
+ }) `
189
+ && {
190
+ margin: ${(props) => props.theme.grid.unit}px;
191
+ visibility: hidden;
192
+ background: #ffffff;
197
193
  }
198
194
 
199
195
  &:active,
200
196
  &:focus {
201
- background: #f2fbfc !important;
202
- border: 1px solid #e2e2e2 !important;
203
-
204
197
  circle {
205
198
  fill: #1a9bc7;
206
199
  }
@@ -210,14 +203,12 @@ const OptionsButton = (0, styled_components_1.default)(style_guide_1.IconButton)
210
203
  fill: #6e6e6e;
211
204
  }
212
205
  `;
213
- const ListItemButton = (0, styled_components_1.default)(style_guide_1.IconTextButton) `
214
- padding: 16px 14px;
215
- justify-content: space-between;
216
- align-items: center;
217
-
218
- &:hover,
219
- &:focus-visible {
220
- background: #f2fbfc;
206
+ const ListItemButton = (0, styled_components_1.default)(mui_1.Button) `
207
+ && {
208
+ padding: 16px 14px;
209
+ justify-content: space-between;
210
+ align-items: center;
211
+ width: 100%;
221
212
  }
222
213
 
223
214
  &:is([disabled]) {
@@ -247,12 +238,12 @@ const NestedListDropdownList = (0, styled_components_1.default)(style_guide_1.Dr
247
238
  top: 0;
248
239
  ${(props) => (props.$moveLeft && 'right: 30%;') || 'left: 100%;'}
249
240
  `;
250
- const UploadButton = (0, styled_components_1.default)(style_guide_1.IconTextButton) `
251
- border-top: 1px solid #f2f2f2;
252
- padding: ${(props) => props.theme.grid.unit * 4}px;
253
- justify-content: flex-start;
254
-
255
- &:focus-visible {
256
- background: #f2fbfc;
241
+ const UploadButton = (0, styled_components_1.default)(mui_1.Button) `
242
+ && {
243
+ border-top: 1px solid #f2f2f2;
244
+ padding: ${(props) => props.theme.grid.unit * 4}px;
245
+ justify-content: flex-start;
246
+ width: 100%;
247
+ border-radius: 0;
257
248
  }
258
249
  `;
@@ -53,6 +53,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
53
53
  Object.defineProperty(exports, "__esModule", { value: true });
54
54
  exports.FootnotesSelector = void 0;
55
55
  const style_guide_1 = require("@manuscripts/style-guide");
56
+ const mui_1 = require("@manuscripts/style-guide/mui");
56
57
  const track_changes_plugin_1 = require("@manuscripts/track-changes-plugin");
57
58
  const react_1 = __importStar(require("react"));
58
59
  const styled_components_1 = __importDefault(require("styled-components"));
@@ -117,12 +118,10 @@ const FootnotesSelector = ({ footnotes, inlineFootnote, labels, onAdd, onInsert,
117
118
  react_1.default.createElement(FootnotesList, { footnotes: footnotes, inlineFootnote: inlineFootnote, labels: labels, isSelected: isSelected, onSelect: toggleSelection })),
118
119
  react_1.default.createElement(Actions, null,
119
120
  react_1.default.createElement(AddNewFootnote, null,
120
- react_1.default.createElement(style_guide_1.IconTextButton, { onClick: onAdd },
121
- react_1.default.createElement(style_guide_1.AddNewIcon, null),
122
- "Add new")),
121
+ react_1.default.createElement(mui_1.Button, { variant: "tertiary", onClick: onAdd, startIcon: react_1.default.createElement(style_guide_1.AddNewIcon, null) }, "Add new")),
123
122
  react_1.default.createElement(style_guide_1.ButtonGroup, null,
124
- react_1.default.createElement(style_guide_1.SecondaryButton, { onClick: onCancel }, "Cancel"),
125
- react_1.default.createElement(style_guide_1.PrimaryButton, { onClick: handleClick, disabled: selections.size === 0 && !inlineFootnote }, inlineFootnote ? 'Update' : 'Insert')))));
123
+ react_1.default.createElement(mui_1.Button, { variant: "secondary", onClick: onCancel }, "Cancel"),
124
+ react_1.default.createElement(mui_1.Button, { onClick: handleClick, disabled: selections.size === 0 && !inlineFootnote }, inlineFootnote ? 'Update' : 'Insert')))));
126
125
  };
127
126
  exports.FootnotesSelector = FootnotesSelector;
128
127
  const FootnotesList = ({ footnotes, inlineFootnote, labels, isSelected, onSelect }) => {
@@ -53,6 +53,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
53
53
  Object.defineProperty(exports, "__esModule", { value: true });
54
54
  exports.LinkForm = exports.Open = void 0;
55
55
  const style_guide_1 = require("@manuscripts/style-guide");
56
+ const mui_1 = require("@manuscripts/style-guide/mui");
56
57
  const react_1 = __importStar(require("react"));
57
58
  const styled_components_1 = __importDefault(require("styled-components"));
58
59
  const url_1 = require("../../lib/url");
@@ -70,7 +71,7 @@ const ActionGroup = styled_components_1.default.span `
70
71
  margin-right: 4px;
71
72
  }
72
73
  `;
73
- const RemoveButton = (0, styled_components_1.default)(style_guide_1.SecondaryButton) `
74
+ const RemoveButton = (0, styled_components_1.default)(mui_1.Button) `
74
75
  display: flex;
75
76
  justify-content: space-between;
76
77
  align-items: center;
@@ -156,11 +157,11 @@ const LinkForm = ({ onCancel, onRemove, onSave, value, }) => {
156
157
  react_1.default.createElement(style_guide_1.TextField, { type: 'text', name: 'title', value: title, autoComplete: 'off', required: false, onChange: (e) => setTitle(e.target.value) })),
157
158
  react_1.default.createElement(Actions, null,
158
159
  react_1.default.createElement(ActionGroup, null,
159
- react_1.default.createElement(RemoveButton, { type: 'button', onClick: onRemove },
160
+ react_1.default.createElement(RemoveButton, { variant: "secondary", type: 'button', onClick: onRemove },
160
161
  react_1.default.createElement(style_guide_1.DeleteIcon, null),
161
162
  react_1.default.createElement("span", null, "Remove Link"))),
162
163
  react_1.default.createElement(ActionGroup, null,
163
- react_1.default.createElement(style_guide_1.SecondaryButton, { type: 'button', onClick: onCancel }, "Cancel"),
164
- react_1.default.createElement(style_guide_1.PrimaryButton, { type: 'submit' }, "Save"))))));
164
+ react_1.default.createElement(mui_1.Button, { variant: "secondary", type: 'button', onClick: onCancel }, "Cancel"),
165
+ react_1.default.createElement(mui_1.Button, { type: 'submit' }, "Save"))))));
165
166
  };
166
167
  exports.LinkForm = LinkForm;
@@ -38,6 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.ContextMenu = void 0;
40
40
  const style_guide_1 = require("@manuscripts/style-guide");
41
+ const mui_1 = require("@manuscripts/style-guide/mui");
41
42
  const track_changes_plugin_1 = require("@manuscripts/track-changes-plugin");
42
43
  const transform_1 = require("@manuscripts/transform");
43
44
  const prosemirror_tables_1 = require("prosemirror-tables");
@@ -91,45 +92,45 @@ const ContextMenu = ({ view, close, onCancelColumnDialog }) => {
91
92
  }
92
93
  };
93
94
  return (react_1.default.createElement(MenuDropdownList, { className: 'table-ctx' },
94
- react_1.default.createElement(ActionButton, { disabled: isHeaderCellSelected(view.state), onClick: () => runCommand((0, commands_1.addRows)('top')) },
95
+ react_1.default.createElement(ActionButton, { variant: "tertiary", disabled: isHeaderCellSelected(view.state), onClick: () => runCommand((0, commands_1.addRows)('top')) },
95
96
  react_1.default.createElement(style_guide_1.PlusIcon, null),
96
97
  " Insert ",
97
98
  rows,
98
99
  " above"),
99
- react_1.default.createElement(ActionButton, { onClick: () => runCommand((0, commands_1.addRows)('bottom')) },
100
+ react_1.default.createElement(ActionButton, { variant: "tertiary", onClick: () => runCommand((0, commands_1.addRows)('bottom')) },
100
101
  react_1.default.createElement(style_guide_1.PlusIcon, null),
101
102
  " Insert ",
102
103
  rows,
103
104
  " below"),
104
- react_1.default.createElement(ActionButton, { onClick: () => showWarningForTCPlugin(setColumnAction, () => (0, commands_1.addColumns)('left')) },
105
+ react_1.default.createElement(ActionButton, { variant: "tertiary", onClick: () => showWarningForTCPlugin(setColumnAction, () => (0, commands_1.addColumns)('left')) },
105
106
  react_1.default.createElement(style_guide_1.PlusIcon, null),
106
107
  " Insert ",
107
108
  columns,
108
109
  " to the left"),
109
- react_1.default.createElement(ActionButton, { onClick: () => showWarningForTCPlugin(setColumnAction, () => (0, commands_1.addColumns)('right')) },
110
+ react_1.default.createElement(ActionButton, { variant: "tertiary", onClick: () => showWarningForTCPlugin(setColumnAction, () => (0, commands_1.addColumns)('right')) },
110
111
  react_1.default.createElement(style_guide_1.PlusIcon, null),
111
112
  " Insert ",
112
113
  columns,
113
114
  " to the right"),
114
115
  react_1.default.createElement(Separator, null),
115
- react_1.default.createElement(ActionButton, { disabled: count.rows !== 1, onClick: () => runCommand((0, commands_1.addHeaderRow)(headerPosition)) },
116
+ react_1.default.createElement(ActionButton, { variant: "tertiary", disabled: count.rows !== 1, onClick: () => runCommand((0, commands_1.addHeaderRow)(headerPosition)) },
116
117
  react_1.default.createElement(style_guide_1.PlusIcon, null),
117
118
  " Insert header row ",
118
119
  headerPosition),
119
120
  react_1.default.createElement(Separator, null),
120
- react_1.default.createElement(ActionButton, { onClick: () => showWarningForTCPlugin(setRowDeleteAction, () => prosemirror_tables_1.deleteRow) },
121
+ react_1.default.createElement(ActionButton, { variant: "tertiary", onClick: () => showWarningForTCPlugin(setRowDeleteAction, () => prosemirror_tables_1.deleteRow) },
121
122
  react_1.default.createElement(GrayDeleteIcon, null),
122
123
  " Delete",
123
124
  isHeaderCellSelected(view.state) ? ' header ' : '',
124
125
  " ",
125
126
  rows),
126
- react_1.default.createElement(ActionButton, { onClick: () => showWarningForTCPlugin(setColumnAction, () => prosemirror_tables_1.deleteColumn) },
127
+ react_1.default.createElement(ActionButton, { variant: "tertiary", onClick: () => showWarningForTCPlugin(setColumnAction, () => prosemirror_tables_1.deleteColumn) },
127
128
  react_1.default.createElement(GrayDeleteIcon, null),
128
129
  " Delete ",
129
130
  columns),
130
131
  (isCellSelectionMerged || isCellSelectionSplittable) && react_1.default.createElement(Separator, null),
131
- isCellSelectionMerged && (react_1.default.createElement(ActionButton, { onClick: () => runCommand(prosemirror_tables_1.mergeCells, true) }, "Merge cells")),
132
- isCellSelectionSplittable && (react_1.default.createElement(ActionButton, { onClick: () => runCommand(prosemirror_tables_1.splitCell, true) }, "Split cells")),
132
+ isCellSelectionMerged && (react_1.default.createElement(ActionButton, { variant: "tertiary", onClick: () => runCommand(prosemirror_tables_1.mergeCells, true) }, "Merge cells")),
133
+ isCellSelectionSplittable && (react_1.default.createElement(ActionButton, { variant: "tertiary", onClick: () => runCommand(prosemirror_tables_1.splitCell, true) }, "Split cells")),
133
134
  react_1.default.createElement(TableChangeWarningDialog, { isOpen: !!rowDeleteAction, primaryAction: () => {
134
135
  if (rowDeleteAction) {
135
136
  runCommand(rowDeleteAction, true);
@@ -151,12 +152,11 @@ const MenuDropdownList = styled_components_1.default.div `
151
152
  display: flex;
152
153
  flex-direction: column;
153
154
  `;
154
- const ActionButton = (0, styled_components_1.default)(style_guide_1.IconTextButton) `
155
- padding: 8px 16px;
156
- justify-content: flex-start;
157
-
158
- &:hover {
159
- background: #f2fbfc;
155
+ const ActionButton = (0, styled_components_1.default)(mui_1.Button) `
156
+ && {
157
+ padding: 8px 16px;
158
+ justify-content: flex-start;
159
+ width: 100%;
160
160
  }
161
161
  &:disabled {
162
162
  color: #353535;
@@ -116,7 +116,7 @@ exports.toolbar = {
116
116
  comment: {
117
117
  title: 'Insert comment',
118
118
  content: react_1.default.createElement(style_guide_1.AddCommentIcon, null),
119
- isEnabled: isEnabled((0, commands_1.canInsert)(transform_1.schema.nodes.highlight_marker)),
119
+ isEnabled: isEnabled((state) => (0, commands_1.canInsertInlineComment)(state.selection.$from)),
120
120
  run: commands_1.addInlineComment,
121
121
  },
122
122
  cross_reference: {
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MATHJAX_VERSION = exports.VERSION = void 0;
4
- exports.VERSION = '3.18.1';
4
+ exports.VERSION = '3.18.3';
5
5
  exports.MATHJAX_VERSION = '3.2.2';
@@ -19,6 +19,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.createSubViewAsync = createSubViewAsync;
22
+ const mui_1 = require("@manuscripts/style-guide/mui");
22
23
  const react_1 = __importDefault(require("react"));
23
24
  const react_dom_1 = require("react-dom");
24
25
  const client_1 = require("react-dom/client");
@@ -46,8 +47,9 @@ function createView(props, Component, componentProps, node, getPos, view, classN
46
47
  }).setSelection(selection.map(tr.doc, tr.mapping));
47
48
  view.dispatch(tr);
48
49
  };
49
- return (react_1.default.createElement(styled_components_1.ThemeProvider, { theme: props.theme },
50
- react_1.default.createElement(Component, { nodeAttrs: node.attrs, setNodeAttrs: setNodeAttrs, viewProps: { node, view, getPos }, container: container, ...props, ...componentProps })));
50
+ return (react_1.default.createElement(mui_1.MuiThemeProvider, { theme: mui_1.muiTheme },
51
+ react_1.default.createElement(styled_components_1.ThemeProvider, { theme: props.theme },
52
+ react_1.default.createElement(Component, { nodeAttrs: node.attrs, setNodeAttrs: setNodeAttrs, viewProps: { node, view, getPos }, container: container, ...props, ...componentProps }))));
51
53
  };
52
54
  return Wrapped;
53
55
  }
@@ -1231,12 +1231,16 @@ export const addNodeComment = (node, state, dispatch) => {
1231
1231
  }
1232
1232
  return false;
1233
1233
  };
1234
+ export const canInsertInlineComment = ($pos) => $pos.parent.canReplaceWith($pos.index(), $pos.index(), schema.nodes.highlight_marker);
1234
1235
  export const addInlineComment = (state, dispatch) => {
1235
1236
  const selection = state.selection;
1236
1237
  const node = getParentNode(selection);
1237
1238
  if (!node) {
1238
1239
  return false;
1239
1240
  }
1241
+ if (!canInsertInlineComment(selection.$from)) {
1242
+ return false;
1243
+ }
1240
1244
  let from = selection.from;
1241
1245
  let to = selection.to;
1242
1246
  if (from === to) {
@@ -1,4 +1,5 @@
1
- import { ButtonGroup, Category, DeleteSolidIcon, Dialog, EditIcon, IconButton, PrimaryButton, SecondaryButton, withFocusTrap, } from '@manuscripts/style-guide';
1
+ import { ButtonGroup, Category, DeleteSolidIcon, Dialog, EditIcon, withFocusTrap, } from '@manuscripts/style-guide';
2
+ import { Button, IconButton } from '@manuscripts/style-guide/mui';
2
3
  import { generateNodeID, schema, } from '@manuscripts/transform';
3
4
  import React, { useMemo, useReducer, useState } from 'react';
4
5
  import styled from 'styled-components';
@@ -13,33 +14,6 @@ const CitedItemActions = styled.div `
13
14
  display: flex;
14
15
  align-items: center;
15
16
  margin-left: 12px;
16
-
17
- svg.remove-icon {
18
- color: #6e6e6e;
19
- }
20
- `;
21
- const ActionButton = styled(IconButton).attrs({
22
- $size: 24,
23
- }) `
24
- &:disabled {
25
- background-color: transparent !important;
26
- border-color: transparent !important;
27
- color: rgb(255, 255, 255);
28
- path,
29
- g {
30
- fill: ${(props) => props.theme.colors.background.tertiary} !important;
31
- }
32
- }
33
- &:not(:disabled):focus,
34
- &:not(:disabled):hover {
35
- path,
36
- g {
37
- fill: ${(props) => props.theme.colors.brand.medium} !important;
38
- }
39
- }
40
- `;
41
- const EditReferenceButton = styled(ActionButton) `
42
- margin-right: ${(props) => props.theme.grid.unit * 3}px;
43
17
  `;
44
18
  const Actions = styled(ButtonGroup) `
45
19
  margin: ${(props) => props.theme.grid.unit * 4}px;
@@ -143,14 +117,14 @@ export const CitationEditor = ({ query, rids: $rids, items: $items, citationCoun
143
117
  title: 'Cancel',
144
118
  },
145
119
  } }),
146
- React.createElement(CitedItems, null, cited.map((item) => (React.createElement(CitedItem, { key: item.id },
120
+ React.createElement(CitedItems, null, cited.map((item) => (React.createElement(CitedItem, { key: item.id, "data-cy": "cited-item" },
147
121
  React.createElement(ReferenceLine, { item: item }),
148
122
  React.createElement(CitedItemActions, null,
149
- React.createElement(EditReferenceButton, { value: item.id, disabled: !canEdit, onClick: () => setEditingForm({ show: true, item: item }) },
150
- React.createElement(EditIcon, null)),
151
- React.createElement(ActionButton, { disabled: !canEdit, onClick: () => setDeleteDialog({ show: true, id: item.id }) },
152
- React.createElement(DeleteSolidIcon, { className: 'remove-icon' }))))))),
123
+ React.createElement(IconButton, { value: item.id, disabled: !canEdit, onClick: () => setEditingForm({ show: true, item: item }) },
124
+ React.createElement(EditIcon, { fill: 'currentColor' })),
125
+ React.createElement(IconButton, { "data-cy": "remove-citation", disabled: !canEdit, onClick: () => setDeleteDialog({ show: true, id: item.id }) },
126
+ React.createElement(DeleteSolidIcon, { fill: 'currentColor' }))))))),
153
127
  React.createElement(Actions, null,
154
- React.createElement(SecondaryButton, { onClick: onCancel }, "Done"),
155
- React.createElement(PrimaryButton, { disabled: !canEdit, onClick: () => setSearching(true) }, "Add Citation"))));
128
+ React.createElement(Button, { variant: "secondary", onClick: onCancel }, "Done"),
129
+ React.createElement(Button, { disabled: !canEdit, onClick: () => setSearching(true) }, "Add Citation"))));
156
130
  };
@@ -1,4 +1,5 @@
1
- import { DotsIcon, DropdownList, getFileIcon, IconButton, IconTextButton, TriangleCollapsedIcon, UploadIcon, useDropdown, } from '@manuscripts/style-guide';
1
+ import { DotsIcon, DropdownList, getFileIcon, TriangleCollapsedIcon, UploadIcon, useDropdown, } from '@manuscripts/style-guide';
2
+ import { Button, IconButton } from '@manuscripts/style-guide/mui';
2
3
  import React, { useCallback, useEffect, useRef } from 'react';
3
4
  import styled from 'styled-components';
4
5
  import { memoGroupFiles, } from '../../lib/files';
@@ -99,20 +100,20 @@ export const FigureOptions = ({ can, getDoc, getFiles, onDownload, onUpload, onD
99
100
  } },
100
101
  React.createElement(DotsIcon, null)),
101
102
  isOpen && (React.createElement(OptionsDropdownList, { "$direction": 'right', "$width": 128, "$top": 5, ref: dropdownRef },
102
- showReplace && isEmbedMode && (React.createElement(ListItemButton, { onClick: () => onReplaceEmbed && onReplaceEmbed() }, "Edit Link")),
103
+ showReplace && isEmbedMode && (React.createElement(ListItemButton, { variant: "tertiary", onClick: () => onReplaceEmbed && onReplaceEmbed() }, "Edit Link")),
103
104
  showReplace && !isEmbedMode && (React.createElement(NestedDropdown, { disabled: !showReplace, parentToggleOpen: toggleOpen, buttonText: replaceBtnText, moveLeft: true, list: React.createElement(React.Fragment, null,
104
- getSupplements(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (React.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file, true) },
105
+ getSupplements(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (React.createElement(ListItemButton, { variant: "tertiary", key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file, true) },
105
106
  getFileIcon(file.name),
106
107
  React.createElement(ListItemText, null, file.name)))),
107
- getOtherFiles(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (React.createElement(ListItemButton, { key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file) },
108
+ getOtherFiles(getFiles, getDoc, groupFiles, isEmbed).map((file, index) => (React.createElement(ListItemButton, { variant: "tertiary", key: file.id, id: index.toString(), onClick: () => onReplace && onReplace(file) },
108
109
  getFileIcon(file.name),
109
110
  React.createElement(ListItemText, null, file.name)))),
110
- showUpload && (React.createElement(UploadButton, { onClick: onUpload, disabled: !showUpload },
111
+ showUpload && (React.createElement(UploadButton, { variant: "tertiary", onClick: onUpload, disabled: !showUpload },
111
112
  React.createElement(UploadIcon, null),
112
113
  " Upload new..."))) })),
113
- showDownload && (React.createElement(ListItemButton, { onClick: onDownload, disabled: !showDownload }, "Download")),
114
- showDetach && (React.createElement(ListItemButton, { onClick: onDetach, disabled: !showDetach }, "Detach")),
115
- showDelete() && (React.createElement(ListItemButton, { onClick: onDelete }, "Delete"))))));
114
+ showDownload && (React.createElement(ListItemButton, { variant: "tertiary", onClick: onDownload, disabled: !showDownload }, "Download")),
115
+ showDetach && (React.createElement(ListItemButton, { variant: "tertiary", onClick: onDetach, disabled: !showDetach }, "Detach")),
116
+ showDelete() && (React.createElement(ListItemButton, { variant: "tertiary", onClick: onDelete }, "Delete"))))));
116
117
  };
117
118
  const NestedDropdown = ({ parentToggleOpen, buttonText, disabled, list, moveLeft }) => {
118
119
  const { isOpen, toggleOpen, wrapperRef } = useDropdown();
@@ -124,7 +125,7 @@ const NestedDropdown = ({ parentToggleOpen, buttonText, disabled, list, moveLeft
124
125
  }, [toggleOpen, wrapperRef]);
125
126
  useDropdownKeyboardNav(isOpen, nestedListRef, handleArrowLeft, handleArrowLeft);
126
127
  return (React.createElement(DropdownWrapper, { ref: wrapperRef },
127
- React.createElement(NestedListButton, { className: "nested-list-button", onClick: toggleOpen, disabled: disabled, onKeyDown: (e) => {
128
+ React.createElement(NestedListButton, { variant: "tertiary", className: "nested-list-button", onClick: toggleOpen, disabled: disabled, onKeyDown: (e) => {
128
129
  if (e.key === 'ArrowRight') {
129
130
  e.preventDefault();
130
131
  toggleOpen();
@@ -141,26 +142,18 @@ const DropdownWrapper = styled.div ``;
141
142
  const OptionsDropdownList = styled(DropdownList) `
142
143
  right: 4%;
143
144
  `;
144
- const OptionsButton = styled(IconButton) `
145
- border: 1px solid #e2e2e2 !important;
146
- box-sizing: border-box;
147
- border-radius: 50%;
148
- width: ${(props) => props.theme.grid.unit * 6}px;
149
- height: ${(props) => props.theme.grid.unit * 6}px;
150
- margin: ${(props) => props.theme.grid.unit}px;
151
- visibility: hidden;
152
- background: #ffffff;
153
-
154
- &:hover {
155
- background: #f2fbfc !important;
156
- border: 1px solid #e2e2e2 !important;
145
+ const OptionsButton = styled(IconButton).attrs({
146
+ size: 'small',
147
+ bordered: true,
148
+ }) `
149
+ && {
150
+ margin: ${(props) => props.theme.grid.unit}px;
151
+ visibility: hidden;
152
+ background: #ffffff;
157
153
  }
158
154
 
159
155
  &:active,
160
156
  &:focus {
161
- background: #f2fbfc !important;
162
- border: 1px solid #e2e2e2 !important;
163
-
164
157
  circle {
165
158
  fill: #1a9bc7;
166
159
  }
@@ -170,14 +163,12 @@ const OptionsButton = styled(IconButton) `
170
163
  fill: #6e6e6e;
171
164
  }
172
165
  `;
173
- const ListItemButton = styled(IconTextButton) `
174
- padding: 16px 14px;
175
- justify-content: space-between;
176
- align-items: center;
177
-
178
- &:hover,
179
- &:focus-visible {
180
- background: #f2fbfc;
166
+ const ListItemButton = styled(Button) `
167
+ && {
168
+ padding: 16px 14px;
169
+ justify-content: space-between;
170
+ align-items: center;
171
+ width: 100%;
181
172
  }
182
173
 
183
174
  &:is([disabled]) {
@@ -207,12 +198,12 @@ const NestedListDropdownList = styled(DropdownList) `
207
198
  top: 0;
208
199
  ${(props) => (props.$moveLeft && 'right: 30%;') || 'left: 100%;'}
209
200
  `;
210
- const UploadButton = styled(IconTextButton) `
211
- border-top: 1px solid #f2f2f2;
212
- padding: ${(props) => props.theme.grid.unit * 4}px;
213
- justify-content: flex-start;
214
-
215
- &:focus-visible {
216
- background: #f2fbfc;
201
+ const UploadButton = styled(Button) `
202
+ && {
203
+ border-top: 1px solid #f2f2f2;
204
+ padding: ${(props) => props.theme.grid.unit * 4}px;
205
+ justify-content: flex-start;
206
+ width: 100%;
207
+ border-radius: 0;
217
208
  }
218
209
  `;
@@ -13,7 +13,8 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { AddedIcon, AddIcon, AddNewIcon, ButtonGroup, IconTextButton, PrimaryButton, SecondaryButton, withFocusTrap, withListNavigation, withNavigableListItem, } from '@manuscripts/style-guide';
16
+ import { AddedIcon, AddIcon, AddNewIcon, ButtonGroup, withFocusTrap, withListNavigation, withNavigableListItem, } from '@manuscripts/style-guide';
17
+ import { Button } from '@manuscripts/style-guide/mui';
17
18
  import { isDeleted } from '@manuscripts/track-changes-plugin';
18
19
  import React, { useState } from 'react';
19
20
  import styled from 'styled-components';
@@ -78,12 +79,10 @@ export const FootnotesSelector = ({ footnotes, inlineFootnote, labels, onAdd, on
78
79
  React.createElement(FootnotesList, { footnotes: footnotes, inlineFootnote: inlineFootnote, labels: labels, isSelected: isSelected, onSelect: toggleSelection })),
79
80
  React.createElement(Actions, null,
80
81
  React.createElement(AddNewFootnote, null,
81
- React.createElement(IconTextButton, { onClick: onAdd },
82
- React.createElement(AddNewIcon, null),
83
- "Add new")),
82
+ React.createElement(Button, { variant: "tertiary", onClick: onAdd, startIcon: React.createElement(AddNewIcon, null) }, "Add new")),
84
83
  React.createElement(ButtonGroup, null,
85
- React.createElement(SecondaryButton, { onClick: onCancel }, "Cancel"),
86
- React.createElement(PrimaryButton, { onClick: handleClick, disabled: selections.size === 0 && !inlineFootnote }, inlineFootnote ? 'Update' : 'Insert')))));
84
+ React.createElement(Button, { variant: "secondary", onClick: onCancel }, "Cancel"),
85
+ React.createElement(Button, { onClick: handleClick, disabled: selections.size === 0 && !inlineFootnote }, inlineFootnote ? 'Update' : 'Insert')))));
87
86
  };
88
87
  const FootnotesList = ({ footnotes, inlineFootnote, labels, isSelected, onSelect }) => {
89
88
  const rids = inlineFootnote?.attrs.rids;