@pie-lib/editable-html 13.0.8 → 13.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +0 -28
  2. package/lib/__tests__/editor-utils.test.js +164 -0
  3. package/lib/__tests__/editor-utils.test.js.map +1 -0
  4. package/lib/__tests__/serialization.test.js +241 -0
  5. package/lib/__tests__/serialization.test.js.map +1 -0
  6. package/lib/__tests__/utils.js +79 -0
  7. package/lib/__tests__/utils.js.map +1 -0
  8. package/lib/plugins/image/__tests__/component.test.js +96 -0
  9. package/lib/plugins/image/__tests__/component.test.js.map +1 -0
  10. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +131 -0
  11. package/lib/plugins/image/__tests__/image-toolbar-logic.test.js.map +1 -0
  12. package/lib/plugins/image/__tests__/image-toolbar.test.js +21 -0
  13. package/lib/plugins/image/__tests__/image-toolbar.test.js.map +1 -0
  14. package/lib/plugins/image/__tests__/index.test.js +86 -0
  15. package/lib/plugins/image/__tests__/index.test.js.map +1 -0
  16. package/lib/plugins/image/__tests__/insert-image-handler.test.js +112 -0
  17. package/lib/plugins/image/__tests__/insert-image-handler.test.js.map +1 -0
  18. package/lib/plugins/image/__tests__/mock-change.js +22 -0
  19. package/lib/plugins/image/__tests__/mock-change.js.map +1 -0
  20. package/lib/plugins/list/__tests__/index.test.js +63 -0
  21. package/lib/plugins/list/__tests__/index.test.js.map +1 -0
  22. package/lib/plugins/math/__tests__/index.test.js +284 -0
  23. package/lib/plugins/math/__tests__/index.test.js.map +1 -0
  24. package/lib/plugins/media/__tests__/index.test.js +69 -0
  25. package/lib/plugins/media/__tests__/index.test.js.map +1 -0
  26. package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js +93 -0
  27. package/lib/plugins/respArea/drag-in-the-blank/__tests__/choice.test.js.map +1 -0
  28. package/lib/plugins/respArea/math-templated/index.js +2 -2
  29. package/lib/plugins/respArea/math-templated/index.js.map +1 -1
  30. package/lib/plugins/table/__tests__/index.test.js +416 -0
  31. package/lib/plugins/table/__tests__/index.test.js.map +1 -0
  32. package/lib/plugins/table/__tests__/table-toolbar.test.js +81 -0
  33. package/lib/plugins/table/__tests__/table-toolbar.test.js.map +1 -0
  34. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +153 -0
  35. package/lib/plugins/toolbar/__tests__/default-toolbar.test.js.map +1 -0
  36. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +47 -0
  37. package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js.map +1 -0
  38. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +112 -0
  39. package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js.map +1 -0
  40. package/lib/plugins/toolbar/__tests__/toolbar.test.js +118 -0
  41. package/lib/plugins/toolbar/__tests__/toolbar.test.js.map +1 -0
  42. package/lib/shared/alert-dialog.js +68 -0
  43. package/package.json +7 -7
  44. package/src/__tests__/utils.js +1 -1
  45. package/src/plugins/respArea/math-templated/index.jsx +1 -1
  46. package/LICENSE.md +0 -5
