@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.
- package/dist/cjs/commands.js +6 -1
- package/dist/cjs/components/references/CitationEditor.js +8 -34
- package/dist/cjs/components/views/FigureDropdown.js +30 -39
- package/dist/cjs/components/views/FootnotesSelector.js +4 -5
- package/dist/cjs/components/views/LinkForm.js +5 -4
- package/dist/cjs/components/views/TableCellContextMenu.js +15 -15
- package/dist/cjs/toolbar.js +1 -1
- package/dist/cjs/versions.js +1 -1
- package/dist/cjs/views/ReactSubView.js +4 -2
- package/dist/es/commands.js +4 -0
- package/dist/es/components/references/CitationEditor.js +9 -35
- package/dist/es/components/views/FigureDropdown.js +31 -40
- package/dist/es/components/views/FootnotesSelector.js +5 -6
- package/dist/es/components/views/LinkForm.js +6 -5
- package/dist/es/components/views/TableCellContextMenu.js +16 -16
- package/dist/es/toolbar.js +2 -2
- package/dist/es/versions.js +1 -1
- package/dist/es/views/ReactSubView.js +4 -2
- package/dist/types/commands.d.ts +1 -0
- package/dist/types/versions.d.ts +1 -1
- package/package.json +2 -2
- package/src/commands.ts +12 -0
- package/src/components/references/CitationEditor.tsx +14 -42
- package/src/components/views/FigureDropdown.tsx +48 -38
- package/src/components/views/FootnotesSelector.tsx +8 -9
- package/src/components/views/LinkForm.tsx +10 -7
- package/src/components/views/TableCellContextMenu.tsx +24 -10
- package/src/toolbar.tsx +4 -1
- package/src/versions.ts +1 -1
- package/src/views/ReactSubView.tsx +13 -10
- package/src/views/cross_reference.ts +1 -1
package/dist/cjs/commands.js
CHANGED
|
@@ -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(
|
|
189
|
-
react_1.default.createElement(style_guide_1.EditIcon,
|
|
190
|
-
react_1.default.createElement(
|
|
191
|
-
react_1.default.createElement(style_guide_1.DeleteSolidIcon, {
|
|
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(
|
|
194
|
-
react_1.default.createElement(
|
|
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)(
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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)(
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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)(
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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(
|
|
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(
|
|
125
|
-
react_1.default.createElement(
|
|
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)(
|
|
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(
|
|
164
|
-
react_1.default.createElement(
|
|
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)(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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;
|
package/dist/cjs/toolbar.js
CHANGED
|
@@ -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.
|
|
119
|
+
isEnabled: isEnabled((state) => (0, commands_1.canInsertInlineComment)(state.selection.$from)),
|
|
120
120
|
run: commands_1.addInlineComment,
|
|
121
121
|
},
|
|
122
122
|
cross_reference: {
|
package/dist/cjs/versions.js
CHANGED
|
@@ -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(
|
|
50
|
-
react_1.default.createElement(
|
|
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
|
}
|
package/dist/es/commands.js
CHANGED
|
@@ -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,
|
|
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(
|
|
150
|
-
React.createElement(EditIcon,
|
|
151
|
-
React.createElement(
|
|
152
|
-
React.createElement(DeleteSolidIcon, {
|
|
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(
|
|
155
|
-
React.createElement(
|
|
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,
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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(
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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(
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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,
|
|
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(
|
|
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(
|
|
86
|
-
React.createElement(
|
|
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;
|