@manuscripts/transform 2.1.1-LEAN-3092-1 → 2.1.1-LEAN-3336-6

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 (55) hide show
  1. package/dist/cjs/index.js +1 -0
  2. package/dist/cjs/jats/importer/jats-body-dom-parser.js +73 -29
  3. package/dist/cjs/jats/importer/jats-body-transformations.js +0 -9
  4. package/dist/cjs/jats/jats-exporter.js +42 -18
  5. package/dist/cjs/mathjax/index.js +41 -0
  6. package/dist/cjs/mathjax/mathjax-packages.js +20 -0
  7. package/dist/cjs/mathjax/mathml-to-svg.js +70 -0
  8. package/dist/cjs/mathjax/tex-to-mathml.js +49 -0
  9. package/dist/cjs/mathjax/tex-to-svg.js +59 -0
  10. package/dist/cjs/schema/index.js +4 -5
  11. package/dist/cjs/schema/nodes/equation.js +14 -12
  12. package/dist/cjs/schema/nodes/equation_element.js +5 -4
  13. package/dist/cjs/schema/nodes/inline_equation.js +16 -12
  14. package/dist/cjs/schema/nodes/table.js +17 -51
  15. package/dist/cjs/schema/nodes/table_row.js +1 -108
  16. package/dist/cjs/transformer/builders.js +8 -1
  17. package/dist/cjs/transformer/decode.js +8 -8
  18. package/dist/cjs/transformer/encode.js +25 -23
  19. package/dist/cjs/transformer/node-types.js +1 -0
  20. package/dist/cjs/transformer/object-types.js +1 -0
  21. package/dist/es/index.js +1 -0
  22. package/dist/es/jats/importer/jats-body-dom-parser.js +74 -30
  23. package/dist/es/jats/importer/jats-body-transformations.js +0 -9
  24. package/dist/es/jats/jats-exporter.js +42 -18
  25. package/dist/es/mathjax/index.js +12 -0
  26. package/dist/es/mathjax/mathjax-packages.js +17 -0
  27. package/dist/es/mathjax/mathml-to-svg.js +66 -0
  28. package/dist/es/mathjax/tex-to-mathml.js +45 -0
  29. package/dist/es/mathjax/tex-to-svg.js +55 -0
  30. package/dist/es/schema/index.js +3 -4
  31. package/dist/es/schema/nodes/equation.js +14 -12
  32. package/dist/es/schema/nodes/equation_element.js +5 -4
  33. package/dist/es/schema/nodes/inline_equation.js +16 -12
  34. package/dist/es/schema/nodes/table.js +16 -50
  35. package/dist/es/schema/nodes/table_row.js +2 -106
  36. package/dist/es/transformer/builders.js +6 -0
  37. package/dist/es/transformer/decode.js +8 -8
  38. package/dist/es/transformer/encode.js +25 -23
  39. package/dist/es/transformer/node-types.js +1 -0
  40. package/dist/es/transformer/object-types.js +1 -0
  41. package/dist/types/index.d.ts +1 -0
  42. package/dist/types/mathjax/index.d.ts +3 -0
  43. package/dist/types/mathjax/mathjax-packages.d.ts +16 -0
  44. package/dist/types/mathjax/mathml-to-svg.d.ts +17 -0
  45. package/dist/types/mathjax/tex-to-mathml.d.ts +17 -0
  46. package/dist/types/mathjax/tex-to-svg.d.ts +17 -0
  47. package/dist/types/schema/index.d.ts +1 -1
  48. package/dist/types/schema/nodes/equation.d.ts +4 -3
  49. package/dist/types/schema/nodes/equation_element.d.ts +2 -1
  50. package/dist/types/schema/nodes/inline_equation.d.ts +4 -4
  51. package/dist/types/schema/nodes/table.d.ts +27 -10
  52. package/dist/types/schema/nodes/table_row.d.ts +1 -27
  53. package/dist/types/schema/types.d.ts +1 -1
  54. package/dist/types/transformer/builders.d.ts +2 -1
  55. package/package.json +7 -5
package/dist/cjs/index.js CHANGED
@@ -18,6 +18,7 @@ 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);
21
22
  __exportStar(require("./schema"), exports);
22
23
  __exportStar(require("./transformer"), exports);
23
24
  __exportStar(require("./jats"), exports);
@@ -21,6 +21,8 @@ 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");
24
26
  const schema_1 = require("../../schema");
25
27
  const transformer_1 = require("../../transformer");
