@manuscripts/transform 2.3.7-LEAN-3519.1 → 2.3.7-LEAN-3307.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/cjs/jats/importer/jats-body-dom-parser.js +0 -22
  2. package/dist/cjs/jats/importer/jats-body-transformations.js +0 -12
  3. package/dist/cjs/jats/importer/jats-parser-utils.js +0 -4
  4. package/dist/cjs/jats/jats-exporter.js +0 -15
  5. package/dist/cjs/schema/index.js +0 -3
  6. package/dist/cjs/schema/nodes/backmatter.js +3 -2
  7. package/dist/cjs/schema/nodes/contributors.js +1 -0
  8. package/dist/cjs/schema/nodes/table_element_footer.js +1 -1
  9. package/dist/cjs/schema/nodes/title.js +1 -0
  10. package/dist/cjs/transformer/decode.js +24 -45
  11. package/dist/cjs/transformer/encode.js +2 -14
  12. package/dist/cjs/transformer/object-types.js +0 -1
  13. package/dist/cjs/version.js +1 -1
  14. package/dist/es/jats/importer/jats-body-dom-parser.js +1 -23
  15. package/dist/es/jats/importer/jats-body-transformations.js +0 -12
  16. package/dist/es/jats/importer/jats-parser-utils.js +0 -4
  17. package/dist/es/jats/jats-exporter.js +0 -15
  18. package/dist/es/schema/index.js +0 -3
  19. package/dist/es/schema/nodes/backmatter.js +3 -2
  20. package/dist/es/schema/nodes/contributors.js +1 -0
  21. package/dist/es/schema/nodes/table_element_footer.js +1 -1
  22. package/dist/es/schema/nodes/title.js +1 -0
  23. package/dist/es/transformer/decode.js +24 -45
  24. package/dist/es/transformer/encode.js +2 -14
  25. package/dist/es/transformer/object-types.js +0 -1
  26. package/dist/es/version.js +1 -1
  27. package/dist/types/lib/table-cell-styles.d.ts +1 -1
  28. package/dist/types/schema/index.d.ts +0 -1
  29. package/dist/types/schema/nodes/title.d.ts +1 -0
  30. package/dist/types/schema/types.d.ts +1 -1
  31. package/dist/types/transformer/object-types.d.ts +1 -2
  32. package/dist/types/version.d.ts +1 -1
  33. package/package.json +3 -3
  34. package/dist/cjs/schema/nodes/general_table_footnote.js +0 -27
  35. package/dist/es/schema/nodes/general_table_footnote.js +0 -24
  36. package/dist/types/schema/nodes/general_table_footnote.d.ts +0 -25
@@ -315,28 +315,6 @@ const nodes = [
315
315
  };
316
316
  },
317
317
  },
318
- {
319
- tag: 'general-table-footnote',
320
- node: 'general_table_footnote',
321
- context: 'table_element_footer/',
322
- getAttrs: (node) => {
323
- const element = node;
324
- return {
325
- id: element.getAttribute('id'),
326
- };
327
- },
328
- getContent: (node) => {
329
- const paragraphs = [];
330
- node.childNodes.forEach((p) => {
331
- const paragraph = schema_1.schema.nodes.paragraph.create();
332
- const content = exports.jatsBodyDOMParser.parse(p, {
333
- topNode: paragraph,
334
- });
335
- paragraphs.push(content);
336
- });
337
- return prosemirror_model_1.Fragment.from([...paragraphs]);
338
- },
339
- },
340
318
  {
341
319
  tag: 'fn',
342
320
  node: 'footnote',
@@ -242,18 +242,6 @@ exports.jatsBodyTransformations = {
242
242
  }
243
243
  tableWrap.insertBefore(colgroup, table.nextSibling);
244
244
  }
245
- const tableFootWrap = tableWrap.querySelector('table-wrap-foot');
246
- if (tableFootWrap) {
247
- const paragraphs = tableFootWrap.querySelectorAll(':scope > p');
248
- if (paragraphs.length) {
249
- const generalTableFootnote = createElement('general-table-footnote');
250
- for (const paragraph of paragraphs) {
251
- removeNodeFromParent(paragraph);
252
- generalTableFootnote.append(paragraph);
253
- }
254
- tableFootWrap.prepend(generalTableFootnote);
255
- }
256
- }
257
245
  });
258
246
  },
