@manuscripts/transform 1.5.2-LEAN-3032 → 1.5.2-LEAN-2995

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 (37) hide show
  1. package/dist/cjs/jats/importer/jats-body-dom-parser.js +7 -19
  2. package/dist/cjs/jats/jats-exporter.js +5 -10
  3. package/dist/cjs/lib/utils.js +1 -10
  4. package/dist/cjs/schema/index.js +3 -7
  5. package/dist/cjs/schema/nodes/affiliations_section.js +1 -1
  6. package/dist/cjs/schema/nodes/contributors_section.js +1 -1
  7. package/dist/cjs/schema/nodes/keywords_section.js +1 -1
  8. package/dist/cjs/schema/nodes/manuscript.js +1 -1
  9. package/dist/cjs/transformer/decode.js +19 -67
  10. package/dist/cjs/transformer/encode.js +36 -14
  11. package/dist/cjs/transformer/node-names.js +1 -1
  12. package/dist/cjs/transformer/node-title.js +1 -1
  13. package/dist/cjs/transformer/node-types.js +3 -6
  14. package/dist/cjs/transformer/section-category.js +8 -35
  15. package/dist/es/jats/importer/jats-body-dom-parser.js +7 -19
  16. package/dist/es/jats/jats-exporter.js +5 -10
  17. package/dist/es/lib/utils.js +0 -8
  18. package/dist/es/schema/index.js +3 -7
  19. package/dist/es/schema/nodes/affiliations_section.js +1 -1
  20. package/dist/es/schema/nodes/contributors_section.js +1 -1
  21. package/dist/es/schema/nodes/keywords_section.js +1 -1
  22. package/dist/es/schema/nodes/manuscript.js +1 -1
  23. package/dist/es/transformer/decode.js +20 -68
  24. package/dist/es/transformer/encode.js +36 -14
  25. package/dist/es/transformer/node-names.js +1 -1
  26. package/dist/es/transformer/node-title.js +1 -1
  27. package/dist/es/transformer/node-types.js +3 -6
  28. package/dist/es/transformer/section-category.js +7 -33
  29. package/dist/types/lib/utils.d.ts +0 -1
  30. package/dist/types/schema/types.d.ts +1 -1
  31. package/dist/types/transformer/decode.d.ts +0 -3
  32. package/dist/types/transformer/encode.d.ts +1 -1
  33. package/dist/types/transformer/section-category.d.ts +0 -1
  34. package/package.json +2 -2
  35. package/dist/cjs/schema/nodes/core_section.js +0 -27
  36. package/dist/es/schema/nodes/core_section.js +0 -24
  37. package/dist/types/schema/nodes/core_section.d.ts +0 -25
@@ -507,7 +507,7 @@ const nodes = [
507
507
  },
