@pie-lib/editable-html 13.1.0-beta.1 → 13.1.0-beta.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/lib/editor.js +1 -1
- package/package.json +3 -3
- package/lib/__tests__/editor-utils.test.js +0 -164
- package/lib/__tests__/editor-utils.test.js.map +0 -1
- package/lib/__tests__/serialization.test.js +0 -241
- package/lib/__tests__/serialization.test.js.map +0 -1
- package/lib/__tests__/utils.js +0 -79
- package/lib/__tests__/utils.js.map +0 -1
- package/lib/plugins/image/__tests__/component.test.js +0 -96
- package/lib/plugins/image/__tests__/component.test.js.map +0 -1
- package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +0 -131
- package/lib/plugins/image/__tests__/image-toolbar-logic.test.js.map +0 -1
- package/lib/plugins/image/__tests__/image-toolbar.test.js +0 -21
- package/lib/plugins/image/__tests__/image-toolbar.test.js.map +0 -1
- package/lib/plugins/image/__tests__/index.test.js +0 -86
- package/lib/plugins/image/__tests__/index.test.js.map +0 -1
- package/lib/plugins/image/__tests__/insert-image-handler.test.js +0 -112
- package/lib/plugins/image/__tests__/insert-image-handler.test.js.map +0 -1
- package/lib/plugins/image/__tests__/mock-change.js +0 -22
- package/lib/plugins/image/__tests__/mock-change.js.map +0 -1
- package/lib/plugins/list/__tests__/index.test.js +0 -63
- package/lib/plugins/list/__tests__/index.test.js.map +0 -1
- package/lib/plugins/math/__tests__/index.test.js +0 -284
- package/lib/plugins/math/__tests__/index.test.js.map +0 -1
- package/lib/plugins/media/__tests__/index.test.js +0 -69
- package/lib/plugins/media/__tests__/index.test.js.map +0 -1
- package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js +0 -93
- package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js.map +0 -1
- package/lib/plugins/table/__tests__/index.test.js +0 -416
- package/lib/plugins/table/__tests__/index.test.js.map +0 -1
- package/lib/plugins/table/__tests__/table-toolbar.test.js +0 -81
- package/lib/plugins/table/__tests__/table-toolbar.test.js.map +0 -1
- package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +0 -153
- package/lib/plugins/toolbar/__tests__/default-toolbar.test.js.map +0 -1
- package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +0 -47
- package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js.map +0 -1
- package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +0 -112
- package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js.map +0 -1
- package/lib/plugins/toolbar/__tests__/toolbar.test.js +0 -118
- package/lib/plugins/toolbar/__tests__/toolbar.test.js.map +0 -1
- package/src/__tests__/editor-utils.test.js +0 -162
- package/src/__tests__/serialization.test.js +0 -290
- package/src/__tests__/utils.js +0 -36
- package/src/plugins/image/__tests__/component.test.jsx +0 -73
- package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +0 -90
- package/src/plugins/image/__tests__/image-toolbar.test.jsx +0 -12
- package/src/plugins/image/__tests__/index.test.js +0 -92
- package/src/plugins/image/__tests__/insert-image-handler.test.js +0 -113
- package/src/plugins/image/__tests__/mock-change.js +0 -15
- package/src/plugins/list/__tests__/index.test.js +0 -52
- package/src/plugins/math/__tests__/index.test.jsx +0 -264
- package/src/plugins/media/__tests__/index.test.js +0 -75
- package/src/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js +0 -71
- package/src/plugins/table/__tests__/index.test.jsx +0 -401
- package/src/plugins/table/__tests__/table-toolbar.test.jsx +0 -75
- package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +0 -123
- package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +0 -40
- package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +0 -97
- package/src/plugins/toolbar/__tests__/toolbar.test.jsx +0 -112
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
-
var _react = _interopRequireDefault(require("react"));
|
|
7
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
8
|
-
var _mockChange = _interopRequireDefault(require("../../image/__tests__/mock-change"));
|
|
9
|
-
var _slate = require("slate");
|
|
10
|
-
var _index = _interopRequireWildcard(require("../index"));
|
|
11
|
-
var _react2 = require("@testing-library/react");
|
|
12
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
13
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15
|
-
jest.mock('@pie-framework/mathquill', function () {
|
|
16
|
-
return {
|
|
17
|
-
StaticMath: jest.fn(),
|
|
18
|
-
getInterface: jest.fn().mockReturnThis(),
|
|
19
|
-
registerEmbed: jest.fn()
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
var mockMathToolbarOnChange;
|
|
23
|
-
var mockMathToolbarOnDone;
|
|
24
|
-
jest.mock('@pie-lib/math-toolbar', function () {
|
|
25
|
-
return {
|
|
26
|
-
MathPreview: function MathPreview() {
|
|
27
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
28
|
-
"data-testid": "math-preview"
|
|
29
|
-
});
|
|
30
|
-
},
|
|
31
|
-
MathToolbar: function MathToolbar(props) {
|
|
32
|
-
// Store callbacks for testing
|
|
33
|
-
mockMathToolbarOnChange = props.onChange;
|
|
34
|
-
mockMathToolbarOnDone = props.onDone;
|
|
35
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
36
|
-
"data-testid": "math-toolbar",
|
|
37
|
-
role: "toolbar"
|
|
38
|
-
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
39
|
-
"data-testid": "toolbar-change",
|
|
40
|
-
onClick: function onClick() {
|
|
41
|
-
return props.onChange && props.onChange('test-latex');
|
|
42
|
-
}
|
|
43
|
-
}, "Change"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
44
|
-
"data-testid": "toolbar-done",
|
|
45
|
-
onClick: function onClick() {
|
|
46
|
-
return props.onDone && props.onDone('test-latex');
|
|
47
|
-
}
|
|
48
|
-
}, "Done"));
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
});
|
|
52
|
-
jest.mock('@pie-lib/math-rendering', function () {
|
|
53
|
-
return _objectSpread(_objectSpread({}, jest.requireActual('@pie-lib/math-rendering')), {}, {
|
|
54
|
-
mmlToLatex: jest.fn(function () {
|
|
55
|
-
return '/foobar/latex';
|
|
56
|
-
})
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
var log = (0, _debug["default"])('@pie-lib:editable-html:test:math');
|
|
60
|
-
|
|
61
|
-
// I believe @andrei is moving this stuff out.
|
|
62
|
-
describe('MathPlugin', function () {
|
|
63
|
-
describe('toolbar', function () {
|
|
64
|
-
describe('onClick', function () {
|
|
65
|
-
var plugin, mockChange, value, onChange;
|
|
66
|
-
beforeEach(function () {
|
|
67
|
-
plugin = (0, _index["default"])({});
|
|
68
|
-
mockChange = new _mockChange["default"]();
|
|
69
|
-
value = {
|
|
70
|
-
change: jest.fn(function () {
|
|
71
|
-
return mockChange;
|
|
72
|
-
})
|
|
73
|
-
};
|
|
74
|
-
onChange = jest.fn();
|
|
75
|
-
plugin.toolbar.onClick(value, onChange);
|
|
76
|
-
});
|
|
77
|
-
test('calls insertInline', function () {
|
|
78
|
-
expect(mockChange.insertInline).toBeCalledWith(expect.objectContaining({
|
|
79
|
-
data: (0, _index.inlineMath)().data
|
|
80
|
-
}));
|
|
81
|
-
});
|
|
82
|
-
test('it calls onChange', function () {
|
|
83
|
-
expect(onChange).toHaveBeenCalledWith(mockChange);
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
describe('renderNode', function () {
|
|
88
|
-
test('the component has props', function () {
|
|
89
|
-
var plugin = (0, _index["default"])({});
|
|
90
|
-
var _plugin$renderNode = plugin.renderNode({
|
|
91
|
-
node: {
|
|
92
|
-
type: 'math'
|
|
93
|
-
}
|
|
94
|
-
}),
|
|
95
|
-
props = _plugin$renderNode.props;
|
|
96
|
-
expect(props.node).toEqual({
|
|
97
|
-
type: 'math'
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
describe('serialization', function () {
|
|
102
|
-
describe('deserialize', function () {
|
|
103
|
-
var assertDeserialize = function assertDeserialize(html, expected, wrapType) {
|
|
104
|
-
it("innerHTML: ".concat(html, " is deserialized to: ").concat(expected, " with wrapType: ").concat(wrapType), function () {
|
|
105
|
-
var el = {
|
|
106
|
-
tagName: 'span',
|
|
107
|
-
childNodes: [],
|
|
108
|
-
getAttribute: jest.fn(function () {
|
|
109
|
-
return '';
|
|
110
|
-
}),
|
|
111
|
-
hasAttribute: jest.fn(function () {
|
|
112
|
-
return true;
|
|
113
|
-
}),
|
|
114
|
-
innerHTML: html
|
|
115
|
-
};
|
|
116
|
-
var next = jest.fn();
|
|
117
|
-
var out = _index.serialization.deserialize(el, next);
|
|
118
|
-
expect(out).toEqual({
|
|
119
|
-
object: 'inline',
|
|
120
|
-
type: 'math',
|
|
121
|
-
isVoid: true,
|
|
122
|
-
nodes: [],
|
|
123
|
-
data: {
|
|
124
|
-
latex: expected,
|
|
125
|
-
wrapper: wrapType
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
};
|
|
130
|
-
assertDeserialize('$$<$$', '<', _index["default"].DOLLAR);
|
|
131
|
-
assertDeserialize('$<$', '<', _index["default"].DOLLAR);
|
|
132
|
-
assertDeserialize('\\(<\\)', '<', _index["default"].ROUND_BRACKETS);
|
|
133
|
-
assertDeserialize('\\[<\\]', '<', _index["default"].ROUND_BRACKETS);
|
|
134
|
-
assertDeserialize('latex', 'latex', _index["default"].ROUND_BRACKETS);
|
|
135
|
-
assertDeserialize('\\displaystyle foo', 'foo', _index["default"].ROUND_BRACKETS);
|
|
136
|
-
it('should make mathml editable if MathPlugin.mathMlOptions.mmlEditing is true', function () {
|
|
137
|
-
_index["default"].mathMlOptions.mmlEditing = true;
|
|
138
|
-
var el = {
|
|
139
|
-
tagName: 'math',
|
|
140
|
-
outerHTML: '<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>'
|
|
141
|
-
};
|
|
142
|
-
var next = jest.fn();
|
|
143
|
-
var out = _index.serialization.deserialize(el, next);
|
|
144
|
-
expect(out).toEqual({
|
|
145
|
-
object: 'inline',
|
|
146
|
-
type: 'math',
|
|
147
|
-
isVoid: true,
|
|
148
|
-
nodes: [],
|
|
149
|
-
data: {
|
|
150
|
-
latex: '/foobar/latex',
|
|
151
|
-
wrapper: 'round_brackets'
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
it('should make mathml readOnly if MathPlugin.mathMlOptions.mmlEditing is false', function () {
|
|
156
|
-
_index["default"].mathMlOptions.mmlEditing = false;
|
|
157
|
-
var el = {
|
|
158
|
-
tagName: 'math',
|
|
159
|
-
outerHTML: '<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>'
|
|
160
|
-
};
|
|
161
|
-
var next = jest.fn();
|
|
162
|
-
var out = _index.serialization.deserialize(el, next);
|
|
163
|
-
expect(out).toEqual({
|
|
164
|
-
object: 'inline',
|
|
165
|
-
isVoid: true,
|
|
166
|
-
type: 'mathml',
|
|
167
|
-
data: {
|
|
168
|
-
html: el.outerHTML
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
describe('serialize', function () {
|
|
174
|
-
var assertSerialize = function assertSerialize(latex, expectedHtml, wrapper) {
|
|
175
|
-
wrapper = wrapper || _index["default"].ROUND_BRACKETS;
|
|
176
|
-
it("".concat(latex, " is serialized to: ").concat(expectedHtml), function () {
|
|
177
|
-
var object = {
|
|
178
|
-
kind: 'inline',
|
|
179
|
-
type: 'math',
|
|
180
|
-
isVoid: true,
|
|
181
|
-
nodes: [],
|
|
182
|
-
data: _slate.Data.create({
|
|
183
|
-
latex: latex,
|
|
184
|
-
wrapper: wrapper
|
|
185
|
-
})
|
|
186
|
-
};
|
|
187
|
-
var children = [];
|
|
188
|
-
var out = _index.serialization.serialize(object, children);
|
|
189
|
-
log('out: ', out);
|
|
190
|
-
expect(out).toEqual(/*#__PURE__*/_react["default"].createElement("span", {
|
|
191
|
-
"data-latex": "",
|
|
192
|
-
"data-raw": latex
|
|
193
|
-
}, expectedHtml));
|
|
194
|
-
});
|
|
195
|
-
};
|
|
196
|
-
assertSerialize('latex', '\\(latex\\)', _index["default"].ROUND_BRACKETS);
|
|
197
|
-
assertSerialize('latex', '\\(latex\\)', _index["default"].SQUARE_BRACKETS);
|
|
198
|
-
assertSerialize('latex', '$latex$', _index["default"].DOLLAR);
|
|
199
|
-
assertSerialize('latex', '$latex$', _index["default"].DOUBLE_DOLLAR);
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Note that when this is converted to html it get's escaped - but that's an issue with the slate html-serializer.
|
|
203
|
-
*/
|
|
204
|
-
assertSerialize('<', '\\(<\\)');
|
|
205
|
-
assertSerialize('x<y', '\\(x<y\\)');
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
describe('CustomToolbarComp', function () {
|
|
210
|
-
var onDataChange;
|
|
211
|
-
var onToolbarDone;
|
|
212
|
-
var renderComponent = function renderComponent() {
|
|
213
|
-
var extras = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
214
|
-
var mockChange = new _mockChange["default"]();
|
|
215
|
-
var defaults = {
|
|
216
|
-
node: {
|
|
217
|
-
key: '1',
|
|
218
|
-
data: _slate.Data.create({
|
|
219
|
-
latex: 'foo'
|
|
220
|
-
}),
|
|
221
|
-
equals: function equals() {
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
value: {
|
|
226
|
-
document: {
|
|
227
|
-
getNextText: jest.fn().mockReturnValue({
|
|
228
|
-
key: 'nt'
|
|
229
|
-
})
|
|
230
|
-
},
|
|
231
|
-
change: jest.fn().mockReturnValue(mockChange)
|
|
232
|
-
},
|
|
233
|
-
onDataChange: onDataChange,
|
|
234
|
-
onToolbarDone: onToolbarDone
|
|
235
|
-
};
|
|
236
|
-
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
237
|
-
return (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.CustomToolbarComp, props));
|
|
238
|
-
};
|
|
239
|
-
describe('render', function () {
|
|
240
|
-
it('renders toolbar without default keypadMode', function () {
|
|
241
|
-
renderComponent();
|
|
242
|
-
|
|
243
|
-
// Verify the toolbar is rendered
|
|
244
|
-
expect(_react2.screen.getByTestId('math-toolbar')).toBeInTheDocument();
|
|
245
|
-
expect(_react2.screen.getByRole('toolbar')).toBeInTheDocument();
|
|
246
|
-
});
|
|
247
|
-
it('renders toolbar with default keypadMode', function () {
|
|
248
|
-
renderComponent({
|
|
249
|
-
pluginProps: {
|
|
250
|
-
math: {
|
|
251
|
-
keypadMode: 'geometry'
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
// Verify the toolbar is rendered with keypadMode prop
|
|
257
|
-
expect(_react2.screen.getByTestId('math-toolbar')).toBeInTheDocument();
|
|
258
|
-
expect(_react2.screen.getByRole('toolbar')).toBeInTheDocument();
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
describe('onDone', function () {
|
|
262
|
-
it('calls onToolbarDone when done callback is triggered', function () {
|
|
263
|
-
onToolbarDone = jest.fn();
|
|
264
|
-
renderComponent();
|
|
265
|
-
|
|
266
|
-
// Trigger the onDone callback that was passed to MathToolbar
|
|
267
|
-
mockMathToolbarOnDone('oo');
|
|
268
|
-
expect(onToolbarDone).toHaveBeenCalledWith(expect.anything(), false);
|
|
269
|
-
});
|
|
270
|
-
});
|
|
271
|
-
describe('onChange', function () {
|
|
272
|
-
it('calls onDataChange when change callback is triggered', function () {
|
|
273
|
-
onDataChange = jest.fn();
|
|
274
|
-
renderComponent();
|
|
275
|
-
|
|
276
|
-
// Trigger the onChange callback that was passed to MathToolbar
|
|
277
|
-
mockMathToolbarOnChange('oo');
|
|
278
|
-
expect(onDataChange).toHaveBeenCalledWith('1', {
|
|
279
|
-
latex: 'oo'
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
});
|
|
284
|
-
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","names":["_react","_interopRequireDefault","require","_debug","_mockChange","_slate","_index","_interopRequireWildcard","_react2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","jest","mock","StaticMath","fn","getInterface","mockReturnThis","registerEmbed","mockMathToolbarOnChange","mockMathToolbarOnDone","MathPreview","createElement","MathToolbar","props","onChange","onDone","role","onClick","requireActual","mmlToLatex","log","debug","describe","plugin","mockChange","value","beforeEach","MathPlugin","MockChange","change","toolbar","test","expect","insertInline","toBeCalledWith","objectContaining","data","inlineMath","toHaveBeenCalledWith","_plugin$renderNode","renderNode","node","type","toEqual","assertDeserialize","html","expected","wrapType","it","concat","el","tagName","childNodes","getAttribute","hasAttribute","innerHTML","next","out","serialization","deserialize","object","isVoid","nodes","latex","wrapper","DOLLAR","ROUND_BRACKETS","mathMlOptions","mmlEditing","outerHTML","assertSerialize","expectedHtml","kind","Data","create","children","serialize","SQUARE_BRACKETS","DOUBLE_DOLLAR","onDataChange","onToolbarDone","renderComponent","extras","undefined","defaults","key","equals","document","getNextText","mockReturnValue","render","CustomToolbarComp","screen","getByTestId","toBeInTheDocument","getByRole","pluginProps","math","keypadMode","anything"],"sources":["../../../../src/plugins/math/__tests__/index.test.jsx"],"sourcesContent":["import React from 'react';\nimport debug from 'debug';\nimport MockChange from '../../image/__tests__/mock-change';\nimport { Data } from 'slate';\nimport MathPlugin, { CustomToolbarComp, inlineMath, serialization } from '../index';\nimport { render, screen } from '@testing-library/react';\n\njest.mock('@pie-framework/mathquill', () => ({\n StaticMath: jest.fn(),\n getInterface: jest.fn().mockReturnThis(),\n registerEmbed: jest.fn(),\n}));\n\nlet mockMathToolbarOnChange;\nlet mockMathToolbarOnDone;\n\njest.mock('@pie-lib/math-toolbar', () => ({\n MathPreview: () => <div data-testid=\"math-preview\" />,\n MathToolbar: (props) => {\n // Store callbacks for testing\n mockMathToolbarOnChange = props.onChange;\n mockMathToolbarOnDone = props.onDone;\n return (\n <div data-testid=\"math-toolbar\" role=\"toolbar\">\n <button data-testid=\"toolbar-change\" onClick={() => props.onChange && props.onChange('test-latex')}>\n Change\n </button>\n <button data-testid=\"toolbar-done\" onClick={() => props.onDone && props.onDone('test-latex')}>\n Done\n </button>\n </div>\n );\n },\n}));\n\njest.mock('@pie-lib/math-rendering', () => ({\n ...jest.requireActual('@pie-lib/math-rendering'),\n mmlToLatex: jest.fn(() => {\n return '/foobar/latex';\n }),\n}));\nconst log = debug('@pie-lib:editable-html:test:math');\n\n// I believe @andrei is moving this stuff out.\ndescribe('MathPlugin', () => {\n describe('toolbar', () => {\n describe('onClick', () => {\n let plugin, mockChange, value, onChange;\n beforeEach(() => {\n plugin = MathPlugin({});\n mockChange = new MockChange();\n value = {\n change: jest.fn(() => mockChange),\n };\n onChange = jest.fn();\n plugin.toolbar.onClick(value, onChange);\n });\n\n test('calls insertInline', () => {\n expect(mockChange.insertInline).toBeCalledWith(expect.objectContaining({ data: inlineMath().data }));\n });\n\n test('it calls onChange', () => {\n expect(onChange).toHaveBeenCalledWith(mockChange);\n });\n });\n });\n\n describe('renderNode', () => {\n test('the component has props', () => {\n const plugin = MathPlugin({});\n const { props } = plugin.renderNode({ node: { type: 'math' } });\n expect(props.node).toEqual({ type: 'math' });\n });\n });\n\n describe('serialization', () => {\n describe('deserialize', () => {\n const assertDeserialize = (html, expected, wrapType) => {\n it(`innerHTML: ${html} is deserialized to: ${expected} with wrapType: ${wrapType}`, () => {\n const el = {\n tagName: 'span',\n childNodes: [],\n getAttribute: jest.fn(() => ''),\n hasAttribute: jest.fn(() => true),\n innerHTML: html,\n };\n const next = jest.fn();\n\n const out = serialization.deserialize(el, next);\n expect(out).toEqual({\n object: 'inline',\n type: 'math',\n isVoid: true,\n nodes: [],\n data: {\n latex: expected,\n wrapper: wrapType,\n },\n });\n });\n };\n\n assertDeserialize('$$<$$', '<', MathPlugin.DOLLAR);\n assertDeserialize('$<$', '<', MathPlugin.DOLLAR);\n assertDeserialize('\\\\(<\\\\)', '<', MathPlugin.ROUND_BRACKETS);\n assertDeserialize('\\\\[<\\\\]', '<', MathPlugin.ROUND_BRACKETS);\n assertDeserialize('latex', 'latex', MathPlugin.ROUND_BRACKETS);\n assertDeserialize('\\\\displaystyle foo', 'foo', MathPlugin.ROUND_BRACKETS);\n\n it('should make mathml editable if MathPlugin.mathMlOptions.mmlEditing is true', () => {\n MathPlugin.mathMlOptions.mmlEditing = true;\n const el = {\n tagName: 'math',\n outerHTML:\n '<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>',\n };\n const next = jest.fn();\n\n const out = serialization.deserialize(el, next);\n\n expect(out).toEqual({\n object: 'inline',\n type: 'math',\n isVoid: true,\n nodes: [],\n data: {\n latex: '/foobar/latex',\n wrapper: 'round_brackets',\n },\n });\n });\n\n it('should make mathml readOnly if MathPlugin.mathMlOptions.mmlEditing is false', () => {\n MathPlugin.mathMlOptions.mmlEditing = false;\n const el = {\n tagName: 'math',\n outerHTML:\n '<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>',\n };\n const next = jest.fn();\n\n const out = serialization.deserialize(el, next);\n\n expect(out).toEqual({\n object: 'inline',\n isVoid: true,\n type: 'mathml',\n data: {\n html: el.outerHTML,\n },\n });\n });\n });\n\n describe('serialize', () => {\n const assertSerialize = (latex, expectedHtml, wrapper) => {\n wrapper = wrapper || MathPlugin.ROUND_BRACKETS;\n it(`${latex} is serialized to: ${expectedHtml}`, () => {\n const object = {\n kind: 'inline',\n type: 'math',\n isVoid: true,\n nodes: [],\n data: Data.create({ latex, wrapper }),\n };\n const children = [];\n\n const out = serialization.serialize(object, children);\n log('out: ', out);\n expect(out).toEqual(\n <span data-latex=\"\" data-raw={latex}>\n {expectedHtml}\n </span>,\n );\n });\n };\n\n assertSerialize('latex', '\\\\(latex\\\\)', MathPlugin.ROUND_BRACKETS);\n assertSerialize('latex', '\\\\(latex\\\\)', MathPlugin.SQUARE_BRACKETS);\n assertSerialize('latex', '$latex$', MathPlugin.DOLLAR);\n assertSerialize('latex', '$latex$', MathPlugin.DOUBLE_DOLLAR);\n\n /**\n * Note that when this is converted to html it get's escaped - but that's an issue with the slate html-serializer.\n */\n assertSerialize('<', '\\\\(<\\\\)');\n assertSerialize('x<y', '\\\\(x<y\\\\)');\n });\n });\n});\n\ndescribe('CustomToolbarComp', () => {\n let onDataChange;\n let onToolbarDone;\n\n const renderComponent = (extras = {}) => {\n let mockChange = new MockChange();\n const defaults = {\n node: {\n key: '1',\n data: Data.create({ latex: 'foo' }),\n equals: () => true,\n },\n value: {\n document: {\n getNextText: jest.fn().mockReturnValue({ key: 'nt' }),\n },\n change: jest.fn().mockReturnValue(mockChange),\n },\n onDataChange,\n onToolbarDone,\n };\n\n const props = {\n ...defaults,\n ...extras,\n };\n\n return render(<CustomToolbarComp {...props} />);\n };\n\n describe('render', () => {\n it('renders toolbar without default keypadMode', () => {\n renderComponent();\n\n // Verify the toolbar is rendered\n expect(screen.getByTestId('math-toolbar')).toBeInTheDocument();\n expect(screen.getByRole('toolbar')).toBeInTheDocument();\n });\n\n it('renders toolbar with default keypadMode', () => {\n renderComponent({ pluginProps: { math: { keypadMode: 'geometry' } } });\n\n // Verify the toolbar is rendered with keypadMode prop\n expect(screen.getByTestId('math-toolbar')).toBeInTheDocument();\n expect(screen.getByRole('toolbar')).toBeInTheDocument();\n });\n });\n\n describe('onDone', () => {\n it('calls onToolbarDone when done callback is triggered', () => {\n onToolbarDone = jest.fn();\n renderComponent();\n\n // Trigger the onDone callback that was passed to MathToolbar\n mockMathToolbarOnDone('oo');\n\n expect(onToolbarDone).toHaveBeenCalledWith(expect.anything(), false);\n });\n });\n\n describe('onChange', () => {\n it('calls onDataChange when change callback is triggered', () => {\n onDataChange = jest.fn();\n renderComponent();\n\n // Trigger the onChange callback that was passed to MathToolbar\n mockMathToolbarOnChange('oo');\n\n expect(onDataChange).toHaveBeenCalledWith('1', { latex: 'oo' });\n });\n });\n});\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAC,uBAAA,CAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAAwD,SAAAK,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,wBAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,QAAApB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAgB,MAAA,CAAAI,IAAA,CAAArB,CAAA,OAAAiB,MAAA,CAAAK,qBAAA,QAAAhB,CAAA,GAAAW,MAAA,CAAAK,qBAAA,CAAAtB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAApB,CAAA,WAAAc,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAqB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAA0B,cAAA3B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAyB,SAAA,CAAAC,MAAA,EAAA1B,CAAA,UAAAF,CAAA,WAAA2B,SAAA,CAAAzB,CAAA,IAAAyB,SAAA,CAAAzB,CAAA,QAAAA,CAAA,OAAAiB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,OAAA6B,OAAA,WAAA3B,CAAA,QAAA4B,gBAAA,aAAA/B,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAc,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAjC,CAAA,EAAAiB,MAAA,CAAAe,yBAAA,CAAA/B,CAAA,KAAAmB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,GAAA6B,OAAA,WAAA3B,CAAA,IAAAc,MAAA,CAAAC,cAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAc,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA;AAExDkC,IAAI,CAACC,IAAI,CAAC,0BAA0B,EAAE;EAAA,OAAO;IAC3CC,UAAU,EAAEF,IAAI,CAACG,EAAE,CAAC,CAAC;IACrBC,YAAY,EAAEJ,IAAI,CAACG,EAAE,CAAC,CAAC,CAACE,cAAc,CAAC,CAAC;IACxCC,aAAa,EAAEN,IAAI,CAACG,EAAE,CAAC;EACzB,CAAC;AAAA,CAAC,CAAC;AAEH,IAAII,uBAAuB;AAC3B,IAAIC,qBAAqB;AAEzBR,IAAI,CAACC,IAAI,CAAC,uBAAuB,EAAE;EAAA,OAAO;IACxCQ,WAAW,EAAE,SAAbA,WAAWA,CAAA;MAAA,oBAAQpD,MAAA,YAAAqD,aAAA;QAAK,eAAY;MAAc,CAAE,CAAC;IAAA;IACrDC,WAAW,EAAE,SAAbA,WAAWA,CAAGC,KAAK,EAAK;MACtB;MACAL,uBAAuB,GAAGK,KAAK,CAACC,QAAQ;MACxCL,qBAAqB,GAAGI,KAAK,CAACE,MAAM;MACpC,oBACEzD,MAAA,YAAAqD,aAAA;QAAK,eAAY,cAAc;QAACK,IAAI,EAAC;MAAS,gBAC5C1D,MAAA,YAAAqD,aAAA;QAAQ,eAAY,gBAAgB;QAACM,OAAO,EAAE,SAATA,OAAOA,CAAA;UAAA,OAAQJ,KAAK,CAACC,QAAQ,IAAID,KAAK,CAACC,QAAQ,CAAC,YAAY,CAAC;QAAA;MAAC,GAAC,QAE5F,CAAC,eACTxD,MAAA,YAAAqD,aAAA;QAAQ,eAAY,cAAc;QAACM,OAAO,EAAE,SAATA,OAAOA,CAAA;UAAA,OAAQJ,KAAK,CAACE,MAAM,IAAIF,KAAK,CAACE,MAAM,CAAC,YAAY,CAAC;QAAA;MAAC,GAAC,MAEtF,CACL,CAAC;IAEV;EACF,CAAC;AAAA,CAAC,CAAC;AAEHd,IAAI,CAACC,IAAI,CAAC,yBAAyB,EAAE;EAAA,OAAAR,aAAA,CAAAA,aAAA,KAChCO,IAAI,CAACiB,aAAa,CAAC,yBAAyB,CAAC;IAChDC,UAAU,EAAElB,IAAI,CAACG,EAAE,CAAC,YAAM;MACxB,OAAO,eAAe;IACxB,CAAC;EAAC;AAAA,CACF,CAAC;AACH,IAAMgB,GAAG,GAAG,IAAAC,iBAAK,EAAC,kCAAkC,CAAC;;AAErD;AACAC,QAAQ,CAAC,YAAY,EAAE,YAAM;EAC3BA,QAAQ,CAAC,SAAS,EAAE,YAAM;IACxBA,QAAQ,CAAC,SAAS,EAAE,YAAM;MACxB,IAAIC,MAAM,EAAEC,UAAU,EAAEC,KAAK,EAAEX,QAAQ;MACvCY,UAAU,CAAC,YAAM;QACfH,MAAM,GAAG,IAAAI,iBAAU,EAAC,CAAC,CAAC,CAAC;QACvBH,UAAU,GAAG,IAAII,sBAAU,CAAC,CAAC;QAC7BH,KAAK,GAAG;UACNI,MAAM,EAAE5B,IAAI,CAACG,EAAE,CAAC;YAAA,OAAMoB,UAAU;UAAA;QAClC,CAAC;QACDV,QAAQ,GAAGb,IAAI,CAACG,EAAE,CAAC,CAAC;QACpBmB,MAAM,CAACO,OAAO,CAACb,OAAO,CAACQ,KAAK,EAAEX,QAAQ,CAAC;MACzC,CAAC,CAAC;MAEFiB,IAAI,CAAC,oBAAoB,EAAE,YAAM;QAC/BC,MAAM,CAACR,UAAU,CAACS,YAAY,CAAC,CAACC,cAAc,CAACF,MAAM,CAACG,gBAAgB,CAAC;UAAEC,IAAI,EAAE,IAAAC,iBAAU,EAAC,CAAC,CAACD;QAAK,CAAC,CAAC,CAAC;MACtG,CAAC,CAAC;MAEFL,IAAI,CAAC,mBAAmB,EAAE,YAAM;QAC9BC,MAAM,CAAClB,QAAQ,CAAC,CAACwB,oBAAoB,CAACd,UAAU,CAAC;MACnD,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFF,QAAQ,CAAC,YAAY,EAAE,YAAM;IAC3BS,IAAI,CAAC,yBAAyB,EAAE,YAAM;MACpC,IAAMR,MAAM,GAAG,IAAAI,iBAAU,EAAC,CAAC,CAAC,CAAC;MAC7B,IAAAY,kBAAA,GAAkBhB,MAAM,CAACiB,UAAU,CAAC;UAAEC,IAAI,EAAE;YAAEC,IAAI,EAAE;UAAO;QAAE,CAAC,CAAC;QAAvD7B,KAAK,GAAA0B,kBAAA,CAAL1B,KAAK;MACbmB,MAAM,CAACnB,KAAK,CAAC4B,IAAI,CAAC,CAACE,OAAO,CAAC;QAAED,IAAI,EAAE;MAAO,CAAC,CAAC;IAC9C,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFpB,QAAQ,CAAC,eAAe,EAAE,YAAM;IAC9BA,QAAQ,CAAC,aAAa,EAAE,YAAM;MAC5B,IAAMsB,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ,EAAK;QACtDC,EAAE,eAAAC,MAAA,CAAeJ,IAAI,2BAAAI,MAAA,CAAwBH,QAAQ,sBAAAG,MAAA,CAAmBF,QAAQ,GAAI,YAAM;UACxF,IAAMG,EAAE,GAAG;YACTC,OAAO,EAAE,MAAM;YACfC,UAAU,EAAE,EAAE;YACdC,YAAY,EAAEpD,IAAI,CAACG,EAAE,CAAC;cAAA,OAAM,EAAE;YAAA,EAAC;YAC/BkD,YAAY,EAAErD,IAAI,CAACG,EAAE,CAAC;cAAA,OAAM,IAAI;YAAA,EAAC;YACjCmD,SAAS,EAAEV;UACb,CAAC;UACD,IAAMW,IAAI,GAAGvD,IAAI,CAACG,EAAE,CAAC,CAAC;UAEtB,IAAMqD,GAAG,GAAGC,oBAAa,CAACC,WAAW,CAACT,EAAE,EAAEM,IAAI,CAAC;UAC/CxB,MAAM,CAACyB,GAAG,CAAC,CAACd,OAAO,CAAC;YAClBiB,MAAM,EAAE,QAAQ;YAChBlB,IAAI,EAAE,MAAM;YACZmB,MAAM,EAAE,IAAI;YACZC,KAAK,EAAE,EAAE;YACT1B,IAAI,EAAE;cACJ2B,KAAK,EAAEjB,QAAQ;cACfkB,OAAO,EAAEjB;YACX;UACF,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC;MAEDH,iBAAiB,CAAC,UAAU,EAAE,GAAG,EAAEjB,iBAAU,CAACsC,MAAM,CAAC;MACrDrB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAEjB,iBAAU,CAACsC,MAAM,CAAC;MACnDrB,iBAAiB,CAAC,YAAY,EAAE,GAAG,EAAEjB,iBAAU,CAACuC,cAAc,CAAC;MAC/DtB,iBAAiB,CAAC,YAAY,EAAE,GAAG,EAAEjB,iBAAU,CAACuC,cAAc,CAAC;MAC/DtB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAEjB,iBAAU,CAACuC,cAAc,CAAC;MAC9DtB,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,EAAEjB,iBAAU,CAACuC,cAAc,CAAC;MAEzElB,EAAE,CAAC,4EAA4E,EAAE,YAAM;QACrFrB,iBAAU,CAACwC,aAAa,CAACC,UAAU,GAAG,IAAI;QAC1C,IAAMlB,EAAE,GAAG;UACTC,OAAO,EAAE,MAAM;UACfkB,SAAS,EACP;QACJ,CAAC;QACD,IAAMb,IAAI,GAAGvD,IAAI,CAACG,EAAE,CAAC,CAAC;QAEtB,IAAMqD,GAAG,GAAGC,oBAAa,CAACC,WAAW,CAACT,EAAE,EAAEM,IAAI,CAAC;QAE/CxB,MAAM,CAACyB,GAAG,CAAC,CAACd,OAAO,CAAC;UAClBiB,MAAM,EAAE,QAAQ;UAChBlB,IAAI,EAAE,MAAM;UACZmB,MAAM,EAAE,IAAI;UACZC,KAAK,EAAE,EAAE;UACT1B,IAAI,EAAE;YACJ2B,KAAK,EAAE,eAAe;YACtBC,OAAO,EAAE;UACX;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFhB,EAAE,CAAC,6EAA6E,EAAE,YAAM;QACtFrB,iBAAU,CAACwC,aAAa,CAACC,UAAU,GAAG,KAAK;QAC3C,IAAMlB,EAAE,GAAG;UACTC,OAAO,EAAE,MAAM;UACfkB,SAAS,EACP;QACJ,CAAC;QACD,IAAMb,IAAI,GAAGvD,IAAI,CAACG,EAAE,CAAC,CAAC;QAEtB,IAAMqD,GAAG,GAAGC,oBAAa,CAACC,WAAW,CAACT,EAAE,EAAEM,IAAI,CAAC;QAE/CxB,MAAM,CAACyB,GAAG,CAAC,CAACd,OAAO,CAAC;UAClBiB,MAAM,EAAE,QAAQ;UAChBC,MAAM,EAAE,IAAI;UACZnB,IAAI,EAAE,QAAQ;UACdN,IAAI,EAAE;YACJS,IAAI,EAAEK,EAAE,CAACmB;UACX;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF/C,QAAQ,CAAC,WAAW,EAAE,YAAM;MAC1B,IAAMgD,eAAe,GAAG,SAAlBA,eAAeA,CAAIP,KAAK,EAAEQ,YAAY,EAAEP,OAAO,EAAK;QACxDA,OAAO,GAAGA,OAAO,IAAIrC,iBAAU,CAACuC,cAAc;QAC9ClB,EAAE,IAAAC,MAAA,CAAIc,KAAK,yBAAAd,MAAA,CAAsBsB,YAAY,GAAI,YAAM;UACrD,IAAMX,MAAM,GAAG;YACbY,IAAI,EAAE,QAAQ;YACd9B,IAAI,EAAE,MAAM;YACZmB,MAAM,EAAE,IAAI;YACZC,KAAK,EAAE,EAAE;YACT1B,IAAI,EAAEqC,WAAI,CAACC,MAAM,CAAC;cAAEX,KAAK,EAALA,KAAK;cAAEC,OAAO,EAAPA;YAAQ,CAAC;UACtC,CAAC;UACD,IAAMW,QAAQ,GAAG,EAAE;UAEnB,IAAMlB,GAAG,GAAGC,oBAAa,CAACkB,SAAS,CAAChB,MAAM,EAAEe,QAAQ,CAAC;UACrDvD,GAAG,CAAC,OAAO,EAAEqC,GAAG,CAAC;UACjBzB,MAAM,CAACyB,GAAG,CAAC,CAACd,OAAO,cACjBrF,MAAA,YAAAqD,aAAA;YAAM,cAAW,EAAE;YAAC,YAAUoD;UAAM,GACjCQ,YACG,CACR,CAAC;QACH,CAAC,CAAC;MACJ,CAAC;MAEDD,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE3C,iBAAU,CAACuC,cAAc,CAAC;MAClEI,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE3C,iBAAU,CAACkD,eAAe,CAAC;MACnEP,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE3C,iBAAU,CAACsC,MAAM,CAAC;MACtDK,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE3C,iBAAU,CAACmD,aAAa,CAAC;;MAE7D;AACN;AACA;MACMR,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC;MAC/BA,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFhD,QAAQ,CAAC,mBAAmB,EAAE,YAAM;EAClC,IAAIyD,YAAY;EAChB,IAAIC,aAAa;EAEjB,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAoB;IAAA,IAAhBC,MAAM,GAAAvF,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAwF,SAAA,GAAAxF,SAAA,MAAG,CAAC,CAAC;IAClC,IAAI6B,UAAU,GAAG,IAAII,sBAAU,CAAC,CAAC;IACjC,IAAMwD,QAAQ,GAAG;MACf3C,IAAI,EAAE;QACJ4C,GAAG,EAAE,GAAG;QACRjD,IAAI,EAAEqC,WAAI,CAACC,MAAM,CAAC;UAAEX,KAAK,EAAE;QAAM,CAAC,CAAC;QACnCuB,MAAM,EAAE,SAARA,MAAMA,CAAA;UAAA,OAAQ,IAAI;QAAA;MACpB,CAAC;MACD7D,KAAK,EAAE;QACL8D,QAAQ,EAAE;UACRC,WAAW,EAAEvF,IAAI,CAACG,EAAE,CAAC,CAAC,CAACqF,eAAe,CAAC;YAAEJ,GAAG,EAAE;UAAK,CAAC;QACtD,CAAC;QACDxD,MAAM,EAAE5B,IAAI,CAACG,EAAE,CAAC,CAAC,CAACqF,eAAe,CAACjE,UAAU;MAC9C,CAAC;MACDuD,YAAY,EAAZA,YAAY;MACZC,aAAa,EAAbA;IACF,CAAC;IAED,IAAMnE,KAAK,GAAAnB,aAAA,CAAAA,aAAA,KACN0F,QAAQ,GACRF,MAAM,CACV;IAED,OAAO,IAAAQ,cAAM,eAACpI,MAAA,YAAAqD,aAAA,CAAC/C,MAAA,CAAA+H,iBAAiB,EAAK9E,KAAQ,CAAC,CAAC;EACjD,CAAC;EAEDS,QAAQ,CAAC,QAAQ,EAAE,YAAM;IACvB0B,EAAE,CAAC,4CAA4C,EAAE,YAAM;MACrDiC,eAAe,CAAC,CAAC;;MAEjB;MACAjD,MAAM,CAAC4D,cAAM,CAACC,WAAW,CAAC,cAAc,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;MAC9D9D,MAAM,CAAC4D,cAAM,CAACG,SAAS,CAAC,SAAS,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF9C,EAAE,CAAC,yCAAyC,EAAE,YAAM;MAClDiC,eAAe,CAAC;QAAEe,WAAW,EAAE;UAAEC,IAAI,EAAE;YAAEC,UAAU,EAAE;UAAW;QAAE;MAAE,CAAC,CAAC;;MAEtE;MACAlE,MAAM,CAAC4D,cAAM,CAACC,WAAW,CAAC,cAAc,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;MAC9D9D,MAAM,CAAC4D,cAAM,CAACG,SAAS,CAAC,SAAS,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IACzD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFxE,QAAQ,CAAC,QAAQ,EAAE,YAAM;IACvB0B,EAAE,CAAC,qDAAqD,EAAE,YAAM;MAC9DgC,aAAa,GAAG/E,IAAI,CAACG,EAAE,CAAC,CAAC;MACzB6E,eAAe,CAAC,CAAC;;MAEjB;MACAxE,qBAAqB,CAAC,IAAI,CAAC;MAE3BuB,MAAM,CAACgD,aAAa,CAAC,CAAC1C,oBAAoB,CAACN,MAAM,CAACmE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;IACtE,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF7E,QAAQ,CAAC,UAAU,EAAE,YAAM;IACzB0B,EAAE,CAAC,sDAAsD,EAAE,YAAM;MAC/D+B,YAAY,GAAG9E,IAAI,CAACG,EAAE,CAAC,CAAC;MACxB6E,eAAe,CAAC,CAAC;;MAEjB;MACAzE,uBAAuB,CAAC,IAAI,CAAC;MAE7BwB,MAAM,CAAC+C,YAAY,CAAC,CAACzC,oBAAoB,CAAC,GAAG,EAAE;QAAEyB,KAAK,EAAE;MAAK,CAAC,CAAC;IACjE,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _ = _interopRequireDefault(require("../"));
|
|
5
|
-
describe('media plugin', function () {
|
|
6
|
-
var imagePlugin = (0, _["default"])('video');
|
|
7
|
-
describe('normalizeNode', function () {
|
|
8
|
-
it('should exit the function if the node is not of type document', function () {
|
|
9
|
-
var returnValue = imagePlugin.normalizeNode({
|
|
10
|
-
object: 'image'
|
|
11
|
-
});
|
|
12
|
-
expect(returnValue).toEqual(undefined);
|
|
13
|
-
});
|
|
14
|
-
it('should exit there are no changes needed', function () {
|
|
15
|
-
var nodes = [{
|
|
16
|
-
object: 'text',
|
|
17
|
-
text: 'Before Media'
|
|
18
|
-
}, {
|
|
19
|
-
type: 'video'
|
|
20
|
-
}, {
|
|
21
|
-
object: 'text',
|
|
22
|
-
text: 'After Media'
|
|
23
|
-
}];
|
|
24
|
-
var returnValue = imagePlugin.normalizeNode({
|
|
25
|
-
object: 'document',
|
|
26
|
-
findDescendant: jest.fn(function (callback) {
|
|
27
|
-
nodes.forEach(function (n) {
|
|
28
|
-
return callback(n);
|
|
29
|
-
});
|
|
30
|
-
})
|
|
31
|
-
});
|
|
32
|
-
expect(returnValue).toEqual(undefined);
|
|
33
|
-
});
|
|
34
|
-
it('should return a function if there is a node with an empty text before a media element', function () {
|
|
35
|
-
var nodes = [{
|
|
36
|
-
object: 'text',
|
|
37
|
-
text: '',
|
|
38
|
-
key: '1'
|
|
39
|
-
}, {
|
|
40
|
-
type: 'video',
|
|
41
|
-
key: '2'
|
|
42
|
-
}, {
|
|
43
|
-
object: 'text',
|
|
44
|
-
text: 'After Media',
|
|
45
|
-
key: '3'
|
|
46
|
-
}];
|
|
47
|
-
var findDescendant = jest.fn(function (callback) {
|
|
48
|
-
nodes.forEach(function (n) {
|
|
49
|
-
return callback(n);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
var change = {
|
|
53
|
-
withoutNormalization: jest.fn(function (callback) {
|
|
54
|
-
callback();
|
|
55
|
-
}),
|
|
56
|
-
insertTextByKey: jest.fn()
|
|
57
|
-
};
|
|
58
|
-
var returnValue = imagePlugin.normalizeNode({
|
|
59
|
-
object: 'document',
|
|
60
|
-
findDescendant: findDescendant
|
|
61
|
-
});
|
|
62
|
-
expect(returnValue).toEqual(expect.any(Function));
|
|
63
|
-
returnValue(change);
|
|
64
|
-
expect(change.withoutNormalization).toHaveBeenCalledWith(expect.any(Function));
|
|
65
|
-
expect(change.insertTextByKey).toHaveBeenCalledWith('1', 0, ' ');
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","names":["_","_interopRequireDefault","require","describe","imagePlugin","MediaPlugin","it","returnValue","normalizeNode","object","expect","toEqual","undefined","nodes","text","type","findDescendant","jest","fn","callback","forEach","n","key","change","withoutNormalization","insertTextByKey","any","Function","toHaveBeenCalledWith"],"sources":["../../../../src/plugins/media/__tests__/index.test.js"],"sourcesContent":["import MediaPlugin from '../';\n\ndescribe('media plugin', () => {\n const imagePlugin = MediaPlugin('video');\n\n describe('normalizeNode', () => {\n it('should exit the function if the node is not of type document', () => {\n const returnValue = imagePlugin.normalizeNode({ object: 'image' });\n\n expect(returnValue).toEqual(undefined);\n });\n\n it('should exit there are no changes needed', () => {\n const nodes = [\n {\n object: 'text',\n text: 'Before Media',\n },\n {\n type: 'video',\n },\n {\n object: 'text',\n text: 'After Media',\n },\n ];\n const returnValue = imagePlugin.normalizeNode({\n object: 'document',\n findDescendant: jest.fn((callback) => {\n nodes.forEach((n) => callback(n));\n }),\n });\n expect(returnValue).toEqual(undefined);\n });\n\n it('should return a function if there is a node with an empty text before a media element', () => {\n const nodes = [\n {\n object: 'text',\n text: '',\n key: '1',\n },\n {\n type: 'video',\n key: '2',\n },\n {\n object: 'text',\n text: 'After Media',\n key: '3',\n },\n ];\n const findDescendant = jest.fn((callback) => {\n nodes.forEach((n) => callback(n));\n });\n const change = {\n withoutNormalization: jest.fn((callback) => {\n callback();\n }),\n insertTextByKey: jest.fn(),\n };\n const returnValue = imagePlugin.normalizeNode({\n object: 'document',\n findDescendant,\n });\n\n expect(returnValue).toEqual(expect.any(Function));\n\n returnValue(change);\n\n expect(change.withoutNormalization).toHaveBeenCalledWith(expect.any(Function));\n expect(change.insertTextByKey).toHaveBeenCalledWith('1', 0, ' ');\n });\n });\n});\n"],"mappings":";;;AAAA,IAAAA,CAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEAC,QAAQ,CAAC,cAAc,EAAE,YAAM;EAC7B,IAAMC,WAAW,GAAG,IAAAC,YAAW,EAAC,OAAO,CAAC;EAExCF,QAAQ,CAAC,eAAe,EAAE,YAAM;IAC9BG,EAAE,CAAC,8DAA8D,EAAE,YAAM;MACvE,IAAMC,WAAW,GAAGH,WAAW,CAACI,aAAa,CAAC;QAAEC,MAAM,EAAE;MAAQ,CAAC,CAAC;MAElEC,MAAM,CAACH,WAAW,CAAC,CAACI,OAAO,CAACC,SAAS,CAAC;IACxC,CAAC,CAAC;IAEFN,EAAE,CAAC,yCAAyC,EAAE,YAAM;MAClD,IAAMO,KAAK,GAAG,CACZ;QACEJ,MAAM,EAAE,MAAM;QACdK,IAAI,EAAE;MACR,CAAC,EACD;QACEC,IAAI,EAAE;MACR,CAAC,EACD;QACEN,MAAM,EAAE,MAAM;QACdK,IAAI,EAAE;MACR,CAAC,CACF;MACD,IAAMP,WAAW,GAAGH,WAAW,CAACI,aAAa,CAAC;QAC5CC,MAAM,EAAE,UAAU;QAClBO,cAAc,EAAEC,IAAI,CAACC,EAAE,CAAC,UAACC,QAAQ,EAAK;UACpCN,KAAK,CAACO,OAAO,CAAC,UAACC,CAAC;YAAA,OAAKF,QAAQ,CAACE,CAAC,CAAC;UAAA,EAAC;QACnC,CAAC;MACH,CAAC,CAAC;MACFX,MAAM,CAACH,WAAW,CAAC,CAACI,OAAO,CAACC,SAAS,CAAC;IACxC,CAAC,CAAC;IAEFN,EAAE,CAAC,uFAAuF,EAAE,YAAM;MAChG,IAAMO,KAAK,GAAG,CACZ;QACEJ,MAAM,EAAE,MAAM;QACdK,IAAI,EAAE,EAAE;QACRQ,GAAG,EAAE;MACP,CAAC,EACD;QACEP,IAAI,EAAE,OAAO;QACbO,GAAG,EAAE;MACP,CAAC,EACD;QACEb,MAAM,EAAE,MAAM;QACdK,IAAI,EAAE,aAAa;QACnBQ,GAAG,EAAE;MACP,CAAC,CACF;MACD,IAAMN,cAAc,GAAGC,IAAI,CAACC,EAAE,CAAC,UAACC,QAAQ,EAAK;QAC3CN,KAAK,CAACO,OAAO,CAAC,UAACC,CAAC;UAAA,OAAKF,QAAQ,CAACE,CAAC,CAAC;QAAA,EAAC;MACnC,CAAC,CAAC;MACF,IAAME,MAAM,GAAG;QACbC,oBAAoB,EAAEP,IAAI,CAACC,EAAE,CAAC,UAACC,QAAQ,EAAK;UAC1CA,QAAQ,CAAC,CAAC;QACZ,CAAC,CAAC;QACFM,eAAe,EAAER,IAAI,CAACC,EAAE,CAAC;MAC3B,CAAC;MACD,IAAMX,WAAW,GAAGH,WAAW,CAACI,aAAa,CAAC;QAC5CC,MAAM,EAAE,UAAU;QAClBO,cAAc,EAAdA;MACF,CAAC,CAAC;MAEFN,MAAM,CAACH,WAAW,CAAC,CAACI,OAAO,CAACD,MAAM,CAACgB,GAAG,CAACC,QAAQ,CAAC,CAAC;MAEjDpB,WAAW,CAACgB,MAAM,CAAC;MAEnBb,MAAM,CAACa,MAAM,CAACC,oBAAoB,CAAC,CAACI,oBAAoB,CAAClB,MAAM,CAACgB,GAAG,CAACC,QAAQ,CAAC,CAAC;MAC9EjB,MAAM,CAACa,MAAM,CAACE,eAAe,CAAC,CAACG,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClE,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _react = _interopRequireDefault(require("react"));
|
|
5
|
-
var _react2 = require("@testing-library/react");
|
|
6
|
-
var _choice = _interopRequireDefault(require("../choice"));
|
|
7
|
-
// Mock @dnd-kit hooks to avoid DndContext requirement
|
|
8
|
-
jest.mock('@dnd-kit/core', function () {
|
|
9
|
-
return {
|
|
10
|
-
useDraggable: jest.fn(function () {
|
|
11
|
-
return {
|
|
12
|
-
attributes: {},
|
|
13
|
-
listeners: {},
|
|
14
|
-
setNodeRef: jest.fn(),
|
|
15
|
-
isDragging: false
|
|
16
|
-
};
|
|
17
|
-
}),
|
|
18
|
-
useDroppable: jest.fn(function () {
|
|
19
|
-
return {
|
|
20
|
-
setNodeRef: jest.fn(),
|
|
21
|
-
isOver: false,
|
|
22
|
-
active: null
|
|
23
|
-
};
|
|
24
|
-
})
|
|
25
|
-
};
|
|
26
|
-
});
|
|
27
|
-
jest.mock('@pie-lib/math-rendering', function () {
|
|
28
|
-
return {
|
|
29
|
-
renderMath: jest.fn()
|
|
30
|
-
};
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
// Collect the CSS rules emotion/MUI injected into the document (jsdom uses insertRule).
|
|
34
|
-
var collectEmotionRules = function collectEmotionRules() {
|
|
35
|
-
var rules = [];
|
|
36
|
-
for (var _i = 0, _Array$from = Array.from(document.styleSheets); _i < _Array$from.length; _i++) {
|
|
37
|
-
var sheet = _Array$from[_i];
|
|
38
|
-
try {
|
|
39
|
-
for (var _i2 = 0, _Array$from2 = Array.from(sheet.cssRules); _i2 < _Array$from2.length; _i2++) {
|
|
40
|
-
var rule = _Array$from2[_i2];
|
|
41
|
-
rules.push(rule.cssText);
|
|
42
|
-
}
|
|
43
|
-
} catch (e) {
|
|
44
|
-
/* inaccessible stylesheet */
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return rules;
|
|
48
|
-
};
|
|
49
|
-
describe('drag-in-the-blank choice', function () {
|
|
50
|
-
var defaultProps = {
|
|
51
|
-
value: {
|
|
52
|
-
id: '1',
|
|
53
|
-
value: '<math>1/2</math>'
|
|
54
|
-
},
|
|
55
|
-
disabled: false,
|
|
56
|
-
instanceId: 'test-instance',
|
|
57
|
-
n: {
|
|
58
|
-
key: 'key-0'
|
|
59
|
-
},
|
|
60
|
-
nodeProps: {},
|
|
61
|
-
opts: {
|
|
62
|
-
options: {
|
|
63
|
-
duplicates: false
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
it('renders without crashing', function () {
|
|
68
|
-
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_choice["default"], defaultProps)),
|
|
69
|
-
container = _render.container;
|
|
70
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
71
|
-
});
|
|
72
|
-
describe('fraction math styling', function () {
|
|
73
|
-
it('enlarges numerator/denominator digits adjacent to a fraction to 120%', function () {
|
|
74
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_choice["default"], defaultProps));
|
|
75
|
-
var rule = collectEmotionRules().find(function (r) {
|
|
76
|
-
return r.includes('mjx-mn') && r.includes('mjx-mfrac');
|
|
77
|
-
});
|
|
78
|
-
expect(rule).toBeDefined();
|
|
79
|
-
expect(rule).toMatch(/mjx-mn:has\(~\s*mjx-mfrac\)/);
|
|
80
|
-
expect(rule).toMatch(/mjx-mfrac\s*~\s*mjx-mn/);
|
|
81
|
-
expect(rule).toMatch(/font-size:\s*120%\s*!important/i);
|
|
82
|
-
});
|
|
83
|
-
it('keeps the existing mjx-frac 120% rule', function () {
|
|
84
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_choice["default"], defaultProps));
|
|
85
|
-
var rule = collectEmotionRules().find(function (r) {
|
|
86
|
-
return /(^|[^-])mjx-frac/.test(r) && !r.includes('mjx-mfrac');
|
|
87
|
-
});
|
|
88
|
-
expect(rule).toBeDefined();
|
|
89
|
-
expect(rule).toMatch(/font-size:\s*120%\s*!important/i);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
//# sourceMappingURL=choice.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"choice.test.js","names":["_react","_interopRequireDefault","require","_react2","_choice","jest","mock","useDraggable","fn","attributes","listeners","setNodeRef","isDragging","useDroppable","isOver","active","renderMath","collectEmotionRules","rules","_i","_Array$from","Array","from","document","styleSheets","length","sheet","_i2","_Array$from2","cssRules","rule","push","cssText","e","describe","defaultProps","value","id","disabled","instanceId","n","key","nodeProps","opts","options","duplicates","it","_render","render","createElement","container","expect","firstChild","toBeInTheDocument","find","r","includes","toBeDefined","toMatch","test"],"sources":["../../../../../src/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js"],"sourcesContent":["import React from 'react';\nimport { render } from '@testing-library/react';\nimport DragDropChoice from '../choice';\n\n// Mock @dnd-kit hooks to avoid DndContext requirement\njest.mock('@dnd-kit/core', () => ({\n useDraggable: jest.fn(() => ({\n attributes: {},\n listeners: {},\n setNodeRef: jest.fn(),\n isDragging: false,\n })),\n useDroppable: jest.fn(() => ({\n setNodeRef: jest.fn(),\n isOver: false,\n active: null,\n })),\n}));\n\njest.mock('@pie-lib/math-rendering', () => ({\n renderMath: jest.fn(),\n}));\n\n// Collect the CSS rules emotion/MUI injected into the document (jsdom uses insertRule).\nconst collectEmotionRules = () => {\n const rules = [];\n for (const sheet of Array.from(document.styleSheets)) {\n try {\n for (const rule of Array.from(sheet.cssRules)) {\n rules.push(rule.cssText);\n }\n } catch (e) {\n /* inaccessible stylesheet */\n }\n }\n return rules;\n};\n\ndescribe('drag-in-the-blank choice', () => {\n const defaultProps = {\n value: { id: '1', value: '<math>1/2</math>' },\n disabled: false,\n instanceId: 'test-instance',\n n: { key: 'key-0' },\n nodeProps: {},\n opts: { options: { duplicates: false } },\n };\n\n it('renders without crashing', () => {\n const { container } = render(<DragDropChoice {...defaultProps} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n\n describe('fraction math styling', () => {\n it('enlarges numerator/denominator digits adjacent to a fraction to 120%', () => {\n render(<DragDropChoice {...defaultProps} />);\n const rule = collectEmotionRules().find((r) => r.includes('mjx-mn') && r.includes('mjx-mfrac'));\n expect(rule).toBeDefined();\n expect(rule).toMatch(/mjx-mn:has\\(~\\s*mjx-mfrac\\)/);\n expect(rule).toMatch(/mjx-mfrac\\s*~\\s*mjx-mn/);\n expect(rule).toMatch(/font-size:\\s*120%\\s*!important/i);\n });\n\n it('keeps the existing mjx-frac 120% rule', () => {\n render(<DragDropChoice {...defaultProps} />);\n const rule = collectEmotionRules().find((r) => /(^|[^-])mjx-frac/.test(r) && !r.includes('mjx-mfrac'));\n expect(rule).toBeDefined();\n expect(rule).toMatch(/font-size:\\s*120%\\s*!important/i);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|