@@ -0,0 +1,284 @@
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('$$&lt;$$', '<', _index["default"].DOLLAR);
131
+ assertDeserialize('$&lt;$', '<', _index["default"].DOLLAR);
132
+ assertDeserialize('\\(&lt;\\)', '<', _index["default"].ROUND_BRACKETS);
133
+ assertDeserialize('\\[&lt;\\]', '<', _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>&#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>'
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>&#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>'
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
@@ -0,0 +1 @@
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('$$&lt;$$', '<', MathPlugin.DOLLAR);\n assertDeserialize('$&lt;$', '<', MathPlugin.DOLLAR);\n assertDeserialize('\\\\(&lt;\\\\)', '<', MathPlugin.ROUND_BRACKETS);\n assertDeserialize('\\\\[&lt;\\\\]', '<', 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>&#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>',\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>&#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>',\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":"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","ignoreList":[]}
@@ -0,0 +1,69 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,93 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -8,7 +8,7 @@ exports["default"] = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _styles = require("@mui/material/styles");
11
- var _mathInput = require("@pie-lib/math-input");
11
+ var _mathInputMathlive = require("@pie-lib/math-input-mathlive");
12
12
  var StyledSpanContainer = (0, _styles.styled)('span')(function () {
13
13
  return {
14
14
  display: 'inline-flex',
@@ -99,7 +99,7 @@ var MathTemplated = function MathTemplated(_ref2) {
99
99
  var attributes = _ref2.attributes,
100
100
  value = _ref2.value,
101
101
  keyToDisplay = _ref2.keyToDisplay;
102
- return /*#__PURE__*/_react["default"].createElement(StyledSpanContainer, attributes, /*#__PURE__*/_react["default"].createElement(StyledResponseBox, null, keyToDisplay), /*#__PURE__*/_react["default"].createElement(StyledMathBlock, null, /*#__PURE__*/_react["default"].createElement(_mathInput.mq.Static, {
102
+ return /*#__PURE__*/_react["default"].createElement(StyledSpanContainer, attributes, /*#__PURE__*/_react["default"].createElement(StyledResponseBox, null, keyToDisplay), /*#__PURE__*/_react["default"].createElement(StyledMathBlock, null, /*#__PURE__*/_react["default"].createElement(_mathInputMathlive.mq.Static, {
103
103
  latex: value
104
104
  })));
105
105
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_mathInput","StyledSpanContainer","styled","display","border","margin","cursor","alignItems","justifyContent","minWidth","minHeight","height","StyledResponseBox","_ref","theme","background","palette","grey","color","borderRight","boxSizing","overflow","fontSize","fontFamily","padding","StyledMathBlock","flex","backgroundColor","verticalAlign","borderTop","marginLeft","marginTop","paddingTop","lineHeight","top","left","position","right","MathTemplated","_ref2","attributes","value","keyToDisplay","createElement","mq","Static","latex","propTypes","PropTypes","object","string","_default","exports"],"sources":["../../../../src/plugins/respArea/math-templated/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { mq } from '@pie-lib/math-input';\n\nconst StyledSpanContainer = styled('span')(() => ({\n display: 'inline-flex',\n border: '1px solid #C0C3CF',\n margin: '1px 5px',\n cursor: 'pointer',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: '50px',\n minHeight: '36px',\n height: 'fit-content',\n}));\n\nconst StyledResponseBox = styled('div')(({ theme }) => ({\n background: theme.palette.grey['A100'],\n color: theme.palette.grey['A700'],\n display: 'inline-flex',\n borderRight: '2px solid #C0C3CF',\n boxSizing: 'border-box',\n overflow: 'hidden',\n fontSize: '12px',\n minHeight: '36px',\n height: '100%',\n alignItems: 'center',\n fontFamily: 'Symbola, Times New Roman, serif',\n padding: '0 2px',\n}));\n\nconst StyledMathBlock = styled('div')(() => ({\n flex: 8,\n color: 'var(--pie-text, black)',\n padding: '4px !important',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'var(--pie-background, rgba(255, 255, 255, 0))',\n '& > .mq-math-mode sup.mq-nthroot': {\n fontSize: '70% !important',\n verticalAlign: '1em !important',\n },\n '& > .mq-math-mode .mq-sqrt-stem': {\n borderTop: '0.07em solid',\n marginLeft: '-1.5px',\n marginTop: '-2px !important',\n paddingTop: '5px !important',\n },\n '& .mq-overarrow-inner': {\n paddingTop: '0 !important',\n border: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n marginTop: '0px',\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '0px !important',\n position: 'absolute !important',\n right: '-2px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n}));\n\nconst MathTemplated = ({ attributes, value, keyToDisplay }) => (\n <StyledSpanContainer {...attributes}>\n <StyledResponseBox>{keyToDisplay}</StyledResponseBox>\n <StyledMathBlock>\n <mq.Static latex={value} />\n </StyledMathBlock>\n </StyledSpanContainer>\n);\n\nMathTemplated.propTypes = {\n attributes: PropTypes.object,\n value: PropTypes.string,\n keyToDisplay: PropTypes.string,\n};\n\nexport default MathTemplated;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_mathInputMathlive","StyledSpanContainer","styled","display","border","margin","cursor","alignItems","justifyContent","minWidth","minHeight","height","StyledResponseBox","_ref","theme","background","palette","grey","color","borderRight","boxSizing","overflow","fontSize","fontFamily","padding","StyledMathBlock","flex","backgroundColor","verticalAlign","borderTop","marginLeft","marginTop","paddingTop","lineHeight","top","left","position","right","MathTemplated","_ref2","attributes","value","keyToDisplay","createElement","mq","Static","latex","propTypes","PropTypes","object","string","_default","exports"],"sources":["../../../../src/plugins/respArea/math-templated/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { mq } from '@pie-lib/math-input-mathlive';\n\nconst StyledSpanContainer = styled('span')(() => ({\n display: 'inline-flex',\n border: '1px solid #C0C3CF',\n margin: '1px 5px',\n cursor: 'pointer',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: '50px',\n minHeight: '36px',\n height: 'fit-content',\n}));\n\nconst StyledResponseBox = styled('div')(({ theme }) => ({\n background: theme.palette.grey['A100'],\n color: theme.palette.grey['A700'],\n display: 'inline-flex',\n borderRight: '2px solid #C0C3CF',\n boxSizing: 'border-box',\n overflow: 'hidden',\n fontSize: '12px',\n minHeight: '36px',\n height: '100%',\n alignItems: 'center',\n fontFamily: 'Symbola, Times New Roman, serif',\n padding: '0 2px',\n}));\n\nconst StyledMathBlock = styled('div')(() => ({\n flex: 8,\n color: 'var(--pie-text, black)',\n padding: '4px !important',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'var(--pie-background, rgba(255, 255, 255, 0))',\n '& > .mq-math-mode sup.mq-nthroot': {\n fontSize: '70% !important',\n verticalAlign: '1em !important',\n },\n '& > .mq-math-mode .mq-sqrt-stem': {\n borderTop: '0.07em solid',\n marginLeft: '-1.5px',\n marginTop: '-2px !important',\n paddingTop: '5px !important',\n },\n '& .mq-overarrow-inner': {\n paddingTop: '0 !important',\n border: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n marginTop: '0px',\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '0px !important',\n position: 'absolute !important',\n right: '-2px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n}));\n\nconst MathTemplated = ({ attributes, value, keyToDisplay }) => (\n <StyledSpanContainer {...attributes}>\n <StyledResponseBox>{keyToDisplay}</StyledResponseBox>\n <StyledMathBlock>\n <mq.Static latex={value} />\n </StyledMathBlock>\n </StyledSpanContainer>\n);\n\nMathTemplated.propTypes = {\n attributes: PropTypes.object,\n value: PropTypes.string,\n keyToDisplay: PropTypes.string,\n};\n\nexport default MathTemplated;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA;AAEA,IAAMI,mBAAmB,GAAG,IAAAC,cAAM,EAAC,MAAM,CAAC,CAAC;EAAA,OAAO;IAChDC,OAAO,EAAE,aAAa;IACtBC,MAAM,EAAE,mBAAmB;IAC3BC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE,SAAS;IACjBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,QAAQ,EAAE,MAAM;IAChBC,SAAS,EAAE,MAAM;IACjBC,MAAM,EAAE;EACV,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMC,iBAAiB,GAAG,IAAAV,cAAM,EAAC,KAAK,CAAC,CAAC,UAAAW,IAAA;EAAA,IAAGC,KAAK,GAAAD,IAAA,CAALC,KAAK;EAAA,OAAQ;IACtDC,UAAU,EAAED,KAAK,CAACE,OAAO,CAACC,IAAI,CAAC,MAAM,CAAC;IACtCC,KAAK,EAAEJ,KAAK,CAACE,OAAO,CAACC,IAAI,CAAC,MAAM,CAAC;IACjCd,OAAO,EAAE,aAAa;IACtBgB,WAAW,EAAE,mBAAmB;IAChCC,SAAS,EAAE,YAAY;IACvBC,QAAQ,EAAE,QAAQ;IAClBC,QAAQ,EAAE,MAAM;IAChBZ,SAAS,EAAE,MAAM;IACjBC,MAAM,EAAE,MAAM;IACdJ,UAAU,EAAE,QAAQ;IACpBgB,UAAU,EAAE,iCAAiC;IAC7CC,OAAO,EAAE;EACX,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMC,eAAe,GAAG,IAAAvB,cAAM,EAAC,KAAK,CAAC,CAAC;EAAA,OAAO;IAC3CwB,IAAI,EAAE,CAAC;IACPR,KAAK,EAAE,wBAAwB;IAC/BM,OAAO,EAAE,gBAAgB;IACzBrB,OAAO,EAAE,MAAM;IACfI,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBmB,eAAe,EAAE,+CAA+C;IAChE,kCAAkC,EAAE;MAClCL,QAAQ,EAAE,gBAAgB;MAC1BM,aAAa,EAAE;IACjB,CAAC;IACD,iCAAiC,EAAE;MACjCC,SAAS,EAAE,cAAc;MACzBC,UAAU,EAAE,QAAQ;MACpBC,SAAS,EAAE,iBAAiB;MAC5BC,UAAU,EAAE;IACd,CAAC;IACD,uBAAuB,EAAE;MACvBA,UAAU,EAAE,cAAc;MAC1B5B,MAAM,EAAE;IACV,CAAC;IACD,+BAA+B,EAAE;MAC/B2B,SAAS,EAAE,KAAK;MAChBtB,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE;QACLwB,UAAU,EAAE;MACd,CAAC;MACD,UAAU,EAAE;QACVC,GAAG,EAAE,QAAQ;QACbC,IAAI,EAAE;MACR,CAAC;MACD,SAAS,EAAE;QACTD,GAAG,EAAE,gBAAgB;QACrBE,QAAQ,EAAE,qBAAqB;QAC/BC,KAAK,EAAE;MACT,CAAC;MACD,kBAAkB,EAAE;QAClBH,GAAG,EAAE;MACP;IACF,CAAC;IACD,gCAAgC,EAAE;MAChC,UAAU,EAAE;QACVA,GAAG,EAAE,QAAQ;QACbG,KAAK,EAAE;MACT;IACF,CAAC;IACD,6BAA6B,EAAE;MAC7BlC,OAAO,EAAE;IACX,CAAC;IACD,4BAA4B,EAAE;MAC5BA,OAAO,EAAE;IACX;EACF,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMmC,aAAa,GAAG,SAAhBA,aAAaA,CAAAC,KAAA;EAAA,IAAMC,UAAU,GAAAD,KAAA,CAAVC,UAAU;IAAEC,KAAK,GAAAF,KAAA,CAALE,KAAK;IAAEC,YAAY,GAAAH,KAAA,CAAZG,YAAY;EAAA,oBACtD/C,MAAA,YAAAgD,aAAA,CAAC1C,mBAAmB,EAAKuC,UAAU,eACjC7C,MAAA,YAAAgD,aAAA,CAAC/B,iBAAiB,QAAE8B,YAAgC,CAAC,eACrD/C,MAAA,YAAAgD,aAAA,CAAClB,eAAe,qBACd9B,MAAA,YAAAgD,aAAA,CAAC3C,kBAAA,CAAA4C,EAAE,CAACC,MAAM;IAACC,KAAK,EAAEL;EAAM,CAAE,CACX,CACE,CAAC;AAAA,CACvB;AAEDH,aAAa,CAACS,SAAS,GAAG;EACxBP,UAAU,EAAEQ,qBAAS,CAACC,MAAM;EAC5BR,KAAK,EAAEO,qBAAS,CAACE,MAAM;EACvBR,YAAY,EAAEM,qBAAS,CAACE;AAC1B,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,cAEad,aAAa","ignoreList":[]}