259
247
  orderTableFootnote(doc, body) {
@@ -36,10 +36,6 @@ const updateNodeID = (node, replacements, warnings) => {
36
36
  node.attrs = Object.assign(Object.assign({}, node.attrs), { id: `InlineMathFragment:${(0, uuid_1.v4)()}` });
37
37
  return;
38
38
  }
39
- if (node.type === schema_1.schema.nodes.general_table_footnote) {
40
- node.attrs = Object.assign(Object.assign({}, node.attrs), { id: `GeneralTableFootnote:${(0, uuid_1.v4)()}` });
41
- return;
42
- }
43
39
  if (!('id' in node.attrs)) {
44
40
  return;
45
41
  }
@@ -679,12 +679,6 @@ class JATSExporter {
679
679
  equation: (node) => {
680
680
  return this.createEquation(node);
681
681
  },
682
- general_table_footnote: (node) => {
683
- const el = this.document.createElement('general-table-footnote');
684
- el.setAttribute('id', normalizeID(node.attrs.id));
685
- processChildNodes(el, node, schema_1.schema.nodes.general_table_footnote);
686
- return el;
687
- },
688
682
  inline_equation: (node) => {
689
683
  const eqElement = this.document.createElement('inline-formula');
690
684
  const equation = this.createEquation(node, true);
@@ -1308,15 +1302,6 @@ class JATSExporter {
1308
1302
  label.remove();
1309
1303
  }
1310
1304
  }
1311
- if ((0, node_types_1.isNodeType)(node, 'general_table_footnote')) {
1312
- const generalTableFootnote = body.querySelector(`#${normalizeID(node.attrs.id)}`);
1313
- if (generalTableFootnote) {
1314
- Array.from(generalTableFootnote.childNodes).forEach((cn) => {
1315
- generalTableFootnote.before(cn);
1316
- });
1317
- generalTableFootnote.remove();
1318
- }
1319
- }
1320
1305
  if ((0, node_types_1.isNodeType)(node, 'table_element')) {
1321
1306
  const tableElement = body.querySelector(`#${normalizeID(node.attrs.id)}`);
1322
1307
  if (tableElement) {
@@ -61,7 +61,6 @@ const figure_element_1 = require("./nodes/figure_element");
61
61
  const footnote_1 = require("./nodes/footnote");
62
62
  const footnotes_element_1 = require("./nodes/footnotes_element");
63
63
  const footnotes_section_1 = require("./nodes/footnotes_section");
64
- const general_table_footnote_1 = require("./nodes/general_table_footnote");
65
64
  const graphical_abstract_section_1 = require("./nodes/graphical_abstract_section");
66
65
  const hard_break_1 = require("./nodes/hard_break");
67
66
  const highlight_marker_1 = require("./nodes/highlight_marker");
@@ -113,7 +112,6 @@ __exportStar(require("./nodes/equation_element"), exports);
113
112
  __exportStar(require("./nodes/figcaption"), exports);
114
113
  __exportStar(require("./nodes/figure"), exports);
115
114
  __exportStar(require("./nodes/figure_element"), exports);
116
- __exportStar(require("./nodes/general_table_footnote"), exports);
117
115
  __exportStar(require("./nodes/footnote"), exports);
118
116
  __exportStar(require("./nodes/footnotes_element"), exports);
119
117
  __exportStar(require("./nodes/footnotes_section"), exports);
@@ -189,7 +187,6 @@ exports.schema = new prosemirror_model_1.Schema({
189
187
  footnote: footnote_1.footnote,
190
188
  footnotes_element: footnotes_element_1.footnotesElement,
191
189
  footnotes_section: footnotes_section_1.footnotesSection,
192
- general_table_footnote: general_table_footnote_1.generalTableFootnote,
193
190
  graphical_abstract_section: graphical_abstract_section_1.graphicalAbstractSection,
194
191
  hard_break: hard_break_1.hardBreak,
195
192
  highlight_marker: highlight_marker_1.highlightMarker,
@@ -18,10 +18,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.backmatter = void 0;
19
19
  exports.backmatter = {
20
20
  content: 'sections*',
21
- atom: true,
22
21
  attrs: {
23
22
  id: { default: '' },
23
+ placeholder: { default: ' ' },
24
24
  },
25
- group: 'block',
25
+ group: 'block element',
26
+ parseDOM: [{ tag: 'div.backmatter' }],
26
27
  toDOM: () => ['div', { class: 'backmatter' }, 0],
27
28
  };
@@ -20,6 +20,7 @@ exports.contributors = {
20
20
  content: 'contributor* author_notes?',
21
21
  attrs: {
22
22
  id: { default: '' },
23
+ firstInitials: { default: false },
23
24
  },
24
25
  group: 'block',
25
26
  selectable: false,
@@ -21,7 +21,7 @@ exports.tableElementFooter = {
21
21
  id: { default: '' },
22
22
  dataTracked: { default: null },
23
23
  },
24
- content: 'general_table_footnote? footnotes_element?',
24
+ content: '(paragraph | footnotes_element)*',
25
25
  group: 'block element',
26
26
  toDOM: () => ['table-wrap-foot', 0],
27
27
  };
@@ -20,6 +20,7 @@ exports.title = {
20
20
  content: '(text | highlight_marker)*',
21
21
  attrs: {
22
22
  id: { default: '' },
23
+ placeholder: { default: 'Insert title here...' },
23
24
  dataTracked: { default: null },
24
25
  },
25
26
  group: 'block element',
@@ -38,7 +38,6 @@ const section_group_type_1 = require("../lib/section-group-type");
38
38
  const schema_1 = require("../schema");
39
39
  const builders_1 = require("./builders");
40
40
  const highlight_markers_1 = require("./highlight-markers");
41
- const id_1 = require("./id");
42
41
  const object_types_1 = require("./object-types");
43
42
  const section_category_1 = require("./section-category");
44
43
  const timestamp_1 = require("./timestamp");
@@ -87,6 +86,9 @@ class Decoder {
87
86
  const affiliations = getAffiliations(this.modelMap)
88
87
  .map((a) => this.decode(a))
89
88
  .filter(Boolean);
89
+ if (!affiliations.length) {
90
+ return false;
91
+ }
90
92
  return schema_1.schema.nodes.affiliations.createAndFill({}, affiliations);
91
93
  }
92
94
  createContributorsNode() {
@@ -97,12 +99,18 @@ class Decoder {
97
99
  .map((authorNote) => this.decode(authorNote))
98
100
  .filter(Boolean);
99
101
  const content = [...contributors, ...authorNotes];
102
+ if (!content.length) {
103
+ return false;
104
+ }
100
105
  return schema_1.schema.nodes.contributors.createAndFill({}, content);
101
106
  }
102
107
  createKeywordsNode() {
103
108
  const elements = getKeywordElements(this.modelMap)
104
109
  .map((e) => this.decode(e))
105
110
  .filter(Boolean);
111
+ if (!elements.length) {
112
+ return false;
113
+ }
106
114
  return schema_1.schema.nodes.keywords.createAndFill({}, [
107
115
  schema_1.schema.nodes.section_title.create({}, schema_1.schema.text('Keywords')),
108
116
  ...elements,
@@ -112,6 +120,9 @@ class Decoder {
112
120
  const elements = getSupplements(this.modelMap)
113
121
  .map((e) => this.decode(e))
114
122
  .filter(Boolean);
123
+ if (!elements.length) {
124
+ return false;
125
+ }
115
126
  return schema_1.schema.nodes.supplements.createAndFill({}, [
116
127
  schema_1.schema.nodes.section_title.create({}, schema_1.schema.text('SupplementaryMaterials')),
117
128
  ...elements,
@@ -144,11 +155,7 @@ class Decoder {
144
155
  const abstracts = schema_1.schema.nodes.abstracts.createAndFill({}, groups[section_group_type_1.abstractsType._id]);
145
156
  const body = schema_1.schema.nodes.body.createAndFill({}, groups[section_group_type_1.bodyType._id]);
146
157
  const backmatter = schema_1.schema.nodes.backmatter.createAndFill({}, groups[section_group_type_1.backmatterType._id]);
147
- return {
148
- abstracts,
149
- body,
150
- backmatter,
151
- };
158
+ return [abstracts, body, backmatter];
152
159
  }
153
160
  createCommentNodes(model) {
154
161
  const comments = [];
@@ -493,30 +500,10 @@ class Decoder {
493
500
  },
494
501
  [json_schema_1.ObjectTypes.TableElementFooter]: (data) => {
495
502
  const model = data;
496
- const contents = [];
497
- const generalTableFootnotes = [];
498
- const footnotesElements = [];
499
- for (const containedObjectID of model.containedObjectIDs) {
500
- const model = this.modelMap.get(containedObjectID);
501
- if (model.objectType === json_schema_1.ObjectTypes.ParagraphElement) {
502
- const paragraph = this.decode(model);
503
- if (paragraph) {
504
- generalTableFootnotes.push(paragraph);
505
- }
506
- }
507
- else {
508
- footnotesElements.push(this.decode(model));
509
- }
510
- }
511
- if (generalTableFootnotes && generalTableFootnotes.length) {
512
- contents.push(schema_1.schema.nodes.general_table_footnote.create({ id: (0, id_1.generateID)(object_types_1.ExtraObjectTypes.GeneralTableFootnote) }, [...generalTableFootnotes]));
513
- }
514
- if (footnotesElements && footnotesElements.length) {
515
- contents.push(...footnotesElements);
516
- }
503
+ const content = model.containedObjectIDs.map((id) => this.decode(this.modelMap.get(id)));
517
504
  return schema_1.schema.nodes.table_element_footer.create({
518
505
  id: model._id,
519
- }, contents);
506
+ }, content);
520
507
  },
521
508
  [json_schema_1.ObjectTypes.AuthorNotes]: (data) => {
522
509
  const model = data;
@@ -716,24 +703,16 @@ class Decoder {
716
703
  };
717
704
  this.getModel = (id) => this.modelMap.get(id);
718
705
  this.createArticleNode = (manuscriptID) => {
719
- const title = this.createTitleNode();
720
- const contributors = this.createContributorsNode();
721
- const affiliations = this.createAffiliationsNode();
722
- const keywords = this.createKeywordsNode();
723
- const suppl = this.createSupplementsNode();
724
- const { abstracts, body, backmatter } = this.createContentSections();
725
- const comments = this.createCommentsNode();
726
- const contents = [
727
- title,
728
- contributors,
729
- affiliations,
730
- keywords,
731
- suppl,
732
- abstracts,
733
- body,
734
- backmatter,
735
- comments,
706
+ const nodes = [
707
+ this.createTitleNode(),
708
+ this.createContributorsNode(),
709
+ this.createAffiliationsNode(),
710
+ this.createKeywordsNode(),
711
+ this.createSupplementsNode(),
712
+ ...this.createContentSections(),
713
+ this.createCommentsNode(),
736
714
  ];
715
+ const contents = nodes.filter((node) => node !== false);
737
716
  return schema_1.schema.nodes.manuscript.create({
738
717
  id: manuscriptID || this.getManuscriptID(),
739
718
  }, contents);
@@ -210,18 +210,6 @@ const containedBibliographyItemIDs = (node) => {
210
210
  const bibliographyItemNodeType = node.type.schema.nodes.bibliography_item;
211
211
  return containedObjectIDs(node, [bibliographyItemNodeType]);
212
212
  };
213
- const tableElementFooterContainedIDs = (node) => {
214
- const containedGeneralTableFootnoteIDs = containedObjectIDs(node, [
215
- schema_1.schema.nodes.footnotes_element,
216
- ]);
217
- for (let i = 0; i < node.childCount; i++) {
218
- const childNode = node.child(i);
219
- if (childNode.type === schema_1.schema.nodes.general_table_footnote) {
220
- containedGeneralTableFootnoteIDs.push(...containedObjectIDs(childNode));
221
- }
222
- }
223
- return containedGeneralTableFootnoteIDs;
224
- };
225
213
  const containedObjectIDs = (node, nodeTypes) => {
226
214
  const ids = [];
227
215
  for (let i = 0; i < node.childCount; i++) {
@@ -274,6 +262,7 @@ const encoders = {
274
262
  title: (0, exports.inlineContents)(node),
275
263
  subtitle: node.attrs.subtitle,
276
264
  runningTitle: node.attrs.runningTitle,
265
+ placeholder: node.attrs.placeholder,
277
266
  _id: node.attrs._id,
278
267
  }),
279
268
  bibliography_element: (node) => ({
@@ -394,7 +383,7 @@ const encoders = {
394
383
  paragraphStyle: node.attrs.paragraphStyle || undefined,
395
384
  }),
396
385
  table_element_footer: (node) => ({
397
- containedObjectIDs: tableElementFooterContainedIDs(node),
386
+ containedObjectIDs: containedObjectIDs(node),
398
387
  }),
399
388
  author_notes: (node) => ({
400
389
  containedObjectIDs: containedObjectIDs(node),
@@ -570,7 +559,6 @@ const containerTypes = [
570
559
  schema_1.schema.nodes.abstracts,
571
560
  schema_1.schema.nodes.body,
572
561
  schema_1.schema.nodes.backmatter,
573
- schema_1.schema.nodes.general_table_footnote,
574
562
  ];
575
563
  const placeholderTypes = [
576
564
  schema_1.schema.nodes.placeholder,
@@ -20,7 +20,6 @@ const json_schema_1 = require("@manuscripts/json-schema");
20
20
  var ExtraObjectTypes;
21
21
  (function (ExtraObjectTypes) {
22
22
  ExtraObjectTypes["PlaceholderElement"] = "MPPlaceholderElement";
23
- ExtraObjectTypes["GeneralTableFootnote"] = "MPGeneralTableFootnote";
24
23
  })(ExtraObjectTypes = exports.ExtraObjectTypes || (exports.ExtraObjectTypes = {}));
25
24
  exports.elementObjects = [
26
25
  json_schema_1.ObjectTypes.BibliographyElement,
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "2.3.7-LEAN-3519.1";
4
+ exports.VERSION = "2.3.7-LEAN-3307.3";
@@ -15,7 +15,7 @@
15
15
  */
16
16
  import mime from 'mime';
17
17
  import { DOMParser, Fragment } from 'prosemirror-model';
18
- import { schema, } from '../../schema';
18
+ import { schema } from '../../schema';
19
19
  import { chooseSectionCategory } from '../../transformer';
20
20
  const XLINK_NAMESPACE = 'http://www.w3.org/1999/xlink';
21
21
  const chooseContentType = (graphicNode) => {
@@ -309,28 +309,6 @@ const nodes = [
309
309
  };
310
310
  },
311
311
  },
312
- {
313
- tag: 'general-table-footnote',
314
- node: 'general_table_footnote',
315
- context: 'table_element_footer/',
316
- getAttrs: (node) => {
317
- const element = node;
318
- return {
319
- id: element.getAttribute('id'),
320
- };
321
- },
322
- getContent: (node) => {
323
- const paragraphs = [];
324
- node.childNodes.forEach((p) => {
325
- const paragraph = schema.nodes.paragraph.create();
326
- const content = jatsBodyDOMParser.parse(p, {
327
- topNode: paragraph,
328
- });
329
- paragraphs.push(content);
330
- });
331
- return Fragment.from([...paragraphs]);
332
- },
333
- },
334
312
  {
335
313
  tag: 'fn',
336
314
  node: 'footnote',
@@ -239,18 +239,6 @@ export const jatsBodyTransformations = {
239
239
  }
240
240
  tableWrap.insertBefore(colgroup, table.nextSibling);
241
241
  }
242
- const tableFootWrap = tableWrap.querySelector('table-wrap-foot');
243
- if (tableFootWrap) {
244
- const paragraphs = tableFootWrap.querySelectorAll(':scope > p');
245
- if (paragraphs.length) {
246
- const generalTableFootnote = createElement('general-table-footnote');
247
- for (const paragraph of paragraphs) {
248
- removeNodeFromParent(paragraph);
249
- generalTableFootnote.append(paragraph);
250
- }
251
- tableFootWrap.prepend(generalTableFootnote);
252
- }
253
- }
254
242
  });
255
243
  },
256
244
  orderTableFootnote(doc, body) {
@@ -32,10 +32,6 @@ const updateNodeID = (node, replacements, warnings) => {
32
32
  node.attrs = Object.assign(Object.assign({}, node.attrs), { id: `InlineMathFragment:${uuidv4()}` });
33
33
  return;
34
34
  }
35
- if (node.type === schema.nodes.general_table_footnote) {
36
- node.attrs = Object.assign(Object.assign({}, node.attrs), { id: `GeneralTableFootnote:${uuidv4()}` });
37
- return;
38
- }
39
35
  if (!('id' in node.attrs)) {
40
36
  return;
41
37
  }
@@ -671,12 +671,6 @@ export class JATSExporter {
671
671
  equation: (node) => {
672
672
  return this.createEquation(node);
673
673
  },
674
- general_table_footnote: (node) => {
675
- const el = this.document.createElement('general-table-footnote');
676
- el.setAttribute('id', normalizeID(node.attrs.id));
677
- processChildNodes(el, node, schema.nodes.general_table_footnote);
678
- return el;
679
- },
680
674
  inline_equation: (node) => {
681
675
  const eqElement = this.document.createElement('inline-formula');
682
676
  const equation = this.createEquation(node, true);
@@ -1300,15 +1294,6 @@ export class JATSExporter {
1300
1294
  label.remove();
1301
1295
  }
1302
1296
  }
1303
- if (isNodeType(node, 'general_table_footnote')) {
1304
- const generalTableFootnote = body.querySelector(`#${normalizeID(node.attrs.id)}`);
1305
- if (generalTableFootnote) {
1306
- Array.from(generalTableFootnote.childNodes).forEach((cn) => {
1307
- generalTableFootnote.before(cn);
1308
- });
1309
- generalTableFootnote.remove();
1310
- }
1311
- }
1312
1297
  if (isNodeType(node, 'table_element')) {
1313
1298
  const tableElement = body.querySelector(`#${normalizeID(node.attrs.id)}`);
1314
1299
  if (tableElement) {
@@ -44,7 +44,6 @@ import { figureElement } from './nodes/figure_element';
44
44
  import { footnote } from './nodes/footnote';
45
45
  import { footnotesElement } from './nodes/footnotes_element';
46
46
  import { footnotesSection } from './nodes/footnotes_section';
47
- import { generalTableFootnote } from './nodes/general_table_footnote';
48
47
  import { graphicalAbstractSection } from './nodes/graphical_abstract_section';
49
48
  import { hardBreak } from './nodes/hard_break';
50
49
  import { highlightMarker } from './nodes/highlight_marker';
@@ -96,7 +95,6 @@ export * from './nodes/equation_element';
96
95
  export * from './nodes/figcaption';
97
96
  export * from './nodes/figure';
98
97
  export * from './nodes/figure_element';
99
- export * from './nodes/general_table_footnote';
100
98
  export * from './nodes/footnote';
101
99
  export * from './nodes/footnotes_element';
102
100
  export * from './nodes/footnotes_section';
@@ -172,7 +170,6 @@ export const schema = new Schema({
172
170
  footnote,
173
171
  footnotes_element: footnotesElement,
174
172
  footnotes_section: footnotesSection,
175
- general_table_footnote: generalTableFootnote,
176
173
  graphical_abstract_section: graphicalAbstractSection,
177
174
  hard_break: hardBreak,
178
175
  highlight_marker: highlightMarker,
@@ -15,10 +15,11 @@
15
15
  */
16
16
  export const backmatter = {
17
17
  content: 'sections*',
18
- atom: true,
19
18
  attrs: {
20
19
  id: { default: '' },
20
+ placeholder: { default: ' ' },
21
21
  },
22
- group: 'block',
22
+ group: 'block element',
23
+ parseDOM: [{ tag: 'div.backmatter' }],
23
24
  toDOM: () => ['div', { class: 'backmatter' }, 0],
24
25
  };
@@ -17,6 +17,7 @@ export const contributors = {
17
17
  content: 'contributor* author_notes?',
18
18
  attrs: {
19
19
  id: { default: '' },
20
+ firstInitials: { default: false },
20
21
  },
21
22
  group: 'block',
22
23
  selectable: false,
@@ -18,7 +18,7 @@ export const tableElementFooter = {
18
18
  id: { default: '' },
19
19
  dataTracked: { default: null },
20
20
  },
21
- content: 'general_table_footnote? footnotes_element?',
21
+ content: '(paragraph | footnotes_element)*',
22
22
  group: 'block element',
23
23
  toDOM: () => ['table-wrap-foot', 0],
24
24
  };
@@ -17,6 +17,7 @@ export const title = {
17
17
  content: '(text | highlight_marker)*',
18
18
  attrs: {
19
19
  id: { default: '' },
20
+ placeholder: { default: 'Insert title here...' },
20
21
  dataTracked: { default: null },
21
22
  },
22
23
  group: 'block element',
@@ -32,7 +32,6 @@ import { abstractsType, backmatterType, bodyType, } from '../lib/section-group-t
32
32
  import { schema, } from '../schema';
33
33
  import { buildTitles } from './builders';
34
34
  import { insertHighlightMarkers } from './highlight-markers';
35
- import { generateID } from './id';
36
35
  import { ExtraObjectTypes, isCommentAnnotation, isManuscript, } from './object-types';
37
36
  import { chooseSectionLableName, chooseSectionNodeType, chooseSecType, getSectionGroupType, guessSectionCategory, } from './section-category';
38
37
  import { timestamp } from './timestamp';
@@ -78,6 +77,9 @@ export class Decoder {
78
77
  const affiliations = getAffiliations(this.modelMap)
79
78
  .map((a) => this.decode(a))
80
79
  .filter(Boolean);
80
+ if (!affiliations.length) {
81
+ return false;
82
+ }
81
83
  return schema.nodes.affiliations.createAndFill({}, affiliations);
82
84
  }
83
85
  createContributorsNode() {
@@ -88,12 +90,18 @@ export class Decoder {
88
90
  .map((authorNote) => this.decode(authorNote))
89
91
  .filter(Boolean);
90
92
  const content = [...contributors, ...authorNotes];
93
+ if (!content.length) {
94
+ return false;
95
+ }
91
96
  return schema.nodes.contributors.createAndFill({}, content);
92
97
  }
93
98
  createKeywordsNode() {
94
99
  const elements = getKeywordElements(this.modelMap)
95
100
  .map((e) => this.decode(e))
96
101
  .filter(Boolean);
102
+ if (!elements.length) {
103
+ return false;
104
+ }
97
105
  return schema.nodes.keywords.createAndFill({}, [
98
106
  schema.nodes.section_title.create({}, schema.text('Keywords')),
99
107
  ...elements,
@@ -103,6 +111,9 @@ export class Decoder {
103
111
  const elements = getSupplements(this.modelMap)
104
112
  .map((e) => this.decode(e))
105
113
  .filter(Boolean);
114
+ if (!elements.length) {
115
+ return false;
116
+ }
106
117
  return schema.nodes.supplements.createAndFill({}, [
107
118
  schema.nodes.section_title.create({}, schema.text('SupplementaryMaterials')),
108
119
  ...elements,
@@ -135,11 +146,7 @@ export class Decoder {
135
146
  const abstracts = schema.nodes.abstracts.createAndFill({}, groups[abstractsType._id]);
136
147
  const body = schema.nodes.body.createAndFill({}, groups[bodyType._id]);
137
148
  const backmatter = schema.nodes.backmatter.createAndFill({}, groups[backmatterType._id]);
138
- return {
139
- abstracts,
140
- body,
141
- backmatter,
142
- };
149
+ return [abstracts, body, backmatter];
143
150
  }
144
151
  createCommentNodes(model) {
145
152
  const comments = [];
@@ -484,30 +491,10 @@ export class Decoder {
484
491
  },
485
492
  [ObjectTypes.TableElementFooter]: (data) => {
486
493
  const model = data;
487
- const contents = [];
488
- const generalTableFootnotes = [];
489
- const footnotesElements = [];
490
- for (const containedObjectID of model.containedObjectIDs) {
491
- const model = this.modelMap.get(containedObjectID);
492
- if (model.objectType === ObjectTypes.ParagraphElement) {
493
- const paragraph = this.decode(model);
494
- if (paragraph) {
495
- generalTableFootnotes.push(paragraph);
496
- }
497
- }
498
- else {
499
- footnotesElements.push(this.decode(model));
500
- }
501
- }
502
- if (generalTableFootnotes && generalTableFootnotes.length) {
503
- contents.push(schema.nodes.general_table_footnote.create({ id: generateID(ExtraObjectTypes.GeneralTableFootnote) }, [...generalTableFootnotes]));
504
- }
505
- if (footnotesElements && footnotesElements.length) {
506
- contents.push(...footnotesElements);
507
- }
494
+ const content = model.containedObjectIDs.map((id) => this.decode(this.modelMap.get(id)));
508
495
  return schema.nodes.table_element_footer.create({
509
496
  id: model._id,
510
- }, contents);
497
+ }, content);
511
498
  },
512
499
  [ObjectTypes.AuthorNotes]: (data) => {
513
500
  const model = data;
@@ -707,24 +694,16 @@ export class Decoder {
707
694
  };
708
695
  this.getModel = (id) => this.modelMap.get(id);
709
696
  this.createArticleNode = (manuscriptID) => {
710
- const title = this.createTitleNode();
711
- const contributors = this.createContributorsNode();
712
- const affiliations = this.createAffiliationsNode();
713
- const keywords = this.createKeywordsNode();
714
- const suppl = this.createSupplementsNode();
715
- const { abstracts, body, backmatter } = this.createContentSections();
716
- const comments = this.createCommentsNode();
717
- const contents = [
718
- title,
719
- contributors,
720
- affiliations,
721
- keywords,
722
- suppl,
723
- abstracts,
724
- body,
725
- backmatter,
726
- comments,
697
+ const nodes = [
698
+ this.createTitleNode(),
699
+ this.createContributorsNode(),
700
+ this.createAffiliationsNode(),
701
+ this.createKeywordsNode(),
702
+ this.createSupplementsNode(),
703
+ ...this.createContentSections(),
704
+ this.createCommentsNode(),
727
705
  ];
706
+ const contents = nodes.filter((node) => node !== false);
728
707
  return schema.nodes.manuscript.create({
729
708
  id: manuscriptID || this.getManuscriptID(),
730
709
  }, contents);
@@ -202,18 +202,6 @@ const containedBibliographyItemIDs = (node) => {
202
202
  const bibliographyItemNodeType = node.type.schema.nodes.bibliography_item;
203
203
  return containedObjectIDs(node, [bibliographyItemNodeType]);
204
204
  };
205
- const tableElementFooterContainedIDs = (node) => {
206
- const containedGeneralTableFootnoteIDs = containedObjectIDs(node, [
207
- schema.nodes.footnotes_element,
208
- ]);
209
- for (let i = 0; i < node.childCount; i++) {
210
- const childNode = node.child(i);
211
- if (childNode.type === schema.nodes.general_table_footnote) {
212
- containedGeneralTableFootnoteIDs.push(...containedObjectIDs(childNode));
213
- }
214
- }
215
- return containedGeneralTableFootnoteIDs;
216
- };
217
205
  const containedObjectIDs = (node, nodeTypes) => {
218
206
  const ids = [];
219
207
  for (let i = 0; i < node.childCount; i++) {
@@ -266,6 +254,7 @@ const encoders = {
266
254
  title: inlineContents(node),
267
255
  subtitle: node.attrs.subtitle,
268
256
  runningTitle: node.attrs.runningTitle,
257
+ placeholder: node.attrs.placeholder,
269
258
  _id: node.attrs._id,
270
259
  }),
271
260
  bibliography_element: (node) => ({
@@ -386,7 +375,7 @@ const encoders = {
386
375
  paragraphStyle: node.attrs.paragraphStyle || undefined,
387
376
  }),
388
377
  table_element_footer: (node) => ({
389
- containedObjectIDs: tableElementFooterContainedIDs(node),
378
+ containedObjectIDs: containedObjectIDs(node),
390
379
  }),
391
380
  author_notes: (node) => ({
392
381
  containedObjectIDs: containedObjectIDs(node),
@@ -561,7 +550,6 @@ const containerTypes = [
561
550
  schema.nodes.abstracts,
562
551
  schema.nodes.body,
563
552
  schema.nodes.backmatter,
564
- schema.nodes.general_table_footnote,
565
553
  ];
566
554
  const placeholderTypes = [
567
555
  schema.nodes.placeholder,
@@ -17,7 +17,6 @@ import { manuscriptIDTypes, ObjectTypes, } from '@manuscripts/json-schema';
17
17
  export var ExtraObjectTypes;
18
18
  (function (ExtraObjectTypes) {
19
19
  ExtraObjectTypes["PlaceholderElement"] = "MPPlaceholderElement";
20
- ExtraObjectTypes["GeneralTableFootnote"] = "MPGeneralTableFootnote";
21
20
  })(ExtraObjectTypes || (ExtraObjectTypes = {}));
22
21
  export const elementObjects = [
23
22
  ObjectTypes.BibliographyElement,
@@ -1 +1 @@
1
- export const VERSION = "2.3.7-LEAN-3519.1";
1
+ export const VERSION = "2.3.7-LEAN-3307.3";
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  export declare const TABLE_CELL_STYLES: readonly ["backgroundColor", "border-top", "border-right", "border-bottom", "border-left", "verticalAlign", "textAlign"];
17
- export type TableCellStyleKey = typeof TABLE_CELL_STYLES[number];
17
+ export type TableCellStyleKey = (typeof TABLE_CELL_STYLES)[number];
18
18
  export declare const serializeTableCellStyles: (styles: {
19
19
  backgroundColor?: string | null | undefined;
20
20
  "border-top"?: string | null | undefined;
@@ -34,7 +34,6 @@ export * from './nodes/equation_element';
34
34
  export * from './nodes/figcaption';
35
35
  export * from './nodes/figure';
36
36
  export * from './nodes/figure_element';
37
- export * from './nodes/general_table_footnote';
38
37
  export * from './nodes/footnote';
39
38
  export * from './nodes/footnotes_element';
40
39
  export * from './nodes/footnotes_section';
@@ -20,6 +20,7 @@ interface Attrs {
20
20
  title: string;
21
21
  subtitle: string;
22
22
  runningTitle: string;
23
+ placeholder: string;
23
24
  }
24
25
  export interface TitleNode extends ManuscriptNode {
25
26
  attrs: Attrs;
@@ -17,7 +17,7 @@ import { Fragment, Mark as ProsemirrorMark, MarkType, Node as ProsemirrorNode, N
17
17
  import { EditorState, NodeSelection, Plugin, TextSelection, Transaction } from 'prosemirror-state';
18
18
  import { EditorView, NodeView } from 'prosemirror-view';
19
19
  export type Marks = 'bold' | 'code' | 'italic' | 'smallcaps' | 'strikethrough' | 'styled' | 'subscript' | 'superscript' | 'underline' | 'tracked_insert' | 'tracked_delete';
20
- export type Nodes = 'attribution' | 'bibliography_item' | 'bibliography_element' | 'bibliography_section' | 'blockquote_element' | 'bullet_list' | 'caption' | 'caption_title' | 'comment' | 'comments' | 'citation' | 'cross_reference' | 'doc' | 'equation' | 'equation_element' | 'figcaption' | 'figure' | 'graphical_abstract_section' | 'figure_element' | 'footnote' | 'footnotes_element' | 'footnotes_section' | 'hard_break' | 'highlight_marker' | 'inline_equation' | 'inline_footnote' | 'keyword' | 'keywords_element' | 'keyword_group' | 'keywords' | 'link' | 'list_item' | 'listing' | 'listing_element' | 'manuscript' | 'abstracts' | 'body' | 'backmatter' | 'missing_figure' | 'ordered_list' | 'paragraph' | 'placeholder' | 'placeholder_element' | 'pullquote_element' | 'section' | 'section_label' | 'section_title' | 'section_title_plain' | 'table' | 'table_cell' | 'table_element' | 'table_row' | 'table_colgroup' | 'table_col' | 'table_header' | 'text' | 'toc_element' | 'toc_section' | 'affiliation' | 'contributor' | 'table_element_footer' | 'title' | 'affiliations' | 'contributors' | 'supplements' | 'supplement' | 'author_notes' | 'corresp' | 'general_table_footnote';
20
+ export type Nodes = 'attribution' | 'bibliography_item' | 'bibliography_element' | 'bibliography_section' | 'blockquote_element' | 'bullet_list' | 'caption' | 'caption_title' | 'comment' | 'comments' | 'citation' | 'cross_reference' | 'doc' | 'equation' | 'equation_element' | 'figcaption' | 'figure' | 'graphical_abstract_section' | 'figure_element' | 'footnote' | 'footnotes_element' | 'footnotes_section' | 'hard_break' | 'highlight_marker' | 'inline_equation' | 'inline_footnote' | 'keyword' | 'keywords_element' | 'keyword_group' | 'keywords' | 'link' | 'list_item' | 'listing' | 'listing_element' | 'manuscript' | 'abstracts' | 'body' | 'backmatter' | 'missing_figure' | 'ordered_list' | 'paragraph' | 'placeholder' | 'placeholder_element' | 'pullquote_element' | 'section' | 'section_label' | 'section_title' | 'section_title_plain' | 'table' | 'table_cell' | 'table_element' | 'table_row' | 'table_colgroup' | 'table_col' | 'table_header' | 'text' | 'toc_element' | 'toc_section' | 'affiliation' | 'contributor' | 'table_element_footer' | 'title' | 'affiliations' | 'contributors' | 'supplements' | 'supplement' | 'author_notes' | 'corresp';
21
21
  export type ManuscriptSchema = Schema<Nodes, Marks>;
22
22
  export type ManuscriptEditorState = EditorState;
23
23
  export type ManuscriptEditorView = EditorView;
@@ -16,8 +16,7 @@
16
16
  import { CommentAnnotation, Figure, Keyword, Manuscript, Model, ObjectTypes, Table } from '@manuscripts/json-schema';
17
17
  import { ManuscriptModel } from './models';
18
18
  export declare enum ExtraObjectTypes {
19
- PlaceholderElement = "MPPlaceholderElement",
20
- GeneralTableFootnote = "MPGeneralTableFootnote"
19
+ PlaceholderElement = "MPPlaceholderElement"
21
20
  }
22
21
  export declare const elementObjects: ObjectTypes[];
23
22
  export declare const manuscriptObjects: ObjectTypes[];
@@ -1 +1 @@
1
- export declare const VERSION = "2.3.7-LEAN-3519.1";
1
+ export declare const VERSION = "2.3.7-LEAN-3307.3";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@manuscripts/transform",
3
3
  "description": "ProseMirror transformer for Manuscripts applications",
4
- "version": "2.3.7-LEAN-3519.1",
4
+ "version": "2.3.7-LEAN-3307.3",
5
5
  "repository": "github:Atypon-OpenSource/manuscripts-transform",
6
6
  "license": "Apache-2.0",
7
7
  "main": "dist/cjs",
@@ -30,8 +30,8 @@
30
30
  "version": "yarn build"
31
31
  },
32
32
  "dependencies": {
33
- "@manuscripts/json-schema": "2.2.8",
34
- "@manuscripts/library": "1.3.7",
33
+ "@manuscripts/json-schema": "2.2.9-LEAN-3307.0",
34
+ "@manuscripts/library": "1.3.8-LEAN-3307.0",
35
35
  "debug": "^4.3.4",
36
36
  "jszip": "^3.10.1",
37
37
  "mime": "^3.0.0",
@@ -1,27 +0,0 @@
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.generalTableFootnote = void 0;
19
- exports.generalTableFootnote = {
20
- content: 'paragraph*',
21
- attrs: {
22
- id: { default: '' },
23
- dataTracked: { default: null },
24
- },
25
- group: 'block',
26
- toDOM: () => ['div', { class: 'general-table-footnote' }, 0],
27
- };
@@ -1,24 +0,0 @@
1
- /*!
2
- * © 2019 Atypon Systems LLC
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export const generalTableFootnote = {
17
- content: 'paragraph*',
18
- attrs: {
19
- id: { default: '' },
20
- dataTracked: { default: null },
21
- },
22
- group: 'block',
23
- toDOM: () => ['div', { class: 'general-table-footnote' }, 0],
24
- };
@@ -1,25 +0,0 @@
1
- /*!
2
- * © 2019 Atypon Systems LLC
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { NodeSpec } from 'prosemirror-model';
17
- import { ManuscriptNode } from '../types';
18
- interface Attrs {
19
- id: string;
20
- }
21
- export interface GeneralTableFootnote extends ManuscriptNode {
22
- attrs: Attrs;
23
- }
24
- export declare const generalTableFootnote: NodeSpec;
25
- export {};