@manuscripts/body-editor 2.8.75-LEAN-4574.1 → 2.8.76

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 (72) hide show
  1. package/dist/cjs/clipboard.js +2 -23
  2. package/dist/cjs/components/references/ImportBibliographyForm.js +8 -8
  3. package/dist/cjs/components/references/ReferenceForm/PersonDropDown.js +2 -2
  4. package/dist/cjs/components/references/ReferenceForm/ReferenceForm.js +31 -42
  5. package/dist/cjs/components/references/ReferenceForm/config.js +13 -1
  6. package/dist/cjs/components/views/TableCellContextMenu.js +12 -11
  7. package/dist/cjs/index.js +1 -2
  8. package/dist/cjs/lib/context-menu.js +12 -8
  9. package/dist/cjs/lib/crossref.js +32 -1
  10. package/dist/cjs/lib/references.js +1 -67
  11. package/dist/cjs/lib/utils.js +3 -1
  12. package/dist/cjs/plugins/bibliography/bibliography-utils.js +84 -0
  13. package/dist/cjs/plugins/bibliography/index.js +128 -0
  14. package/dist/cjs/plugins/tables-cursor-fix.js +4 -1
  15. package/dist/cjs/versions.js +1 -1
  16. package/dist/cjs/views/bibliography_element.js +1 -1
  17. package/dist/cjs/views/bullet_list.js +44 -0
  18. package/dist/cjs/views/bullet_list_editable.js +21 -0
  19. package/dist/cjs/views/list.js +6 -23
  20. package/dist/cjs/views/ordered_list.js +53 -0
  21. package/dist/cjs/views/ordered_list_editable.js +21 -0
  22. package/dist/cjs/views/table_element.js +0 -1
  23. package/dist/es/clipboard.js +2 -22
  24. package/dist/es/components/references/ImportBibliographyForm.js +8 -8
  25. package/dist/es/components/references/ReferenceForm/PersonDropDown.js +2 -2
  26. package/dist/es/components/references/ReferenceForm/ReferenceForm.js +30 -41
  27. package/dist/es/components/references/ReferenceForm/config.js +12 -0
  28. package/dist/es/components/views/TableCellContextMenu.js +12 -11
  29. package/dist/es/index.js +1 -1
  30. package/dist/es/lib/context-menu.js +13 -9
  31. package/dist/es/lib/crossref.js +32 -1
  32. package/dist/es/lib/references.js +0 -42
  33. package/dist/es/lib/utils.js +3 -1
  34. package/dist/es/plugins/bibliography/bibliography-utils.js +77 -0
  35. package/dist/es/plugins/bibliography/index.js +124 -0
  36. package/dist/es/plugins/tables-cursor-fix.js +4 -1
  37. package/dist/es/versions.js +1 -1
  38. package/dist/es/views/bibliography_element.js +1 -1
  39. package/dist/es/views/bullet_list.js +36 -0
  40. package/dist/es/views/bullet_list_editable.js +19 -0
  41. package/dist/es/views/citation_editable.js +1 -1
  42. package/dist/es/views/list.js +5 -21
  43. package/dist/es/views/ordered_list.js +45 -0
  44. package/dist/es/views/ordered_list_editable.js +19 -0
  45. package/dist/es/views/table_element.js +0 -1
  46. package/dist/types/clipboard.d.ts +0 -1
  47. package/dist/types/components/references/BibliographyItemSource.d.ts +1 -1
  48. package/dist/types/components/references/CitationEditor.d.ts +1 -1
  49. package/dist/types/components/references/CitationViewer.d.ts +1 -1
  50. package/dist/types/components/references/ReferenceForm/PersonDropDown.d.ts +4 -4
  51. package/dist/types/components/references/ReferenceForm/ReferenceForm.d.ts +1 -1
  52. package/dist/types/components/references/ReferenceForm/config.d.ts +1 -0
  53. package/dist/types/components/references/ReferenceLine.d.ts +1 -1
  54. package/dist/types/components/references/ReferenceSearch.d.ts +1 -1
  55. package/dist/types/components/references/ReferenceSearchResults.d.ts +1 -1
  56. package/dist/types/components/references/ReferenceSearchSection.d.ts +1 -1
  57. package/dist/types/components/references/ReferencesModal.d.ts +1 -1
  58. package/dist/types/index.d.ts +1 -1
  59. package/dist/types/lib/context-menu.d.ts +1 -0
  60. package/dist/types/lib/references.d.ts +4 -3
  61. package/dist/types/plugins/bibliography/bibliography-utils.d.ts +25 -0
  62. package/dist/types/plugins/{bibliography.d.ts → bibliography/index.d.ts} +9 -9
  63. package/dist/types/versions.d.ts +1 -1
  64. package/dist/types/views/bullet_list.d.ts +25 -0
  65. package/dist/types/views/bullet_list_editable.d.ts +44 -0
  66. package/dist/types/views/list.d.ts +1 -2
  67. package/dist/types/views/ordered_list.d.ts +30 -0
  68. package/dist/types/views/ordered_list_editable.d.ts +44 -0
  69. package/dist/types/views/table_element.d.ts +0 -1
  70. package/package.json +3 -11
  71. package/dist/cjs/plugins/bibliography.js +0 -177
  72. package/dist/es/plugins/bibliography.js +0 -149
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getListStyleType = exports.clipboardParser = void 0;
3
+ exports.clipboardParser = void 0;
4
4
  const transform_1 = require("@manuscripts/transform");
