@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.
Files changed (41) hide show
  1. package/dist/cjs/commands.js +16 -1
  2. package/dist/cjs/components/{authors/ChangeHandlingForm.js → ChangeHandlingForm.js} +12 -2
  3. package/dist/cjs/components/authors/AffiliationForm.js +1 -1
  4. package/dist/cjs/components/authors/AuthorDetailsForm.js +1 -1
  5. package/dist/cjs/components/awards/AwardForm.js +145 -0
  6. package/dist/cjs/components/awards/AwardModal.js +80 -0
  7. package/dist/cjs/components/awards/DeleteAwardDiaolog.js +45 -0
  8. package/dist/cjs/components/references/ReferenceForm.js +3 -16
  9. package/dist/cjs/icons.js +2 -1
  10. package/dist/cjs/lib/doc.js +29 -1
  11. package/dist/cjs/menus.js +6 -0
  12. package/dist/cjs/versions.js +1 -1
  13. package/dist/cjs/views/award.js +108 -16
  14. package/dist/cjs/views/awards.js +13 -12
  15. package/dist/es/commands.js +14 -1
  16. package/dist/es/components/{authors/ChangeHandlingForm.js → ChangeHandlingForm.js} +8 -1
  17. package/dist/es/components/authors/AffiliationForm.js +1 -1
  18. package/dist/es/components/authors/AuthorDetailsForm.js +1 -1
  19. package/dist/es/components/awards/AwardForm.js +115 -0
  20. package/dist/es/components/awards/AwardModal.js +50 -0
  21. package/dist/es/components/awards/DeleteAwardDiaolog.js +18 -0
  22. package/dist/es/components/references/ReferenceForm.js +3 -16
  23. package/dist/es/icons.js +2 -1
  24. package/dist/es/lib/doc.js +27 -0
  25. package/dist/es/menus.js +7 -1
  26. package/dist/es/versions.js +1 -1
  27. package/dist/es/views/award.js +108 -16
  28. package/dist/es/views/awards.js +13 -9
  29. package/dist/types/commands.d.ts +1 -0
  30. package/dist/types/components/{authors/ChangeHandlingForm.d.ts → ChangeHandlingForm.d.ts} +1 -0
  31. package/dist/types/components/awards/AwardForm.d.ts +24 -0
  32. package/dist/types/components/awards/AwardModal.d.ts +14 -0
  33. package/dist/types/components/awards/DeleteAwardDiaolog.d.ts +5 -0
  34. package/dist/types/components/references/ReferenceForm.d.ts +0 -1
  35. package/dist/types/icons.d.ts +1 -0
  36. package/dist/types/lib/doc.d.ts +1 -0
  37. package/dist/types/versions.d.ts +1 -1
  38. package/dist/types/views/award.d.ts +12 -3
  39. package/dist/types/views/awards.d.ts +5 -3
  40. package/package.json +3 -3
  41. package/styles/AdvancedEditor.css +25 -27
@@ -15,7 +15,8 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.autoComplete = 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.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;
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(formik_1.Form, null, props.children);
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("./ChangeHandlingForm");
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("./ChangeHandlingForm");
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.FlexForm = exports.ReferenceTextArea = exports.FormField = exports.LabelContainer = void 0;
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));
@@ -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',
@@ -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 = '2.6.40';
4
+ exports.VERSION = '2.6.41-LEAN-4077.0';
5
5
  exports.MATHJAX_VERSION = '3.2.2';
@@ -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.createAwardElement = (className, textContent) => {
28
- const element = document.createElement('div');
29
- element.classList.add(className);
30
- element.textContent = textContent;
31
- return element;
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.createAwardElement('award-source', source));
52
- fragment.appendChild(this.createAwardElement('award-code', `Grant Number(s): ${code ? code.split(';').join(', ') : notAvailable}`));
53
- fragment.appendChild(this.createAwardElement('award-recipient', `Recipient: ${recipient ? recipient : notAvailable}`));
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;