@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 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>&#xA0;</mtext> <mo>&#x2264;</mo> <mn>4</mn> <mi>y</mi> <mtext>&#xA0;</mtext> <mo>+</mo> <mtext>&#xA0;</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,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -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