26
28
  const XLINK_NAMESPACE = 'http://www.w3.org/1999/xlink';
@@ -37,24 +39,6 @@ const chooseContentType = (graphicNode) => {
37
39
  }
38
40
  }
39
41
  };
40
- const getEquationContent = (p) => {
41
- var _a;
42
- const element = p;
43
- const container = (_a = element.querySelector('alternatives')) !== null && _a !== void 0 ? _a : element;
44
- let contents = '';
45
- let format = '';
46
- for (const child of container.childNodes) {
47
- const nodeName = child.nodeName.replace(/^[a-z]:/, '');
48
- switch (nodeName) {
49
- case 'tex-math':
50
- case 'mml:math':
51
- contents = child.outerHTML;
52
- format = nodeName === 'tex-math' ? 'tex' : 'mathml';
53
- break;
54
- }
55
- }
56
- return { format, contents };
57
- };
58
42
  const marks = [
59
43
  {
60
44
  tag: 'bold',
@@ -163,27 +147,91 @@ const nodes = [
163
147
  tag: 'inline-formula',
164
148
  node: 'inline_equation',
165
149
  getAttrs: (node) => {
150
+ var _a, _b, _c, _d, _e;
166
151
  const element = node;
167
- return getEquationContent(element);
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;
168
181
  },
169
182
  },
170
183
  {
171
184
  tag: 'disp-formula',
172
185
  node: 'equation_element',
173
186
  getAttrs: (node) => {
174
- var _a, _b;
175
187
  const element = node;
188
+ const caption = element.querySelector('figcaption');
176
189
  return {
177
190
  id: element.getAttribute('id'),
178
- label: (_b = (_a = element.querySelector('label')) === null || _a === void 0 ? void 0 : _a.textContent) !== null && _b !== void 0 ? _b : '',
191
+ suppressCaption: !caption,
179
192
  };
180
193
  },
181
194
  getContent: (node, schema) => {
195
+ var _a, _b, _c, _d, _e;
182
196
  const element = node;
183
- const attrs = getEquationContent(element);
184
- const id = element.getAttribute('id');
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();
185
227
  return prosemirror_model_1.Fragment.from([
186
- schema.nodes.equation.createChecked(Object.assign({ id }, attrs)),
228
+ schema.nodes.equation.createChecked(attrs),
229
+ caption
230
+ ?
231
+ exports.jatsBodyDOMParser.parse(caption, {
232
+ topNode: figcaption,
233
+ })
234
+ : figcaption,
187
235
  ]);
188
236
  },
189
237
  },
@@ -520,7 +568,7 @@ const nodes = [
520
568
  },
521
569
  {
522
570
  tag: 'th',
523
- node: 'table_cell',
571
+ node: 'table_header',
524
572
  getAttrs: (node) => {
525
573
  const element = node;
526
574
  const colspan = element.getAttribute('colspan');
@@ -538,10 +586,6 @@ const nodes = [
538
586
  };
539
587
  },
540
588
  },
541
- {
542
- tag: 'colgroup',
543
- node: 'table_colgroup',
544
- },
545
589
  {
546
590
  tag: 'xref[ref-type="bibr"]',
547
591
  node: 'citation',
@@ -241,15 +241,6 @@ exports.jatsBodyTransformations = {
241
241
  fixTables(body, createElement) {
242
242
  const tables = body.querySelectorAll('table-wrap > table');
243
243
  tables.forEach((table) => {
244
- const colgroup = table.querySelector('colgroup');
245
- const cols = table.querySelectorAll('col');
246
- if (!colgroup && table.firstChild && cols.length > 0) {
247
- const colgroup = createElement('colgroup');
248
- for (const col of cols) {
249
- colgroup.appendChild(col);
250
- }
251
- table.insertBefore(colgroup, table.firstChild);
252
- }
253
244
  const tbody = table.querySelector('tbody');
254
245
  if (tbody) {
255
246
  const headerRow = table.querySelector('thead > tr');
@@ -164,7 +164,6 @@ class JATSExporter {
164
164
  };
165
165
  this.nodeFromJATS = (JATSFragment) => {
166
166
  JATSFragment = JATSFragment.trim();
167
- JATSFragment = JATSFragment.replace(' ', ' ');
168
167
  if (!JATSFragment.length) {
169
168
  return null;
170
169
  }
@@ -615,6 +614,11 @@ class JATSExporter {
615
614
  this.createSerializer = () => {
616
615
  const getModel = (id) => id ? this.modelMap.get(id) : undefined;
617
616
  const nodes = {
617
+ table_header: (node) => [
618
+ node.attrs.celltype,
619
+ Object.assign(Object.assign({ valign: node.attrs.valign, align: node.attrs.align, scope: node.attrs.scope, style: node.attrs.style }, (node.attrs.rowspan > 1 && { rowspan: node.attrs.rowspan })), (node.attrs.colspan > 1 && { colspan: node.attrs.colspan })),
620
+ 0,
621
+ ],
618
622
  title: () => '',
619
623
  affiliations: () => '',
620
624
  contributors: () => '',
@@ -687,23 +691,22 @@ class JATSExporter {
687
691
  },
688
692
  doc: () => '',
689
693
  equation: (node) => {
690
- const math = this.nodeFromJATS(node.attrs.contents);
691
- const mathEl = math;
692
- mathEl.setAttribute('id', normalizeID(node.attrs.id));
693
- return mathEl;
694
- },
695
- inline_equation: (node) => {
696
- const eqElement = this.document.createElement('inline-formula');
697
- const math = this.nodeFromJATS(node.attrs.contents);
698
- eqElement.append(math);
699
- return eqElement;
700
- },
701
- equation_element: (node) => {
702
- const eqElement = this.document.createElement('disp-formula');
703
- eqElement.setAttribute('id', normalizeID(node.attrs.id));
704
- processChildNodes(eqElement, node, schema_1.schema.nodes.equation);
705
- return eqElement;
694
+ const formula = this.document.createElement('disp-formula');
695
+ formula.setAttribute('id', normalizeID(node.attrs.id));
696
+ if (node.attrs.TeXRepresentation) {
697
+ const math = this.document.createElement('tex-math');
698
+ math.textContent = node.attrs.TeXRepresentation;
699
+ formula.appendChild(math);
700
+ }
701
+ else if (node.attrs.MathMLStringRepresentation) {
702
+ const math = this.nodeFromJATS(node.attrs.MathMLStringRepresentation);
703
+ if (math) {
704
+ formula.appendChild(math);
705
+ }
706
+ }
707
+ return formula;
706
708
  },
709
+ equation_element: (node) => createFigureElement(node, 'fig', node.type.schema.nodes.equation, 'equation'),
707
710
  figcaption: (node) => {
708
711
  if (!node.textContent) {
709
712
  return '';
@@ -753,6 +756,28 @@ class JATSExporter {
753
756
  },
754
757
  hard_break: () => '',
755
758
  highlight_marker: () => '',
759
+ inline_equation: (node) => {
760
+ const formula = this.document.createElement('inline-formula');
761
+ formula.setAttribute('id', normalizeID(node.attrs.id));
762
+ if (node.attrs.TeXRepresentation) {
763
+ const math = this.document.createElement('tex-math');
764
+ math.textContent = node.attrs.TeXRepresentation;
765
+ formula.appendChild(math);
766
+ }
767
+ else if (node.attrs.MathMLRepresentation) {
768
+ const math = this.nodeFromJATS(node.attrs.MathMLRepresentation);
769
+ if (math) {
770
+ formula.appendChild(math);
771
+ }
772
+ }
773
+ else if (node.attrs.SVGRepresentation) {
774
+ const math = this.nodeFromJATS(node.attrs.SVGRepresentation);
775
+ if (math) {
776
+ formula.appendChild(math);
777
+ }
778
+ }
779
+ return formula;
780
+ },
756
781
  inline_footnote: (node) => {
757
782
  const xref = this.document.createElement('xref');
758
783
  xref.setAttribute('ref-type', 'fn');
@@ -853,7 +878,6 @@ class JATSExporter {
853
878
  element.setAttribute('position', 'anchor');
854
879
  return element;
855
880
  },
856
- table_body: () => ['tbody', 0],
857
881
  table_cell: (node) => [
858
882
  node.attrs.celltype,
859
883
  Object.assign(Object.assign({ valign: node.attrs.valign, align: node.attrs.align, scope: node.attrs.scope, style: node.attrs.style }, (node.attrs.rowspan > 1 && { rowspan: node.attrs.rowspan })), (node.attrs.colspan > 1 && { colspan: node.attrs.colspan })),
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.convertTeXToSVG = exports.convertTeXToMathML = exports.convertMathMLToSVG = void 0;
27
+ const convertMathMLToSVG = async (mathml, display) => {
28
+ const { convertMathMLToSVG } = await Promise.resolve().then(() => __importStar(require('./mathml-to-svg')));
29
+ return convertMathMLToSVG(mathml, display);
30
+ };
31
+ exports.convertMathMLToSVG = convertMathMLToSVG;
32
+ const convertTeXToMathML = async (tex, display) => {
33
+ const { convertTeXToMathML } = await Promise.resolve().then(() => __importStar(require('./tex-to-mathml')));
34
+ return convertTeXToMathML(tex, display);
35
+ };
36
+ exports.convertTeXToMathML = convertTeXToMathML;
37
+ const convertTeXToSVG = async (tex, display) => {
38
+ const { convertTeXToSVG } = await Promise.resolve().then(() => __importStar(require('./tex-to-svg')));
39
+ return convertTeXToSVG(tex, display);
40
+ };
41
+ exports.convertTeXToSVG = convertTeXToSVG;
@@ -0,0 +1,20 @@
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.packages = void 0;
19
+ const AllPackages_1 = require("mathjax-full/js/input/tex/AllPackages");
20
+ exports.packages = AllPackages_1.AllPackages.filter((name) => name !== 'html' && name !== 'bussproofs');
@@ -0,0 +1,70 @@
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.convertMathMLToSVG = void 0;
19
+ require("mathjax-full/js/util/entities/all");
20
+ const HTMLAdaptor_1 = require("mathjax-full/js/adaptors/HTMLAdaptor");
21
+ const MmlFactory_1 = require("mathjax-full/js/core/MmlTree/MmlFactory");
22
+ const HTMLDocument_1 = require("mathjax-full/js/handlers/html/HTMLDocument");
23
+ const mathml_1 = require("mathjax-full/js/input/mathml");
24
+ const svg_1 = require("mathjax-full/js/output/svg");
25
+ const transformer_1 = require("../transformer");
26
+ class ManuscriptsMmlFactory extends MmlFactory_1.MmlFactory {
27
+ constructor() {
28
+ super();
29
+ this.nodeMap.set('image', this.nodeMap.get('none'));
30
+ }
31
+ create(kind, properties = {}, children = []) {
32
+ if (kind === 'image') {
33
+ return this.node['none'](properties, children);
34
+ }
35
+ return this.node[kind](properties, children);
36
+ }
37
+ }
38
+ class ManuscriptsHTMLAdaptor extends HTMLAdaptor_1.HTMLAdaptor {
39
+ setAttribute(node, name, value, ns) {
40
+ if (name !== 'xmlns') {
41
+ ns ? node.setAttributeNS(ns, name, value) : node.setAttribute(name, value);
42
+ }
43
+ }
44
+ }
45
+ const InputJax = new mathml_1.MathML();
46
+ const OutputJax = new svg_1.SVG({
47
+ fontCache: 'none',
48
+ });
49
+ const adaptor = new ManuscriptsHTMLAdaptor(window);
50
+ const doc = new HTMLDocument_1.HTMLDocument(document, adaptor, {
51
+ InputJax,
52
+ OutputJax,
53
+ MmlFactory: new ManuscriptsMmlFactory(),
54
+ });
55
+ doc.addStyleSheet();
56
+ const convertMathMLToSVG = (mathml, display) => {
57
+ const item = doc.convert(mathml, {
58
+ display,
59
+ em: 16,
60
+ ex: 8,
61
+ containerWidth: 1000000,
62
+ lineWidth: 1000000,
63
+ scale: 1,
64
+ });
65
+ if (!item || !item.firstChild) {
66
+ return null;
67
+ }
68
+ return transformer_1.xmlSerializer.serializeToString(item.firstChild);
69
+ };
70
+ exports.convertMathMLToSVG = convertMathMLToSVG;
@@ -0,0 +1,49 @@
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.convertTeXToMathML = void 0;
19
+ require("mathjax-full/js/util/entities/all");
20
+ const HTMLAdaptor_1 = require("mathjax-full/js/adaptors/HTMLAdaptor");
21
+ const MathItem_js_1 = require("mathjax-full/js/core/MathItem.js");
22
+ const SerializedMmlVisitor_1 = require("mathjax-full/js/core/MmlTree/SerializedMmlVisitor");
23
+ const HTMLDocument_1 = require("mathjax-full/js/handlers/html/HTMLDocument");
24
+ const tex_1 = require("mathjax-full/js/input/tex");
25
+ const mathjax_packages_1 = require("./mathjax-packages");
26
+ const InputJax = new tex_1.TeX({
27
+ packages: mathjax_packages_1.packages,
28
+ });
29
+ const adaptor = new HTMLAdaptor_1.HTMLAdaptor(window);
30
+ const doc = new HTMLDocument_1.HTMLDocument(document, adaptor, {
31
+ InputJax,
32
+ });
33
+ const visitor = new SerializedMmlVisitor_1.SerializedMmlVisitor();
34
+ const convertTeXToMathML = (tex, display) => {
35
+ const item = doc.convert(tex, {
36
+ display,
37
+ em: 16,
38
+ ex: 8,
39
+ containerWidth: 1000000,
40
+ lineWidth: 1000000,
41
+ scale: 1,
42
+ end: MathItem_js_1.STATE.CONVERT,
43
+ });
44
+ if (!item) {
45
+ return null;
46
+ }
47
+ return visitor.visitTree(item);
48
+ };
49
+ exports.convertTeXToMathML = convertTeXToMathML;
@@ -0,0 +1,59 @@
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.convertTeXToSVG = void 0;
19
+ require("mathjax-full/js/util/entities/all");
20
+ const HTMLAdaptor_1 = require("mathjax-full/js/adaptors/HTMLAdaptor");
21
+ const HTMLDocument_1 = require("mathjax-full/js/handlers/html/HTMLDocument");
22
+ const tex_1 = require("mathjax-full/js/input/tex");
23
+ const svg_1 = require("mathjax-full/js/output/svg");
24
+ const transformer_1 = require("../transformer");
25
+ const mathjax_packages_1 = require("./mathjax-packages");
26
+ class ManuscriptsHTMLAdaptor extends HTMLAdaptor_1.HTMLAdaptor {
27
+ setAttribute(node, name, value, ns) {
28
+ if (name !== 'xmlns') {
29
+ ns ? node.setAttributeNS(ns, name, value) : node.setAttribute(name, value);
30
+ }
31
+ }
32
+ }
33
+ const InputJax = new tex_1.TeX({
34
+ packages: mathjax_packages_1.packages,
35
+ });
36
+ const OutputJax = new svg_1.SVG({
37
+ fontCache: 'none',
38
+ });
39
+ const adaptor = new ManuscriptsHTMLAdaptor(window);
40
+ const doc = new HTMLDocument_1.HTMLDocument(document, adaptor, {
41
+ InputJax,
42
+ OutputJax,
43
+ });
44
+ doc.addStyleSheet();
45
+ const convertTeXToSVG = (tex, display) => {
46
+ const item = doc.convert(tex, {
47
+ display,
48
+ em: 16,
49
+ ex: 8,
50
+ containerWidth: 1000000,
51
+ lineWidth: 1000000,
52
+ scale: 1,
53
+ });
54
+ if (!item || !item.firstChild) {
55
+ return null;
56
+ }
57
+ return transformer_1.xmlSerializer.serializeToString(item.firstChild);
58
+ };
59
+ exports.convertTeXToSVG = convertTeXToSVG;
@@ -87,7 +87,6 @@ const table_1 = require("./nodes/table");
87
87
  const table_col_1 = require("./nodes/table_col");
88
88
  const table_element_1 = require("./nodes/table_element");
89
89
  const table_element_footer_1 = require("./nodes/table_element_footer");
90
- const table_row_1 = require("./nodes/table_row");
91
90
  const text_1 = require("./nodes/text");
92
91
  const title_1 = require("./nodes/title");
93
92
  const toc_element_1 = require("./nodes/toc_element");
@@ -117,6 +116,7 @@ __exportStar(require("./nodes/footnotes_section"), exports);
117
116
  __exportStar(require("./nodes/graphical_abstract_section"), exports);
118
117
  __exportStar(require("./nodes/hard_break"), exports);
119
118
  __exportStar(require("./nodes/highlight_marker"), exports);
119
+ __exportStar(require("./nodes/inline_equation"), exports);
120
120
  __exportStar(require("./nodes/inline_footnote"), exports);
121
121
  __exportStar(require("./nodes/keyword"), exports);
122
122
  __exportStar(require("./nodes/keywords_element"), exports);
@@ -136,7 +136,6 @@ __exportStar(require("./nodes/section_title"), exports);
136
136
  __exportStar(require("./nodes/table"), exports);
137
137
  __exportStar(require("./nodes/table_col"), exports);
138
138
  __exportStar(require("./nodes/table_element"), exports);
139
- __exportStar(require("./nodes/table_row"), exports);
140
139
  __exportStar(require("./nodes/text"), exports);
141
140
  __exportStar(require("./nodes/toc_element"), exports);
142
141
  __exportStar(require("./nodes/toc_section"), exports);
@@ -212,10 +211,9 @@ exports.schema = new prosemirror_model_1.Schema({
212
211
  section_title: section_title_1.sectionTitle,
213
212
  section_title_plain: section_title_1.sectionTitle,
214
213
  table: table_1.table,
215
- table_body: table_1.tableBody,
216
- table_cell: table_row_1.tableCell,
214
+ table_cell: table_1.tableCell,
217
215
  table_element: table_element_1.tableElement,
218
- table_row: table_row_1.tableRow,
216
+ table_row: table_1.tableRow,
219
217
  table_col: table_col_1.tableCol,
220
218
  table_colgroup: table_col_1.tableColGroup,
221
219
  text: text_1.text,
@@ -229,5 +227,6 @@ exports.schema = new prosemirror_model_1.Schema({
229
227
  contributors: contributors_1.contributors,
230
228
  supplements: supplements_1.supplements,
231
229
  supplement: supplement_1.supplement,
230
+ table_header: table_1.tableHeader,
232
231
  },
233
232
  });
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*!
3
- * © 2023 Atypon Systems LLC
3
+ * © 2019 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,8 +20,9 @@ const json_schema_1 = require("@manuscripts/json-schema");
20
20
  exports.equation = {
21
21
  attrs: {
22
22
  id: { default: '' },
23
- contents: { default: '' },
24
- format: { default: '' },
23
+ MathMLStringRepresentation: { default: '' },
24
+ SVGStringRepresentation: { default: '' },
25
+ TeXRepresentation: { default: '' },
25
26
  dataTracked: { default: null },
26
27
  },
27
28
  group: 'block',
@@ -29,25 +30,26 @@ exports.equation = {
29
30
  {
30
31
  tag: `div.${json_schema_1.ObjectTypes.Equation}`,
31
32
  getAttrs: (p) => {
32
- const htmlEl = p;
33
+ const dom = p;
33
34
  return {
34
- id: htmlEl.getAttribute('id'),
35
- format: htmlEl.getAttribute('data-equation-format'),
36
- contents: htmlEl.innerHTML,
35
+ id: dom.getAttribute('id'),
36
+ MathMLStringRepresentation: dom.getAttribute('data-mathml-string-representation'),
37
+ SVGStringRepresentation: dom.innerHTML,
38
+ TeXRepresentation: dom.getAttribute('data-tex-representation'),
37
39
  };
38
40
  },
39
41
  },
40
42
  ],
41
43
  toDOM: (node) => {
42
44
  const equationNode = node;
43
- const { id, contents, format } = equationNode.attrs;
44
45
  const dom = document.createElement('div');
46
+ dom.setAttribute('id', equationNode.attrs.id);
45
47
  dom.classList.add(json_schema_1.ObjectTypes.Equation);
46
- dom.setAttribute('id', id);
47
- if (format) {
48
- dom.setAttribute('data-equation-format', format);
48
+ if (equationNode.attrs.MathMLStringRepresentation) {
49
+ dom.setAttribute('data-mathml-string-representation', equationNode.attrs.MathMLStringRepresentation);
49
50
  }
50
- dom.innerHTML = contents;
51
+ dom.setAttribute('data-tex-representation', equationNode.attrs.TeXRepresentation);
52
+ dom.innerHTML = equationNode.attrs.SVGStringRepresentation;
51
53
  return dom;
52
54
  },
53
55
  };
@@ -17,10 +17,11 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.equationElement = void 0;
19
19
  exports.equationElement = {
20
- content: '(equation | placeholder)',
20
+ content: '(equation | placeholder) figcaption',
21
21
  attrs: {
22
22
  id: { default: '' },
23
- label: { default: '' },
23
+ suppressCaption: { default: true },
24
+ suppressTitle: { default: undefined },
24
25
  dataTracked: { default: null },
25
26
  comments: { default: null },
26
27
  },
@@ -28,7 +29,7 @@ exports.equationElement = {
28
29
  group: 'block element',
29
30
  parseDOM: [
30
31
  {
31
- tag: 'div.equation',
32
+ tag: 'figure.equation',
32
33
  getAttrs: (p) => {
33
34
  const dom = p;
34
35
  return {
@@ -40,7 +41,7 @@ exports.equationElement = {
40
41
  toDOM: (node) => {
41
42
  const equationElementNode = node;
42
43
  return [
43
- 'div',
44
+ 'figure',
44
45
  {
45
46
  class: 'equation',
46
47
  id: equationElementNode.attrs.id,