@manuscripts/body-editor 2.6.40 → 2.6.41-LEAN-4077.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.
- package/dist/cjs/commands.js +16 -1
- package/dist/cjs/components/{authors/ChangeHandlingForm.js → ChangeHandlingForm.js} +12 -2
- package/dist/cjs/components/authors/AffiliationForm.js +1 -1
- package/dist/cjs/components/authors/AuthorDetailsForm.js +1 -1
- package/dist/cjs/components/awards/AwardForm.js +145 -0
- package/dist/cjs/components/awards/AwardModal.js +80 -0
- package/dist/cjs/components/awards/DeleteAwardDiaolog.js +45 -0
- package/dist/cjs/components/references/ReferenceForm.js +3 -16
- package/dist/cjs/icons.js +2 -1
- package/dist/cjs/lib/doc.js +29 -1
- package/dist/cjs/menus.js +6 -0
- package/dist/cjs/versions.js +1 -1
- package/dist/cjs/views/award.js +108 -16
- package/dist/cjs/views/awards.js +13 -12
- package/dist/es/commands.js +14 -1
- package/dist/es/components/{authors/ChangeHandlingForm.js → ChangeHandlingForm.js} +8 -1
- package/dist/es/components/authors/AffiliationForm.js +1 -1
- package/dist/es/components/authors/AuthorDetailsForm.js +1 -1
- package/dist/es/components/awards/AwardForm.js +115 -0
- package/dist/es/components/awards/AwardModal.js +50 -0
- package/dist/es/components/awards/DeleteAwardDiaolog.js +18 -0
- package/dist/es/components/references/ReferenceForm.js +3 -16
- package/dist/es/icons.js +2 -1
- package/dist/es/lib/doc.js +27 -0
- package/dist/es/menus.js +7 -1
- package/dist/es/versions.js +1 -1
- package/dist/es/views/award.js +108 -16
- package/dist/es/views/awards.js +13 -9
- package/dist/types/commands.d.ts +1 -0
- package/dist/types/components/{authors/ChangeHandlingForm.d.ts → ChangeHandlingForm.d.ts} +1 -0
- package/dist/types/components/awards/AwardForm.d.ts +24 -0
- package/dist/types/components/awards/AwardModal.d.ts +14 -0
- package/dist/types/components/awards/DeleteAwardDiaolog.d.ts +5 -0
- package/dist/types/components/references/ReferenceForm.d.ts +0 -1
- package/dist/types/icons.d.ts +1 -0
- package/dist/types/lib/doc.d.ts +1 -0
- package/dist/types/versions.d.ts +1 -1
- package/dist/types/views/award.d.ts +12 -3
- package/dist/types/views/awards.d.ts +5 -3
- package/package.json +3 -3
- package/styles/AdvancedEditor.css +25 -27
package/dist/cjs/commands.js
CHANGED
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.
|
|
18
|
+
exports.mergeCellsWithSpace = exports.addColumns = exports.addHeaderRow = exports.addRows = exports.addInlineComment = exports.addNodeComment = exports.createAndFillTableElement = exports.selectAllIsolating = exports.ignoreAtomBlockNodeForward = exports.isAtEndOfTextBlock = exports.ignoreMetaNodeBackspaceCommand = exports.ignoreAtomBlockNodeBackward = exports.isTextSelection = exports.isAtStartOfTextBlock = exports.insertTOCSection = exports.insertBibliographySection = exports.insertList = exports.insertKeywords = exports.insertAward = exports.insertAffiliation = exports.insertContributors = exports.insertAbstract = exports.insertBackmatterSection = exports.insertSection = exports.insertGraphicalAbstract = exports.insertBoxElement = exports.insertInlineFootnote = exports.insertFootnotesElement = exports.insertTableElementFooter = exports.insertInlineEquation = exports.insertCrossReference = exports.insertInlineCitation = exports.insertLink = exports.insertSectionLabel = exports.findPosBeforeFirstSubsection = exports.insertBreak = exports.deleteBlock = exports.insertBlock = exports.insertSupplement = exports.insertTable = exports.insertFigure = exports.insertGeneralTableFootnote = exports.insertInlineTableFootnote = exports.createBlock = exports.createSelection = exports.canInsert = exports.blockActive = exports.isNodeSelection = exports.markActive = exports.addToStart = void 0;
|
|
19
|
+
exports.autoComplete = void 0;
|
|
19
20
|
const json_schema_1 = require("@manuscripts/json-schema");
|
|
20
21
|
const track_changes_plugin_1 = require("@manuscripts/track-changes-plugin");
|
|
21
22
|
const transform_1 = require("@manuscripts/transform");
|
|
@@ -654,6 +655,20 @@ const insertAffiliation = (state, dispatch, view) => {
|
|
|
654
655
|
return true;
|
|
655
656
|
};
|
|
656
657
|
exports.insertAffiliation = insertAffiliation;
|
|
658
|
+
const insertAward = (state, dispatch, view) => {
|
|
659
|
+
const award = transform_1.schema.nodes.award.create();
|
|
660
|
+
const tr = state.tr;
|
|
661
|
+
const awards = (0, doc_1.insertAwardsNode)(tr);
|
|
662
|
+
const pos = awards.pos + awards.node.nodeSize - 1;
|
|
663
|
+
tr.insert(pos, award);
|
|
664
|
+
const selection = prosemirror_state_1.NodeSelection.create(tr.doc, pos);
|
|
665
|
+
view && view.focus();
|
|
666
|
+
if (dispatch) {
|
|
667
|
+
dispatch(tr.setSelection(selection).scrollIntoView());
|
|
668
|
+
}
|
|
669
|
+
return true;
|
|
670
|
+
};
|
|
671
|
+
exports.insertAward = insertAward;
|
|
657
672
|
const insertKeywords = (state, dispatch, view) => {
|
|
658
673
|
if ((0, utils_1.getChildOfType)(state.doc, transform_1.schema.nodes.keywords, true)) {
|
|
659
674
|
return false;
|
|
@@ -22,16 +22,26 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.ChangeHandlingForm = void 0;
|
|
29
|
+
exports.FlexForm = exports.ChangeHandlingForm = void 0;
|
|
27
30
|
const formik_1 = require("formik");
|
|
28
31
|
const react_1 = __importStar(require("react"));
|
|
32
|
+
const styled_components_1 = __importDefault(require("styled-components"));
|
|
29
33
|
const ChangeHandlingForm = (props) => {
|
|
30
34
|
const { values } = (0, formik_1.useFormikContext)();
|
|
31
35
|
(0, react_1.useEffect)(() => {
|
|
32
36
|
var _a;
|
|
33
37
|
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, values);
|
|
34
38
|
}, [props.onChange, values]);
|
|
35
|
-
return react_1.default.createElement(
|
|
39
|
+
return react_1.default.createElement(exports.FlexForm, null, props.children);
|
|
36
40
|
};
|
|
37
41
|
exports.ChangeHandlingForm = ChangeHandlingForm;
|
|
42
|
+
exports.FlexForm = (0, styled_components_1.default)(formik_1.Form) `
|
|
43
|
+
height: 100%;
|
|
44
|
+
display: flex;
|
|
45
|
+
flex-direction: column;
|
|
46
|
+
overflow: hidden;
|
|
47
|
+
`;
|
|
@@ -8,7 +8,7 @@ const style_guide_1 = require("@manuscripts/style-guide");
|
|
|
8
8
|
const formik_1 = require("formik");
|
|
9
9
|
const react_1 = __importDefault(require("react"));
|
|
10
10
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
11
|
-
const ChangeHandlingForm_1 = require("
|
|
11
|
+
const ChangeHandlingForm_1 = require("../ChangeHandlingForm");
|
|
12
12
|
const Row = styled_components_1.default.div `
|
|
13
13
|
display: flex;
|
|
14
14
|
border-top: 1px solid ${(props) => props.theme.colors.border.field.default};
|
|
@@ -46,7 +46,7 @@ const style_guide_1 = require("@manuscripts/style-guide");
|
|
|
46
46
|
const formik_1 = require("formik");
|
|
47
47
|
const react_1 = __importStar(require("react"));
|
|
48
48
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
49
|
-
const ChangeHandlingForm_1 = require("
|
|
49
|
+
const ChangeHandlingForm_1 = require("../ChangeHandlingForm");
|
|
50
50
|
exports.LabelText = styled_components_1.default.div `
|
|
51
51
|
font: ${(props) => props.theme.font.weight.normal}
|
|
52
52
|
${(props) => props.theme.font.size.normal} / 1
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*!
|
|
3
|
+
* © 2019 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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
41
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
42
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
43
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
44
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
45
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
46
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.AwardForm = void 0;
|
|
54
|
+
const style_guide_1 = require("@manuscripts/style-guide");
|
|
55
|
+
const formik_1 = require("formik");
|
|
56
|
+
const react_1 = __importStar(require("react"));
|
|
57
|
+
const styled_components_1 = __importDefault(require("styled-components"));
|
|
58
|
+
const ChangeHandlingForm_1 = require("../ChangeHandlingForm");
|
|
59
|
+
const AwardForm = ({ values, onSave, onCancel, onChange, }) => {
|
|
60
|
+
const [funders, setFunders] = (0, react_1.useState)([]);
|
|
61
|
+
const formRef = (0, react_1.useRef)(null);
|
|
62
|
+
const primaryButtonText = values.id ? 'Save funder' : 'Add funder';
|
|
63
|
+
(0, react_1.useEffect)(() => {
|
|
64
|
+
const fetchFunders = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
+
try {
|
|
66
|
+
const response = yield fetch('https://api.crossref.org/funders');
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
69
|
+
}
|
|
70
|
+
const data = yield response.json();
|
|
71
|
+
const funderOptions = data.message.items.map((funder) => ({
|
|
72
|
+
value: funder.name,
|
|
73
|
+
label: funder.name,
|
|
74
|
+
}));
|
|
75
|
+
funderOptions.sort((a, b) => a.label.localeCompare(b.label));
|
|
76
|
+
sessionStorage.setItem('funders', JSON.stringify(funderOptions));
|
|
77
|
+
setFunders(funderOptions);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.error('Error fetching funders:', error);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
const storedFunders = sessionStorage.getItem('funders');
|
|
84
|
+
if (storedFunders) {
|
|
85
|
+
setFunders(JSON.parse(storedFunders));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
fetchFunders();
|
|
89
|
+
}
|
|
90
|
+
}, []);
|
|
91
|
+
const handleCancel = () => {
|
|
92
|
+
var _a;
|
|
93
|
+
(_a = formRef.current) === null || _a === void 0 ? void 0 : _a.resetForm();
|
|
94
|
+
onCancel();
|
|
95
|
+
};
|
|
96
|
+
const validate = (values) => {
|
|
97
|
+
const errors = {};
|
|
98
|
+
if (!values.source) {
|
|
99
|
+
errors.source = 'Funder name is required';
|
|
100
|
+
}
|
|
101
|
+
return errors;
|
|
102
|
+
};
|
|
103
|
+
return (react_1.default.createElement(formik_1.Formik, { initialValues: values, onSubmit: (values, { setSubmitting }) => {
|
|
104
|
+
onSave(values);
|
|
105
|
+
setSubmitting(false);
|
|
106
|
+
}, enableReinitialize: true, validate: validate, validateOnChange: false, innerRef: formRef }, (formik) => {
|
|
107
|
+
return (react_1.default.createElement(ChangeHandlingForm_1.ChangeHandlingForm, { onChange: onChange },
|
|
108
|
+
react_1.default.createElement(formik_1.Field, { type: "hidden", name: "id" }),
|
|
109
|
+
react_1.default.createElement(LabelContainer, null,
|
|
110
|
+
react_1.default.createElement(Label, { htmlFor: 'source' }, "Funder name")),
|
|
111
|
+
react_1.default.createElement(formik_1.Field, { name: "source", component: style_guide_1.SelectField, options: funders, value: funders.find((funder) => funder.value === formik.values.source) || null }),
|
|
112
|
+
formik.errors.source && formik.touched.source && (react_1.default.createElement("div", { style: { color: 'red' } }, formik.errors.source)),
|
|
113
|
+
react_1.default.createElement(LabelContainer, null,
|
|
114
|
+
react_1.default.createElement(Label, { htmlFor: 'code' }, "Grant number")),
|
|
115
|
+
react_1.default.createElement(style_guide_1.MultiValueInput, { inputType: "text", initialValues: values.code ? values.code.split(';') : [], onChange: (newValues) => {
|
|
116
|
+
formik.setFieldValue('code', newValues.join(';'));
|
|
117
|
+
} }),
|
|
118
|
+
react_1.default.createElement(LabelContainer, null,
|
|
119
|
+
react_1.default.createElement(Label, { htmlFor: 'recipient' }, "Recipient name")),
|
|
120
|
+
react_1.default.createElement(formik_1.Field, { name: "recipient" }, (props) => (react_1.default.createElement(style_guide_1.TextField, Object.assign({ id: "recipient", placeholder: "Enter full name " }, props.field)))),
|
|
121
|
+
react_1.default.createElement(ButtonContainer, null,
|
|
122
|
+
react_1.default.createElement(style_guide_1.SecondaryButton, { onClick: handleCancel }, "Cancel"),
|
|
123
|
+
react_1.default.createElement(style_guide_1.PrimaryButton, { type: "submit", disabled: !formik.dirty || formik.isSubmitting }, primaryButtonText))));
|
|
124
|
+
}));
|
|
125
|
+
};
|
|
126
|
+
exports.AwardForm = AwardForm;
|
|
127
|
+
const LabelContainer = styled_components_1.default.div `
|
|
128
|
+
display: flex;
|
|
129
|
+
justify-content: space-between;
|
|
130
|
+
align-items: center;
|
|
131
|
+
margin-top: ${(props) => 4 * props.theme.grid.unit}px;
|
|
132
|
+
margin-bottom: ${(props) => props.theme.grid.unit}px;
|
|
133
|
+
`;
|
|
134
|
+
const Label = styled_components_1.default.label `
|
|
135
|
+
font-family: ${(props) => props.theme.font.family.sans};
|
|
136
|
+
font-size: ${(props) => props.theme.font.size.large};
|
|
137
|
+
display: block;
|
|
138
|
+
color: ${(props) => props.theme.colors.text.secondary};
|
|
139
|
+
`;
|
|
140
|
+
const ButtonContainer = styled_components_1.default.div `
|
|
141
|
+
display: flex;
|
|
142
|
+
justify-content: flex-end;
|
|
143
|
+
margin-top: 16px;
|
|
144
|
+
gap: 8px;
|
|
145
|
+
`;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.AwardModal = void 0;
|
|
30
|
+
const style_guide_1 = require("@manuscripts/style-guide");
|
|
31
|
+
const react_1 = __importStar(require("react"));
|
|
32
|
+
const styled_components_1 = __importDefault(require("styled-components"));
|
|
33
|
+
const AwardForm_1 = require("./AwardForm");
|
|
34
|
+
const ModalBody = styled_components_1.default.div `
|
|
35
|
+
box-sizing: border-box;
|
|
36
|
+
padding: ${(props) => 6 * props.theme.grid.unit}px;
|
|
37
|
+
background-color: ${(props) => props.theme.colors.background.primary};
|
|
38
|
+
width: 480px;
|
|
39
|
+
max-width: 60vw;
|
|
40
|
+
max-height: 80vh;
|
|
41
|
+
`;
|
|
42
|
+
const ModalTitle = styled_components_1.default.h2 `
|
|
43
|
+
font-family: ${(props) => props.theme.font.family.sans};
|
|
44
|
+
font-size: ${(props) => props.theme.font.size.medium};
|
|
45
|
+
font-weight: ${(props) => props.theme.font.weight.bold};
|
|
46
|
+
color: ${(props) => props.theme.colors.text.primary};
|
|
47
|
+
margin: 0;
|
|
48
|
+
`;
|
|
49
|
+
const normalizeData = (award) => ({
|
|
50
|
+
id: award.id || '',
|
|
51
|
+
source: award.source || '',
|
|
52
|
+
code: award.code || '',
|
|
53
|
+
recipient: award.recipient || '',
|
|
54
|
+
});
|
|
55
|
+
const AwardModal = ({ initialData, onSaveAward, onCancelAward, }) => {
|
|
56
|
+
const [isOpen, setOpen] = (0, react_1.useState)(true);
|
|
57
|
+
const valuesRef = (0, react_1.useRef)();
|
|
58
|
+
const handleSave = () => {
|
|
59
|
+
const updatedValues = valuesRef.current;
|
|
60
|
+
if (updatedValues) {
|
|
61
|
+
onSaveAward(updatedValues);
|
|
62
|
+
handleClose();
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const handleCancel = () => {
|
|
66
|
+
onCancelAward && onCancelAward();
|
|
67
|
+
handleClose();
|
|
68
|
+
};
|
|
69
|
+
const handleClose = () => setOpen(false);
|
|
70
|
+
const handleChange = (values) => (valuesRef.current = values);
|
|
71
|
+
const normalizedValues = react_1.default.useMemo(() => normalizeData(initialData), [initialData]);
|
|
72
|
+
return (react_1.default.createElement(style_guide_1.StyledModal, { isOpen: isOpen, onRequestClose: () => handleClose(), shouldCloseOnOverlayClick: true },
|
|
73
|
+
react_1.default.createElement(style_guide_1.ModalContainer, { "data-cy": "award-modal" },
|
|
74
|
+
react_1.default.createElement(style_guide_1.ModalHeader, null,
|
|
75
|
+
react_1.default.createElement(style_guide_1.CloseButton, { onClick: () => handleClose(), "data-cy": "modal-close-button" })),
|
|
76
|
+
react_1.default.createElement(ModalBody, null,
|
|
77
|
+
react_1.default.createElement(ModalTitle, null, "Add Funder information"),
|
|
78
|
+
react_1.default.createElement(AwardForm_1.AwardForm, { values: normalizedValues, onSave: handleSave, onCancel: handleCancel, onChange: handleChange })))));
|
|
79
|
+
};
|
|
80
|
+
exports.AwardModal = AwardModal;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.DeleteAwardDialog = void 0;
|
|
27
|
+
const style_guide_1 = require("@manuscripts/style-guide");
|
|
28
|
+
const react_1 = __importStar(require("react"));
|
|
29
|
+
const DeleteAwardDialog = ({ handleDelete, }) => {
|
|
30
|
+
const [isOpen, setOpen] = (0, react_1.useState)(true);
|
|
31
|
+
return (react_1.default.createElement(style_guide_1.Dialog, { isOpen: isOpen, actions: {
|
|
32
|
+
primary: {
|
|
33
|
+
action: () => {
|
|
34
|
+
setOpen(false);
|
|
35
|
+
handleDelete();
|
|
36
|
+
},
|
|
37
|
+
title: 'Delete',
|
|
38
|
+
},
|
|
39
|
+
secondary: {
|
|
40
|
+
action: () => setOpen(false),
|
|
41
|
+
title: 'Cancel',
|
|
42
|
+
},
|
|
43
|
+
}, category: style_guide_1.Category.warning, header: 'Delete Funder Info', message: `Do you want to continue?` }));
|
|
44
|
+
};
|
|
45
|
+
exports.DeleteAwardDialog = DeleteAwardDialog;
|
|
@@ -41,12 +41,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
41
41
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
42
|
};
|
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.ReferenceForm = exports.FormFields = exports.
|
|
44
|
+
exports.ReferenceForm = exports.FormFields = exports.ReferenceTextArea = exports.FormField = exports.LabelContainer = void 0;
|
|
45
45
|
const json_schema_1 = require("@manuscripts/json-schema");
|
|
46
46
|
const style_guide_1 = require("@manuscripts/style-guide");
|
|
47
47
|
const formik_1 = require("formik");
|
|
48
48
|
const react_1 = __importStar(require("react"));
|
|
49
49
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
50
|
+
const ChangeHandlingForm_1 = require("../ChangeHandlingForm");
|
|
50
51
|
exports.LabelContainer = styled_components_1.default.div `
|
|
51
52
|
display: flex;
|
|
52
53
|
justify-content: space-between;
|
|
@@ -142,12 +143,6 @@ exports.ReferenceTextArea = (0, styled_components_1.default)(style_guide_1.TextA
|
|
|
142
143
|
height: ${(props) => props.theme.grid.unit * 20}px;
|
|
143
144
|
resize: none;
|
|
144
145
|
`;
|
|
145
|
-
exports.FlexForm = (0, styled_components_1.default)(formik_1.Form) `
|
|
146
|
-
height: 100%;
|
|
147
|
-
display: flex;
|
|
148
|
-
flex-direction: column;
|
|
149
|
-
overflow: hidden;
|
|
150
|
-
`;
|
|
151
146
|
exports.FormFields = styled_components_1.default.div `
|
|
152
147
|
flex: 1;
|
|
153
148
|
overflow-y: auto;
|
|
@@ -212,14 +207,6 @@ const bibliographyItemTypeOptions = bibliographyItemTypes.map((i) => ({
|
|
|
212
207
|
label: i[1],
|
|
213
208
|
value: i[0],
|
|
214
209
|
}));
|
|
215
|
-
const ChangeHandlingForm = (props) => {
|
|
216
|
-
const { values } = (0, formik_1.useFormikContext)();
|
|
217
|
-
(0, react_1.useEffect)(() => {
|
|
218
|
-
var _a;
|
|
219
|
-
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, values);
|
|
220
|
-
}, [props.onChange, values]);
|
|
221
|
-
return react_1.default.createElement(exports.FlexForm, null, props.children);
|
|
222
|
-
};
|
|
223
210
|
const ReferenceForm = ({ values, showDelete, onChange, onDelete, onCancel, onSave, actionsRef, }) => {
|
|
224
211
|
const fieldsRef = (0, react_1.useRef)(null);
|
|
225
212
|
(0, react_1.useEffect)(() => {
|
|
@@ -238,7 +225,7 @@ const ReferenceForm = ({ values, showDelete, onChange, onDelete, onCancel, onSav
|
|
|
238
225
|
};
|
|
239
226
|
}
|
|
240
227
|
return (react_1.default.createElement(formik_1.Formik, { initialValues: values, onSubmit: onSave, enableReinitialize: true, innerRef: formRef }, (formik) => {
|
|
241
|
-
return (react_1.default.createElement(ChangeHandlingForm, { onChange: onChange },
|
|
228
|
+
return (react_1.default.createElement(ChangeHandlingForm_1.ChangeHandlingForm, { onChange: onChange },
|
|
242
229
|
react_1.default.createElement(style_guide_1.Dialog, { isOpen: showDeleteDialog, category: style_guide_1.Category.confirmation, header: "Delete Reference", message: "Are you sure you want to delete this reference from the list?", actions: {
|
|
243
230
|
secondary: {
|
|
244
231
|
action: () => {
|
package/dist/cjs/icons.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.scrollIcon = exports.sectionCategoryIcon = exports.deleteIcon = exports.alertIcon = void 0;
|
|
3
|
+
exports.scrollIcon = exports.sectionCategoryIcon = exports.editIcon = exports.deleteIcon = exports.alertIcon = void 0;
|
|
4
4
|
const style_guide_1 = require("@manuscripts/style-guide");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const server_1 = require("react-dom/server");
|
|
7
7
|
const renderIcon = (c) => (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(c));
|
|
8
8
|
exports.alertIcon = renderIcon(style_guide_1.AlertIcon);
|
|
9
9
|
exports.deleteIcon = renderIcon(style_guide_1.DeleteIcon);
|
|
10
|
+
exports.editIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.EditIcon));
|
|
10
11
|
exports.sectionCategoryIcon = renderIcon(style_guide_1.SectionCategoryIcon);
|
|
11
12
|
exports.scrollIcon = (0, server_1.renderToStaticMarkup)((0, react_1.createElement)(style_guide_1.ScrollIcon));
|
package/dist/cjs/lib/doc.js
CHANGED
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findNodeByID = exports.findGraphicalAbstractFigureElement = exports.findBibliographySection = exports.findBackmatter = exports.findBody = exports.findAbstractsNode = exports.insertFootnotesSection = exports.insertSupplementsNode = void 0;
|
|
3
|
+
exports.findNodeByID = exports.findGraphicalAbstractFigureElement = exports.findBibliographySection = exports.findBackmatter = exports.findBody = exports.findAbstractsNode = exports.insertFootnotesSection = exports.insertSupplementsNode = exports.insertAwardsNode = void 0;
|
|
4
4
|
const transform_1 = require("@manuscripts/transform");
|
|
5
5
|
const prosemirror_utils_1 = require("prosemirror-utils");
|
|
6
|
+
const insertAwardsNode = (tr) => {
|
|
7
|
+
const doc = tr.doc;
|
|
8
|
+
const awards = (0, prosemirror_utils_1.findChildrenByType)(doc, transform_1.schema.nodes.awards)[0];
|
|
9
|
+
if (awards) {
|
|
10
|
+
return awards;
|
|
11
|
+
}
|
|
12
|
+
const positions = [];
|
|
13
|
+
const possibleNodesTypes = [
|
|
14
|
+
'doi',
|
|
15
|
+
'keywords',
|
|
16
|
+
'supplements',
|
|
17
|
+
'abstracts',
|
|
18
|
+
'body',
|
|
19
|
+
];
|
|
20
|
+
doc.descendants((node, pos) => {
|
|
21
|
+
if (possibleNodesTypes.includes(node.type.name)) {
|
|
22
|
+
positions.push(pos);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const pos = positions.length === 0 ? 0 : Math.min(...positions);
|
|
26
|
+
const node = transform_1.schema.nodes.awards.createAndFill();
|
|
27
|
+
tr.insert(pos, node);
|
|
28
|
+
return {
|
|
29
|
+
node,
|
|
30
|
+
pos,
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.insertAwardsNode = insertAwardsNode;
|
|
6
34
|
const insertSupplementsNode = (tr) => {
|
|
7
35
|
const doc = tr.doc;
|
|
8
36
|
const supplements = (0, prosemirror_utils_1.findChildrenByType)(doc, transform_1.schema.nodes.supplements)[0];
|
package/dist/cjs/menus.js
CHANGED
|
@@ -114,6 +114,12 @@ const getEditorMenus = (editor) => {
|
|
|
114
114
|
isEnabled: isCommandValid(commands_1.insertAffiliation),
|
|
115
115
|
run: doCommand(commands_1.insertAffiliation),
|
|
116
116
|
},
|
|
117
|
+
{
|
|
118
|
+
id: 'insert-awards',
|
|
119
|
+
label: 'Funder Information',
|
|
120
|
+
isEnabled: isCommandValid(commands_1.insertAward),
|
|
121
|
+
run: doCommand(commands_1.insertAward),
|
|
122
|
+
},
|
|
117
123
|
{
|
|
118
124
|
id: 'insert-keywords',
|
|
119
125
|
label: 'Keywords',
|
package/dist/cjs/versions.js
CHANGED
package/dist/cjs/views/award.js
CHANGED
|
@@ -19,39 +19,131 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
19
19
|
};
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
exports.AwardView = void 0;
|
|
22
|
+
const style_guide_1 = require("@manuscripts/style-guide");
|
|
23
|
+
const transform_1 = require("@manuscripts/transform");
|
|
24
|
+
const AwardModal_1 = require("../components/awards/AwardModal");
|
|
25
|
+
const DeleteAwardDiaolog_1 = require("../components/awards/DeleteAwardDiaolog");
|
|
26
|
+
const track_changes_utils_1 = require("../lib/track-changes-utils");
|
|
27
|
+
const view_1 = require("../lib/view");
|
|
22
28
|
const block_view_1 = __importDefault(require("./block_view"));
|
|
23
29
|
const creators_1 = require("./creators");
|
|
30
|
+
const ReactSubView_1 = __importDefault(require("./ReactSubView"));
|
|
24
31
|
class AwardView extends block_view_1.default {
|
|
25
32
|
constructor() {
|
|
26
33
|
super(...arguments);
|
|
27
|
-
this.
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
this.createAwardFragment = (className, title, content) => {
|
|
35
|
+
const awardFragment = document.createElement('div');
|
|
36
|
+
awardFragment.classList.add(className);
|
|
37
|
+
if (title) {
|
|
38
|
+
const titleElement = document.createElement('span');
|
|
39
|
+
titleElement.classList.add('title');
|
|
40
|
+
titleElement.textContent = title;
|
|
41
|
+
awardFragment.appendChild(titleElement);
|
|
42
|
+
}
|
|
43
|
+
if (content) {
|
|
44
|
+
const contentElement = document.createElement('span');
|
|
45
|
+
contentElement.classList.add('content');
|
|
46
|
+
contentElement.textContent = content;
|
|
47
|
+
awardFragment.appendChild(contentElement);
|
|
48
|
+
}
|
|
49
|
+
return awardFragment;
|
|
50
|
+
};
|
|
51
|
+
this.handleClick = () => {
|
|
52
|
+
if ((0, track_changes_utils_1.isDeleted)(this.node) || !this.props.getCapabilities().editArticle) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.showContextMenu();
|
|
56
|
+
};
|
|
57
|
+
this.showContextMenu = () => {
|
|
58
|
+
this.props.popper.destroy();
|
|
59
|
+
if (!this.contentDOM) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const componentProps = {
|
|
63
|
+
actions: [
|
|
64
|
+
{
|
|
65
|
+
label: 'Edit',
|
|
66
|
+
action: () => {
|
|
67
|
+
this.props.popper.destroy();
|
|
68
|
+
this.showAwardModal(this.node);
|
|
69
|
+
},
|
|
70
|
+
icon: 'Edit',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
label: 'Delete',
|
|
74
|
+
action: () => {
|
|
75
|
+
this.props.popper.destroy();
|
|
76
|
+
this.showDeleteAwardDialog();
|
|
77
|
+
},
|
|
78
|
+
icon: 'Delete',
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
this.props.popper.show(this.contentDOM, (0, ReactSubView_1.default)(this.props, style_guide_1.ContextMenu, componentProps, this.node, this.getPos, this.view, 'context-menu'), 'right-start', false);
|
|
83
|
+
};
|
|
84
|
+
this.showAwardModal = (award) => {
|
|
85
|
+
var _a, _b;
|
|
86
|
+
(_a = this.dialog) === null || _a === void 0 ? void 0 : _a.remove();
|
|
87
|
+
(_b = this.popperContainer) === null || _b === void 0 ? void 0 : _b.remove();
|
|
88
|
+
const componentProps = {
|
|
89
|
+
initialData: (award === null || award === void 0 ? void 0 : award.attrs) || {},
|
|
90
|
+
onSaveAward: this.handleSaveAward,
|
|
91
|
+
onCancelAward: this.handleCancelAward,
|
|
92
|
+
};
|
|
93
|
+
this.popperContainer = (0, ReactSubView_1.default)(this.props, AwardModal_1.AwardModal, componentProps, this.node, this.getPos, this.view, 'award-editor');
|
|
94
|
+
this.props.popper.show(this.dom, this.popperContainer, 'auto', false);
|
|
95
|
+
};
|
|
96
|
+
this.handleSaveAward = (award) => {
|
|
97
|
+
(0, view_1.updateNodeAttrs)(this.view, transform_1.schema.nodes.award, award);
|
|
98
|
+
};
|
|
99
|
+
this.handleCancelAward = () => {
|
|
100
|
+
};
|
|
101
|
+
this.showDeleteAwardDialog = () => {
|
|
102
|
+
var _a;
|
|
103
|
+
(_a = this.dialog) === null || _a === void 0 ? void 0 : _a.remove();
|
|
104
|
+
const award = this.node;
|
|
105
|
+
const pos = this.getPos();
|
|
106
|
+
const handleDelete = () => {
|
|
107
|
+
if (award) {
|
|
108
|
+
const tr = this.view.state.tr;
|
|
109
|
+
const from = pos;
|
|
110
|
+
const to = pos + award.nodeSize;
|
|
111
|
+
this.view.dispatch(tr.delete(from, to));
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const componentProps = {
|
|
115
|
+
handleDelete: handleDelete,
|
|
116
|
+
};
|
|
117
|
+
this.popperContainer = (0, ReactSubView_1.default)(this.props, DeleteAwardDiaolog_1.DeleteAwardDialog, componentProps, this.node, this.getPos, this.view, 'award-editor');
|
|
118
|
+
this.props.popper.show(this.dom, this.popperContainer, 'auto', false);
|
|
32
119
|
};
|
|
33
|
-
}
|
|
34
|
-
initialise() {
|
|
35
|
-
this.createDOM();
|
|
36
|
-
this.contentDOM = this.dom;
|
|
37
|
-
this.updateContents();
|
|
38
120
|
}
|
|
39
121
|
updateContents() {
|
|
122
|
+
super.updateContents();
|
|
40
123
|
if (!this.contentDOM) {
|
|
41
124
|
return;
|
|
42
125
|
}
|
|
43
|
-
this.contentDOM.innerHTML = '';
|
|
44
|
-
this.contentDOM.classList.remove('block-container');
|
|
45
|
-
const notAvailable = 'N/A';
|
|
46
126
|
const { recipient, code, source } = this.node.attrs;
|
|
47
127
|
if (!source) {
|
|
48
128
|
return;
|
|
49
129
|
}
|
|
130
|
+
this.contentDOM.innerHTML = '';
|
|
131
|
+
const notAvailable = 'N/A';
|
|
50
132
|
const fragment = document.createDocumentFragment();
|
|
51
|
-
fragment.appendChild(this.
|
|
52
|
-
fragment.appendChild(this.
|
|
53
|
-
fragment.appendChild(this.
|
|
133
|
+
fragment.appendChild(this.createAwardFragment('award-source', '', source));
|
|
134
|
+
fragment.appendChild(this.createAwardFragment('award-code', 'Grant Number(s): ', code ? code.split(';').join(', ') : notAvailable));
|
|
135
|
+
fragment.appendChild(this.createAwardFragment('award-recipient', 'Recipient: ', recipient ? recipient : notAvailable));
|
|
136
|
+
if (this.props.getCapabilities().editArticle) {
|
|
137
|
+
this.dom.addEventListener('mouseup', this.handleClick);
|
|
138
|
+
}
|
|
54
139
|
this.contentDOM.appendChild(fragment);
|
|
140
|
+
this.updateClasses();
|
|
141
|
+
}
|
|
142
|
+
selectNode() {
|
|
143
|
+
super.selectNode();
|
|
144
|
+
if (!this.node.attrs.source) {
|
|
145
|
+
this.showAwardModal(this.node);
|
|
146
|
+
}
|
|
55
147
|
}
|
|
56
148
|
}
|
|
57
149
|
exports.AwardView = AwardView;
|