@manuscripts/transform 2.1.1-LEAN-3352-1 → 2.1.1-LEAN-3092-10

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 (60) hide show
  1. package/dist/cjs/index.js +0 -1
  2. package/dist/cjs/jats/importer/jats-body-dom-parser.js +27 -72
  3. package/dist/cjs/jats/importer/jats-body-transformations.js +10 -0
  4. package/dist/cjs/jats/importer/jats-front-parser.js +0 -5
  5. package/dist/cjs/jats/importer/jats-parser-utils.js +6 -0
  6. package/dist/cjs/jats/importer/parse-jats-article.js +2 -2
  7. package/dist/cjs/jats/jats-exporter.js +37 -45
  8. package/dist/cjs/schema/index.js +0 -1
  9. package/dist/cjs/schema/nodes/equation.js +12 -14
  10. package/dist/cjs/schema/nodes/equation_element.js +4 -5
  11. package/dist/cjs/schema/nodes/inline_equation.js +13 -15
  12. package/dist/cjs/transformer/builders.js +3 -9
  13. package/dist/cjs/transformer/decode.js +22 -24
  14. package/dist/cjs/transformer/encode.js +14 -25
  15. package/dist/cjs/transformer/footnotes-order.js +1 -4
  16. package/dist/cjs/transformer/node-types.js +0 -1
  17. package/dist/cjs/transformer/object-types.js +0 -1
  18. package/dist/es/index.js +0 -1
  19. package/dist/es/jats/importer/jats-body-dom-parser.js +28 -73
  20. package/dist/es/jats/importer/jats-body-transformations.js +10 -0
  21. package/dist/es/jats/importer/jats-front-parser.js +0 -5
  22. package/dist/es/jats/importer/jats-parser-utils.js +6 -0
  23. package/dist/es/jats/importer/parse-jats-article.js +2 -2
  24. package/dist/es/jats/jats-exporter.js +37 -45
  25. package/dist/es/schema/index.js +0 -1
  26. package/dist/es/schema/nodes/equation.js +12 -14
  27. package/dist/es/schema/nodes/equation_element.js +4 -5
  28. package/dist/es/schema/nodes/inline_equation.js +13 -15
  29. package/dist/es/transformer/builders.js +2 -7
  30. package/dist/es/transformer/decode.js +23 -25
  31. package/dist/es/transformer/encode.js +15 -26
  32. package/dist/es/transformer/footnotes-order.js +0 -2
  33. package/dist/es/transformer/node-types.js +0 -1
  34. package/dist/es/transformer/object-types.js +0 -1
  35. package/dist/types/index.d.ts +0 -1
  36. package/dist/types/jats/importer/jats-body-transformations.d.ts +1 -0
  37. package/dist/types/jats/importer/jats-front-parser.d.ts +0 -1
  38. package/dist/types/jats/jats-exporter.d.ts +1 -0
  39. package/dist/types/schema/index.d.ts +0 -1
  40. package/dist/types/schema/nodes/equation.d.ts +3 -4
  41. package/dist/types/schema/nodes/equation_element.d.ts +1 -2
  42. package/dist/types/schema/nodes/inline_equation.d.ts +4 -3
  43. package/dist/types/transformer/builders.d.ts +2 -3
  44. package/dist/types/transformer/footnotes-order.d.ts +0 -1
  45. package/package.json +3 -4
  46. package/dist/cjs/mathjax/index.js +0 -41
  47. package/dist/cjs/mathjax/mathjax-packages.js +0 -20
  48. package/dist/cjs/mathjax/mathml-to-svg.js +0 -70
  49. package/dist/cjs/mathjax/tex-to-mathml.js +0 -49
  50. package/dist/cjs/mathjax/tex-to-svg.js +0 -59
  51. package/dist/es/mathjax/index.js +0 -12
  52. package/dist/es/mathjax/mathjax-packages.js +0 -17
  53. package/dist/es/mathjax/mathml-to-svg.js +0 -66
  54. package/dist/es/mathjax/tex-to-mathml.js +0 -45
  55. package/dist/es/mathjax/tex-to-svg.js +0 -55
  56. package/dist/types/mathjax/index.d.ts +0 -3
  57. package/dist/types/mathjax/mathjax-packages.d.ts +0 -16
  58. package/dist/types/mathjax/mathml-to-svg.d.ts +0 -17
  59. package/dist/types/mathjax/tex-to-mathml.d.ts +0 -17
  60. package/dist/types/mathjax/tex-to-svg.d.ts +0 -17
package/dist/cjs/index.js CHANGED
@@ -18,7 +18,6 @@ exports.isSectionLabelNode = void 0;
18
18
  __exportStar(require("./lib/section-group-type"), exports);
