@manuscripts/transform 2.1.1-LEAN-3095 → 2.1.1-LEAN-3336-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/jats/importer/jats-body-dom-parser.js +73 -25
- package/dist/cjs/jats/jats-exporter.js +42 -18
- package/dist/cjs/mathjax/index.js +41 -0
- package/dist/cjs/mathjax/mathjax-packages.js +20 -0
- package/dist/cjs/mathjax/mathml-to-svg.js +70 -0
- package/dist/cjs/mathjax/tex-to-mathml.js +49 -0
- package/dist/cjs/mathjax/tex-to-svg.js +59 -0
- package/dist/cjs/schema/index.js +2 -1
- package/dist/cjs/schema/nodes/equation.js +14 -12
- package/dist/cjs/schema/nodes/equation_element.js +5 -4
- package/dist/cjs/schema/nodes/inline_equation.js +16 -12
- package/dist/cjs/schema/nodes/table.js +2 -15
- package/dist/cjs/schema/nodes/table_row.js +7 -6
- package/dist/cjs/transformer/builders.js +8 -1
- package/dist/cjs/transformer/decode.js +7 -4
- package/dist/cjs/transformer/encode.js +25 -22
- package/dist/cjs/transformer/node-types.js +1 -0
- package/dist/cjs/transformer/object-types.js +1 -0
- package/dist/es/index.js +1 -0
- package/dist/es/jats/importer/jats-body-dom-parser.js +74 -26
- package/dist/es/jats/jats-exporter.js +42 -18
- package/dist/es/mathjax/index.js +12 -0
- package/dist/es/mathjax/mathjax-packages.js +17 -0
- package/dist/es/mathjax/mathml-to-svg.js +66 -0
- package/dist/es/mathjax/tex-to-mathml.js +45 -0
- package/dist/es/mathjax/tex-to-svg.js +55 -0
- package/dist/es/schema/index.js +4 -3
- package/dist/es/schema/nodes/equation.js +14 -12
- package/dist/es/schema/nodes/equation_element.js +5 -4
- package/dist/es/schema/nodes/inline_equation.js +16 -12
- package/dist/es/schema/nodes/table.js +1 -14
- package/dist/es/schema/nodes/table_row.js +6 -5
- package/dist/es/transformer/builders.js +6 -0
- package/dist/es/transformer/decode.js +7 -4
- package/dist/es/transformer/encode.js +25 -22
- package/dist/es/transformer/node-types.js +1 -0
- package/dist/es/transformer/object-types.js +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/mathjax/index.d.ts +3 -0
- package/dist/types/mathjax/mathjax-packages.d.ts +16 -0
- package/dist/types/mathjax/mathml-to-svg.d.ts +17 -0
- package/dist/types/mathjax/tex-to-mathml.d.ts +17 -0
- package/dist/types/mathjax/tex-to-svg.d.ts +17 -0
- package/dist/types/schema/index.d.ts +1 -0
- package/dist/types/schema/nodes/equation.d.ts +4 -3
- package/dist/types/schema/nodes/equation_element.d.ts +2 -1
- package/dist/types/schema/nodes/inline_equation.d.ts +4 -4
- package/dist/types/schema/nodes/table.d.ts +0 -1
- package/dist/types/schema/nodes/table_row.d.ts +1 -0
- package/dist/types/schema/types.d.ts +1 -1
- package/dist/types/transformer/builders.d.ts +2 -1
- package/package.json +4 -3
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
|
-
|
|
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
|
-
|
|
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 =
|
|
184
|
-
|
|
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(
|
|
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: '
|
|
571
|
+
node: 'table_header',
|
|
524
572
|
getAttrs: (node) => {
|
|
525
573
|
const element = node;
|
|
526
574
|
const colspan = element.getAttribute('colspan');
|
|
@@ -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
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
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;
|
package/dist/cjs/schema/index.js
CHANGED
|
@@ -117,6 +117,7 @@ __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);
|
|
120
121
|
__exportStar(require("./nodes/inline_footnote"), exports);
|
|
121
122
|
__exportStar(require("./nodes/keyword"), exports);
|
|
122
123
|
__exportStar(require("./nodes/keywords_element"), exports);
|
|
@@ -212,7 +213,6 @@ exports.schema = new prosemirror_model_1.Schema({
|
|
|
212
213
|
section_title: section_title_1.sectionTitle,
|
|
213
214
|
section_title_plain: section_title_1.sectionTitle,
|
|
214
215
|
table: table_1.table,
|
|
215
|
-
table_body: table_1.tableBody,
|
|
216
216
|
table_cell: table_row_1.tableCell,
|
|
217
217
|
table_element: table_element_1.tableElement,
|
|
218
218
|
table_row: table_row_1.tableRow,
|
|
@@ -229,5 +229,6 @@ exports.schema = new prosemirror_model_1.Schema({
|
|
|
229
229
|
contributors: contributors_1.contributors,
|
|
230
230
|
supplements: supplements_1.supplements,
|
|
231
231
|
supplement: supplement_1.supplement,
|
|
232
|
+
table_header: table_row_1.tableHeader,
|
|
232
233
|
},
|
|
233
234
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*!
|
|
3
|
-
* ©
|
|
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
|
-
|
|
24
|
-
|
|
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
|
|
33
|
+
const dom = p;
|
|
33
34
|
return {
|
|
34
|
-
id:
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
47
|
-
|
|
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.
|
|
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
|
-
|
|
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: '
|
|
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
|
-
'
|
|
44
|
+
'figure',
|
|
44
45
|
{
|
|
45
46
|
class: 'equation',
|
|
46
47
|
id: equationElementNode.attrs.id,
|
|
@@ -16,39 +16,43 @@
|
|
|
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");
|
|
19
20
|
exports.inlineEquation = {
|
|
20
21
|
attrs: {
|
|
22
|
+
id: { default: '' },
|
|
23
|
+
MathMLRepresentation: { default: '' },
|
|
24
|
+
SVGRepresentation: { default: '' },
|
|
25
|
+
TeXRepresentation: { default: '' },
|
|
21
26
|
dataTracked: { default: null },
|
|
22
|
-
comments: { default: null },
|
|
23
|
-
contents: { default: '' },
|
|
24
|
-
format: { default: '' },
|
|
25
27
|
},
|
|
26
|
-
selectable: false,
|
|
27
28
|
atom: true,
|
|
28
29
|
inline: true,
|
|
29
30
|
draggable: true,
|
|
30
31
|
group: 'inline',
|
|
31
32
|
parseDOM: [
|
|
32
33
|
{
|
|
33
|
-
tag: `span.
|
|
34
|
+
tag: `span.${json_schema_1.ObjectTypes.InlineMathFragment}`,
|
|
34
35
|
getAttrs: (p) => {
|
|
35
36
|
const dom = p;
|
|
36
37
|
return {
|
|
37
|
-
|
|
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
42
|
};
|
|
40
43
|
},
|
|
41
44
|
},
|
|
42
45
|
],
|
|
43
46
|
toDOM: (node) => {
|
|
44
47
|
const inlineEquationNode = node;
|
|
45
|
-
const { contents, format } = inlineEquationNode.attrs;
|
|
46
48
|
const dom = document.createElement('span');
|
|
47
|
-
dom.classList.add(
|
|
48
|
-
|
|
49
|
-
|
|
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);
|
|
50
54
|
}
|
|
51
|
-
dom.innerHTML =
|
|
55
|
+
dom.innerHTML = inlineEquationNode.attrs.SVGRepresentation;
|
|
52
56
|
return dom;
|
|
53
57
|
},
|
|
54
58
|
};
|