508
508
  {
509
509
  tag: 'sec[sec-type="affiliations"]',
510
- node: 'affiliations',
510
+ node: 'affiliations_section',
511
511
  getAttrs: (node) => {
512
512
  const element = node;
513
513
  return {
@@ -519,7 +519,7 @@ const nodes = [
519
519
  {
520
520
  tag: 'aff',
521
521
  node: 'affiliation',
522
- context: 'affiliations/',
522
+ context: 'affiliations_section/',
523
523
  getAttrs: (node) => {
524
524
  const element = node;
525
525
  const aff = {
@@ -566,7 +566,7 @@ const nodes = [
566
566
  },
567
567
  {
568
568
  tag: 'sec[sec-type="contributors"]',
569
- node: 'contributors',
569
+ node: 'contributors_section',
570
570
  getAttrs: (node) => {
571
571
  const element = node;
572
572
  return {
@@ -578,7 +578,7 @@ const nodes = [
578
578
  {
579
579
  tag: 'contrib',
580
580
  node: 'contributor',
581
- context: 'contributors/',
581
+ context: 'contributors_section/',
582
582
  getAttrs: (node) => {
583
583
  const element = node;
584
584
  const contrib = {
@@ -633,7 +633,7 @@ const nodes = [
633
633
  },
634
634
  {
635
635
  tag: 'sec[sec-type="keywords"]',
636
- node: 'keywords',
636
+ node: 'keywords_section',
637
637
  getAttrs: (node) => {
638
638
  const element = node;
639
639
  return {
@@ -644,21 +644,9 @@ const nodes = [
644
644
  },
645
645
  {
646
646
  tag: 'kwd-group-list',
647
- context: 'keywords/',
647
+ context: 'keywords_section/',
648
648
  node: 'keywords_element',
649
649
  },
650
- {
651
- tag: 'sec[sec-type="abstracts"]',
652
- node: 'abstracts',
653
- },
654
- {
655
- tag: 'sec[sec-type="body"]',
656
- node: 'body',
657
- },
658
- {
659
- tag: 'sec[sec-type="backmatter"]',
660
- node: 'backmatter',
661
- },
662
650
  {
663
651
  tag: 'sec',
664
652
  node: 'section',
@@ -738,7 +726,7 @@ const nodes = [
738
726
  {
739
727
  tag: 'title',
740
728
  node: 'section_title',
741
- context: 'section/|footnotes_section/|bibliography_section/|keywords/',
729
+ context: 'section/|footnotes_section/|bibliography_section/|keywords_section/',
742
730
  },
743
731
  {
744
732
  tag: 'title',
@@ -430,11 +430,9 @@ class JATSExporter {
430
430
  }
431
431
  };
432
432
  this.buildBody = (fragment) => {
433
+ const content = this.serializeFragment(fragment);
433
434
  const body = this.document.createElement('body');
434
- fragment.forEach((cFragment) => {
435
- const serializedNode = this.serializeNode(cFragment);
436
- body.append(...serializedNode.childNodes);
437
- });
435
+ body.appendChild(content);
438
436
  this.fixBody(body, fragment);
439
437
  return body;
440
438
  };
@@ -600,8 +598,8 @@ class JATSExporter {
600
598
  this.createSerializer = () => {
601
599
  const getModel = (id) => id ? this.modelMap.get(id) : undefined;
602
600
  const nodes = {
603
- affiliations: () => '',
604
- contributors: () => '',
601
+ affiliations_section: () => '',
602
+ contributors_section: () => '',
605
603
  table_element_footer: () => ['table-wrap-foot', 0],
606
604
  contributor: () => '',
607
605
  affiliation: () => '',
@@ -611,9 +609,6 @@ class JATSExporter {
611
609
  bibliography_item: () => '',
612
610
  comment_list: () => '',
613
611
  keywords_group: () => '',
614
- body: () => ['body', 0],
615
- abstracts: () => ['abstract', 0],
616
- backmatter: () => ['backmatter', 0],
617
612
  bibliography_section: (node) => [
618
613
  'ref-list',
619
614
  { id: normalizeID(node.attrs.id) },
@@ -792,7 +787,7 @@ class JATSExporter {
792
787
  },
793
788
  keyword: () => '',
794
789
  keywords_element: () => '',
795
- keywords: () => '',
790
+ keywords_section: () => '',
796
791
  link: (node) => {
797
792
  const text = node.textContent;
798
793
  if (!text) {
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.groupBy = exports.getTrimmedTextContent = exports.findParentNodeClosestToPos = exports.isInAbstractsSection = exports.isInBibliographySection = exports.isInGraphicalAbstractSection = exports.findNodePositions = exports.iterateChildren = void 0;
18
+ exports.getTrimmedTextContent = exports.findParentNodeClosestToPos = exports.isInAbstractsSection = exports.isInBibliographySection = exports.isInGraphicalAbstractSection = exports.findNodePositions = exports.iterateChildren = void 0;
19
19
  const bibliography_section_1 = require("../schema/nodes/bibliography_section");
20
20
  const graphical_abstract_section_1 = require("../schema/nodes/graphical_abstract_section");
21
21
  function* iterateChildren(node, recurse = false) {
@@ -94,12 +94,3 @@ const getTrimmedTextContent = (node, querySelector) => {
94
94
  return (_b = (_a = node.querySelector(querySelector)) === null || _a === void 0 ? void 0 : _a.textContent) === null || _b === void 0 ? void 0 : _b.trim();
95
95
  };
96
96
  exports.getTrimmedTextContent = getTrimmedTextContent;
97
- const groupBy = (list, getKey) => list.reduce((previous, currentItem) => {
98
- const group = getKey(currentItem);
99
- if (!previous[group]) {
100
- previous[group] = [];
101
- }
102
- previous[group].push(currentItem);
103
- return previous;
104
- }, {});
105
- exports.groupBy = groupBy;
@@ -46,7 +46,6 @@ const comment_1 = require("./nodes/comment");
46
46
  const comment_list_1 = require("./nodes/comment_list");
47
47
  const contributor_1 = require("./nodes/contributor");
48
48
  const contributors_section_1 = require("./nodes/contributors_section");
49
- const core_section_1 = require("./nodes/core_section");
50
49
  const cross_reference_1 = require("./nodes/cross_reference");
51
50
  const doc_1 = require("./nodes/doc");
52
51
  const equation_1 = require("./nodes/equation");
@@ -169,9 +168,6 @@ exports.schema = new prosemirror_model_1.Schema({
169
168
  caption: caption_1.caption,
170
169
  caption_title: caption_title_1.captionTitle,
171
170
  citation: citation_1.citation,
172
- abstracts: core_section_1.coreSection,
173
- body: core_section_1.coreSection,
174
- backmatter: core_section_1.coreSection,
175
171
  cross_reference: cross_reference_1.crossReference,
176
172
  doc: doc_1.doc,
177
173
  equation: equation_1.equation,
@@ -189,7 +185,7 @@ exports.schema = new prosemirror_model_1.Schema({
189
185
  inline_footnote: inline_footnote_1.inlineFootnote,
190
186
  keyword: keyword_1.keyword,
191
187
  keywords_element: keywords_element_1.keywordsElement,
192
- keywords: keywords_section_1.keywordsSection,
188
+ keywords_section: keywords_section_1.keywordsSection,
193
189
  keywords_group: keywords_group_1.keywordsGroup,
194
190
  link: link_1.link,
195
191
  list_item: list_1.listItem,
@@ -220,7 +216,7 @@ exports.schema = new prosemirror_model_1.Schema({
220
216
  meta_section: meta_section_1.metaSection,
221
217
  contributor: contributor_1.contributor,
222
218
  table_element_footer: table_element_footer_1.tableElementFooter,
223
- affiliations: affiliations_section_1.affiliationsSection,
224
- contributors: contributors_section_1.contributorsSection,
219
+ affiliations_section: affiliations_section_1.affiliationsSection,
220
+ contributors_section: contributors_section_1.contributorsSection,
225
221
  },
226
222
  });
@@ -11,5 +11,5 @@ exports.affiliationsSection = {
11
11
  selectable: false,
12
12
  toDOM: () => ['section', 0],
13
13
  };
14
- const isAffiliationsSectionNode = (node) => node.type === node.type.schema.nodes.affiliations;
14
+ const isAffiliationsSectionNode = (node) => node.type === node.type.schema.nodes.affiliations_section;
15
15
  exports.isAffiliationsSectionNode = isAffiliationsSectionNode;
@@ -11,5 +11,5 @@ exports.contributorsSection = {
11
11
  selectable: false,
12
12
  toDOM: () => ['section', 0],
13
13
  };
14
- const isContributorsSectionNode = (node) => node.type === node.type.schema.nodes.contributors;
14
+ const isContributorsSectionNode = (node) => node.type === node.type.schema.nodes.contributors_section;
15
15
  exports.isContributorsSectionNode = isContributorsSectionNode;
@@ -43,5 +43,5 @@ exports.keywordsSection = {
43
43
  ];
44
44
  },
45
45
  };
46
- const isKeywordsSectionNode = (node) => node.type === node.type.schema.nodes.keywords;
46
+ const isKeywordsSectionNode = (node) => node.type === node.type.schema.nodes.keywords_section;
47
47
  exports.isKeywordsSectionNode = isKeywordsSectionNode;
@@ -17,7 +17,7 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.manuscript = void 0;
19
19
  exports.manuscript = {
20
- content: 'contributors? affiliations? keywords? abstracts body backmatter meta_section',
20
+ content: '(section | sections)+ meta_section',
21
21
  attrs: {
22
22
  id: { default: '' },
23
23
  },
@@ -34,7 +34,6 @@ const json_schema_1 = require("@manuscripts/json-schema");
34
34
  const debug_1 = __importDefault(require("debug"));
35
35
  const prosemirror_model_1 = require("prosemirror-model");
36
36
  const errors_1 = require("../errors");
37
- const utils_1 = require("../lib/utils");
38
37
  const schema_1 = require("../schema");
39
38
  const highlight_markers_1 = require("./highlight-markers");
40
39
  const id_1 = require("./id");
@@ -63,7 +62,6 @@ exports.sortSectionsByPriority = sortSectionsByPriority;
63
62
  const getSections = (modelMap) => (0, exports.getModelsByType)(modelMap, json_schema_1.ObjectTypes.Section).sort(exports.sortSectionsByPriority);
64
63
  const getAffiliations = (modelMap) => (0, exports.getModelsByType)(modelMap, json_schema_1.ObjectTypes.Affiliation);
65
64
  const getContributors = (modelMap) => (0, exports.getModelsByType)(modelMap, json_schema_1.ObjectTypes.Contributor);
66
- const getKeywordElements = (modelMap) => (0, exports.getModelsByType)(modelMap, json_schema_1.ObjectTypes.KeywordsElement);
67
65
  const isManuscriptNode = (model) => model !== null;
68
66
  exports.isManuscriptNode = isManuscriptNode;
69
67
  const isParagraphElement = (0, object_types_1.hasObjectType)(json_schema_1.ObjectTypes.ParagraphElement);
@@ -88,13 +86,10 @@ class Decoder {
88
86
  ]);
89
87
  }
90
88
  handleMissingRootSectionNodes(rootSectionNodes) {
91
- if (!rootSectionNodes.find((node) => node.type.name === 'keywords')) {
92
- this.createKeywordsSectionNode(rootSectionNodes);
93
- }
94
- if (!rootSectionNodes.find((node) => node.type.name === 'affiliations')) {
89
+ if (!rootSectionNodes.find((node) => node.type.name === 'affiliations_section')) {
95
90
  this.createAffiliationSectionNode(rootSectionNodes);
96
91
  }
97
- if (!rootSectionNodes.find((node) => node.type.name === 'contributors')) {
92
+ if (!rootSectionNodes.find((node) => node.type.name === 'contributors_section')) {
98
93
  this.createContributorSectionNode(rootSectionNodes);
99
94
  }
100
95
  }
@@ -102,79 +97,37 @@ class Decoder {
102
97
  const affiliationNodes = getAffiliations(this.modelMap)
103
98
  .map((affiliation) => this.decode(affiliation))
104
99
  .filter(Boolean);
105
- const node = schema_1.schema.nodes.affiliations.createAndFill({
106
- id: (0, id_1.generateNodeID)(schema_1.schema.nodes.section),
107
- }, affiliationNodes);
108
- rootSectionNodes.unshift(node);
100
+ if (affiliationNodes.length) {
101
+ const node = schema_1.schema.nodes.affiliations_section.createAndFill({
102
+ id: (0, id_1.generateNodeID)(schema_1.schema.nodes.section),
103
+ }, affiliationNodes);
104
+ rootSectionNodes.unshift(node);
105
+ }
109
106
  }
110
107
  createContributorSectionNode(rootSectionNodes) {
111
108
  const contributorNodes = getContributors(this.modelMap)
112
109
  .map((contributor) => this.decode(contributor))
113
110
  .filter(Boolean);
114
- const node = schema_1.schema.nodes.contributors.createAndFill({
115
- id: (0, id_1.generateNodeID)(schema_1.schema.nodes.section),
116
- }, contributorNodes);
117
- rootSectionNodes.unshift(node);
118
- }
119
- createKeywordsSectionNode(rootSectionNodes) {
120
- const keywordElementNodes = getKeywordElements(this.modelMap)
121
- .map((keywordEl) => this.decode(keywordEl))
122
- .filter(Boolean);
123
- if (keywordElementNodes) {
124
- const node = schema_1.schema.nodes.keywords.createAndFill({
111
+ if (contributorNodes.length) {
112
+ const node = schema_1.schema.nodes.contributors_section.createAndFill({
125
113
  id: (0, id_1.generateNodeID)(schema_1.schema.nodes.section),
126
- }, [
127
- schema_1.schema.nodes.section_title.create({}, schema_1.schema.text('Keywords')),
128
- ...keywordElementNodes,
129
- ]);
114
+ }, contributorNodes);
130
115
  rootSectionNodes.unshift(node);
131
116
  }
132
117
  }
133
118
  createRootSectionNodes() {
134
- let rootSections = getSections(this.modelMap)
135
- .filter((section) => !section.path || section.path.length <= 1)
136
- .filter((section) => section.category !== 'MPSectionCategory:contributors' &&
137
- section.category !== 'MPSectionCategory:affiliations' &&
138
- section.category !== 'MPSectionCategory:keywords');
119
+ let rootSections = getSections(this.modelMap).filter((section) => !section.path || section.path.length <= 1);
139
120
  rootSections = this.addGeneratedLabels(rootSections);
140
- const sectionGroups = (0, utils_1.groupBy)(rootSections, (sec) => {
141
- var _a;
142
- return (0, section_category_1.chooseCoreSectionBySection)((_a = sec.category) !== null && _a !== void 0 ? _a : '');
143
- });
144
- this.ensureCoreSectionsExist(sectionGroups);
145
- const absSectionNode = sectionGroups['MPSectionCategory:abstracts']
146
- .map(this.decode)
147
- .filter(exports.isManuscriptNode);
148
- const bodySectionNodes = sectionGroups['MPSectionCategory:body']
121
+ const rootSectionNodes = rootSections
149
122
  .map(this.decode)
150
123
  .filter(exports.isManuscriptNode);
151
- const backmatterSectionNodes = sectionGroups['MPSectionCategory:backmatter']
152
- .map(this.decode)
153
- .filter(exports.isManuscriptNode);
154
- const abstractCoreSectionNodes = this.createAndFill(schema_1.schema.nodes.abstracts, absSectionNode);
155
- const bodyCoreSectionNodes = this.createAndFill(schema_1.schema.nodes.body, bodySectionNodes);
156
- const backmatterCoreSectionNodes = this.createAndFill(schema_1.schema.nodes.backmatter, backmatterSectionNodes);
157
- return [
158
- abstractCoreSectionNodes,
159
- bodyCoreSectionNodes,
160
- backmatterCoreSectionNodes,
161
- ];
162
- }
163
- ensureCoreSectionsExist(coreSections) {
164
- if (!coreSections['MPSectionCategory:abstracts']) {
165
- coreSections['MPSectionCategory:abstracts'] = [];
166
- }
167
- if (!coreSections['MPSectionCategory:body']) {
168
- coreSections['MPSectionCategory:body'] = [];
169
- }
170
- if (!coreSections['MPSectionCategory:backmatter']) {
171
- coreSections['MPSectionCategory:backmatter'] = [];
124
+ this.handleMissingRootSectionNodes(rootSectionNodes);
125
+ if (!rootSectionNodes.length) {
126
+ rootSectionNodes.push(schema_1.schema.nodes.section.createAndFill({
127
+ id: (0, id_1.generateNodeID)(schema_1.schema.nodes.section),
128
+ }));
172
129
  }
173
- }
174
- createAndFill(nodeType, content) {
175
- return nodeType.createAndFill({
176
- id: (0, id_1.generateNodeID)(nodeType),
177
- }, content);
130
+ return rootSectionNodes;
178
131
  }
179
132
  createCommentsNode(model) {
180
133
  const comments = [];
@@ -679,7 +632,6 @@ class Decoder {
679
632
  this.getModel = (id) => this.modelMap.get(id);
680
633
  this.createArticleNode = (manuscriptID) => {
681
634
  const rootSectionNodes = this.createRootSectionNodes();
682
- this.handleMissingRootSectionNodes(rootSectionNodes);
683
635
  const metaSectionNode = this.createMetaSectionNode();
684
636
  const contents = [...rootSectionNodes, metaSectionNode];
685
637
  return schema_1.schema.nodes.manuscript.create({
@@ -425,6 +425,31 @@ const encoders = {
425
425
  keywords_group: (node) => ({
426
426
  type: node.attrs.type,
427
427
  }),
428
+ keywords_section: (node, parent, path, priority) => ({
429
+ category: (0, section_category_1.buildSectionCategory)(node),
430
+ priority: priority.value++,
431
+ title: inlineContentsOfNodeType(node, node.type.schema.nodes.section_title),
432
+ path: path.concat([node.attrs.id]),
433
+ elementIDs: childElements(node)
434
+ .map((childNode) => childNode.attrs.id)
435
+ .filter((id) => id),
436
+ }),
437
+ affiliations_section: (node, parent, path, priority) => ({
438
+ category: (0, section_category_1.buildSectionCategory)(node),
439
+ priority: priority.value++,
440
+ path: path.concat([node.attrs.id]),
441
+ elementIDs: childElements(node)
442
+ .map((childNode) => childNode.attrs.id)
443
+ .filter((id) => id),
444
+ }),
445
+ contributors_section: (node, parent, path, priority) => ({
446
+ category: (0, section_category_1.buildSectionCategory)(node),
447
+ priority: priority.value++,
448
+ path: path.concat([node.attrs.id]),
449
+ elementIDs: childElements(node)
450
+ .map((childNode) => childNode.attrs.id)
451
+ .filter((id) => id),
452
+ }),
428
453
  missing_figure: (node) => ({
429
454
  position: node.attrs.position || undefined,
430
455
  }),
@@ -542,17 +567,10 @@ const modelFromNode = (node, parent, path, priority) => {
542
567
  if ((0, highlight_markers_1.isHighlightableModel)(model)) {
543
568
  (0, highlight_markers_1.extractHighlightMarkers)(model, commentAnnotationsMap);
544
569
  }
545
- return { model, commentAnnotationsMap };
570
+ const comments = [...commentAnnotationsMap.values()];
571
+ return { model, comments };
546
572
  };
547
573
  exports.modelFromNode = modelFromNode;
548
- function isCoreSection(child) {
549
- return (child.type === schema_1.schema.nodes.abstracts ||
550
- child.type === schema_1.schema.nodes.body ||
551
- child.type === schema_1.schema.nodes.backmatter ||
552
- child.type === schema_1.schema.nodes.affiliations ||
553
- child.type === schema_1.schema.nodes.contributors ||
554
- child.type === schema_1.schema.nodes.keywords);
555
- }
556
574
  const encode = (node) => {
557
575
  const models = new Map();
558
576
  const priority = {
@@ -560,10 +578,6 @@ const encode = (node) => {
560
578
  };
561
579
  const placeholders = ['placeholder', 'placeholder_element'];
562
580
  const addModel = (path, parent) => (child) => {
563
- if (isCoreSection(child)) {
564
- child.forEach(addModel([], child));
565
- return;
566
- }
567
581
  if (!child.attrs.id) {
568
582
  return;
569
583
  }
@@ -576,10 +590,18 @@ const encode = (node) => {
576
590
  if (placeholders.includes(child.type.name)) {
577
591
  return;
578
592
  }
579
- const { model } = (0, exports.modelFromNode)(child, parent, path, priority);
593
+ const { model, comments } = (0, exports.modelFromNode)(child, parent, path, priority);
580
594
  if (models.has(model._id)) {
581
595
  throw Error(`Encountered duplicate ids in models map while encoding: ${model._id}`);
582
596
  }
597
+ comments.forEach((comment) => {
598
+ const proseMirrorComment = models.get(comment._id);
599
+ if (proseMirrorComment) {
600
+ ;
601
+ proseMirrorComment.selector = comment.selector;
602
+ models.set(comment._id, proseMirrorComment);
603
+ }
604
+ });
583
605
  models.set(model._id, model);
584
606
  child.forEach(addModel(path.concat(child.attrs.id), child));
585
607
  };
@@ -38,6 +38,6 @@ exports.nodeNames = new Map([
38
38
  [schema_1.schema.nodes.table_element, 'Table'],
39
39
  [schema_1.schema.nodes.blockquote_element, 'Block Quote'],
40
40
  [schema_1.schema.nodes.pullquote_element, 'Pull Quote'],
41
- [schema_1.schema.nodes.keywords, 'Section'],
41
+ [schema_1.schema.nodes.keywords_section, 'Section'],
42
42
  [schema_1.schema.nodes.toc_section, 'Section'],
43
43
  ]);
@@ -48,7 +48,7 @@ const nodeTitle = (node) => {
48
48
  case nodes.section:
49
49
  case nodes.bibliography_section:
50
50
  case nodes.footnotes_section:
51
- case nodes.keywords:
51
+ case nodes.keywords_section:
52
52
  case nodes.toc_section:
53
53
  case nodes.graphical_abstract_section:
54
54
  return snippetOfNodeType(node, nodes.section_title);
@@ -19,9 +19,6 @@ exports.isNodeType = exports.isSectionNodeType = exports.isElementNodeType = exp
19
19
  const json_schema_1 = require("@manuscripts/json-schema");
20
20
  const schema_1 = require("../schema");
21
21
  exports.nodeTypesMap = new Map([
22
- [schema_1.schema.nodes.abstracts, json_schema_1.ObjectTypes.Section],
23
- [schema_1.schema.nodes.body, json_schema_1.ObjectTypes.Section],
24
- [schema_1.schema.nodes.backmatter, json_schema_1.ObjectTypes.Section],
25
22
  [schema_1.schema.nodes.comment, json_schema_1.ObjectTypes.CommentAnnotation],
26
23
  [schema_1.schema.nodes.bibliography_item, json_schema_1.ObjectTypes.BibliographyItem],
27
24
  [schema_1.schema.nodes.bibliography_element, json_schema_1.ObjectTypes.BibliographyElement],
@@ -43,7 +40,7 @@ exports.nodeTypesMap = new Map([
43
40
  [schema_1.schema.nodes.inline_equation, json_schema_1.ObjectTypes.InlineMathFragment],
44
41
  [schema_1.schema.nodes.keyword, json_schema_1.ObjectTypes.Keyword],
45
42
  [schema_1.schema.nodes.keywords_element, json_schema_1.ObjectTypes.KeywordsElement],
46
- [schema_1.schema.nodes.keywords, json_schema_1.ObjectTypes.Section],
43
+ [schema_1.schema.nodes.keywords_section, json_schema_1.ObjectTypes.Section],
47
44
  [schema_1.schema.nodes.keywords_group, json_schema_1.ObjectTypes.KeywordGroup],
48
45
  [schema_1.schema.nodes.listing, json_schema_1.ObjectTypes.Listing],
49
46
  [schema_1.schema.nodes.listing_element, json_schema_1.ObjectTypes.ListingElement],
@@ -60,8 +57,8 @@ exports.nodeTypesMap = new Map([
60
57
  [schema_1.schema.nodes.affiliation, json_schema_1.ObjectTypes.Affiliation],
61
58
  [schema_1.schema.nodes.contributor, json_schema_1.ObjectTypes.Contributor],
62
59
  [schema_1.schema.nodes.table_element_footer, json_schema_1.ObjectTypes.TableElementFooter],
63
- [schema_1.schema.nodes.contributors, json_schema_1.ObjectTypes.Section],
64
- [schema_1.schema.nodes.affiliations, json_schema_1.ObjectTypes.Section],
60
+ [schema_1.schema.nodes.contributors_section, json_schema_1.ObjectTypes.Section],
61
+ [schema_1.schema.nodes.affiliations_section, json_schema_1.ObjectTypes.Section],
65
62
  ]);
66
63
  const isExecutableNodeType = (type) => (0, schema_1.hasGroup)(type, schema_1.GROUP_EXECUTABLE);
67
64
  exports.isExecutableNodeType = isExecutableNodeType;
@@ -15,14 +15,14 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.chooseSectionCategoryFromTitle = exports.chooseSectionCategory = exports.chooseSectionCategoryByType = exports.chooseCoreSectionBySection = exports.chooseSecType = exports.chooseJatsFnType = exports.buildSectionCategory = exports.guessSectionCategory = exports.chooseSectionLableName = exports.chooseSectionNodeType = exports.isAnySectionNode = exports.getCoreSectionTitles = void 0;
18
+ exports.chooseSectionCategoryFromTitle = exports.chooseSectionCategory = exports.chooseSectionCategoryByType = exports.chooseSecType = exports.chooseJatsFnType = exports.buildSectionCategory = exports.guessSectionCategory = exports.chooseSectionLableName = exports.chooseSectionNodeType = exports.isAnySectionNode = exports.getCoreSectionTitles = void 0;
19
19
  const json_schema_1 = require("@manuscripts/json-schema");
20
20
  const core_section_categories_1 = require("../lib/core-section-categories");
21
21
  const schema_1 = require("../schema");
22
22
  const sectionNodeTypes = [
23
23
  schema_1.schema.nodes.bibliography_section,
24
24
  schema_1.schema.nodes.footnotes_section,
25
- schema_1.schema.nodes.keywords,
25
+ schema_1.schema.nodes.keywords_section,
26
26
  schema_1.schema.nodes.section,
27
27
  schema_1.schema.nodes.toc_section,
28
28
  ];
@@ -45,11 +45,11 @@ const chooseSectionNodeType = (category) => {
45
45
  case 'MPSectionCategory:endnotes':
46
46
  return schema_1.schema.nodes.footnotes_section;
47
47
  case 'MPSectionCategory:keywords':
48
- return schema_1.schema.nodes.keywords;
48
+ return schema_1.schema.nodes.keywords_section;
49
49
  case 'MPSectionCategory:affiliations':
50
- return schema_1.schema.nodes.affiliations;
50
+ return schema_1.schema.nodes.affiliations_section;
51
51
  case 'MPSectionCategory:contributors':
52
- return schema_1.schema.nodes.contributors;
52
+ return schema_1.schema.nodes.contributors_section;
53
53
  case 'MPSectionCategory:toc':
54
54
  return schema_1.schema.nodes.toc_section;
55
55
  default:
@@ -90,15 +90,15 @@ const buildSectionCategory = (node) => {
90
90
  return 'MPSectionCategory:bibliography';
91
91
  case schema_1.schema.nodes.footnotes_section:
92
92
  return 'MPSectionCategory:endnotes';
93
- case schema_1.schema.nodes.keywords:
93
+ case schema_1.schema.nodes.keywords_section:
94
94
  return 'MPSectionCategory:keywords';
95
95
  case schema_1.schema.nodes.toc_section:
96
96
  return 'MPSectionCategory:toc';
97
97
  case schema_1.schema.nodes.graphical_abstract_section:
98
98
  return 'MPSectionCategory:abstract-graphical';
99
- case schema_1.schema.nodes.affiliations:
99
+ case schema_1.schema.nodes.affiliations_section:
100
100
  return 'MPSectionCategory:affiliations';
101
- case schema_1.schema.nodes.contributors:
101
+ case schema_1.schema.nodes.contributors_section:
102
102
  return 'MPSectionCategory:contributors';
103
103
  default:
104
104
  return node.attrs.category || undefined;
@@ -128,33 +128,6 @@ const chooseSecType = (sectionCategory) => {
128
128
  }
129
129
  };
130
130
  exports.chooseSecType = chooseSecType;
131
- const chooseCoreSectionBySection = (section) => {
132
- switch (section) {
133
- case 'MPSectionCategory:abstract':
134
- case 'MPSectionCategory:abstract-teaser':
135
- case 'MPSectionCategory:abstract-graphical':
136
- return 'MPSectionCategory:abstracts';
137
- case 'MPSectionCategory:acknowledgement':
138
- case 'MPSectionCategory:availability':
139
- case 'MPSectionCategory:conclusions':
140
- case 'MPSectionCategory:bibliography':
141
- case 'MPSectionCategory:discussion':
142
- case 'MPSectionCategory:endnotes':
143
- case 'MPSectionCategory:appendices':
144
- case 'MPSectionCategory:competing-interests':
145
- case 'MPSectionCategory:con':
146
- case 'MPSectionCategory:deceased':
147
- case 'MPSectionCategory:ethics-statement':
148
- case 'MPSectionCategory:financial-disclosure':
149
- case 'MPSectionCategory:supplementary-material':
150
- case 'MPSectionCategory:supported-by':
151
- case 'MPSectionCategory:abbreviations':
152
- case 'MPSectionCategory:results':
153
- return 'MPSectionCategory:backmatter';
154
- }
155
- return 'MPSectionCategory:body';
156
- };
157
- exports.chooseCoreSectionBySection = chooseCoreSectionBySection;
158
131
  const chooseSectionCategoryByType = (secType) => {
159
132
  switch (secType) {
160
133
  case 'abstract':
@@ -501,7 +501,7 @@ const nodes = [
501
501
  },
502
502
  {
503
503
  tag: 'sec[sec-type="affiliations"]',
504
- node: 'affiliations',
504
+ node: 'affiliations_section',
505
505
  getAttrs: (node) => {
506
506
  const element = node;
507
507
  return {
@@ -513,7 +513,7 @@ const nodes = [
513
513
  {
514
514
  tag: 'aff',
515
515
  node: 'affiliation',
516
- context: 'affiliations/',
516
+ context: 'affiliations_section/',
517
517
  getAttrs: (node) => {
518
518
  const element = node;
519
519
  const aff = {
@@ -560,7 +560,7 @@ const nodes = [
560
560
  },
561
561
  {
562
562
  tag: 'sec[sec-type="contributors"]',
563
- node: 'contributors',
563
+ node: 'contributors_section',
564
564
  getAttrs: (node) => {
565
565
  const element = node;
566
566
  return {
@@ -572,7 +572,7 @@ const nodes = [
572
572
  {
573
573
  tag: 'contrib',
574
574
  node: 'contributor',
575
- context: 'contributors/',
575
+ context: 'contributors_section/',
576
576
  getAttrs: (node) => {
577
577
  const element = node;
578
578
  const contrib = {
@@ -627,7 +627,7 @@ const nodes = [
627
627
  },
628
628
  {
629
629
  tag: 'sec[sec-type="keywords"]',
630
- node: 'keywords',
630
+ node: 'keywords_section',
631
631
  getAttrs: (node) => {
632
632
  const element = node;
633
633
  return {
@@ -638,21 +638,9 @@ const nodes = [
638
638
  },
639
639
  {
640
640
  tag: 'kwd-group-list',
641
- context: 'keywords/',
641
+ context: 'keywords_section/',
642
642
  node: 'keywords_element',
643
643
  },
644
- {
645
- tag: 'sec[sec-type="abstracts"]',
646
- node: 'abstracts',
647
- },
648
- {
649
- tag: 'sec[sec-type="body"]',
650
- node: 'body',
651
- },
652
- {
653
- tag: 'sec[sec-type="backmatter"]',
654
- node: 'backmatter',
655
- },
656
644
  {
657
645
  tag: 'sec',
658
646
  node: 'section',
@@ -732,7 +720,7 @@ const nodes = [
732
720
  {
733
721
  tag: 'title',
734
722
  node: 'section_title',
735
- context: 'section/|footnotes_section/|bibliography_section/|keywords/',
723
+ context: 'section/|footnotes_section/|bibliography_section/|keywords_section/',
736
724
  },
737
725
  {
738
726
  tag: 'title',