@pie-lib/math-rendering-accessible 3.4.0-beta.0
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/CHANGELOG.json +1 -0
- package/CHANGELOG.md +16 -0
- package/LICENSE.md +5 -0
- package/NEXT.CHANGELOG.json +1 -0
- package/lib/__tests__/mml-to-latex.test.js +18 -0
- package/lib/__tests__/normalization.test.js +54 -0
- package/lib/__tests__/render-math.test.js +84 -0
- package/lib/index.js +38 -0
- package/lib/mathjax-script.js +2 -0
- package/lib/mml-to-latex.js +15 -0
- package/lib/mstack/__tests__/chtml.test.js +151 -0
- package/lib/mstack/chtml.js +296 -0
- package/lib/mstack/index.js +23 -0
- package/lib/mstack/mml.js +109 -0
- package/lib/normalization.js +95 -0
- package/lib/render-math.js +475 -0
- package/package.json +20 -0
- package/src/__tests__/mml-to-latex.test.js +13 -0
- package/src/__tests__/normalization.test.js +51 -0
- package/src/__tests__/render-math.test.js +76 -0
- package/src/index.js +5 -0
- package/src/mathjax-script.js +0 -0
- package/src/mml-to-latex.js +2 -0
- package/src/mstack/__tests__/__snapshots__/chtml.test.js.snap +9 -0
- package/src/mstack/__tests__/chtml.test.js +104 -0
- package/src/mstack/chtml.js +220 -0
- package/src/mstack/index.js +13 -0
- package/src/mstack/mml.js +24 -0
- package/src/normalization.js +69 -0
- package/src/render-math.js +450 -0
package/CHANGELOG.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
+
|
|
6
|
+
# 3.4.0-beta.0 (2025-07-15)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-lib/math-rendering-accessible
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# 3.3.0-beta.0 (2025-07-15)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @pie-lib/math-rendering-accessible
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Copyright 2019 CoreSpring Inc
|
|
2
|
+
|
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
|
4
|
+
|
|
5
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _mmlToLatex = _interopRequireDefault(require("../mml-to-latex"));
|
|
8
|
+
|
|
9
|
+
describe('mmlToLatex', function () {
|
|
10
|
+
it('should work', function () {
|
|
11
|
+
var mml = '<math xmlns="http://www.w3.org/1998/Math/MathML"> <mn>2</mn> <mi>x</mi> <mtext> </mtext> <mo>≤</mo> <mn>4</mn> <mi>y</mi> <mtext> </mtext> <mo>+</mo> <mtext> </mtext> <mn>8</mn> <msqrt> <mi>h</mi> </msqrt></math>'; // todo revisit this
|
|
12
|
+
// const latex = '2x\\text{ }\\leq4y\\text{ }+\\text{ }8\\sqrt{h}';
|
|
13
|
+
|
|
14
|
+
var latex = '2 x \\textrm{ } \\leq 4 y \\textrm{ } + \\textrm{ } 8 \\sqrt{h}';
|
|
15
|
+
expect((0, _mmlToLatex["default"])(mml)).toEqual(latex);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbW1sLXRvLWxhdGV4LnRlc3QuanMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsIm1tbCIsImxhdGV4IiwiZXhwZWN0IiwidG9FcXVhbCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztBQUNBOztBQUNBQSxRQUFRLENBQUMsWUFBRCxFQUFlLFlBQU07QUFDM0JDLEVBQUFBLEVBQUUsQ0FBQyxhQUFELEVBQWdCLFlBQU07QUFDdEIsUUFBTUMsR0FBRyxHQUNQLDBQQURGLENBRHNCLENBR3RCO0FBQ0E7O0FBQ0EsUUFBTUMsS0FBSyxHQUFHLGlFQUFkO0FBRUFDLElBQUFBLE1BQU0sQ0FBQyw0QkFBV0YsR0FBWCxDQUFELENBQU4sQ0FBd0JHLE9BQXhCLENBQWdDRixLQUFoQztBQUNELEdBUkMsQ0FBRjtBQVNELENBVk8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW1sVG9MYXRleCBmcm9tICcuLi9tbWwtdG8tbGF0ZXgnO1xuZGVzY3JpYmUoJ21tbFRvTGF0ZXgnLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgd29yaycsICgpID0+IHtcbiAgICBjb25zdCBtbWwgPVxuICAgICAgJzxtYXRoIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiPiAgPG1uPjI8L21uPiAgPG1pPng8L21pPiAgPG10ZXh0PiYjeEEwOzwvbXRleHQ+ICA8bW8+JiN4MjI2NDs8L21vPiAgPG1uPjQ8L21uPiAgPG1pPnk8L21pPiAgPG10ZXh0PiYjeEEwOzwvbXRleHQ+ICA8bW8+KzwvbW8+ICA8bXRleHQ+JiN4QTA7PC9tdGV4dD4gIDxtbj44PC9tbj4gPG1zcXJ0PiAgICA8bWk+aDwvbWk+ICA8L21zcXJ0PjwvbWF0aD4nO1xuICAgIC8vIHRvZG8gcmV2aXNpdCB0aGlzXG4gICAgLy8gY29uc3QgbGF0ZXggPSAnMnhcXFxcdGV4dHsgfVxcXFxsZXE0eVxcXFx0ZXh0eyB9K1xcXFx0ZXh0eyB9OFxcXFxzcXJ0e2h9JztcbiAgICBjb25zdCBsYXRleCA9ICcyIHggXFxcXHRleHRybXsgfSBcXFxcbGVxIDQgeSBcXFxcdGV4dHJteyB9ICsgXFxcXHRleHRybXsgfSA4IFxcXFxzcXJ0e2h9JztcblxuICAgIGV4cGVjdChtbWxUb0xhdGV4KG1tbCkpLnRvRXF1YWwobGF0ZXgpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
8
|
+
|
|
9
|
+
var _slate = require("slate");
|
|
10
|
+
|
|
11
|
+
var _normalization = require("../normalization");
|
|
12
|
+
|
|
13
|
+
var log = (0, _debug["default"])('@pie-lib:math-rendering:test:normalization');
|
|
14
|
+
describe('normalization', function () {
|
|
15
|
+
describe('unWrapMath', function () {
|
|
16
|
+
var assertUnWrap = function assertUnWrap(html, expected, wrapType) {
|
|
17
|
+
it("innerHTML: ".concat(html, " is unWrapped to: ").concat(expected, " with wrapType: ").concat(wrapType), function () {
|
|
18
|
+
var out = (0, _normalization.unWrapMath)(html);
|
|
19
|
+
expect(out).toEqual({
|
|
20
|
+
unwrapped: expected,
|
|
21
|
+
wrapType: wrapType
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
assertUnWrap('$$<$$', '<', _normalization.BracketTypes.DOLLAR);
|
|
27
|
+
assertUnWrap('$<$', '<', _normalization.BracketTypes.DOLLAR);
|
|
28
|
+
assertUnWrap('\\(<\\)', '<', _normalization.BracketTypes.ROUND_BRACKETS);
|
|
29
|
+
assertUnWrap('\\[<\\]', '<', _normalization.BracketTypes.ROUND_BRACKETS);
|
|
30
|
+
assertUnWrap('latex', 'latex', _normalization.BracketTypes.ROUND_BRACKETS);
|
|
31
|
+
assertUnWrap('\\displaystyle foo', 'foo', _normalization.BracketTypes.ROUND_BRACKETS);
|
|
32
|
+
});
|
|
33
|
+
describe('wrapMath', function () {
|
|
34
|
+
var assertWrap = function assertWrap(latex, expectedHtml, wrapper) {
|
|
35
|
+
wrapper = wrapper || _normalization.BracketTypes.ROUND_BRACKETS;
|
|
36
|
+
it("".concat(latex, " is wrapped to: ").concat(expectedHtml), function () {
|
|
37
|
+
var out = (0, _normalization.wrapMath)(latex, wrapper);
|
|
38
|
+
log('out: ', out);
|
|
39
|
+
expect(out).toEqual(expectedHtml);
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
assertWrap('latex', '\\(latex\\)', _normalization.BracketTypes.ROUND_BRACKETS);
|
|
44
|
+
assertWrap('latex', '\\(latex\\)', _normalization.BracketTypes.SQUARE_BRACKETS);
|
|
45
|
+
assertWrap('latex', '$latex$', _normalization.BracketTypes.DOLLAR);
|
|
46
|
+
assertWrap('latex', '$latex$', _normalization.BracketTypes.DOUBLE_DOLLAR);
|
|
47
|
+
/**
|
|
48
|
+
* Note that when this is converted to html it get's escaped - but that's an issue with the slate html-serializer.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
assertWrap('<', '\\(<\\)');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbm9ybWFsaXphdGlvbi50ZXN0LmpzIl0sIm5hbWVzIjpbImxvZyIsImRlc2NyaWJlIiwiYXNzZXJ0VW5XcmFwIiwiaHRtbCIsImV4cGVjdGVkIiwid3JhcFR5cGUiLCJpdCIsIm91dCIsImV4cGVjdCIsInRvRXF1YWwiLCJ1bndyYXBwZWQiLCJCcmFja2V0VHlwZXMiLCJET0xMQVIiLCJST1VORF9CUkFDS0VUUyIsImFzc2VydFdyYXAiLCJsYXRleCIsImV4cGVjdGVkSHRtbCIsIndyYXBwZXIiLCJTUVVBUkVfQlJBQ0tFVFMiLCJET1VCTEVfRE9MTEFSIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLHVCQUFNLDRDQUFOLENBQVo7QUFFQUMsUUFBUSxDQUFDLGVBQUQsRUFBa0IsWUFBTTtBQUM5QkEsRUFBQUEsUUFBUSxDQUFDLFlBQUQsRUFBZSxZQUFNO0FBQzNCLFFBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUNDLElBQUQsRUFBT0MsUUFBUCxFQUFpQkMsUUFBakIsRUFBOEI7QUFDakRDLE1BQUFBLEVBQUUsc0JBQWVILElBQWYsK0JBQXdDQyxRQUF4Qyw2QkFBbUVDLFFBQW5FLEdBQStFLFlBQU07QUFDckYsWUFBTUUsR0FBRyxHQUFHLCtCQUFXSixJQUFYLENBQVo7QUFFQUssUUFBQUEsTUFBTSxDQUFDRCxHQUFELENBQU4sQ0FBWUUsT0FBWixDQUFvQjtBQUNsQkMsVUFBQUEsU0FBUyxFQUFFTixRQURPO0FBRWxCQyxVQUFBQSxRQUFRLEVBQUVBO0FBRlEsU0FBcEI7QUFJRCxPQVBDLENBQUY7QUFRRCxLQVREOztBQVdBSCxJQUFBQSxZQUFZLENBQUMsT0FBRCxFQUFVLEdBQVYsRUFBZVMsNEJBQWFDLE1BQTVCLENBQVo7QUFDQVYsSUFBQUEsWUFBWSxDQUFDLEtBQUQsRUFBUSxHQUFSLEVBQWFTLDRCQUFhQyxNQUExQixDQUFaO0FBQ0FWLElBQUFBLFlBQVksQ0FBQyxTQUFELEVBQVksR0FBWixFQUFpQlMsNEJBQWFFLGNBQTlCLENBQVo7QUFDQVgsSUFBQUEsWUFBWSxDQUFDLFNBQUQsRUFBWSxHQUFaLEVBQWlCUyw0QkFBYUUsY0FBOUIsQ0FBWjtBQUNBWCxJQUFBQSxZQUFZLENBQUMsT0FBRCxFQUFVLE9BQVYsRUFBbUJTLDRCQUFhRSxjQUFoQyxDQUFaO0FBQ0FYLElBQUFBLFlBQVksQ0FBQyxvQkFBRCxFQUF1QixLQUF2QixFQUE4QlMsNEJBQWFFLGNBQTNDLENBQVo7QUFDRCxHQWxCTyxDQUFSO0FBb0JBWixFQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekIsUUFBTWEsVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBQ0MsS0FBRCxFQUFRQyxZQUFSLEVBQXNCQyxPQUF0QixFQUFrQztBQUNuREEsTUFBQUEsT0FBTyxHQUFHQSxPQUFPLElBQUlOLDRCQUFhRSxjQUFsQztBQUNBUCxNQUFBQSxFQUFFLFdBQUlTLEtBQUosNkJBQTRCQyxZQUE1QixHQUE0QyxZQUFNO0FBQ2xELFlBQU1ULEdBQUcsR0FBRyw2QkFBU1EsS0FBVCxFQUFnQkUsT0FBaEIsQ0FBWjtBQUVBakIsUUFBQUEsR0FBRyxDQUFDLE9BQUQsRUFBVU8sR0FBVixDQUFIO0FBRUFDLFFBQUFBLE1BQU0sQ0FBQ0QsR0FBRCxDQUFOLENBQVlFLE9BQVosQ0FBb0JPLFlBQXBCO0FBQ0QsT0FOQyxDQUFGO0FBT0QsS0FURDs7QUFXQUYsSUFBQUEsVUFBVSxDQUFDLE9BQUQsRUFBVSxhQUFWLEVBQXlCSCw0QkFBYUUsY0FBdEMsQ0FBVjtBQUNBQyxJQUFBQSxVQUFVLENBQUMsT0FBRCxFQUFVLGFBQVYsRUFBeUJILDRCQUFhTyxlQUF0QyxDQUFWO0FBQ0FKLElBQUFBLFVBQVUsQ0FBQyxPQUFELEVBQVUsU0FBVixFQUFxQkgsNEJBQWFDLE1BQWxDLENBQVY7QUFDQUUsSUFBQUEsVUFBVSxDQUFDLE9BQUQsRUFBVSxTQUFWLEVBQXFCSCw0QkFBYVEsYUFBbEMsQ0FBVjtBQUVBO0FBQ0o7QUFDQTs7QUFDSUwsSUFBQUEsVUFBVSxDQUFDLEdBQUQsRUFBTSxTQUFOLENBQVY7QUFDRCxHQXJCTyxDQUFSO0FBc0JELENBM0NPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IERhdGEgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBCcmFja2V0VHlwZXMsIHdyYXBNYXRoLCB1bldyYXBNYXRoIH0gZnJvbSAnLi4vbm9ybWFsaXphdGlvbic7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjptYXRoLXJlbmRlcmluZzp0ZXN0Om5vcm1hbGl6YXRpb24nKTtcblxuZGVzY3JpYmUoJ25vcm1hbGl6YXRpb24nLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCd1bldyYXBNYXRoJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydFVuV3JhcCA9IChodG1sLCBleHBlY3RlZCwgd3JhcFR5cGUpID0+IHtcbiAgICAgIGl0KGBpbm5lckhUTUw6ICR7aHRtbH0gaXMgdW5XcmFwcGVkIHRvOiAke2V4cGVjdGVkfSB3aXRoIHdyYXBUeXBlOiAke3dyYXBUeXBlfWAsICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3V0ID0gdW5XcmFwTWF0aChodG1sKTtcblxuICAgICAgICBleHBlY3Qob3V0KS50b0VxdWFsKHtcbiAgICAgICAgICB1bndyYXBwZWQ6IGV4cGVjdGVkLFxuICAgICAgICAgIHdyYXBUeXBlOiB3cmFwVHlwZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXNzZXJ0VW5XcmFwKCckJDwkJCcsICc8JywgQnJhY2tldFR5cGVzLkRPTExBUik7XG4gICAgYXNzZXJ0VW5XcmFwKCckPCQnLCAnPCcsIEJyYWNrZXRUeXBlcy5ET0xMQVIpO1xuICAgIGFzc2VydFVuV3JhcCgnXFxcXCg8XFxcXCknLCAnPCcsIEJyYWNrZXRUeXBlcy5ST1VORF9CUkFDS0VUUyk7XG4gICAgYXNzZXJ0VW5XcmFwKCdcXFxcWzxcXFxcXScsICc8JywgQnJhY2tldFR5cGVzLlJPVU5EX0JSQUNLRVRTKTtcbiAgICBhc3NlcnRVbldyYXAoJ2xhdGV4JywgJ2xhdGV4JywgQnJhY2tldFR5cGVzLlJPVU5EX0JSQUNLRVRTKTtcbiAgICBhc3NlcnRVbldyYXAoJ1xcXFxkaXNwbGF5c3R5bGUgZm9vJywgJ2ZvbycsIEJyYWNrZXRUeXBlcy5ST1VORF9CUkFDS0VUUyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3cmFwTWF0aCcsICgpID0+IHtcbiAgICBjb25zdCBhc3NlcnRXcmFwID0gKGxhdGV4LCBleHBlY3RlZEh0bWwsIHdyYXBwZXIpID0+IHtcbiAgICAgIHdyYXBwZXIgPSB3cmFwcGVyIHx8IEJyYWNrZXRUeXBlcy5ST1VORF9CUkFDS0VUUztcbiAgICAgIGl0KGAke2xhdGV4fSBpcyB3cmFwcGVkIHRvOiAke2V4cGVjdGVkSHRtbH1gLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG91dCA9IHdyYXBNYXRoKGxhdGV4LCB3cmFwcGVyKTtcblxuICAgICAgICBsb2coJ291dDogJywgb3V0KTtcblxuICAgICAgICBleHBlY3Qob3V0KS50b0VxdWFsKGV4cGVjdGVkSHRtbCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXNzZXJ0V3JhcCgnbGF0ZXgnLCAnXFxcXChsYXRleFxcXFwpJywgQnJhY2tldFR5cGVzLlJPVU5EX0JSQUNLRVRTKTtcbiAgICBhc3NlcnRXcmFwKCdsYXRleCcsICdcXFxcKGxhdGV4XFxcXCknLCBCcmFja2V0VHlwZXMuU1FVQVJFX0JSQUNLRVRTKTtcbiAgICBhc3NlcnRXcmFwKCdsYXRleCcsICckbGF0ZXgkJywgQnJhY2tldFR5cGVzLkRPTExBUik7XG4gICAgYXNzZXJ0V3JhcCgnbGF0ZXgnLCAnJGxhdGV4JCcsIEJyYWNrZXRUeXBlcy5ET1VCTEVfRE9MTEFSKTtcblxuICAgIC8qKlxuICAgICAqIE5vdGUgdGhhdCB3aGVuIHRoaXMgaXMgY29udmVydGVkIHRvIGh0bWwgaXQgZ2V0J3MgZXNjYXBlZCAtIGJ1dCB0aGF0J3MgYW4gaXNzdWUgd2l0aCB0aGUgc2xhdGUgaHRtbC1zZXJpYWxpemVyLlxuICAgICAqL1xuICAgIGFzc2VydFdyYXAoJzwnLCAnXFxcXCg8XFxcXCknKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
|
|
11
|
+
var _enzyme = require("enzyme");
|
|
12
|
+
|
|
13
|
+
var _renderMath = _interopRequireWildcard(require("../render-math"));
|
|
14
|
+
|
|
15
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
16
|
+
|
|
17
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
|
+
|
|
19
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
20
|
+
|
|
21
|
+
// import * as MathJaxModule from '../mathjax-script';
|
|
22
|
+
jest.mock('../mathjax-script', function () {
|
|
23
|
+
return {
|
|
24
|
+
initializeMathJax: jest.fn()
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
describe('render-math', function () {
|
|
28
|
+
beforeEach(function () {
|
|
29
|
+
var _global$window$MathJa;
|
|
30
|
+
|
|
31
|
+
// Reset the mocks before each test
|
|
32
|
+
jest.resetAllMocks(); // Mock window.MathJax and window.mathjaxLoadedP
|
|
33
|
+
|
|
34
|
+
global.window.MathJax = (_global$window$MathJa = {
|
|
35
|
+
typeset: jest.fn(),
|
|
36
|
+
texReset: jest.fn(),
|
|
37
|
+
typesetClear: jest.fn()
|
|
38
|
+
}, (0, _defineProperty2["default"])(_global$window$MathJa, "typeset", jest.fn()), (0, _defineProperty2["default"])(_global$window$MathJa, "typesetPromise", jest.fn(function () {
|
|
39
|
+
return Promise.resolve();
|
|
40
|
+
})), _global$window$MathJa);
|
|
41
|
+
global.window.mathjaxLoadedP = Promise.resolve();
|
|
42
|
+
});
|
|
43
|
+
it('calls initializeMathJax once without @pie-lib/math-rendering@2', function () {
|
|
44
|
+
var _global$window$MathJa2;
|
|
45
|
+
|
|
46
|
+
jest.useFakeTimers();
|
|
47
|
+
var div = document.createElement('div');
|
|
48
|
+
delete window['@pie-lib/math-rendering@2']; // Initialize as undefined for the first call
|
|
49
|
+
|
|
50
|
+
global.window.MathJax = undefined;
|
|
51
|
+
global.window.mathjaxLoadedP = undefined; // Call renderMath once to initialize MathJax
|
|
52
|
+
|
|
53
|
+
(0, _renderMath["default"])(div); // Subsequent calls should not re-initialize MathJax
|
|
54
|
+
|
|
55
|
+
global.window.MathJax = (_global$window$MathJa2 = {
|
|
56
|
+
typeset: jest.fn(),
|
|
57
|
+
texReset: jest.fn(),
|
|
58
|
+
typesetClear: jest.fn()
|
|
59
|
+
}, (0, _defineProperty2["default"])(_global$window$MathJa2, "typeset", jest.fn()), (0, _defineProperty2["default"])(_global$window$MathJa2, "typesetPromise", jest.fn(function () {
|
|
60
|
+
return Promise.resolve();
|
|
61
|
+
})), _global$window$MathJa2);
|
|
62
|
+
global.window.mathjaxLoadedP = Promise.resolve(); // Call renderMath 9 more times
|
|
63
|
+
|
|
64
|
+
_lodash["default"].times(9).forEach(function (i) {
|
|
65
|
+
return (0, _renderMath["default"])(div);
|
|
66
|
+
}); // setTimeout(() => {
|
|
67
|
+
// expect(MathJaxModule.initializeMathJax).toHaveBeenCalledTimes(1);
|
|
68
|
+
// }, 500);
|
|
69
|
+
|
|
70
|
+
});
|
|
71
|
+
it('does not call initializeMathJax when @pie-lib/math-rendering@2 is present', function () {
|
|
72
|
+
var div = document.createElement('div');
|
|
73
|
+
(0, _renderMath["default"])(div); // expect(MathJaxModule.initializeMathJax).not.toHaveBeenCalled();
|
|
74
|
+
});
|
|
75
|
+
it('wraps the math containing element the right way', function () {
|
|
76
|
+
var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", {
|
|
77
|
+
"data-latex": ""
|
|
78
|
+
}, '420\\text{ cm}=4.2\\text{ meters}')));
|
|
79
|
+
var spanElem = wrapper.instance();
|
|
80
|
+
(0, _renderMath.fixMathElement)(spanElem);
|
|
81
|
+
expect(spanElem.textContent).toEqual('\\(420\\text{ cm}=4.2\\text{ meters}\\)');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcmVuZGVyLW1hdGgudGVzdC5qcyJdLCJuYW1lcyI6WyJqZXN0IiwibW9jayIsImluaXRpYWxpemVNYXRoSmF4IiwiZm4iLCJkZXNjcmliZSIsImJlZm9yZUVhY2giLCJyZXNldEFsbE1vY2tzIiwiZ2xvYmFsIiwid2luZG93IiwiTWF0aEpheCIsInR5cGVzZXQiLCJ0ZXhSZXNldCIsInR5cGVzZXRDbGVhciIsIlByb21pc2UiLCJyZXNvbHZlIiwibWF0aGpheExvYWRlZFAiLCJpdCIsInVzZUZha2VUaW1lcnMiLCJkaXYiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1bmRlZmluZWQiLCJfIiwidGltZXMiLCJmb3JFYWNoIiwiaSIsIndyYXBwZXIiLCJzcGFuRWxlbSIsImluc3RhbmNlIiwiZXhwZWN0IiwidGV4dENvbnRlbnQiLCJ0b0VxdWFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7QUFEQTtBQUdBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSxtQkFBVixFQUErQjtBQUFBLFNBQU87QUFDcENDLElBQUFBLGlCQUFpQixFQUFFRixJQUFJLENBQUNHLEVBQUw7QUFEaUIsR0FBUDtBQUFBLENBQS9CO0FBSUFDLFFBQVEsQ0FBQyxhQUFELEVBQWdCLFlBQU07QUFDNUJDLEVBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQUE7O0FBQ2Y7QUFDQUwsSUFBQUEsSUFBSSxDQUFDTSxhQUFMLEdBRmUsQ0FHZjs7QUFDQUMsSUFBQUEsTUFBTSxDQUFDQyxNQUFQLENBQWNDLE9BQWQ7QUFDRUMsTUFBQUEsT0FBTyxFQUFFVixJQUFJLENBQUNHLEVBQUwsRUFEWDtBQUVFUSxNQUFBQSxRQUFRLEVBQUVYLElBQUksQ0FBQ0csRUFBTCxFQUZaO0FBR0VTLE1BQUFBLFlBQVksRUFBRVosSUFBSSxDQUFDRyxFQUFMO0FBSGhCLDBFQUlXSCxJQUFJLENBQUNHLEVBQUwsRUFKWCw2RUFLa0JILElBQUksQ0FBQ0csRUFBTCxDQUFRO0FBQUEsYUFBTVUsT0FBTyxDQUFDQyxPQUFSLEVBQU47QUFBQSxLQUFSLENBTGxCO0FBT0FQLElBQUFBLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjTyxjQUFkLEdBQStCRixPQUFPLENBQUNDLE9BQVIsRUFBL0I7QUFDRCxHQVpTLENBQVY7QUFjQUUsRUFBQUEsRUFBRSxDQUFDLGdFQUFELEVBQW1FLFlBQU07QUFBQTs7QUFDekVoQixJQUFBQSxJQUFJLENBQUNpQixhQUFMO0FBQ0EsUUFBTUMsR0FBRyxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBWjtBQUVBLFdBQU9aLE1BQU0sQ0FBQywyQkFBRCxDQUFiLENBSnlFLENBTXpFOztBQUNBRCxJQUFBQSxNQUFNLENBQUNDLE1BQVAsQ0FBY0MsT0FBZCxHQUF3QlksU0FBeEI7QUFDQWQsSUFBQUEsTUFBTSxDQUFDQyxNQUFQLENBQWNPLGNBQWQsR0FBK0JNLFNBQS9CLENBUnlFLENBVXpFOztBQUNBLGdDQUFXSCxHQUFYLEVBWHlFLENBYXpFOztBQUNBWCxJQUFBQSxNQUFNLENBQUNDLE1BQVAsQ0FBY0MsT0FBZDtBQUNFQyxNQUFBQSxPQUFPLEVBQUVWLElBQUksQ0FBQ0csRUFBTCxFQURYO0FBRUVRLE1BQUFBLFFBQVEsRUFBRVgsSUFBSSxDQUFDRyxFQUFMLEVBRlo7QUFHRVMsTUFBQUEsWUFBWSxFQUFFWixJQUFJLENBQUNHLEVBQUw7QUFIaEIsMkVBSVdILElBQUksQ0FBQ0csRUFBTCxFQUpYLDhFQUtrQkgsSUFBSSxDQUFDRyxFQUFMLENBQVE7QUFBQSxhQUFNVSxPQUFPLENBQUNDLE9BQVIsRUFBTjtBQUFBLEtBQVIsQ0FMbEI7QUFPQVAsSUFBQUEsTUFBTSxDQUFDQyxNQUFQLENBQWNPLGNBQWQsR0FBK0JGLE9BQU8sQ0FBQ0MsT0FBUixFQUEvQixDQXJCeUUsQ0F1QnpFOztBQUNBUSx1QkFBRUMsS0FBRixDQUFRLENBQVIsRUFBV0MsT0FBWCxDQUFtQixVQUFDQyxDQUFEO0FBQUEsYUFBTyw0QkFBV1AsR0FBWCxDQUFQO0FBQUEsS0FBbkIsRUF4QnlFLENBMEJ6RTtBQUNBO0FBQ0E7O0FBQ0QsR0E3QkMsQ0FBRjtBQStCQUYsRUFBQUEsRUFBRSxDQUFDLDJFQUFELEVBQThFLFlBQU07QUFDcEYsUUFBTUUsR0FBRyxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBWjtBQUVBLGdDQUFXRixHQUFYLEVBSG9GLENBSXBGO0FBQ0QsR0FMQyxDQUFGO0FBT0FGLEVBQUFBLEVBQUUsQ0FBQyxpREFBRCxFQUFvRCxZQUFNO0FBQzFELFFBQU1VLE9BQU8sR0FBRyxpQ0FDZCwwREFDRTtBQUFNLG9CQUFXO0FBQWpCLE9BQXFCLG1DQUFyQixDQURGLENBRGMsQ0FBaEI7QUFLQSxRQUFNQyxRQUFRLEdBQUdELE9BQU8sQ0FBQ0UsUUFBUixFQUFqQjtBQUVBLG9DQUFlRCxRQUFmO0FBRUFFLElBQUFBLE1BQU0sQ0FBQ0YsUUFBUSxDQUFDRyxXQUFWLENBQU4sQ0FBNkJDLE9BQTdCLENBQXFDLHlDQUFyQztBQUNELEdBWEMsQ0FBRjtBQVlELENBakVPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbW91bnQgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IHJlbmRlck1hdGgsIHsgZml4TWF0aEVsZW1lbnQgfSBmcm9tICcuLi9yZW5kZXItbWF0aCc7XG4vLyBpbXBvcnQgKiBhcyBNYXRoSmF4TW9kdWxlIGZyb20gJy4uL21hdGhqYXgtc2NyaXB0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmplc3QubW9jaygnLi4vbWF0aGpheC1zY3JpcHQnLCAoKSA9PiAoe1xuICBpbml0aWFsaXplTWF0aEpheDogamVzdC5mbigpLFxufSkpO1xuXG5kZXNjcmliZSgncmVuZGVyLW1hdGgnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIC8vIFJlc2V0IHRoZSBtb2NrcyBiZWZvcmUgZWFjaCB0ZXN0XG4gICAgamVzdC5yZXNldEFsbE1vY2tzKCk7XG4gICAgLy8gTW9jayB3aW5kb3cuTWF0aEpheCBhbmQgd2luZG93Lm1hdGhqYXhMb2FkZWRQXG4gICAgZ2xvYmFsLndpbmRvdy5NYXRoSmF4ID0ge1xuICAgICAgdHlwZXNldDogamVzdC5mbigpLFxuICAgICAgdGV4UmVzZXQ6IGplc3QuZm4oKSxcbiAgICAgIHR5cGVzZXRDbGVhcjogamVzdC5mbigpLFxuICAgICAgdHlwZXNldDogamVzdC5mbigpLFxuICAgICAgdHlwZXNldFByb21pc2U6IGplc3QuZm4oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCkpLFxuICAgIH07XG4gICAgZ2xvYmFsLndpbmRvdy5tYXRoamF4TG9hZGVkUCA9IFByb21pc2UucmVzb2x2ZSgpO1xuICB9KTtcblxuICBpdCgnY2FsbHMgaW5pdGlhbGl6ZU1hdGhKYXggb25jZSB3aXRob3V0IEBwaWUtbGliL21hdGgtcmVuZGVyaW5nQDInLCAoKSA9PiB7XG4gICAgamVzdC51c2VGYWtlVGltZXJzKCk7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICBkZWxldGUgd2luZG93WydAcGllLWxpYi9tYXRoLXJlbmRlcmluZ0AyJ107XG5cbiAgICAvLyBJbml0aWFsaXplIGFzIHVuZGVmaW5lZCBmb3IgdGhlIGZpcnN0IGNhbGxcbiAgICBnbG9iYWwud2luZG93Lk1hdGhKYXggPSB1bmRlZmluZWQ7XG4gICAgZ2xvYmFsLndpbmRvdy5tYXRoamF4TG9hZGVkUCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIENhbGwgcmVuZGVyTWF0aCBvbmNlIHRvIGluaXRpYWxpemUgTWF0aEpheFxuICAgIHJlbmRlck1hdGgoZGl2KTtcblxuICAgIC8vIFN1YnNlcXVlbnQgY2FsbHMgc2hvdWxkIG5vdCByZS1pbml0aWFsaXplIE1hdGhKYXhcbiAgICBnbG9iYWwud2luZG93Lk1hdGhKYXggPSB7XG4gICAgICB0eXBlc2V0OiBqZXN0LmZuKCksXG4gICAgICB0ZXhSZXNldDogamVzdC5mbigpLFxuICAgICAgdHlwZXNldENsZWFyOiBqZXN0LmZuKCksXG4gICAgICB0eXBlc2V0OiBqZXN0LmZuKCksXG4gICAgICB0eXBlc2V0UHJvbWlzZTogamVzdC5mbigoKSA9PiBQcm9taXNlLnJlc29sdmUoKSksXG4gICAgfTtcbiAgICBnbG9iYWwud2luZG93Lm1hdGhqYXhMb2FkZWRQID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICAvLyBDYWxsIHJlbmRlck1hdGggOSBtb3JlIHRpbWVzXG4gICAgXy50aW1lcyg5KS5mb3JFYWNoKChpKSA9PiByZW5kZXJNYXRoKGRpdikpO1xuXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgLy8gICBleHBlY3QoTWF0aEpheE1vZHVsZS5pbml0aWFsaXplTWF0aEpheCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgIC8vIH0sIDUwMCk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCBjYWxsIGluaXRpYWxpemVNYXRoSmF4IHdoZW4gQHBpZS1saWIvbWF0aC1yZW5kZXJpbmdAMiBpcyBwcmVzZW50JywgKCkgPT4ge1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgcmVuZGVyTWF0aChkaXYpO1xuICAgIC8vIGV4cGVjdChNYXRoSmF4TW9kdWxlLmluaXRpYWxpemVNYXRoSmF4KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdCgnd3JhcHMgdGhlIG1hdGggY29udGFpbmluZyBlbGVtZW50IHRoZSByaWdodCB3YXknLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KFxuICAgICAgPGRpdj5cbiAgICAgICAgPHNwYW4gZGF0YS1sYXRleD1cIlwiPnsnNDIwXFxcXHRleHR7IGNtfT00LjJcXFxcdGV4dHsgbWV0ZXJzfSd9PC9zcGFuPlxuICAgICAgPC9kaXY+LFxuICAgICk7XG4gICAgY29uc3Qgc3BhbkVsZW0gPSB3cmFwcGVyLmluc3RhbmNlKCk7XG5cbiAgICBmaXhNYXRoRWxlbWVudChzcGFuRWxlbSk7XG5cbiAgICBleHBlY3Qoc3BhbkVsZW0udGV4dENvbnRlbnQpLnRvRXF1YWwoJ1xcXFwoNDIwXFxcXHRleHR7IGNtfT00LjJcXFxcdGV4dHsgbWV0ZXJzfVxcXFwpJyk7XG4gIH0pO1xufSk7XG4iXX0=
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports, "mmlToLatex", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _mmlToLatex["default"];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "renderMath", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function get() {
|
|
17
|
+
return _renderMath["default"];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "unWrapMath", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function get() {
|
|
23
|
+
return _normalization.unWrapMath;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(exports, "wrapMath", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function get() {
|
|
29
|
+
return _normalization.wrapMath;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
var _renderMath = _interopRequireDefault(require("./render-math"));
|
|
34
|
+
|
|
35
|
+
var _mmlToLatex = _interopRequireDefault(require("./mml-to-latex"));
|
|
36
|
+
|
|
37
|
+
var _normalization = require("./normalization");
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlbmRlck1hdGggZnJvbSAnLi9yZW5kZXItbWF0aCc7XG5pbXBvcnQgbW1sVG9MYXRleCBmcm9tICcuL21tbC10by1sYXRleCc7XG5pbXBvcnQgeyB3cmFwTWF0aCwgdW5XcmFwTWF0aCB9IGZyb20gJy4vbm9ybWFsaXphdGlvbic7XG5cbmV4cG9ydCB7IHJlbmRlck1hdGgsIHdyYXBNYXRoLCB1bldyYXBNYXRoLCBtbWxUb0xhdGV4IH07XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _mathmlToLatex = require("@pie-framework/mathml-to-latex");
|
|
9
|
+
|
|
10
|
+
var _default = function _default(mathml) {
|
|
11
|
+
return _mathmlToLatex.MathMLToLaTeX.convert(mathml);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports["default"] = _default;
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tbWwtdG8tbGF0ZXguanMiXSwibmFtZXMiOlsibWF0aG1sIiwiTWF0aE1MVG9MYVRlWCIsImNvbnZlcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7ZUFDZSxrQkFBQ0EsTUFBRDtBQUFBLFNBQVlDLDZCQUFjQyxPQUFkLENBQXNCRixNQUF0QixDQUFaO0FBQUEsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdGhNTFRvTGFUZVggfSBmcm9tICdAcGllLWZyYW1ld29yay9tYXRobWwtdG8tbGF0ZXgnO1xuZXhwb3J0IGRlZmF1bHQgKG1hdGhtbCkgPT4gTWF0aE1MVG9MYVRlWC5jb252ZXJ0KG1hdGhtbCk7XG4iXX0=
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
6
|
+
|
|
7
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
|
+
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
|
|
11
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
|
+
|
|
13
|
+
var _chtml = require("../chtml");
|
|
14
|
+
|
|
15
|
+
var _jsdom = require("jsdom");
|
|
16
|
+
|
|
17
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
18
|
+
|
|
19
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
20
|
+
|
|
21
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
22
|
+
|
|
23
|
+
jest.mock('mathjax-full/js/output/chtml/Wrapper', function () {
|
|
24
|
+
var instance = {
|
|
25
|
+
adaptor: {
|
|
26
|
+
document: {
|
|
27
|
+
createElement: jest.fn()
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
standardCHTMLnode: jest.fn()
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
instance: instance,
|
|
34
|
+
CHTMLWrapper: /*#__PURE__*/(0, _createClass2["default"])(function CHTMLWrapper() {
|
|
35
|
+
(0, _classCallCheck2["default"])(this, CHTMLWrapper);
|
|
36
|
+
this.adaptor = {
|
|
37
|
+
document: {
|
|
38
|
+
createElement: jest.fn()
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
this.document = {}; // return instance;
|
|
42
|
+
})
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
var node = function node(kind, extras) {
|
|
47
|
+
return _objectSpread({
|
|
48
|
+
kind: kind,
|
|
49
|
+
childNodes: []
|
|
50
|
+
}, extras);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
var textNode = function textNode(text) {
|
|
54
|
+
return node('text', {
|
|
55
|
+
text: text,
|
|
56
|
+
node: {
|
|
57
|
+
kind: 'text',
|
|
58
|
+
text: text
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
var mn = function mn(text) {
|
|
64
|
+
return node('mn', {
|
|
65
|
+
childNodes: [textNode(text)]
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
var mo = function mo(text) {
|
|
70
|
+
return node('mo', {
|
|
71
|
+
childNodes: [textNode(text)]
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
var mco = function mco(text) {
|
|
76
|
+
return _objectSpread(_objectSpread({}, mo(text)), {}, {
|
|
77
|
+
toCHTML: function toCHTML(n) {
|
|
78
|
+
var t = "mo:".concat(text);
|
|
79
|
+
n.textContent = t;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
var msrow = function msrow() {
|
|
85
|
+
for (var _len = arguments.length, childNodes = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
86
|
+
childNodes[_key] = arguments[_key];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return node('msrow', {
|
|
90
|
+
childNodes: childNodes
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
var mstack = function mstack() {
|
|
95
|
+
for (var _len2 = arguments.length, rows = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
96
|
+
rows[_key2] = arguments[_key2];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return node('mstack', {
|
|
100
|
+
childNodes: rows
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
var msline = function msline() {
|
|
105
|
+
return node('msline');
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
describe('getStackData', function () {
|
|
109
|
+
it.each(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n input | expected\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n "])), mstack(msrow(mo('+'), mn('111'))), [new _chtml.Row(['1', '1', '1'], mo('+'))], mstack(msrow(mn('111'))), [new _chtml.Row(['1', '1', '1'])], mstack(msrow(mn('1'), mn('1'))), [new _chtml.Row(['1', '1'])], mstack(msrow(mn('1')), mn('1')), [new _chtml.Row(['1']), new _chtml.Row(['1'])], mstack(msline()), [new _chtml.Line()], mstack(mn('1'), msline(), msrow(mo('+'), mn('1'))), [new _chtml.Row(['1']), new _chtml.Line(), new _chtml.Row(['1'], mo('+'))], mstack(mn('1'), mn('1')), [new _chtml.Row(['1']), new _chtml.Row(['1'])])('$input => $expected', function (_ref) {
|
|
110
|
+
var input = _ref.input,
|
|
111
|
+
expected = _ref.expected;
|
|
112
|
+
var d = (0, _chtml.getStackData)(input); // console.log('d:', d);
|
|
113
|
+
// console.log('e:', expected);
|
|
114
|
+
|
|
115
|
+
expect(_objectSpread({}, d)).toEqual(_objectSpread({}, expected));
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe('Row', function () {
|
|
119
|
+
describe('pad', function () {
|
|
120
|
+
it.each(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n cols | count | expected\n ", " | ", " | ", "\n ", " | ", " | ", "\n ", " | ", " | ", "\n ", " | ", " | ", "\n "])), [], 0, [], [1], 1, [1], [1], 2, ['__pad__', 1], [1], 3, ['__pad__', '__pad__', 1])('pads to the right', function (_ref2) {
|
|
121
|
+
var cols = _ref2.cols,
|
|
122
|
+
count = _ref2.count,
|
|
123
|
+
expected = _ref2.expected;
|
|
124
|
+
var r = new _chtml.Row(cols);
|
|
125
|
+
var p = r.pad(count, 'right');
|
|
126
|
+
expect(p).toEqual(expected);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe.each(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n label | tree\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n"])), 'one row', [msrow(mn('1'))], 'implicit one row', [mn('1')], 'two rows', [msrow(mn('1')), msrow(mn('2'))], 'two rows with operator', [msrow(mn('1')), msrow(mco('+'), mn('2'))])('chtml', function (_ref3) {
|
|
131
|
+
var label = _ref3.label,
|
|
132
|
+
tree = _ref3.tree;
|
|
133
|
+
var html;
|
|
134
|
+
beforeEach(function () {
|
|
135
|
+
var chtml = new _chtml.CHTMLmstack({}, {});
|
|
136
|
+
var dom = new _jsdom.JSDOM("<!DOCTYPE html><body></body>");
|
|
137
|
+
|
|
138
|
+
chtml.standardCHTMLnode = function (parent) {
|
|
139
|
+
return parent;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
chtml.ce = dom.window.document.createElement.bind(dom.window.document);
|
|
143
|
+
chtml.childNodes = tree;
|
|
144
|
+
chtml.toCHTML(dom.window.document.body);
|
|
145
|
+
html = dom.window.document.body.innerHTML;
|
|
146
|
+
});
|
|
147
|
+
it(label, function () {
|
|
148
|
+
expect(html).toMatchSnapshot();
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tc3RhY2svX190ZXN0c19fL2NodG1sLnRlc3QuanMiXSwibmFtZXMiOlsiamVzdCIsIm1vY2siLCJpbnN0YW5jZSIsImFkYXB0b3IiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJmbiIsInN0YW5kYXJkQ0hUTUxub2RlIiwiQ0hUTUxXcmFwcGVyIiwibm9kZSIsImtpbmQiLCJleHRyYXMiLCJjaGlsZE5vZGVzIiwidGV4dE5vZGUiLCJ0ZXh0IiwibW4iLCJtbyIsIm1jbyIsInRvQ0hUTUwiLCJuIiwidCIsInRleHRDb250ZW50IiwibXNyb3ciLCJtc3RhY2siLCJyb3dzIiwibXNsaW5lIiwiZGVzY3JpYmUiLCJpdCIsImVhY2giLCJSb3ciLCJMaW5lIiwiaW5wdXQiLCJleHBlY3RlZCIsImQiLCJleHBlY3QiLCJ0b0VxdWFsIiwiY29scyIsImNvdW50IiwiciIsInAiLCJwYWQiLCJsYWJlbCIsInRyZWUiLCJodG1sIiwiYmVmb3JlRWFjaCIsImNodG1sIiwiQ0hUTUxtc3RhY2siLCJkb20iLCJKU0RPTSIsInBhcmVudCIsImNlIiwid2luZG93IiwiYmluZCIsImJvZHkiLCJpbm5lckhUTUwiLCJ0b01hdGNoU25hcHNob3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOzs7Ozs7OztBQUVBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSxzQ0FBVixFQUFrRCxZQUFNO0FBQ3RELE1BQU1DLFFBQVEsR0FBRztBQUNmQyxJQUFBQSxPQUFPLEVBQUU7QUFDUEMsTUFBQUEsUUFBUSxFQUFFO0FBQ1JDLFFBQUFBLGFBQWEsRUFBRUwsSUFBSSxDQUFDTSxFQUFMO0FBRFA7QUFESCxLQURNO0FBTWZDLElBQUFBLGlCQUFpQixFQUFFUCxJQUFJLENBQUNNLEVBQUw7QUFOSixHQUFqQjtBQVNBLFNBQU87QUFDTEosSUFBQUEsUUFBUSxFQUFSQSxRQURLO0FBRUxNLElBQUFBLFlBQVksNkNBQ1Ysd0JBQWM7QUFBQTtBQUNaLFdB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R0FSUyxDQUFWO0FBVUEzQixFQUFBQSxFQUFFLENBQUNjLEtBQUQsRUFBUSxZQUFNO0FBQ2RQLElBQUFBLE1BQU0sQ0FBQ1MsSUFBRCxDQUFOLENBQWFZLGVBQWI7QUFDRCxHQUZDLENBQUY7QUFHRCxDQXRCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFN0YWNrRGF0YSwgTGluZSwgUm93LCBDSFRNTG1zdGFjayB9IGZyb20gJy4uL2NodG1sJztcbi8vIGltcG9ydCB7IENIVE1MV3JhcHBlciwgaW5zdGFuY2UgfSBmcm9tICdtYXRoamF4LWZ1bGwvanMvb3V0cHV0L2NodG1sL1dyYXBwZXInO1xuaW1wb3J0IHsgSlNET00gfSBmcm9tICdqc2RvbSc7XG5cbmplc3QubW9jaygnbWF0aGpheC1mdWxsL2pzL291dHB1dC9jaHRtbC9XcmFwcGVyJywgKCkgPT4ge1xuICBjb25zdCBpbnN0YW5jZSA9IHtcbiAgICBhZGFwdG9yOiB7XG4gICAgICBkb2N1bWVudDoge1xuICAgICAgICBjcmVhdGVFbGVtZW50OiBqZXN0LmZuKCksXG4gICAgICB9LFxuICAgIH0sXG4gICAgc3RhbmRhcmRDSFRNTG5vZGU6IGplc3QuZm4oKSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGluc3RhbmNlLFxuICAgIENIVE1MV3JhcHBlcjogY2xhc3Mge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYWRhcHRvciA9IHsgZG9jdW1lbnQ6IHsgY3JlYXRlRWxlbWVudDogamVzdC5mbigpIH0gfTtcbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IHt9O1xuICAgICAgICAvLyByZXR1cm4gaW5zdGFuY2U7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn0pO1xuXG5jb25zdCBub2RlID0gKGtpbmQsIGV4dHJhcykgPT4gKHsga2luZCwgY2hpbGROb2RlczogW10sIC4uLmV4dHJhcyB9KTtcblxuY29uc3QgdGV4dE5vZGUgPSAodGV4dCkgPT4gbm9kZSgndGV4dCcsIHsgdGV4dCwgbm9kZTogeyBraW5kOiAndGV4dCcsIHRleHQgfSB9KTtcbmNvbnN0IG1uID0gKHRleHQpID0+IG5vZGUoJ21uJywgeyBjaGlsZE5vZGVzOiBbdGV4dE5vZGUodGV4dCldIH0pO1xuY29uc3QgbW8gPSAodGV4dCkgPT5cbiAgbm9kZSgnbW8nLCB7XG4gICAgY2hpbGROb2RlczogW3RleHROb2RlKHRleHQpXSxcbiAgfSk7XG5cbmNvbnN0IG1jbyA9ICh0ZXh0KSA9PiAoe1xuICAuLi5tbyh0ZXh0KSxcblxuICB0b0NIVE1MOiAobikgPT4ge1xuICAgIGNvbnN0IHQgPSBgbW86JHt0ZXh0fWA7XG4gICAgbi50ZXh0Q29udGVudCA9IHQ7XG4gIH0sXG59KTtcblxuY29uc3QgbXNyb3cgPSAoLi4uY2hpbGROb2RlcykgPT4gbm9kZSgnbXNyb3cnLCB7IGNoaWxkTm9kZXMgfSk7XG5jb25zdCBtc3RhY2sgPSAoLi4ucm93cykgPT4gbm9kZSgnbXN0YWNrJywgeyBjaGlsZE5vZGVzOiByb3dzIH0pO1xuY29uc3QgbXNsaW5lID0gKCkgPT4gbm9kZSgnbXNsaW5lJyk7XG5kZXNjcmliZSgnZ2V0U3RhY2tEYXRhJywgKCkgPT4ge1xuICBpdC5lYWNoYFxuICAgIGlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXhwZWN0ZWRcbiAgICAke21zdGFjayhtc3JvdyhtbygnKycpLCBtbignMTExJykpKX0gICAgICAgICAgICAgICAgICB8ICR7W25ldyBSb3coWycxJywgJzEnLCAnMSddLCBtbygnKycpKV19XG4gICAgJHttc3RhY2sobXNyb3cobW4oJzExMScpKSl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAke1tuZXcgUm93KFsnMScsICcxJywgJzEnXSldfVxuICAgICR7bXN0YWNrKG1zcm93KG1uKCcxJyksIG1uKCcxJykpKX0gICAgICAgICAgICAgICAgICAgIHwgJHtbbmV3IFJvdyhbJzEnLCAnMSddKV19XG4gICAgJHttc3RhY2sobXNyb3cobW4oJzEnKSksIG1uKCcxJykpfSAgICAgICAgICAgICAgICAgICAgfCAke1tuZXcgUm93KFsnMSddKSwgbmV3IFJvdyhbJzEnXSldfVxuICAgICR7bXN0YWNrKG1zbGluZSgpKX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJHtbbmV3IExpbmUoKV19XG4gICAgJHttc3RhY2sobW4oJzEnKSwgbXNsaW5lKCksIG1zcm93KG1vKCcrJyksIG1uKCcxJykpKX0gfCAke1tuZXcgUm93KFsnMSddKSwgbmV3IExpbmUoKSwgbmV3IFJvdyhbJzEnXSwgbW8oJysnKSldfVxuICAgICR7bXN0YWNrKG1uKCcxJyksIG1uKCcxJykpfSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJHtbbmV3IFJvdyhbJzEnXSksIG5ldyBSb3coWycxJ10pXX1cbiAgYCgnJGlucHV0ID0+ICRleHBlY3RlZCcsICh7IGlucHV0LCBleHBlY3RlZCB9KSA9PiB7XG4gICAgY29uc3QgZCA9IGdldFN0YWNrRGF0YShpbnB1dCk7XG4gICAgLy8gY29uc29sZS5sb2coJ2Q6JywgZCk7XG4gICAgLy8gY29uc29sZS5sb2coJ2U6JywgZXhwZWN0ZWQpO1xuICAgIGV4cGVjdCh7IC4uLmQgfSkudG9FcXVhbCh7IC4uLmV4cGVjdGVkIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnUm93JywgKCkgPT4ge1xuICBkZXNjcmliZSgncGFkJywgKCkgPT4ge1xuICAgIGl0LmVhY2hgXG4gICAgICBjb2xzICAgfCBjb3VudCB8IGV4cGVjdGVkXG4gICAgICAke1tdfSAgfCAkezB9ICB8ICR7W119XG4gICAgICAke1sxXX0gfCAkezF9ICB8ICR7WzFdfVxuICAgICAgJHtbMV19IHwgJHsyfSAgfCAke1snX19wYWRfXycsIDFdfVxuICAgICAgJHtbMV19IHwgJHszfSAgfCAke1snX19wYWRfXycsICdfX3BhZF9fJywgMV19XG4gICAgYCgncGFkcyB0byB0aGUgcmlnaHQnLCAoeyBjb2xzLCBjb3VudCwgZXhwZWN0ZWQgfSkgPT4ge1xuICAgICAgY29uc3QgciA9IG5ldyBSb3coY29scyk7XG4gICAgICBjb25zdCBwID0gci5wYWQoY291bnQsICdyaWdodCcpO1xuICAgICAgZXhwZWN0KHApLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZS5lYWNoYFxuICBsYWJlbCAgICAgICAgICAgICAgICAgICAgICAgfCB0cmVlXG4gICR7J29uZSByb3cnfSAgICAgICAgICAgICAgICB8ICR7W21zcm93KG1uKCcxJykpXX1cbiAgJHsnaW1wbGljaXQgb25lIHJvdyd9ICAgICAgIHwgJHtbbW4oJzEnKV19XG4gICR7J3R3byByb3dzJ30gICAgICAgICAgICAgICB8ICR7W21zcm93KG1uKCcxJykpLCBtc3JvdyhtbignMicpKV19XG4gICR7J3R3byByb3dzIHdpdGggb3BlcmF0b3InfSB8ICR7W21zcm93KG1uKCcxJykpLCBtc3JvdyhtY28oJysnKSwgbW4oJzInKSldfVxuYCgnY2h0bWwnLCAoeyBsYWJlbCwgdHJlZSB9KSA9PiB7XG4gIGxldCBodG1sO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNvbnN0IGNodG1sID0gbmV3IENIVE1MbXN0YWNrKHt9LCB7fSk7XG4gICAgY29uc3QgZG9tID0gbmV3IEpTRE9NKGA8IURPQ1RZUEUgaHRtbD48Ym9keT48L2JvZHk+YCk7XG4gICAgY2h0bWwuc3RhbmRhcmRDSFRNTG5vZGUgPSAocGFyZW50KSA9PiBwYXJlbnQ7XG4gICAgY2h0bWwuY2UgPSBkb20ud2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQuYmluZChkb20ud2luZG93LmRvY3VtZW50KTtcbiAgICBjaHRtbC5jaGlsZE5vZGVzID0gdHJlZTtcbiAgICBjaHRtbC50b0NIVE1MKGRvbS53aW5kb3cuZG9jdW1lbnQuYm9keSk7XG4gICAgaHRtbCA9IGRvbS53aW5kb3cuZG9jdW1lbnQuYm9keS5pbm5lckhUTUw7XG4gIH0pO1xuXG4gIGl0KGxhYmVsLCAoKSA9PiB7XG4gICAgZXhwZWN0KGh0bWwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9KTtcbn0pO1xuIl19
|