19
19
  __exportStar(require("./lib/table-cell-styles"), exports);
20
20
  __exportStar(require("./lib/utils"), exports);
21
- __exportStar(require("./mathjax"), exports);
22
21
  __exportStar(require("./schema"), exports);
23
22
  __exportStar(require("./transformer"), exports);
24
23
  __exportStar(require("./jats"), exports);
@@ -21,8 +21,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.jatsBodyDOMParser = void 0;
22
22
  const mime_1 = __importDefault(require("mime"));
23
23
  const prosemirror_model_1 = require("prosemirror-model");
24
- const mathml_to_svg_1 = require("../../mathjax/mathml-to-svg");
25
- const tex_to_svg_1 = require("../../mathjax/tex-to-svg");
26
24
  const schema_1 = require("../../schema");
27
25
  const transformer_1 = require("../../transformer");
28
26
  const XLINK_NAMESPACE = 'http://www.w3.org/1999/xlink';
@@ -39,6 +37,28 @@ const chooseContentType = (graphicNode) => {
39
37
  }
40
38
  }
41
39
  };
40
+ const getEquationContent = (p) => {
41
+ var _a;
42
+ const element = p;
43
+ const id = element.getAttribute('id');
44
+ const container = (_a = element.querySelector('alternatives')) !== null && _a !== void 0 ? _a : element;
45
+ let contents = '';
46
+ let format = '';
47
+ for (const child of container.childNodes) {
48
+ const nodeName = child.nodeName.replace(/^[a-z]:/, '');
49
+ switch (nodeName) {
50
+ case 'tex-math':
51
+ contents = child.innerHTML;
52
+ format = 'tex';
53
+ break;
54
+ case 'mml:math':
55
+ contents = child.outerHTML;
56
+ format = 'mathml';
57
+ break;
58
+ }
59
+ }
60
+ return { id, format, contents };
61
+ };
42
62
  const marks = [
43
63
  {
44
64
  tag: 'bold',
@@ -147,91 +167,26 @@ const nodes = [
147
167
  tag: 'inline-formula',
148
168
  node: 'inline_equation',
149
169
  getAttrs: (node) => {
150
- var _a, _b, _c, _d, _e;
151
170
  const element = node;
152
- const attrs = {
153
- id: element.getAttribute('id'),
154
- MathMLRepresentation: '',
155
- SVGRepresentation: '',
156
- TeXRepresentation: '',
157
- };
158
- const container = (_a = element.querySelector('alternatives')) !== null && _a !== void 0 ? _a : element;
159
- for (const child of container.childNodes) {
160
- const nodeName = child.nodeName.replace(/^[a-z]:/, '');
161
- switch (nodeName) {
162
- case 'tex-math':
163
- attrs.TeXRepresentation = (_c = (_b = child.textContent) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : '';
164
- if (attrs.TeXRepresentation) {
165
- attrs.SVGRepresentation =
166
- (_d = (0, tex_to_svg_1.convertTeXToSVG)(attrs.TeXRepresentation, true)) !== null && _d !== void 0 ? _d : '';
167
- }
168
- break;
169
- case 'mml:math':
170
- ;
171
- child.removeAttribute('id');
172
- attrs.MathMLRepresentation = transformer_1.xmlSerializer.serializeToString(child);
173
- if (attrs.MathMLRepresentation) {
174
- attrs.SVGRepresentation =
175
- (_e = (0, mathml_to_svg_1.convertMathMLToSVG)(attrs.MathMLRepresentation, true)) !== null && _e !== void 0 ? _e : '';
176
- }
177
- break;
178
- }
179
- }
180
- return attrs;
171
+ return getEquationContent(element);
181
172
  },
182
173
  },
183
174
  {
184
175
  tag: 'disp-formula',
185
176
  node: 'equation_element',
186
177
  getAttrs: (node) => {
178
+ var _a, _b;
187
179
  const element = node;
188
- const caption = element.querySelector('figcaption');
189
180
  return {
190
181
  id: element.getAttribute('id'),
191
- suppressCaption: !caption,
182
+ label: (_b = (_a = element.querySelector('label')) === null || _a === void 0 ? void 0 : _a.textContent) !== null && _b !== void 0 ? _b : '',
192
183
  };
193
184
  },
194
185
  getContent: (node, schema) => {
195
- var _a, _b, _c, _d, _e;
196
186
  const element = node;
197
- const attrs = {
198
- MathMLStringRepresentation: '',
199
- SVGStringRepresentation: '',
200
- TeXRepresentation: '',
201
- };
202
- const container = (_a = element.querySelector('alternatives')) !== null && _a !== void 0 ? _a : element;
203
- for (const child of container.childNodes) {
204
- const nodeName = child.nodeName.replace(/^[a-z]:/, '');
205
- switch (nodeName) {
206
- case 'tex-math':
207
- attrs.TeXRepresentation = (_c = (_b = child.textContent) === null || _b === void 0 ? void 0 : _b.trim()) !== null && _c !== void 0 ? _c : '';
208
- if (attrs.TeXRepresentation) {
209
- attrs.SVGStringRepresentation =
210
- (_d = (0, tex_to_svg_1.convertTeXToSVG)(attrs.TeXRepresentation, true)) !== null && _d !== void 0 ? _d : '';
211
- }
212
- break;
213
- case 'mml:math':
214
- ;
215
- child.removeAttribute('id');
216
- attrs.MathMLStringRepresentation =
217
- transformer_1.xmlSerializer.serializeToString(child);
218
- if (attrs.MathMLStringRepresentation) {
219
- attrs.SVGStringRepresentation =
220
- (_e = (0, mathml_to_svg_1.convertMathMLToSVG)(attrs.MathMLStringRepresentation, true)) !== null && _e !== void 0 ? _e : '';
221
- }
222
- break;
223
- }
224
- }
225
- const caption = element.querySelector('figcaption');
226
- const figcaption = schema.nodes.figcaption.create();
187
+ const attrs = getEquationContent(element);
227
188
  return prosemirror_model_1.Fragment.from([
228
- schema.nodes.equation.createChecked(attrs),
229
- caption
230
- ?
231
- exports.jatsBodyDOMParser.parse(caption, {
232
- topNode: figcaption,
233
- })
234
- : figcaption,
189
+ schema.nodes.equation.createChecked(Object.assign({}, attrs)),
235
190
  ]);
236
191
  },
237
192
  },
@@ -265,6 +265,16 @@ exports.jatsBodyTransformations = {
265
265
  }
266
266
  });
267
267
  },