5
5
  const prosemirror_model_1 = require("prosemirror-model");
6
6
  const nodes = [
@@ -14,7 +14,7 @@ const nodes = [
14
14
  getAttrs: (list) => {
15
15
  const dom = list;
16
16
  return {
17
- listStyleType: (0, exports.getListStyleType)(dom.style.listStyleType ||
17
+ listStyleType: (0, transform_1.getJatsListType)(dom.style.listStyleType ||
18
18
  (dom.firstChild &&
19
19
  dom.firstChild.style.listStyleType)),
20
20
  };
@@ -29,24 +29,3 @@ exports.clipboardParser = new prosemirror_model_1.DOMParser(transform_1.schema,
29
29
  ...nodes,
30
30
  ...prosemirror_model_1.DOMParser.fromSchema(transform_1.schema).rules,
31
31
  ]);
32
- const getListStyleType = (cssStyle) => {
33
- switch (cssStyle) {
34
- case 'disc':
35
- return 'bullet';
36
- case 'decimal':
37
- return 'order';
38
- case 'lower-alpha':
39
- return 'alpha-lower';
40
- case 'upper-alpha':
41
- return 'alpha-upper';
42
- case 'lower-roman':
43
- return 'roman-lower';
44
- case 'upper-roman':
45
- return 'roman-upper';
46
- case 'simple':
47
- return 'none';
48
- default:
49
- return 'none';
50
- }
51
- };
52
- exports.getListStyleType = getListStyleType;
@@ -48,12 +48,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
48
48
  };
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.ImportBibliographyForm = void 0;
51
+ const library_1 = require("@manuscripts/library");
51
52
  const style_guide_1 = require("@manuscripts/style-guide");
52
53
  const formik_1 = require("formik");
53
54
  const lodash_1 = require("lodash");
54
55
  const react_1 = __importStar(require("react"));
55
56
  const styled_components_1 = __importStar(require("styled-components"));
56
- const references_1 = require("../../lib/references");
57
57
  const ReferenceLine_1 = require("./ReferenceLine");
58
58
  const ImportBibliographyForm = ({ onCancel, onSave, }) => {
59
59
  const [dragging, setDragging] = (0, react_1.useState)(false);
@@ -74,18 +74,18 @@ const ImportBibliographyForm = ({ onCancel, onSave, }) => {
74
74
  const ERROR_CITATION = 'Error generating citation';
75
75
  try {
76
76
  if (!fileContent.trim()) {
77
- yield formik.setFieldValue('err', NO_CITATION);
78
- yield formik.setFieldValue('data', []);
77
+ formik.setFieldValue('err', NO_CITATION);
78
+ formik.setFieldValue('data', []);
79
79
  return;
80
80
  }
81
- const data = yield (0, references_1.importBibliographyItems)(fileContent.trim());
82
- yield formik.setFieldValue('data', data ? data : []);
83
- yield formik.setFieldValue('err', '');
81
+ const data = yield (0, library_1.transformBibliography)(fileContent.trim());
82
+ formik.setFieldValue('data', data ? data : []);
83
+ formik.setFieldValue('err', '');
84
84
  }
85
85
  catch (error) {
86
86
  console.error('Citation generation error:', error);
87
- yield formik.setFieldValue('err', ERROR_CITATION);
88
- yield formik.setFieldValue('data', []);
87
+ formik.setFieldValue('err', ERROR_CITATION);
88
+ formik.setFieldValue('data', []);
89
89
  }
90
90
  }), []);
91
91
  const debouncedGenerateData = (0, react_1.useMemo)(() => (0, lodash_1.debounce)(setDataField, 300), [setDataField]);
@@ -29,8 +29,8 @@ const formik_1 = require("formik");
29
29
  const react_1 = __importStar(require("react"));
30
30
  const styled_components_1 = require("./styled-components");
31
31
  const PersonDropDown = (props) => {
32
- const { person, isNew, index, remove, onChange, type } = props;
33
- const [isOpen, setIsOpen] = (0, react_1.useState)(isNew);
32
+ const { person, index, remove, onChange, type } = props;
33
+ const [isOpen, setIsOpen] = (0, react_1.useState)(!!person['isNew']);
34
34
  const fullName = [person.given, person.family].join(' ').trim();
35
35
  const title = fullName.length > 0 ? fullName : `Edit ${type} name`;
36
36
  const prefix = `${type}.${index}`;
@@ -39,23 +39,22 @@ var __importStar = (this && this.__importStar) || function (mod) {
39
39
  };
40
40
  Object.defineProperty(exports, "__esModule", { value: true });
41
41
  exports.ReferenceForm = void 0;
42
+ const json_schema_1 = require("@manuscripts/json-schema");
42
43
  const style_guide_1 = require("@manuscripts/style-guide");
43
44
  const formik_1 = require("formik");
44
45
  const react_1 = __importStar(require("react"));
45
- const references_1 = require("../../../lib/references");
46
46
  const utils_1 = require("../../../lib/utils");
47
47
  const ChangeHandlingForm_1 = require("../../ChangeHandlingForm");
48
+ const config_1 = require("./config");
48
49
  const PersonDropDown_1 = require("./PersonDropDown");
49
50
  const styled_components_1 = require("./styled-components");
50
- const bibliographyItemTypeOptions = references_1.bibliographyItemTypes.map((i) => ({
51
+ const bibliographyItemTypeOptions = config_1.bibliographyItemTypes.map((i) => ({
51
52
  label: i[1],
52
53
  value: i[0],
53
54
  }));
54
55
  const ReferenceForm = ({ values, showDelete, onChange, onDelete, onCancel, onSave, actionsRef, }) => {
55
56
  const fieldsRef = (0, react_1.useRef)(null);
56
57
  const formRef = (0, react_1.useRef)(null);
57
- const [newAuthorIndex, setNewAuthorIndex] = (0, react_1.useState)();
58
- const [newEditorIndex, setNewEditorIndex] = (0, react_1.useState)();
59
58
  (0, react_1.useEffect)(() => {
60
59
  if (fieldsRef.current) {
61
60
  fieldsRef.current.scrollTop = 0;
@@ -116,38 +115,28 @@ const ReferenceForm = ({ values, showDelete, onChange, onDelete, onCancel, onSav
116
115
  react_1.default.createElement(styled_components_1.LabelContainer, null,
117
116
  react_1.default.createElement(styled_components_1.Label, { htmlFor: 'std' }, "Standard")),
118
117
  react_1.default.createElement(formik_1.Field, { name: 'std' }, (props) => (react_1.default.createElement(styled_components_1.ReferenceTextArea, Object.assign({ id: 'std' }, props.field)))))),
119
- (0, utils_1.shouldRenderField)('author', formik.values.type) && (react_1.default.createElement(formik_1.FieldArray, { name: 'author', render: ({ push, remove }) => {
120
- var _a;
121
- return (react_1.default.createElement(styled_components_1.FormField, null,
122
- react_1.default.createElement(styled_components_1.LabelContainer, null,
123
- react_1.default.createElement(styled_components_1.Label, null, "Authors"),
124
- react_1.default.createElement(styled_components_1.Button, { onClick: () => {
125
- var _a;
126
- setNewAuthorIndex((_a = formik.values.author) === null || _a === void 0 ? void 0 : _a.length);
127
- push({
128
- given: '',
129
- family: '',
130
- });
131
- } },
132
- react_1.default.createElement(style_guide_1.AddAuthorIcon, { height: 17, width: 17 }))),
133
- react_1.default.createElement("div", null, (_a = formik.values.author) === null || _a === void 0 ? void 0 : _a.map((author, index) => (react_1.default.createElement(PersonDropDown_1.PersonDropDown, { key: index, index: index, person: author, isNew: newAuthorIndex === index, remove: remove, onChange: formik.handleChange, type: "author" }))))));
134
- } })),
135
- (0, utils_1.shouldRenderField)('editor', formik.values.type) && (react_1.default.createElement(formik_1.FieldArray, { name: 'editor', render: ({ push, remove }) => {
136
- var _a;
137
- return (react_1.default.createElement(styled_components_1.FormField, null,
138
- react_1.default.createElement(styled_components_1.LabelContainer, null,
139
- react_1.default.createElement(styled_components_1.Label, null, "Editors"),
140
- react_1.default.createElement(styled_components_1.Button, { onClick: () => {
141
- var _a;
142
- setNewEditorIndex((_a = formik.values.editor) === null || _a === void 0 ? void 0 : _a.length);
143
- push({
144
- given: '',
145
- family: '',
146
- });
147
- } },
148
- react_1.default.createElement(style_guide_1.AddAuthorIcon, { height: 17, width: 17 }))),
149
- react_1.default.createElement("div", null, (_a = formik.values.editor) === null || _a === void 0 ? void 0 : _a.map((editor, index) => (react_1.default.createElement(PersonDropDown_1.PersonDropDown, { key: index, index: index, person: editor, isNew: newEditorIndex === index, remove: remove, onChange: formik.handleChange, type: "editor" }))))));
150
- } })),
118
+ (0, utils_1.shouldRenderField)('author', formik.values.type) && (react_1.default.createElement(formik_1.FieldArray, { name: 'author', render: ({ push, remove }) => (react_1.default.createElement(styled_components_1.FormField, null,
119
+ react_1.default.createElement(styled_components_1.LabelContainer, null,
120
+ react_1.default.createElement(styled_components_1.Label, null, "Authors"),
121
+ react_1.default.createElement(styled_components_1.Button, { onClick: () => push((0, json_schema_1.buildBibliographicName)({
122
+ given: '',
123
+ family: '',
124
+ isNew: true,
125
+ })) },
126
+ react_1.default.createElement(style_guide_1.AddAuthorIcon, { height: 17, width: 17 }))),
127
+ react_1.default.createElement("div", null, formik.values.author &&
128
+ formik.values.author.map((author, index) => (react_1.default.createElement(PersonDropDown_1.PersonDropDown, { key: index, index: index, person: author, remove: remove, onChange: formik.handleChange, type: "author" })))))) })),
129
+ (0, utils_1.shouldRenderField)('editor', formik.values.type) && (react_1.default.createElement(formik_1.FieldArray, { name: 'editor', render: ({ push, remove }) => (react_1.default.createElement(styled_components_1.FormField, null,
130
+ react_1.default.createElement(styled_components_1.LabelContainer, null,
131
+ react_1.default.createElement(styled_components_1.Label, null, "Editors"),
132
+ react_1.default.createElement(styled_components_1.Button, { onClick: () => push((0, json_schema_1.buildBibliographicName)({
133
+ given: '',
134
+ family: '',
135
+ isNew: true,
136
+ })) },
137
+ react_1.default.createElement(style_guide_1.AddAuthorIcon, { height: 17, width: 17 }))),
138
+ react_1.default.createElement("div", null, formik.values.editor &&
139
+ formik.values.editor.map((editor, index) => (react_1.default.createElement(PersonDropDown_1.PersonDropDown, { key: index, index: index, person: editor, remove: remove, onChange: formik.handleChange, type: "editor" })))))) })),
151
140
  (0, utils_1.shouldRenderField)('issued', formik.values.type) && (react_1.default.createElement(styled_components_1.FormField, null,
152
141
  react_1.default.createElement(styled_components_1.LabelContainer, null,
153
142
  react_1.default.createElement(styled_components_1.Label, { htmlFor: "issued['date-parts'][0][0]" }, "Issued (Year)")),
@@ -158,9 +147,9 @@ const ReferenceForm = ({ values, showDelete, onChange, onDelete, onCancel, onSav
158
147
  formik.setFieldValue("issued['date-parts'][0][0]", Number(value));
159
148
  }
160
149
  else {
161
- formik.setFieldValue('issued', {
150
+ formik.setFieldValue('issued', (0, json_schema_1.buildBibliographicDate)({
162
151
  'date-parts': [[Number(value)]],
163
- });
152
+ }));
164
153
  }
165
154
  }
166
155
  else {
@@ -217,9 +206,9 @@ const ReferenceForm = ({ values, showDelete, onChange, onDelete, onCancel, onSav
217
206
  formik.setFieldValue("event-date['date-parts'][0][0]", Number(value));
218
207
  }
219
208
  else {
220
- formik.setFieldValue('event-date', {
209
+ formik.setFieldValue('event-date', (0, json_schema_1.buildBibliographicDate)({
221
210
  'date-parts': [[Number(value)]],
222
- });
211
+ }));
223
212
  }
224
213
  }
225
214
  else {
@@ -260,9 +249,9 @@ const ReferenceForm = ({ values, showDelete, onChange, onDelete, onCancel, onSav
260
249
  formik.setFieldValue("accessed['date-parts'][0][0]", Number(value));
261
250
  }
262
251
  else {
263
- formik.setFieldValue('accessed', {
252
+ formik.setFieldValue('accessed', (0, json_schema_1.buildBibliographicDate)({
264
253
  'date-parts': [[Number(value)]],
265
- });
254
+ }));
266
255
  }
267
256
  }
268
257
  else {
@@ -1,6 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fieldConfigMap = void 0;
3
+ exports.fieldConfigMap = exports.bibliographyItemTypes = void 0;
4
+ exports.bibliographyItemTypes = [
5
+ ['article-journal', 'Journal Article'],
6
+ ['book', 'Book'],
7
+ ['chapter', 'Chapter'],
8
+ ['confproc', 'Conference Paper'],
9
+ ['thesis', 'Thesis'],
10
+ ['webpage', 'Web Page'],
11
+ ['other', 'Other'],
12
+ ['standard', 'Standard'],
13
+ ['dataset', 'Dataset'],
14
+ ['preprint', 'Preprint'],
15
+ ];
4
16
  exports.fieldConfigMap = {
5
17
  'article-journal': new Set([
6
18
  'author',
@@ -54,21 +54,16 @@ const isHeaderCellSelected = (state) => {
54
54
  }
55
55
  return (((_a = state.doc.nodeAt(state.selection.from)) === null || _a === void 0 ? void 0 : _a.type) === transform_1.schema.nodes.table_header);
56
56
  };
57
- const ColumnChangeWarningDialog = ({ isOpen, primaryAction, secondaryAction }) => (react_1.default.createElement(style_guide_1.Dialog, { isOpen: isOpen, category: style_guide_1.Category.confirmation, header: "This change can't be tracked", message: "This column action won't be marked as chnage. Do you want to continue?", actions: {
58
- primary: {
59
- action: primaryAction,
60
- title: 'Ok',
61
- },
62
- secondary: {
63
- action: secondaryAction,
64
- title: 'Cancel',
65
- },
57
+ const TableChangeWarningDialog = ({ isOpen, primaryAction, secondaryAction }) => (react_1.default.createElement(style_guide_1.Dialog, { isOpen: isOpen, category: style_guide_1.Category.confirmation, header: "This change can't be tracked", message: "This action won't be marked as chnage. Do you want to continue?", actions: {
58
+ primary: { action: primaryAction, title: 'Ok' },
59
+ secondary: { action: secondaryAction, title: 'Cancel' },
66
60
  } }));
67
61
  const ContextMenu = ({ view, close, onCancelColumnDialog }) => {
68
62
  const runCommand = (command, noTracking) => {
69
63
  command(view.state, (tr) => view.dispatch((noTracking && (0, track_changes_plugin_1.skipTracking)(tr)) || tr));
70
64
  close();
71
65
  };
66
+ const [rowDeleteAction, setRowDeleteAction] = (0, react_1.useState)();
72
67
  const [columnAction, setColumnAction] = (0, react_1.useState)();
73
68
  const isCellSelectionMerged = (0, prosemirror_tables_1.mergeCells)(view.state);
74
69
  const isCellSelectionSplittable = (0, prosemirror_tables_1.splitCell)(view.state);
@@ -103,7 +98,7 @@ const ContextMenu = ({ view, close, onCancelColumnDialog }) => {
103
98
  " Insert header row ",
104
99
  headerPosition),
105
100
  react_1.default.createElement(Separator, null),
106
- react_1.default.createElement(ActionButton, { onClick: () => runCommand(prosemirror_tables_1.deleteRow) },
101
+ react_1.default.createElement(ActionButton, { onClick: () => setRowDeleteAction(() => prosemirror_tables_1.deleteRow) },
107
102
  react_1.default.createElement(GrayDeleteIcon, null),
108
103
  " Delete",
109
104
  isHeaderCellSelected(view.state) ? ' header ' : '',
@@ -116,7 +111,13 @@ const ContextMenu = ({ view, close, onCancelColumnDialog }) => {
116
111
  (isCellSelectionMerged || isCellSelectionSplittable) && react_1.default.createElement(Separator, null),
117
112
  isCellSelectionMerged && (react_1.default.createElement(ActionButton, { onClick: () => runCommand(prosemirror_tables_1.mergeCells, true) }, "Merge cells")),
118
113
  isCellSelectionSplittable && (react_1.default.createElement(ActionButton, { onClick: () => runCommand(prosemirror_tables_1.splitCell, true) }, "Split cells")),
119
- react_1.default.createElement(ColumnChangeWarningDialog, { isOpen: !!columnAction, primaryAction: () => {
114
+ react_1.default.createElement(TableChangeWarningDialog, { isOpen: !!rowDeleteAction, primaryAction: () => {
115
+ if (rowDeleteAction) {
116
+ runCommand(rowDeleteAction, true);
117
+ setRowDeleteAction(undefined);
118
+ }
119
+ }, secondaryAction: () => setRowDeleteAction(undefined) }),
120
+ react_1.default.createElement(TableChangeWarningDialog, { isOpen: !!columnAction, primaryAction: () => {
120
121
  if (columnAction) {
121
122
  runCommand(columnAction, true);
122
123
  setColumnAction(undefined);
package/dist/cjs/index.js CHANGED
@@ -29,7 +29,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
29
29
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
30
30
  };
31
31
  Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.affiliationLabel = exports.authorLabel = exports.bibliographyItemTypes = exports.metadata = exports.getClosestMatch = exports.getNewMatch = exports.searchReplacePluginKey = exports.bibliographyPluginKey = exports.footnotesPluginKey = exports.objectsPluginKey = exports.selectedSuggestionKey = exports.PopperManager = exports.CollabProvider = exports.TypeSelector = exports.OutlineItemIcon = exports.ManuscriptOutline = void 0;
32
+ exports.affiliationLabel = exports.authorLabel = exports.metadata = exports.getClosestMatch = exports.getNewMatch = exports.searchReplacePluginKey = exports.bibliographyPluginKey = exports.footnotesPluginKey = exports.objectsPluginKey = exports.selectedSuggestionKey = exports.PopperManager = exports.CollabProvider = exports.TypeSelector = exports.OutlineItemIcon = exports.ManuscriptOutline = void 0;
33
33
  __exportStar(require("./commands"), exports);
34
34
  var ManuscriptOutline_1 = require("./components/outline/ManuscriptOutline");
35
35
  Object.defineProperty(exports, "ManuscriptOutline", { enumerable: true, get: function () { return ManuscriptOutline_1.ManuscriptOutline; } });
@@ -70,7 +70,6 @@ Object.defineProperty(exports, "getNewMatch", { enumerable: true, get: function
70
70
  Object.defineProperty(exports, "getClosestMatch", { enumerable: true, get: function () { return lib_1.getClosestMatch; } });
71
71
  var references_1 = require("./lib/references");
72
72
  Object.defineProperty(exports, "metadata", { enumerable: true, get: function () { return references_1.metadata; } });
73
- Object.defineProperty(exports, "bibliographyItemTypes", { enumerable: true, get: function () { return references_1.bibliographyItemTypes; } });
74
73
  var authors_1 = require("./lib/authors");
75
74
  Object.defineProperty(exports, "authorLabel", { enumerable: true, get: function () { return authors_1.authorLabel; } });
76
75
  Object.defineProperty(exports, "affiliationLabel", { enumerable: true, get: function () { return authors_1.affiliationLabel; } });
@@ -189,20 +189,17 @@ class ContextMenu {
189
189
  }
190
190
  if (type === transform_1.schema.nodes.list) {
191
191
  menu.appendChild(this.createMenuSection((section) => {
192
- const type = this.node.attrs.listStyleType;
193
- if (type === 'simple' || type === 'bullet') {
192
+ const attrs = this.node.attrs;
193
+ const listType = (0, transform_1.getListType)(attrs.listStyleType).style;
194
+ if (listType === 'none' || listType === 'disc') {
194
195
  section.appendChild(this.createMenuItem('Change to Numbered List', () => {
195
- const tr = this.view.state.tr;
196
- tr.setNodeAttribute(this.getPos(), 'listStyleType', 'order');
197
- this.view.dispatch(tr);
196
+ this.changeNodeType(null, 'order');
198
197
  popper.destroy();
199
198
  }));
200
199
  }
201
200
  else {
202
201
  section.appendChild(this.createMenuItem('Change to Bulleted list', () => {
203
- const tr = this.view.state.tr;
204
- tr.setNodeAttribute(this.getPos(), 'listStyleType', 'bullet');
205
- this.view.dispatch(tr);
202
+ this.changeNodeType(null, 'bullet');
206
203
  popper.destroy();
207
204
  }));
208
205
  }
@@ -347,6 +344,13 @@ class ContextMenu {
347
344
  checkNode('pullquote_element');
348
345
  return insertable;
349
346
  };
347
+ this.changeNodeType = (nodeType, listType) => {
348
+ this.view.dispatch(this.view.state.tr.setNodeMarkup(this.getPos(), nodeType, {
349
+ id: this.node.attrs.id,
350
+ listStyleType: listType,
351
+ }));
352
+ popper.destroy();
353
+ };
350
354
  this.deleteNode = (nodeType) => {
351
355
  switch (nodeType.name) {
352
356
  case 'section_title': {
@@ -25,6 +25,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.Crossref = void 0;
28
+ const json_schema_1 = require("@manuscripts/json-schema");
29
+ const library_1 = require("@manuscripts/library");
28
30
  const BibliographyItemSource_1 = require("../components/references/BibliographyItemSource");
29
31
  const search = (query, limit) => {
30
32
  const controller = new AbortController();
@@ -49,10 +51,39 @@ const searchAsync = (params, controller) => __awaiter(void 0, void 0, void 0, fu
49
51
  const items = data.message.items;
50
52
  const total = data.message['total-results'];
51
53
  return {
52
- items,
54
+ items: items.map((i) => parseCSLData((0, library_1.fixCSLData)(i))),
53
55
  total,
54
56
  };
55
57
  });
58
+ const parseCSLData = (data) => {
59
+ var _a, _b;
60
+ return ({
61
+ id: (0, json_schema_1.generateID)(json_schema_1.ObjectTypes.BibliographyItem),
62
+ type: data.type,
63
+ author: (_a = data.author) === null || _a === void 0 ? void 0 : _a.map(json_schema_1.buildBibliographicName),
64
+ issued: (0, json_schema_1.buildBibliographicDate)(data.issued),
65
+ 'container-title': data['container-title'],
66
+ DOI: data.DOI,
67
+ volume: data.volume ? String(data.volume) : undefined,
68
+ issue: data.issue ? String(data.issue) : undefined,
69
+ page: data.page,
70
+ title: data.title,
71
+ editor: (_b = data.editor) === null || _b === void 0 ? void 0 : _b.map(json_schema_1.buildBibliographicName),
72
+ edition: data.edition ? String(data.edition) : undefined,
73
+ 'collection-title': data['collection-title'],
74
+ 'publisher-place': data['publisher-place'],
75
+ publisher: data.publisher,
76
+ event: data.event,
77
+ 'event-date': (0, json_schema_1.buildBibliographicDate)(data['event-date']),
78
+ 'event-place': data['event-place'],
79
+ URL: data.URL,
80
+ accessed: (0, json_schema_1.buildBibliographicDate)(data.accessed),
81
+ 'number-of-pages': data['number-of-pages']
82
+ ? String(data['number-of-pages'])
83
+ : undefined,
84
+ locator: data.locator,
85
+ });
86
+ };
56
87
  exports.Crossref = {
57
88
  id: 'crossref',
58
89
  label: 'External sources',
@@ -1,39 +1,6 @@
1
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
2
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.bibliographyItemTypes = exports.importBibliographyItems = exports.authors = exports.issuedYear = exports.metadata = void 0;
36
- const core_1 = require("@citation-js/core");
3
+ exports.authors = exports.issuedYear = exports.metadata = void 0;
37
4
  const metadata = (item) => {
38
5
  return [(0, exports.authors)(item), item['container-title'], (0, exports.issuedYear)(item)]
39
6
  .filter(Boolean)
@@ -65,36 +32,3 @@ const authors = (item) => {
65
32
  return authors.join(', ');
66
33
  };
67
34
  exports.authors = authors;
68
- const loadCitationJsPlugins = () => __awaiter(void 0, void 0, void 0, function* () {
69
- try {
70
- yield Promise.all([
71
- Promise.resolve().then(() => __importStar(require('@citation-js/plugin-bibtex'))),
72
- Promise.resolve().then(() => __importStar(require('@citation-js/plugin-ris'))),
73
- Promise.resolve().then(() => __importStar(require('@citation-js/plugin-doi'))),
74
- Promise.resolve().then(() => __importStar(require('@citation-js/plugin-csl'))),
75
- Promise.resolve().then(() => __importStar(require('@citation-js/plugin-pubmed'))),
76
- Promise.resolve().then(() => __importStar(require('@citation-js/plugin-enw'))),
77
- ]);
78
- }
79
- catch (error) {
80
- console.error('Failed to load citation plugins:', error);
81
- }
82
- });
83
- const importBibliographyItems = (data) => __awaiter(void 0, void 0, void 0, function* () {
84
- yield loadCitationJsPlugins();
85
- const cite = yield core_1.Cite.async(data.trim());
86
- return cite.data;
87
- });
88
- exports.importBibliographyItems = importBibliographyItems;
89
- exports.bibliographyItemTypes = [
90
- ['article-journal', 'Journal Article'],
91
- ['book', 'Book'],
92
- ['chapter', 'Chapter'],
93
- ['confproc', 'Conference Paper'],
94
- ['thesis', 'Thesis'],
95
- ['webpage', 'Web Page'],
96
- ['other', 'Other'],
97
- ['standard', 'Standard'],
98
- ['dataset', 'Dataset'],
99
- ['preprint', 'Preprint'],
100
- ];
@@ -124,10 +124,12 @@ const cleanItemValues = (item) => {
124
124
  break;
125
125
  case 'author':
126
126
  case 'editor':
127
+ cleanedItem[key] = [];
128
+ break;
127
129
  case 'issued':
128
130
  case 'accessed':
129
131
  case 'event-date':
130
- cleanedItem[key] = undefined;
132
+ cleanedItem[key] = {};
131
133
  break;
132
134
  default:
133
135
  cleanedItem[key] = '';
@@ -0,0 +1,84 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.buildCitations = exports.getLatest = exports.buildDecorations = exports.isBibliographyElement = void 0;
19
+ const prosemirror_view_1 = require("prosemirror-view");
20
+ const isBibliographyElement = (node) => node.type === node.type.schema.nodes.bibliography_element;
21
+ exports.isBibliographyElement = isBibliographyElement;
22
+ const buildDecorations = (state, doc) => {
23
+ const decorations = [];
24
+ let hasMissingItems = false;
25
+ for (const [node, pos] of state.citationNodes) {
26
+ const rids = node.attrs.rids;
27
+ if (rids.length) {
28
+ for (const rid of rids) {
29
+ if (!state.bibliographyItems.has(rid)) {
30
+ decorations.push(prosemirror_view_1.Decoration.node(pos, pos + node.nodeSize, {
31
+ class: 'citation-missing',
32
+ }));
33
+ hasMissingItems = true;
34
+ }
35
+ }
36
+ }
37
+ else {
38
+ decorations.push(prosemirror_view_1.Decoration.node(pos, pos + node.nodeSize, {
39
+ class: 'citation-empty',
40
+ }));
41
+ }
42
+ decorations.push(prosemirror_view_1.Decoration.node(pos, pos + node.nodeSize, {
43
+ version: state.version,
44
+ }));
45
+ }
46
+ if (hasMissingItems) {
47
+ doc.descendants((node, pos) => {
48
+ if ((0, exports.isBibliographyElement)(node)) {
49
+ decorations.push(prosemirror_view_1.Decoration.node(pos, pos + node.nodeSize, {
50
+ missing: 'true',
51
+ }));
52
+ decorations.push(prosemirror_view_1.Decoration.widget(pos, () => {
53
+ const el = document.createElement('div');
54
+ el.className = 'bibliography-missing';
55
+ el.textContent = `The bibliography could not be generated, due to a missing library item.`;
56
+ return el;
57
+ }));
58
+ }
59
+ });
60
+ }
61
+ doc.descendants((node, pos) => {
62
+ if ((0, exports.isBibliographyElement)(node)) {
63
+ decorations.push(prosemirror_view_1.Decoration.node(pos, pos + node.nodeSize, {
64
+ version: state.version,
65
+ }));
66
+ }
67
+ });
68
+ return decorations;
69
+ };
70
+ exports.buildDecorations = buildDecorations;
71
+ const getLatest = (a, b) => a.updatedAt > b.updatedAt ? a : b;
72
+ exports.getLatest = getLatest;
73
+ const buildCitations = (citations) => citations
74
+ .map((c) => c[0].attrs)
75
+ .map((attrs) => ({
76
+ citationID: attrs.id,
77
+ citationItems: attrs.rids.map((rid) => ({
78
+ id: rid,
79
+ })),
80
+ properties: {
81
+ noteIndex: 0,
82
+ },
83
+ }));
84
+ exports.buildCitations = buildCitations;