268
+ orderTableFootnote(doc, body) {
269
+ const tableInlineFootnotesIds = new Set(Array.from(body.querySelectorAll('tbody > tr > td > xref[ref-type="fn"]').values()).map((inlineFootnote) => inlineFootnote.getAttribute('rid')));
270
+ const fnGroups = doc.querySelectorAll('table-wrap-foot > fn-group');
271
+ fnGroups.forEach((fnGroup) => {
272
+ const orderedFootnotes = Array.from(fnGroup.querySelectorAll('fn')).sort((fn) => tableInlineFootnotesIds.has(fn.getAttribute('id'))
273
+ ? -1
274
+ : 0);
275
+ fnGroup.replaceChildren(...orderedFootnotes);
276
+ });
277
+ },
268
278
  moveFloatsGroupToBody(doc, body, createElement) {
269
279
  const group = doc.querySelector('floats-group');
270
280
  if (group) {
@@ -45,11 +45,6 @@ exports.jatsFrontParser = {
45
45
  }
46
46
  return titles;
47
47
  },
48
- parseDOI(front) {
49
- var _a;
50
- const doi = front === null || front === void 0 ? void 0 : front.querySelector('article-meta > article-id[pub-id-type="doi"]');
51
- return (_a = doi === null || doi === void 0 ? void 0 : doi.textContent) !== null && _a !== void 0 ? _a : undefined;
52
- },
53
48
  parseCounts(counts) {
54
49
  var _a, _b, _c, _d, _e;
55
50
  if (counts) {
@@ -16,6 +16,8 @@
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.htmlFromJatsNode = exports.updateDocumentIDs = void 0;
19
+ const uuid_1 = require("uuid");
20
+ const schema_1 = require("../../schema");
19
21
  const transformer_1 = require("../../transformer");
20
22
  const updateDocumentIDs = (node, replacements) => {
21
23
  const warnings = [];
@@ -30,6 +32,10 @@ function recurseDoc(node, fn) {
30
32
  node.descendants((n) => fn(n));
31
33
  }
32
34
  const updateNodeID = (node, replacements, warnings) => {
35
+ if (node.type === schema_1.schema.nodes.inline_equation) {
36
+ node.attrs = Object.assign(Object.assign({}, node.attrs), { id: `InlineMathFragment:${(0, uuid_1.v4)()}` });
37
+ return;
38
+ }
33
39
  if (!('id' in node.attrs)) {
34
40
  return;
35
41
  }
@@ -31,7 +31,6 @@ const parseJATSFront = (doc, front) => {
31
31
  const createElement = createElementFn(doc);
32
32
  const journal = jats_front_parser_1.jatsFrontParser.parseJournal(front.querySelector('journal-meta'));
33
33
  const titles = jats_front_parser_1.jatsFrontParser.parseTitles(front.querySelector('article-meta > title-group'), createElement);
34
- const DOI = jats_front_parser_1.jatsFrontParser.parseDOI(front);
35
34
  const { affiliations, affiliationIDs } = jats_front_parser_1.jatsFrontParser.parseAffiliations([
36
35
  ...front.querySelectorAll('article-meta > contrib-group > aff'),
37
36
  ]);
@@ -46,7 +45,7 @@ const parseJATSFront = (doc, front) => {
46
45
  ], affiliationIDs, footnoteIDs, correspondingIDs);
47
46
  const history = jats_front_parser_1.jatsFrontParser.parseDates(front.querySelector('article-meta > history'));
48
47
  const counts = jats_front_parser_1.jatsFrontParser.parseCounts(front.querySelector('article-meta counts'));
49
- const manuscript = Object.assign(Object.assign(Object.assign(Object.assign({}, (0, builders_1.buildManuscript)()), counts), history), { DOI });
48
+ const manuscript = Object.assign(Object.assign(Object.assign({}, (0, builders_1.buildManuscript)()), counts), history);
50
49
  return generateIDs([
51
50
  manuscript,
52
51
  titles,
@@ -68,6 +67,7 @@ const parseJATSBody = (doc, body, references) => {
68
67
  jats_body_transformations_1.jatsBodyTransformations.createBackmatter(doc, body, createElement);
69
68
  jats_body_transformations_1.jatsBodyTransformations.createSuppleMaterials(doc, body, createElement);
70
69
  jats_body_transformations_1.jatsBodyTransformations.createKeywords(doc, body, createElement);
70
+ jats_body_transformations_1.jatsBodyTransformations.orderTableFootnote(doc, body);
71
71
  const node = jats_body_dom_parser_1.jatsBodyDOMParser.parse(body).firstChild;
72
72
  if (!node) {
73
73
  throw new Error('No content was parsed from the JATS article body');
@@ -95,7 +95,7 @@ const createDefaultIdGenerator = () => {
95
95
  const counter = (0, exports.createCounter)();
96
96
  return async (element) => {
97
97
  const value = String(counter.increment(element.nodeName));
98
- return `${element.nodeName}-${value}`;
98
+ return `${element.localName}-${value}`;
99
99
  };
100
100
  };
101
101
  const chooseRefType = (objectType) => {
@@ -164,6 +164,7 @@ class JATSExporter {
164
164
  };
165
165
  this.nodeFromJATS = (JATSFragment) => {
166
166
  JATSFragment = JATSFragment.trim();
167
+ JATSFragment = JATSFragment.replace(' ', ' ');
167
168
  if (!JATSFragment.length) {
168
169
  return null;
169
170
  }
@@ -248,7 +249,7 @@ class JATSExporter {
248
249
  }
249
250
  };
250
251
  this.buildFront = (doi, id, links) => {
251
- var _a, _b, _c, _d, _e;
252
+ var _a, _b, _c, _d;
252
253
  const manuscript = (0, project_bundle_1.findManuscript)(this.modelMap);
253
254
  const titles = (0, project_bundle_1.findTitles)(this.modelMap);
254
255
  const front = this.document.createElement('front');
@@ -311,10 +312,10 @@ class JATSExporter {
311
312
  articleID.textContent = id;
312
313
  articleMeta.appendChild(articleID);
313
314
  }
314
- if (doi || manuscript.DOI) {
315
+ if (doi) {
315
316
  const articleID = this.document.createElement('article-id');
316
317
  articleID.setAttribute('pub-id-type', 'doi');
317
- articleID.textContent = (_a = manuscript.DOI) !== null && _a !== void 0 ? _a : doi;
318
+ articleID.textContent = doi;
318
319
  articleMeta.appendChild(articleID);
319
320
  }
320
321
  const titleGroup = this.document.createElement('title-group');
@@ -349,14 +350,14 @@ class JATSExporter {
349
350
  for (const supplement of supplements) {
350
351
  const supplementaryMaterial = this.document.createElement('supplementary-material');
351
352
  supplementaryMaterial.setAttribute('id', normalizeID(supplement._id));
352
- supplementaryMaterial.setAttributeNS(XLINK_NAMESPACE, 'href', (_b = supplement.href) !== null && _b !== void 0 ? _b : '');
353
- const mimeType = (_c = supplement.MIME) === null || _c === void 0 ? void 0 : _c.split('/')[0];
354
- const mimeSubType = (_d = supplement.MIME) === null || _d === void 0 ? void 0 : _d.split('/')[1];
353
+ supplementaryMaterial.setAttributeNS(XLINK_NAMESPACE, 'href', (_a = supplement.href) !== null && _a !== void 0 ? _a : '');
354
+ const mimeType = (_b = supplement.MIME) === null || _b === void 0 ? void 0 : _b.split('/')[0];
355
+ const mimeSubType = (_c = supplement.MIME) === null || _c === void 0 ? void 0 : _c.split('/')[1];
355
356
  supplementaryMaterial.setAttribute('mimetype', mimeType !== null && mimeType !== void 0 ? mimeType : '');
356
357
  supplementaryMaterial.setAttribute('mime-subtype', mimeSubType !== null && mimeSubType !== void 0 ? mimeSubType : '');
357
358
  const caption = this.document.createElement('caption');
358
359
  const title = this.document.createElement('title');
359
- title.textContent = (_e = supplement.title) !== null && _e !== void 0 ? _e : '';
360
+ title.textContent = (_d = supplement.title) !== null && _d !== void 0 ? _d : '';
360
361
  caption.append(title);
361
362
  supplementaryMaterial.append(caption);
362
363
  articleMeta.append(supplementaryMaterial);
@@ -686,22 +687,20 @@ class JATSExporter {
686
687
  },
687
688
  doc: () => '',
688
689
  equation: (node) => {
689
- const formula = this.document.createElement('disp-formula');
690
- formula.setAttribute('id', normalizeID(node.attrs.id));
691
- if (node.attrs.TeXRepresentation) {
692
- const math = this.document.createElement('tex-math');
693
- math.textContent = node.attrs.TeXRepresentation;
694
- formula.appendChild(math);
695
- }
696
- else if (node.attrs.MathMLStringRepresentation) {
697
- const math = this.nodeFromJATS(node.attrs.MathMLStringRepresentation);
698
- if (math) {
699
- formula.appendChild(math);
700
- }
701
- }
702
- return formula;
690
+ return this.createEquation(node);
691
+ },
692
+ inline_equation: (node) => {
693
+ const eqElement = this.document.createElement('inline-formula');
694
+ const equation = this.createEquation(node, true);
695
+ eqElement.append(equation);
696
+ return eqElement;
697
+ },
698
+ equation_element: (node) => {
699
+ const eqElement = this.document.createElement('disp-formula');
700
+ eqElement.setAttribute('id', normalizeID(node.attrs.id));
701
+ processChildNodes(eqElement, node, schema_1.schema.nodes.equation);
702
+ return eqElement;
703
703
  },
704
- equation_element: (node) => createFigureElement(node, 'fig', node.type.schema.nodes.equation, 'equation'),
705
704
  figcaption: (node) => {
706
705
  if (!node.textContent) {
707
706
  return '';
@@ -751,28 +750,6 @@ class JATSExporter {
751
750
  },
752
751
  hard_break: () => '',
753
752
  highlight_marker: () => '',
754
- inline_equation: (node) => {
755
- const formula = this.document.createElement('inline-formula');
756
- formula.setAttribute('id', normalizeID(node.attrs.id));
757
- if (node.attrs.TeXRepresentation) {
758
- const math = this.document.createElement('tex-math');
759
- math.textContent = node.attrs.TeXRepresentation;
760
- formula.appendChild(math);
761
- }
762
- else if (node.attrs.MathMLRepresentation) {
763
- const math = this.nodeFromJATS(node.attrs.MathMLRepresentation);
764
- if (math) {
765
- formula.appendChild(math);
766
- }
767
- }
768
- else if (node.attrs.SVGRepresentation) {
769
- const math = this.nodeFromJATS(node.attrs.SVGRepresentation);
770
- if (math) {
771
- formula.appendChild(math);
772
- }
773
- }
774
- return formula;
775
- },
776
753
  inline_footnote: (node) => {
777
754
  const xref = this.document.createElement('xref');
778
755
  xref.setAttribute('ref-type', 'fn');
@@ -1589,6 +1566,21 @@ class JATSExporter {
1589
1566
  this.citationTexts.set(id, output);
1590
1567
  });
1591
1568
  }
1569
+ createEquation(node, isInline = false) {
1570
+ if (node.attrs.format === 'tex') {
1571
+ const texMath = this.document.createElement('tex-math');
1572
+ texMath.innerHTML = node.attrs.contents;
1573
+ return texMath;
1574
+ }
1575
+ else {
1576
+ const math = this.nodeFromJATS(node.attrs.contents);
1577
+ const mathml = math;
1578
+ if (!isInline) {
1579
+ mathml.setAttribute('id', normalizeID(node.attrs.id));
1580
+ }
1581
+ return mathml;
1582
+ }
1583
+ }
1592
1584
  buildKeywords(articleMeta) {
1593
1585
  const keywords = [...this.modelMap.values()].filter((model) => model.objectType === json_schema_1.ObjectTypes.Keyword);
1594
1586
  const keywordGroups = new Map();
@@ -117,7 +117,6 @@ __exportStar(require("./nodes/footnotes_section"), exports);
117
117
  __exportStar(require("./nodes/graphical_abstract_section"), exports);
118
118
  __exportStar(require("./nodes/hard_break"), exports);
119
119
  __exportStar(require("./nodes/highlight_marker"), exports);
120
- __exportStar(require("./nodes/inline_equation"), exports);
121
120
  __exportStar(require("./nodes/inline_footnote"), exports);
122
121
  __exportStar(require("./nodes/keyword"), exports);
123
122
  __exportStar(require("./nodes/keywords_element"), exports);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*!
3
- * © 2019 Atypon Systems LLC
3
+ * © 2023 Atypon Systems LLC
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
6
6
  * you may not use this file except in compliance with the License.
@@ -20,9 +20,8 @@ const json_schema_1 = require("@manuscripts/json-schema");
20
20
  exports.equation = {
21
21
  attrs: {
22
22
  id: { default: '' },
23
- MathMLStringRepresentation: { default: '' },
24
- SVGStringRepresentation: { default: '' },
25
- TeXRepresentation: { default: '' },
23
+ contents: { default: '' },
24
+ format: { default: '' },
26
25
  dataTracked: { default: null },
27
26
  },
28
27
  group: 'block',
@@ -30,26 +29,25 @@ exports.equation = {
30
29
  {
31
30
  tag: `div.${json_schema_1.ObjectTypes.Equation}`,
32
31
  getAttrs: (p) => {
33
- const dom = p;
32
+ const htmlEl = p;
34
33
  return {
35
- id: dom.getAttribute('id'),
36
- MathMLStringRepresentation: dom.getAttribute('data-mathml-string-representation'),
37
- SVGStringRepresentation: dom.innerHTML,
38
- TeXRepresentation: dom.getAttribute('data-tex-representation'),
34
+ id: htmlEl.getAttribute('id'),
35
+ format: htmlEl.getAttribute('data-equation-format'),
36
+ contents: htmlEl.innerHTML,
39
37
  };
40
38
  },
41
39
  },
42
40
  ],
43
41
  toDOM: (node) => {
44
42
  const equationNode = node;
43
+ const { id, contents, format } = equationNode.attrs;
45
44
  const dom = document.createElement('div');
46
- dom.setAttribute('id', equationNode.attrs.id);
47
45
  dom.classList.add(json_schema_1.ObjectTypes.Equation);
48
- if (equationNode.attrs.MathMLStringRepresentation) {
49
- dom.setAttribute('data-mathml-string-representation', equationNode.attrs.MathMLStringRepresentation);
46
+ dom.setAttribute('id', id);
47
+ if (format) {
48
+ dom.setAttribute('data-equation-format', format);
50
49
  }
51
- dom.setAttribute('data-tex-representation', equationNode.attrs.TeXRepresentation);
52
- dom.innerHTML = equationNode.attrs.SVGStringRepresentation;
50
+ dom.innerHTML = contents;
53
51
  return dom;
54
52
  },
55
53
  };
@@ -17,11 +17,10 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.equationElement = void 0;
19
19
  exports.equationElement = {
20
- content: '(equation | placeholder) figcaption',
20
+ content: '(equation | placeholder)',
21
21
  attrs: {
22
22
  id: { default: '' },
23
- suppressCaption: { default: true },
24
- suppressTitle: { default: undefined },
23
+ label: { default: '' },
25
24
  dataTracked: { default: null },
26
25
  comments: { default: null },
27
26
  },
@@ -29,7 +28,7 @@ exports.equationElement = {
29
28
  group: 'block element',
30
29
  parseDOM: [
31
30
  {
32
- tag: 'figure.equation',
31
+ tag: 'div.equation',
33
32
  getAttrs: (p) => {
34
33
  const dom = p;
35
34
  return {
@@ -41,7 +40,7 @@ exports.equationElement = {
41
40
  toDOM: (node) => {
42
41
  const equationElementNode = node;
43
42
  return [
44
- 'figure',
43
+ 'div',
45
44
  {
46
45
  class: 'equation',
47
46
  id: equationElementNode.attrs.id,
@@ -16,14 +16,13 @@
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.inlineEquation = void 0;
19
- const json_schema_1 = require("@manuscripts/json-schema");
20
19
  exports.inlineEquation = {
21
20
  attrs: {
22
- id: { default: '' },
23
- MathMLRepresentation: { default: '' },
24
- SVGRepresentation: { default: '' },
25
- TeXRepresentation: { default: '' },
26
21
  dataTracked: { default: null },
22
+ comments: { default: null },
23
+ id: { default: '' },
24
+ contents: { default: '' },
25
+ format: { default: '' },
27
26
  },
28
27
  atom: true,
29
28
  inline: true,
@@ -31,28 +30,27 @@ exports.inlineEquation = {
31
30
  group: 'inline',
32
31
  parseDOM: [
33
32
  {
34
- tag: `span.${json_schema_1.ObjectTypes.InlineMathFragment}`,
33
+ tag: `span.MPInlineMathFragment`,
35
34
  getAttrs: (p) => {
36
35
  const dom = p;
37
36
  return {
37
+ format: dom.getAttribute('data-equation-format'),
38
38
  id: dom.getAttribute('id'),
39
- MathMLRepresentation: dom.getAttribute('data-mathml-representation') || '',
40
- SVGRepresentation: dom.innerHTML || '',
41
- TeXRepresentation: dom.getAttribute('data-tex-representation') || '',
39
+ contents: dom.innerHTML,
42
40
  };
43
41
  },
44
42
  },
45
43
  ],
46
44
  toDOM: (node) => {
47
45
  const inlineEquationNode = node;
46
+ const { id, contents, format } = inlineEquationNode.attrs;
48
47
  const dom = document.createElement('span');
49
- dom.classList.add(json_schema_1.ObjectTypes.InlineMathFragment);
50
- dom.setAttribute('id', inlineEquationNode.attrs.id);
51
- dom.setAttribute('data-tex-representation', inlineEquationNode.attrs.TeXRepresentation);
52
- if (inlineEquationNode.attrs.MathMLRepresentation) {
53
- dom.setAttribute('data-mathml-representation', inlineEquationNode.attrs.MathMLRepresentation);
48
+ dom.setAttribute('id', id);
49
+ dom.classList.add('MPInlineMathFragment');
50
+ if (format) {
51
+ dom.setAttribute('data-equation-format', format);
54
52
  }
55
- dom.innerHTML = inlineEquationNode.attrs.SVGRepresentation;
53
+ dom.innerHTML = contents;
56
54
  return dom;
57
55
  },
58
56
  };
@@ -18,7 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.buildTitles = exports.buildElementsOrder = exports.auxiliaryObjectTypes = exports.buildJournal = exports.buildAttribution = exports.buildContributorRole = exports.buildContribution = exports.buildColor = exports.buildParagraph = exports.buildSection = exports.buildCorresp = exports.buildFootnotesOrder = exports.buildFootnote = exports.buildInlineMathFragment = exports.buildNote = exports.buildComment = exports.buildSupplementaryMaterial = exports.buildAffiliation = exports.buildFigure = exports.buildKeywordGroup = exports.buildKeyword = exports.buildBibliographyElement = exports.buildBibliographicDate = exports.buildBibliographicName = exports.buildBibliographyItem = exports.buildContributor = exports.buildManuscript = exports.buildProject = void 0;
21
+ exports.buildTitles = exports.buildElementsOrder = exports.auxiliaryObjectTypes = exports.buildJournal = exports.buildAttribution = exports.buildContributorRole = exports.buildContribution = exports.buildColor = exports.buildParagraph = exports.buildSection = exports.buildCorresp = exports.buildFootnotesOrder = exports.buildFootnote = exports.buildNote = exports.buildComment = exports.buildSupplementaryMaterial = exports.buildAffiliation = exports.buildFigure = exports.buildKeywordGroup = exports.buildKeyword = exports.buildBibliographyElement = exports.buildBibliographicDate = exports.buildBibliographicName = exports.buildBibliographyItem = exports.buildContributor = exports.buildManuscript = exports.buildProject = void 0;
22
22
  const json_schema_1 = require("@manuscripts/json-schema");
23
23
  const w3c_xmlserializer_1 = __importDefault(require("w3c-xmlserializer"));
24
24
  const schema_1 = require("../schema");
@@ -115,13 +115,6 @@ const buildNote = (target, source, contents = '') => ({
115
115
  contents,
116
116
  });
117
117
  exports.buildNote = buildNote;
118
- const buildInlineMathFragment = (containingObject, TeXRepresentation) => ({
119
- _id: (0, id_1.generateID)(json_schema_1.ObjectTypes.InlineMathFragment),
120
- objectType: json_schema_1.ObjectTypes.InlineMathFragment,
121
- containingObject: containingObject || undefined,
122
- TeXRepresentation,
123
- });
124
- exports.buildInlineMathFragment = buildInlineMathFragment;
125
118
  const buildFootnote = (containingObject, contents, kind = 'footnote') => ({
126
119
  _id: (0, id_1.generateID)(json_schema_1.ObjectTypes.Footnote),
127
120
  objectType: json_schema_1.ObjectTypes.Footnote,
@@ -130,10 +123,11 @@ const buildFootnote = (containingObject, contents, kind = 'footnote') => ({
130
123
  kind,
131
124
  });
132
125
  exports.buildFootnote = buildFootnote;
133
- const buildFootnotesOrder = (footnotesList) => ({
126
+ const buildFootnotesOrder = (footnotesList, containedObjectID) => ({
134
127
  _id: (0, id_1.generateID)(json_schema_1.ObjectTypes.FootnotesOrder),
135
128
  objectType: json_schema_1.ObjectTypes.FootnotesOrder,
136
129
  footnotesList,
130
+ containedObjectID,
137
131
  });
138
132
  exports.buildFootnotesOrder = buildFootnotesOrder;
139
133
  const buildCorresp = (contents) => ({
@@ -68,7 +68,6 @@ const getSupplements = (modelMap) => (0, exports.getModelsByType)(modelMap, json
68
68
  const getKeywordGroups = (modelMap) => (0, exports.getModelsByType)(modelMap, json_schema_1.ObjectTypes.KeywordGroup);
69
69
  const getKeywords = (modelMap) => (0, exports.getModelsByType)(modelMap, json_schema_1.ObjectTypes.Keyword);
70
70
  const getTitles = (modelMap) => (0, exports.getModelsByType)(modelMap, json_schema_1.ObjectTypes.Titles)[0];
71
- const isFootnote = (0, object_types_1.hasObjectType)(json_schema_1.ObjectTypes.Footnote);
72
71
  const hasParentSection = (id) => (section) => section.path &&
73
72
  section.path.length > 1 &&
74
73
  section.path[section.path.length - 2] === id;
@@ -281,9 +280,8 @@ class Decoder {
281
280
  const model = data;
282
281
  return schema_1.schema.nodes.equation.createChecked({
283
282
  id: model._id,
284
- MathMLStringRepresentation: model.MathMLStringRepresentation,
285
- SVGStringRepresentation: model.SVGStringRepresentation,
286
- TeXRepresentation: model.TeXRepresentation,
283
+ contents: model.contents,
284
+ format: model.format,
287
285
  });
288
286
  },
289
287
  [json_schema_1.ObjectTypes.EquationElement]: (data) => {
@@ -302,32 +300,32 @@ class Decoder {
302
300
  else {
303
301
  throw new errors_1.MissingElement(model.containedObjectID);
304
302
  }
305
- const figcaption = this.getFigcaption(model);
306
303
  return schema_1.schema.nodes.equation_element.createChecked({
307
304
  id: model._id,
308
- suppressCaption: Boolean(model.suppressCaption),
309
- suppressTitle: Boolean(model.suppressTitle === undefined ? true : model.suppressTitle),
310
- }, [equation, figcaption]);
305
+ label: model.label,
306
+ }, [equation]);
311
307
  },
312
308
  [json_schema_1.ObjectTypes.FootnotesElement]: (data) => {
313
309
  const foonotesElementModel = data;
314
- const collateByKind = foonotesElementModel.collateByKind || 'footnote';
315
310
  const footnotesOfKind = [];
316
- for (const model of this.modelMap.values()) {
317
- if (isFootnote(model) &&
318
- model.kind === collateByKind &&
319
- model.containingObject === foonotesElementModel._id) {
320
- const comments = this.createCommentNodes(model);
321
- comments.forEach((c) => this.comments.set(c.attrs.id, c));
322
- const footnote = this.parseContents(model.contents || '<div></div>', undefined, this.getComments(model), {
323
- topNode: schema_1.schema.nodes.footnote.create({
324
- id: model._id,
325
- kind: model.kind,
326
- comments: comments.map((c) => c.attrs.id),
327
- }),
328
- });
329
- footnotesOfKind.push(footnote);
330
- }
311
+ const footnoteOrder = (0, exports.getModelsByType)(this.modelMap, json_schema_1.ObjectTypes.FootnotesOrder).find((model) => model.containedObjectID === data._id);
312
+ if (footnoteOrder) {
313
+ footnoteOrder.footnotesList.map(({ id }) => {
314
+ const model = this.modelMap.get(id);
315
+ const collateByKind = foonotesElementModel.collateByKind || 'footnote';
316
+ if (model.kind === collateByKind) {
317
+ const comments = this.createCommentNodes(model);
318
+ comments.forEach((c) => this.comments.set(c.attrs.id, c));
319
+ const footnote = this.parseContents(model.contents || '<div></div>', undefined, this.getComments(model), {
320
+ topNode: schema_1.schema.nodes.footnote.create({
321
+ id: model._id,
322
+ kind: model.kind,
323
+ comments: comments.map((c) => c.attrs.id),
324
+ }),
325
+ });
326
+ footnotesOfKind.push(footnote);
327
+ }
328
+ });
331
329
  }
332
330
  return schema_1.schema.nodes.footnotes_element.create({
333
331
  id: foonotesElementModel._id,