@pie-lib/math-input-mathlive 1.1.5-beta.9 → 2.0.1-next.20261109072207
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/README.md +84 -109
- package/dist/_virtual/_rolldown/runtime.js +11 -0
- package/dist/horizontal-keypad.d.ts +22 -0
- package/dist/horizontal-keypad.js +54 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +12 -0
- package/dist/keypad/index.d.ts +40 -0
- package/dist/keypad/index.js +245 -0
- package/dist/keypad/keys-layout.d.ts +7 -0
- package/dist/keypad/keys-layout.js +5 -0
- package/dist/keys/basic-operators.d.ts +5 -0
- package/dist/keys/basic-operators.js +30 -0
- package/dist/keys/chars.d.ts +5 -0
- package/dist/keys/comparison.d.ts +4 -0
- package/dist/keys/comparison.js +32 -0
- package/dist/keys/constants.d.ts +4 -0
- package/dist/keys/constants.js +35 -0
- package/dist/keys/digits.d.ts +15 -0
- package/dist/keys/digits.js +34 -0
- package/dist/keys/edit.d.ts +6 -0
- package/dist/keys/edit.js +9 -0
- package/dist/keys/exponent.d.ts +4 -0
- package/dist/keys/exponent.js +28 -0
- package/dist/keys/fractions.d.ts +3 -0
- package/dist/keys/fractions.js +27 -0
- package/dist/keys/geometry.d.ts +23 -0
- package/dist/keys/geometry.js +127 -0
- package/dist/keys/grades.d.ts +9 -0
- package/dist/keys/grades.js +414 -0
- package/dist/keys/index.d.ts +6 -0
- package/dist/keys/index.js +50 -0
- package/dist/keys/log.d.ts +3 -0
- package/dist/keys/log.js +25 -0
- package/dist/keys/logic.d.ts +2 -0
- package/dist/keys/logic.js +13 -0
- package/dist/keys/matrices.d.ts +2 -0
- package/dist/keys/matrices.js +17 -0
- package/dist/keys/misc.d.ts +10 -0
- package/dist/keys/misc.js +60 -0
- package/dist/keys/navigation.d.ts +2 -0
- package/dist/keys/navigation.js +13 -0
- package/dist/keys/operators.d.ts +1 -0
- package/dist/keys/operators.js +11 -0
- package/dist/keys/statistics.d.ts +5 -0
- package/dist/keys/statistics.js +38 -0
- package/dist/keys/sub-sup.d.ts +2 -0
- package/dist/keys/sub-sup.js +17 -0
- package/dist/keys/trigonometry.d.ts +6 -0
- package/dist/keys/trigonometry.js +43 -0
- package/dist/keys/utils.d.ts +5 -0
- package/dist/keys/utils.js +24 -0
- package/dist/keys/vars.d.ts +3 -0
- package/dist/keys/vars.js +22 -0
- package/dist/latex-bridge.d.ts +197 -0
- package/dist/latex-bridge.js +210 -0
- package/dist/longdiv.d.ts +24 -0
- package/dist/longdiv.js +43 -0
- package/dist/math-input.d.ts +26 -0
- package/dist/math-input.js +74 -0
- package/dist/mathlive-instance.d.ts +221 -0
- package/dist/mathlive-instance.js +159 -0
- package/dist/mf/common-styles.d.ts +594 -0
- package/dist/mf/common-styles.js +80 -0
- package/dist/mf/field-label.d.ts +16 -0
- package/dist/mf/field-label.js +13 -0
- package/dist/mf/index.d.ts +4 -0
- package/dist/mf/index.js +21 -0
- package/dist/mf/input.d.ts +94 -0
- package/dist/mf/input.js +127 -0
- package/dist/mf/static.d.ts +143 -0
- package/dist/mf/static.js +230 -0
- package/dist/selection.d.ts +43 -0
- package/dist/selection.js +39 -0
- package/package.json +32 -18
- package/lib/__tests__/composites.test.js +0 -255
- package/lib/__tests__/drop-in-compat.test.js +0 -133
- package/lib/__tests__/embedded-fonts.test.js +0 -121
- package/lib/__tests__/index.test.js +0 -118
- package/lib/__tests__/input-imperative.test.js +0 -155
- package/lib/__tests__/keypad-label.test.js +0 -231
- package/lib/__tests__/keypad-render.test.js +0 -206
- package/lib/__tests__/latex-bridge.test.js +0 -386
- package/lib/__tests__/mathlive-instance.test.js +0 -419
- package/lib/__tests__/mount-race.test.js +0 -218
- package/lib/__tests__/static-prompts.test.js +0 -405
- package/lib/__tests__/tmp-markup.test.js +0 -26
- package/lib/horizontal-keypad.js +0 -101
- package/lib/horizontal-keypad.js.map +0 -1
- package/lib/index.js +0 -143
- package/lib/index.js.map +0 -1
- package/lib/keypad/index.js +0 -431
- package/lib/keypad/index.js.map +0 -1
- package/lib/keypad/keys-layout.js +0 -22
- package/lib/keypad/keys-layout.js.map +0 -1
- package/lib/keys/basic-operators.js +0 -33
- package/lib/keys/basic-operators.js.map +0 -1
- package/lib/keys/chars.js +0 -12
- package/lib/keys/chars.js.map +0 -1
- package/lib/keys/comparison.js +0 -39
- package/lib/keys/comparison.js.map +0 -1
- package/lib/keys/constants.js +0 -37
- package/lib/keys/constants.js.map +0 -1
- package/lib/keys/digits.js +0 -46
- package/lib/keys/digits.js.map +0 -1
- package/lib/keys/edit.js +0 -14
- package/lib/keys/edit.js.map +0 -1
- package/lib/keys/exponent.js +0 -30
- package/lib/keys/exponent.js.map +0 -1
- package/lib/keys/fractions.js +0 -29
- package/lib/keys/fractions.js.map +0 -1
- package/lib/keys/geometry.js +0 -143
- package/lib/keys/geometry.js.map +0 -1
- package/lib/keys/grades.js +0 -259
- package/lib/keys/grades.js.map +0 -1
- package/lib/keys/index.js +0 -35
- package/lib/keys/index.js.map +0 -1
- package/lib/keys/log.js +0 -27
- package/lib/keys/log.js.map +0 -1
- package/lib/keys/logic.js +0 -19
- package/lib/keys/logic.js.map +0 -1
- package/lib/keys/matrices.js +0 -19
- package/lib/keys/matrices.js.map +0 -1
- package/lib/keys/misc.js +0 -69
- package/lib/keys/misc.js.map +0 -1
- package/lib/keys/navigation.js +0 -20
- package/lib/keys/navigation.js.map +0 -1
- package/lib/keys/operators.js +0 -15
- package/lib/keys/operators.js.map +0 -1
- package/lib/keys/statistics.js +0 -40
- package/lib/keys/statistics.js.map +0 -1
- package/lib/keys/sub-sup.js +0 -19
- package/lib/keys/sub-sup.js.map +0 -1
- package/lib/keys/trigonometry.js +0 -45
- package/lib/keys/trigonometry.js.map +0 -1
- package/lib/keys/utils.js +0 -87
- package/lib/keys/utils.js.map +0 -1
- package/lib/keys/vars.js +0 -24
- package/lib/keys/vars.js.map +0 -1
- package/lib/latex-bridge.js +0 -508
- package/lib/latex-bridge.js.map +0 -1
- package/lib/math-input.js +0 -143
- package/lib/math-input.js.map +0 -1
- package/lib/mathlive-instance.js +0 -585
- package/lib/mathlive-instance.js.map +0 -1
- package/lib/mf/common-styles.js +0 -203
- package/lib/mf/common-styles.js.map +0 -1
- package/lib/mf/index.js +0 -84
- package/lib/mf/index.js.map +0 -1
- package/lib/mf/input.js +0 -364
- package/lib/mf/input.js.map +0 -1
- package/lib/mf/static.js +0 -500
- package/lib/mf/static.js.map +0 -1
- package/src/__tests__/composites.test.jsx +0 -220
- package/src/__tests__/drop-in-compat.test.jsx +0 -112
- package/src/__tests__/index.test.jsx +0 -109
- package/src/__tests__/input-imperative.test.jsx +0 -144
- package/src/__tests__/keypad-label.test.jsx +0 -283
- package/src/__tests__/keypad-render.test.jsx +0 -123
- package/src/__tests__/latex-bridge.test.js +0 -389
- package/src/__tests__/mathlive-instance.test.js +0 -418
- package/src/__tests__/mount-race.test.jsx +0 -142
- package/src/__tests__/static-prompts.test.jsx +0 -364
- package/src/horizontal-keypad.jsx +0 -73
- package/src/index.jsx +0 -63
- package/src/keypad/index.jsx +0 -386
- package/src/keypad/keys-layout.js +0 -16
- package/src/keys/basic-operators.js +0 -32
- package/src/keys/chars.js +0 -5
- package/src/keys/comparison.js +0 -28
- package/src/keys/constants.js +0 -35
- package/src/keys/digits.js +0 -40
- package/src/keys/edit.js +0 -3
- package/src/keys/exponent.js +0 -28
- package/src/keys/fractions.js +0 -26
- package/src/keys/geometry.js +0 -149
- package/src/keys/grades.js +0 -367
- package/src/keys/index.js +0 -20
- package/src/keys/log.js +0 -22
- package/src/keys/logic.js +0 -15
- package/src/keys/matrices.js +0 -15
- package/src/keys/misc.js +0 -71
- package/src/keys/navigation.js +0 -8
- package/src/keys/operators.js +0 -10
- package/src/keys/statistics.js +0 -38
- package/src/keys/sub-sup.js +0 -15
- package/src/keys/trigonometry.js +0 -15
- package/src/keys/utils.js +0 -66
- package/src/keys/vars.js +0 -19
- package/src/latex-bridge.js +0 -524
- package/src/math-input.jsx +0 -115
- package/src/mathlive-instance.js +0 -582
- package/src/mf/common-styles.js +0 -210
- package/src/mf/index.js +0 -30
- package/src/mf/input.jsx +0 -319
- package/src/mf/static.jsx +0 -479
|
@@ -1,405 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
-
var _static = _interopRequireDefault(require("../mf/static"));
|
|
6
|
-
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; }
|
|
7
|
-
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; }
|
|
8
|
-
/**
|
|
9
|
-
* The answer-block contract: `\MathQuillMathField[id]{}` in stored latex becomes
|
|
10
|
-
* a MathLive prompt, and sub-field values/focus are surfaced through the same
|
|
11
|
-
* callbacks @pie-lib/math-input exposed (`onSubFieldChange`, `onSubFieldFocus`,
|
|
12
|
-
* `getFieldName`, `setInput`).
|
|
13
|
-
*
|
|
14
|
-
* Driven against a stub mathfield: a real <math-field> needs a browser, and what
|
|
15
|
-
* matters here is the mapping, not MathLive's rendering.
|
|
16
|
-
*/
|
|
17
|
-
var stubField = function stubField() {
|
|
18
|
-
var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
19
|
-
var selection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
20
|
-
return {
|
|
21
|
-
values: _objectSpread({}, values),
|
|
22
|
-
getPrompts: function getPrompts() {
|
|
23
|
-
return Object.keys(this.values);
|
|
24
|
-
},
|
|
25
|
-
getPromptValue: function getPromptValue(id) {
|
|
26
|
-
return this.values[id];
|
|
27
|
-
},
|
|
28
|
-
setPromptValue: function setPromptValue(id, v) {
|
|
29
|
-
this.values[id] = v;
|
|
30
|
-
},
|
|
31
|
-
getPromptRange: function getPromptRange(id) {
|
|
32
|
-
var i = Object.keys(this.values).indexOf(id);
|
|
33
|
-
return [i * 10, i * 10 + 5];
|
|
34
|
-
},
|
|
35
|
-
selection: selection,
|
|
36
|
-
// Caret bookkeeping: MathLive exposes the caret offset as `position`, and any
|
|
37
|
-
// executeCommand triggers the render that reveals the caret.
|
|
38
|
-
position: undefined,
|
|
39
|
-
commands: [],
|
|
40
|
-
executeCommand: function executeCommand(name) {
|
|
41
|
-
this.commands.push(name);
|
|
42
|
-
},
|
|
43
|
-
addEventListener: function addEventListener() {},
|
|
44
|
-
removeEventListener: function removeEventListener() {},
|
|
45
|
-
focus: function focus() {
|
|
46
|
-
this.focused = true;
|
|
47
|
-
},
|
|
48
|
-
blur: function blur() {
|
|
49
|
-
this.blurred = true;
|
|
50
|
-
},
|
|
51
|
-
remove: function remove() {}
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
var make = function make() {
|
|
55
|
-
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
56
|
-
return new _static["default"](_objectSpread({
|
|
57
|
-
latex: 'x=\\MathQuillMathField[r1]{}',
|
|
58
|
-
getFieldName: function getFieldName() {}
|
|
59
|
-
}, props));
|
|
60
|
-
};
|
|
61
|
-
describe('Static: answer blocks / prompts', function () {
|
|
62
|
-
describe('isInteractive', function () {
|
|
63
|
-
it('is interactive when the latex has answer blocks', function () {
|
|
64
|
-
expect(make({
|
|
65
|
-
latex: 'x=\\MathQuillMathField[r1]{}'
|
|
66
|
-
}).isInteractive()).toBe(true);
|
|
67
|
-
expect(make({
|
|
68
|
-
latex: 'x=\\placeholder[r1]{}'
|
|
69
|
-
}).isInteractive()).toBe(true);
|
|
70
|
-
});
|
|
71
|
-
it('is display-only for plain latex', function () {
|
|
72
|
-
expect(make({
|
|
73
|
-
latex: '\\frac{1}{2}'
|
|
74
|
-
}).isInteractive()).toBe(false);
|
|
75
|
-
expect(make({
|
|
76
|
-
latex: ''
|
|
77
|
-
}).isInteractive()).toBe(false);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
describe('values', function () {
|
|
81
|
-
it('returns {} before the field exists', function () {
|
|
82
|
-
expect(make().values()).toEqual({});
|
|
83
|
-
});
|
|
84
|
-
it('maps each prompt id to its stored-form latex', function () {
|
|
85
|
-
var s = make();
|
|
86
|
-
s.mathField = stubField({
|
|
87
|
-
r1: '7',
|
|
88
|
-
r2: '\\placeholder{}'
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
// \placeholder must not leak into stored values
|
|
92
|
-
expect(s.values()).toEqual({
|
|
93
|
-
r1: '7',
|
|
94
|
-
r2: ''
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
describe('promptHandle / innerFields', function () {
|
|
99
|
-
it('exposes a MathQuill-field-like handle with get/set latex', function () {
|
|
100
|
-
var s = make();
|
|
101
|
-
s.mathField = stubField({
|
|
102
|
-
r1: '7'
|
|
103
|
-
});
|
|
104
|
-
var h = s.promptHandle('r1');
|
|
105
|
-
expect(h.id).toEqual('r1');
|
|
106
|
-
expect(h.latex()).toEqual('7');
|
|
107
|
-
h.latex('9');
|
|
108
|
-
expect(s.mathField.values.r1).toEqual('9');
|
|
109
|
-
});
|
|
110
|
-
it('handle latex() is safe with no field', function () {
|
|
111
|
-
expect(make().promptHandle('r1').latex()).toEqual('');
|
|
112
|
-
});
|
|
113
|
-
it('innerFields returns one handle per prompt', function () {
|
|
114
|
-
var s = make();
|
|
115
|
-
s.mathField = stubField({
|
|
116
|
-
r1: '1',
|
|
117
|
-
r2: '2'
|
|
118
|
-
});
|
|
119
|
-
expect(s.innerFields.map(function (f) {
|
|
120
|
-
return f.id;
|
|
121
|
-
})).toEqual(['r1', 'r2']);
|
|
122
|
-
expect(make().innerFields).toEqual([]);
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
describe('onSubFieldChange', function () {
|
|
126
|
-
it('fires only for prompts whose value changed', function () {
|
|
127
|
-
var onSubFieldChange = jest.fn();
|
|
128
|
-
var s = make({
|
|
129
|
-
onSubFieldChange: onSubFieldChange
|
|
130
|
-
});
|
|
131
|
-
s.mathField = stubField({
|
|
132
|
-
r1: '1',
|
|
133
|
-
r2: '2'
|
|
134
|
-
});
|
|
135
|
-
s.promptValues = {
|
|
136
|
-
r1: '1',
|
|
137
|
-
r2: '2'
|
|
138
|
-
};
|
|
139
|
-
s.mathField.values.r2 = '5';
|
|
140
|
-
s.onPromptInput();
|
|
141
|
-
expect(onSubFieldChange).toHaveBeenCalledTimes(1);
|
|
142
|
-
expect(onSubFieldChange).toHaveBeenCalledWith('r2', '5');
|
|
143
|
-
});
|
|
144
|
-
it('uses getFieldName when it returns a name', function () {
|
|
145
|
-
var onSubFieldChange = jest.fn();
|
|
146
|
-
var s = make({
|
|
147
|
-
onSubFieldChange: onSubFieldChange,
|
|
148
|
-
getFieldName: function getFieldName(handle) {
|
|
149
|
-
return 'named-' + handle.id;
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
s.mathField = stubField({
|
|
153
|
-
r1: '1'
|
|
154
|
-
});
|
|
155
|
-
s.promptValues = {};
|
|
156
|
-
s.onPromptInput();
|
|
157
|
-
expect(onSubFieldChange).toHaveBeenCalledWith('named-r1', '1');
|
|
158
|
-
});
|
|
159
|
-
it('still tracks values when no callback is supplied', function () {
|
|
160
|
-
var s = make();
|
|
161
|
-
s.mathField = stubField({
|
|
162
|
-
r1: '3'
|
|
163
|
-
});
|
|
164
|
-
s.onPromptInput();
|
|
165
|
-
expect(s.promptValues).toEqual({
|
|
166
|
-
r1: '3'
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
describe('onSubFieldFocus', function () {
|
|
171
|
-
it('reports the prompt containing the selection, plus setInput', function () {
|
|
172
|
-
var onSubFieldFocus = jest.fn();
|
|
173
|
-
var setInput = jest.fn();
|
|
174
|
-
var s = make({
|
|
175
|
-
onSubFieldFocus: onSubFieldFocus,
|
|
176
|
-
setInput: setInput
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
// r2 occupies offsets 10..15
|
|
180
|
-
s.mathField = stubField({
|
|
181
|
-
r1: '',
|
|
182
|
-
r2: ''
|
|
183
|
-
}, {
|
|
184
|
-
ranges: [[11, 11]]
|
|
185
|
-
});
|
|
186
|
-
s.onPromptFocus();
|
|
187
|
-
expect(onSubFieldFocus).toHaveBeenCalledTimes(1);
|
|
188
|
-
expect(onSubFieldFocus.mock.calls[0][0]).toEqual('r2');
|
|
189
|
-
expect(onSubFieldFocus.mock.calls[0][1].id).toEqual('r2');
|
|
190
|
-
expect(setInput).toHaveBeenCalled();
|
|
191
|
-
});
|
|
192
|
-
it('does nothing without a selection', function () {
|
|
193
|
-
var onSubFieldFocus = jest.fn();
|
|
194
|
-
var s = make({
|
|
195
|
-
onSubFieldFocus: onSubFieldFocus
|
|
196
|
-
});
|
|
197
|
-
s.mathField = stubField({
|
|
198
|
-
r1: ''
|
|
199
|
-
}, null);
|
|
200
|
-
s.onPromptFocus();
|
|
201
|
-
expect(onSubFieldFocus).not.toHaveBeenCalled();
|
|
202
|
-
});
|
|
203
|
-
it('does not throw when the field is missing', function () {
|
|
204
|
-
var s = make({
|
|
205
|
-
onSubFieldFocus: jest.fn()
|
|
206
|
-
});
|
|
207
|
-
expect(function () {
|
|
208
|
-
return s.onPromptFocus();
|
|
209
|
-
}).not.toThrow();
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
describe('accessibility announcements', function () {
|
|
213
|
-
afterEach(function () {
|
|
214
|
-
document.body.innerHTML = '';
|
|
215
|
-
});
|
|
216
|
-
it('creates a polite off-screen live region', function () {
|
|
217
|
-
var s = make();
|
|
218
|
-
s.createLiveRegion();
|
|
219
|
-
expect(s.liveRegion.getAttribute('aria-live')).toEqual('polite');
|
|
220
|
-
expect(s.liveRegion.getAttribute('aria-atomic')).toEqual('true');
|
|
221
|
-
expect(document.body.contains(s.liveRegion)).toBe(true);
|
|
222
|
-
s.removeLiveRegion();
|
|
223
|
-
expect(s.liveRegion).toBeUndefined();
|
|
224
|
-
});
|
|
225
|
-
it('does not create a second region', function () {
|
|
226
|
-
var s = make();
|
|
227
|
-
s.createLiveRegion();
|
|
228
|
-
var first = s.liveRegion;
|
|
229
|
-
s.createLiveRegion();
|
|
230
|
-
expect(s.liveRegion).toBe(first);
|
|
231
|
-
s.removeLiveRegion();
|
|
232
|
-
});
|
|
233
|
-
it('announces when typed input expands into a command', function () {
|
|
234
|
-
var s = make();
|
|
235
|
-
s.createLiveRegion();
|
|
236
|
-
s.promptValues = {
|
|
237
|
-
r1: 'x'
|
|
238
|
-
};
|
|
239
|
-
// grew by more than one char AND gained a backslash => a conversion
|
|
240
|
-
s.announceConversion({
|
|
241
|
-
r1: 'x\\frac{}{}'
|
|
242
|
-
});
|
|
243
|
-
expect(s.liveRegion.textContent).toEqual('Converted to math symbol');
|
|
244
|
-
s.removeLiveRegion();
|
|
245
|
-
});
|
|
246
|
-
it('does not announce ordinary typing', function () {
|
|
247
|
-
var s = make();
|
|
248
|
-
s.createLiveRegion();
|
|
249
|
-
s.promptValues = {
|
|
250
|
-
r1: 'x'
|
|
251
|
-
};
|
|
252
|
-
s.announceConversion({
|
|
253
|
-
r1: 'xy'
|
|
254
|
-
});
|
|
255
|
-
expect(s.liveRegion.textContent).toEqual('');
|
|
256
|
-
s.removeLiveRegion();
|
|
257
|
-
});
|
|
258
|
-
it('does not announce a deletion', function () {
|
|
259
|
-
var s = make();
|
|
260
|
-
s.createLiveRegion();
|
|
261
|
-
s.promptValues = {
|
|
262
|
-
r1: 'x\\frac{}{}'
|
|
263
|
-
};
|
|
264
|
-
s.onKeyDown({
|
|
265
|
-
key: 'Backspace'
|
|
266
|
-
});
|
|
267
|
-
s.announceConversion({
|
|
268
|
-
r1: 'x'
|
|
269
|
-
});
|
|
270
|
-
expect(s.liveRegion.textContent).toEqual('');
|
|
271
|
-
s.removeLiveRegion();
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
describe('focus / blur', function () {
|
|
275
|
-
it('delegates to the field and is safe without one', function () {
|
|
276
|
-
var s = make();
|
|
277
|
-
expect(function () {
|
|
278
|
-
s.focus();
|
|
279
|
-
s.blur();
|
|
280
|
-
}).not.toThrow();
|
|
281
|
-
s.mathField = stubField();
|
|
282
|
-
s.focus();
|
|
283
|
-
s.blur();
|
|
284
|
-
expect(s.mathField.focused).toBe(true);
|
|
285
|
-
expect(s.mathField.blurred).toBe(true);
|
|
286
|
-
});
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* MathLive shows the caret only while the field carries `ML__focused`, which
|
|
291
|
-
* it adds during a render gated on `isSelectionEditable && hasFocus()`. In a
|
|
292
|
-
* read-only field only prompt interiors are editable, so after a bare
|
|
293
|
-
* `focus()` - whose selection sits outside every prompt - the answer block
|
|
294
|
-
* looked focused but had no blinking cursor. Verified in Chromium: the caret
|
|
295
|
-
* span goes from visibility:hidden to visible once the selection is inside a
|
|
296
|
-
* prompt AND a render has run.
|
|
297
|
-
*/
|
|
298
|
-
describe('caret placement', function () {
|
|
299
|
-
it('puts a collapsed caret in the first prompt on focus', function () {
|
|
300
|
-
var s = make();
|
|
301
|
-
s.mathField = stubField({
|
|
302
|
-
r1: '',
|
|
303
|
-
r2: ''
|
|
304
|
-
});
|
|
305
|
-
s.focus();
|
|
306
|
-
|
|
307
|
-
// stub ranges are [0,5] for r1, [10,15] for r2
|
|
308
|
-
expect(s.mathField.selection).toEqual({
|
|
309
|
-
ranges: [[0, 0]]
|
|
310
|
-
});
|
|
311
|
-
});
|
|
312
|
-
it('forces the render that makes the caret visible', function () {
|
|
313
|
-
var s = make();
|
|
314
|
-
s.mathField = stubField({
|
|
315
|
-
r1: ''
|
|
316
|
-
});
|
|
317
|
-
s.focus();
|
|
318
|
-
|
|
319
|
-
// assigning `selection` alone updates the model without re-rendering, so
|
|
320
|
-
// ML__focused would never be added
|
|
321
|
-
expect(s.mathField.commands).toEqual(['scrollIntoView']);
|
|
322
|
-
});
|
|
323
|
-
it('does not move a caret that is already inside a prompt', function () {
|
|
324
|
-
var s = make();
|
|
325
|
-
s.mathField = stubField({
|
|
326
|
-
r1: '',
|
|
327
|
-
r2: ''
|
|
328
|
-
});
|
|
329
|
-
s.mathField.position = 12; // inside r2
|
|
330
|
-
s.focus();
|
|
331
|
-
expect(s.mathField.selection).toBe(null);
|
|
332
|
-
expect(s.mathField.commands).toEqual([]);
|
|
333
|
-
});
|
|
334
|
-
it('targets a specific prompt', function () {
|
|
335
|
-
var s = make();
|
|
336
|
-
s.mathField = stubField({
|
|
337
|
-
r1: '',
|
|
338
|
-
r2: ''
|
|
339
|
-
});
|
|
340
|
-
s.focusPrompt('r2');
|
|
341
|
-
expect(s.mathField.selection).toEqual({
|
|
342
|
-
ranges: [[10, 10]]
|
|
343
|
-
});
|
|
344
|
-
});
|
|
345
|
-
it('falls back to the first prompt for an unknown id', function () {
|
|
346
|
-
var s = make();
|
|
347
|
-
s.mathField = stubField({
|
|
348
|
-
r1: '',
|
|
349
|
-
r2: ''
|
|
350
|
-
});
|
|
351
|
-
s.focusPrompt('nope');
|
|
352
|
-
expect(s.mathField.selection).toEqual({
|
|
353
|
-
ranges: [[0, 0]]
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
it('is a no-op when there are no prompts', function () {
|
|
357
|
-
var s = make();
|
|
358
|
-
s.mathField = stubField({});
|
|
359
|
-
expect(function () {
|
|
360
|
-
return s.focusPrompt();
|
|
361
|
-
}).not.toThrow();
|
|
362
|
-
expect(s.mathField.selection).toBe(null);
|
|
363
|
-
});
|
|
364
|
-
it('is safe without a field', function () {
|
|
365
|
-
expect(function () {
|
|
366
|
-
return make().focusPrompt('r1');
|
|
367
|
-
}).not.toThrow();
|
|
368
|
-
});
|
|
369
|
-
describe('promptContaining', function () {
|
|
370
|
-
it('finds the prompt whose range holds the offset, inclusive', function () {
|
|
371
|
-
var s = make();
|
|
372
|
-
s.mathField = stubField({
|
|
373
|
-
r1: '',
|
|
374
|
-
r2: ''
|
|
375
|
-
});
|
|
376
|
-
expect(s.promptContaining(0)).toEqual('r1');
|
|
377
|
-
expect(s.promptContaining(5)).toEqual('r1');
|
|
378
|
-
expect(s.promptContaining(10)).toEqual('r2');
|
|
379
|
-
expect(s.promptContaining(7)).toBeUndefined();
|
|
380
|
-
});
|
|
381
|
-
it('treats a missing position as outside', function () {
|
|
382
|
-
var s = make();
|
|
383
|
-
s.mathField = stubField({
|
|
384
|
-
r1: ''
|
|
385
|
-
});
|
|
386
|
-
expect(s.promptContaining(undefined)).toBeUndefined();
|
|
387
|
-
});
|
|
388
|
-
});
|
|
389
|
-
|
|
390
|
-
// MathQuill's inner fields could be focused directly.
|
|
391
|
-
it('promptHandle exposes focus() for its own prompt', function () {
|
|
392
|
-
var s = make();
|
|
393
|
-
s.mathField = stubField({
|
|
394
|
-
r1: '',
|
|
395
|
-
r2: ''
|
|
396
|
-
});
|
|
397
|
-
s.promptHandle('r2').focus();
|
|
398
|
-
expect(s.mathField.focused).toBe(true);
|
|
399
|
-
expect(s.mathField.selection).toEqual({
|
|
400
|
-
ranges: [[10, 10]]
|
|
401
|
-
});
|
|
402
|
-
});
|
|
403
|
-
});
|
|
404
|
-
});
|
|
405
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RhdGljIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInN0dWJGaWVsZCIsInZhbHVlcyIsInVuZGVmaW5lZCIsInNlbGVjdGlvbiIsImdldFByb21wdHMiLCJnZXRQcm9tcHRWYWx1ZSIsImlkIiwic2V0UHJvbXB0VmFsdWUiLCJ2IiwiZ2V0UHJvbXB0UmFuZ2UiLCJpIiwiaW5kZXhPZiIsInBvc2l0aW9uIiwiY29tbWFuZHMiLCJleGVjdXRlQ29tbWFuZCIsIm5hbWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImZvY3VzIiwiZm9jdXNlZCIsImJsdXIiLCJibHVycmVkIiwicmVtb3ZlIiwibWFrZSIsInByb3BzIiwiU3RhdGljIiwibGF0ZXgiLCJnZXRGaWVsZE5hbWUiLCJkZXNjcmliZSIsIml0IiwiZXhwZWN0IiwiaXNJbnRlcmFjdGl2ZSIsInRvQmUiLCJ0b0VxdWFsIiwicyIsIm1hdGhGaWVsZCIsInIxIiwicjIiLCJoIiwicHJvbXB0SGFuZGxlIiwiaW5uZXJGaWVsZHMiLCJtYXAiLCJmIiwib25TdWJGaWVsZENoYW5nZSIsImplc3QiLCJmbiIsInByb21wdFZhbHVlcyIsIm9uUHJvbXB0SW5wdXQiLCJ0b0hhdmVCZWVuQ2FsbGVkVGltZXMiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsImhhbmRsZSIsIm9uU3ViRmllbGRGb2N1cyIsInNldElucHV0IiwicmFuZ2VzIiwib25Qcm9tcHRGb2N1cyIsIm1vY2siLCJjYWxscyIsInRvSGF2ZUJlZW5DYWxsZWQiLCJub3QiLCJ0b1Rocm93IiwiYWZ0ZXJFYWNoIiwiZG9jdW1lbnQiLCJib2R5IiwiaW5uZXJIVE1MIiwiY3JlYXRlTGl2ZVJlZ2lvbiIsImxpdmVSZWdpb24iLCJnZXRBdHRyaWJ1dGUiLCJjb250YWlucyIsInJlbW92ZUxpdmVSZWdpb24iLCJ0b0JlVW5kZWZpbmVkIiwiZmlyc3QiLCJhbm5vdW5jZUNvbnZlcnNpb24iLCJ0ZXh0Q29udGVudCIsIm9uS2V5RG93biIsImtleSIsImZvY3VzUHJvbXB0IiwicHJvbXB0Q29udGFpbmluZyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vc3RhdGljLXByb21wdHMudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN0YXRpYyBmcm9tICcuLi9tZi9zdGF0aWMnO1xuXG4vKipcbiAqIFRoZSBhbnN3ZXItYmxvY2sgY29udHJhY3Q6IGBcXE1hdGhRdWlsbE1hdGhGaWVsZFtpZF17fWAgaW4gc3RvcmVkIGxhdGV4IGJlY29tZXNcbiAqIGEgTWF0aExpdmUgcHJvbXB0LCBhbmQgc3ViLWZpZWxkIHZhbHVlcy9mb2N1cyBhcmUgc3VyZmFjZWQgdGhyb3VnaCB0aGUgc2FtZVxuICogY2FsbGJhY2tzIEBwaWUtbGliL21hdGgtaW5wdXQgZXhwb3NlZCAoYG9uU3ViRmllbGRDaGFuZ2VgLCBgb25TdWJGaWVsZEZvY3VzYCxcbiAqIGBnZXRGaWVsZE5hbWVgLCBgc2V0SW5wdXRgKS5cbiAqXG4gKiBEcml2ZW4gYWdhaW5zdCBhIHN0dWIgbWF0aGZpZWxkOiBhIHJlYWwgPG1hdGgtZmllbGQ+IG5lZWRzIGEgYnJvd3NlciwgYW5kIHdoYXRcbiAqIG1hdHRlcnMgaGVyZSBpcyB0aGUgbWFwcGluZywgbm90IE1hdGhMaXZlJ3MgcmVuZGVyaW5nLlxuICovXG5jb25zdCBzdHViRmllbGQgPSAodmFsdWVzID0ge30sIHNlbGVjdGlvbiA9IG51bGwpID0+ICh7XG4gIHZhbHVlczogeyAuLi52YWx1ZXMgfSxcbiAgZ2V0UHJvbXB0cygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy52YWx1ZXMpO1xuICB9LFxuICBnZXRQcm9tcHRWYWx1ZShpZCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlc1tpZF07XG4gIH0sXG4gIHNldFByb21wdFZhbHVlKGlkLCB2KSB7XG4gICAgdGhpcy52YWx1ZXNbaWRdID0gdjtcbiAgfSxcbiAgZ2V0UHJvbXB0UmFuZ2UoaWQpIHtcbiAgICBjb25zdCBpID0gT2JqZWN0LmtleXModGhpcy52YWx1ZXMpLmluZGV4T2YoaWQpO1xuXG4gICAgcmV0dXJuIFtpICogMTAsIGkgKiAxMCArIDVdO1xuICB9LFxuICBzZWxlY3Rpb24sXG4gIC8vIENhcmV0IGJvb2trZWVwaW5nOiBNYXRoTGl2ZSBleHBvc2VzIHRoZSBjYXJldCBvZmZzZXQgYXMgYHBvc2l0aW9uYCwgYW5kIGFueVxuICAvLyBleGVjdXRlQ29tbWFuZCB0cmlnZ2VycyB0aGUgcmVuZGVyIHRoYXQgcmV2ZWFscyB0aGUgY2FyZXQuXG4gIHBvc2l0aW9uOiB1bmRlZmluZWQsXG4gIGNvbW1hbmRzOiBbXSxcbiAgZXhlY3V0ZUNvbW1hbmQobmFtZSkge1xuICAgIHRoaXMuY29tbWFuZHMucHVzaChuYW1lKTtcbiAgfSxcbiAgYWRkRXZlbnRMaXN0ZW5lcigpIHt9LFxuICByZW1vdmVFdmVudExpc3RlbmVyKCkge30sXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gIH0sXG4gIGJsdXIoKSB7XG4gICAgdGhpcy5ibHVycmVkID0gdHJ1ZTtcbiAgfSxcbiAgcmVtb3ZlKCkge30sXG59KTtcblxuY29uc3QgbWFrZSA9IChwcm9wcyA9IHt9KSA9PiBuZXcgU3RhdGljKHsgbGF0ZXg6ICd4PVxcXFxNYXRoUXVpbGxNYXRoRmllbGRbcjFde30nLCBnZXRGaWVsZE5hbWU6ICgpID0+IHt9LCAuLi5wcm9wcyB9KTtcblxuZGVzY3JpYmUoJ1N0YXRpYzogYW5zd2VyIGJsb2NrcyAvIHByb21wdHMnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdpc0ludGVyYWN0aXZlJywgKCkgPT4ge1xuICAgIGl0KCdpcyBpbnRlcmFjdGl2ZSB3aGVuIHRoZSBsYXRleCBoYXMgYW5zd2VyIGJsb2NrcycsICgpID0+IHtcbiAgICAgIGV4cGVjdChtYWtlKHsgbGF0ZXg6ICd4PVxcXFxNYXRoUXVpbGxNYXRoRmllbGRbcjFde30nIH0pLmlzSW50ZXJhY3RpdmUoKSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChtYWtlKHsgbGF0ZXg6ICd4PVxcXFxwbGFjZWhvbGRlcltyMV17fScgfSkuaXNJbnRlcmFjdGl2ZSgpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2lzIGRpc3BsYXktb25seSBmb3IgcGxhaW4gbGF0ZXgnLCAoKSA9PiB7XG4gICAgICBleHBlY3QobWFrZSh7IGxhdGV4OiAnXFxcXGZyYWN7MX17Mn0nIH0pLmlzSW50ZXJhY3RpdmUoKSkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3QobWFrZSh7IGxhdGV4OiAnJyB9KS5pc0ludGVyYWN0aXZlKCkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsdWVzJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIHt9IGJlZm9yZSB0aGUgZmllbGQgZXhpc3RzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KG1ha2UoKS52YWx1ZXMoKSkudG9FcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBpdCgnbWFwcyBlYWNoIHByb21wdCBpZCB0byBpdHMgc3RvcmVkLWZvcm0gbGF0ZXgnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzID0gbWFrZSgpO1xuXG4gICAgICBzLm1hdGhGaWVsZCA9IHN0dWJGaWVsZCh7IHIxOiAnNycsIHIyOiAnXFxcXHBsYWNlaG9sZGVye30nIH0pO1xuXG4gICAgICAvLyBcXHBsYWNlaG9sZGVyIG11c3Qgbm90IGxlYWsgaW50byBzdG9yZWQgdmFsdWVzXG4gICAgICBleHBlY3Qocy52YWx1ZXMoKSkudG9FcXVhbCh7IHIxOiAnNycsIHIyOiAnJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Byb21wdEhhbmRsZSAvIGlubmVyRmllbGRzJywgKCkgPT4ge1xuICAgIGl0KCdleHBvc2VzIGEgTWF0aFF1aWxsLWZpZWxkLWxpa2UgaGFuZGxlIHdpdGggZ2V0L3NldCBsYXRleCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHMgPSBtYWtlKCk7XG5cbiAgICAgIHMubWF0aEZpZWxkID0gc3R1YkZpZWxkKHsgcjE6ICc3JyB9KTtcblxuICAgICAgY29uc3QgaCA9IHMucHJvbXB0SGFuZGxlKCdyMScpO1xuXG4gICAgICBleHBlY3QoaC5pZCkudG9FcXVhbCgncjEnKTtcbiAgICAgIGV4cGVjdChoLmxhdGV4KCkpLnRvRXF1YWwoJzcnKTtcblxuICAgICAgaC5sYXRleCgnOScpO1xuICAgICAgZXhwZWN0KHMubWF0aEZpZWxkLnZhbHVlcy5yMSkudG9FcXVhbCgnOScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZSBsYXRleCgpIGlzIHNhZmUgd2l0aCBubyBmaWVsZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChtYWtlKCkucHJvbXB0SGFuZGxlKCdyMScpLmxhdGV4KCkpLnRvRXF1YWwoJycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2lubmVyRmllbGRzIHJldHVybnMgb25lIGhhbmRsZSBwZXIgcHJvbXB0JywgKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgcy5tYXRoRmllbGQgPSBzdHViRmllbGQoeyByMTogJzEnLCByMjogJzInIH0pO1xuXG4gICAgICBleHBlY3Qocy5pbm5lckZpZWxkcy5tYXAoKGYpID0+IGYuaWQpKS50b0VxdWFsKFsncjEnLCAncjInXSk7XG4gICAgICBleHBlY3QobWFrZSgpLmlubmVyRmllbGRzKS50b0VxdWFsKFtdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ29uU3ViRmllbGRDaGFuZ2UnLCAoKSA9PiB7XG4gICAgaXQoJ2ZpcmVzIG9ubHkgZm9yIHByb21wdHMgd2hvc2UgdmFsdWUgY2hhbmdlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uU3ViRmllbGRDaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBzID0gbWFrZSh7IG9uU3ViRmllbGRDaGFuZ2UgfSk7XG5cbiAgICAgIHMubWF0aEZpZWxkID0gc3R1YkZpZWxkKHsgcjE6ICcxJywgcjI6ICcyJyB9KTtcbiAgICAgIHMucHJvbXB0VmFsdWVzID0geyByMTogJzEnLCByMjogJzInIH07XG5cbiAgICAgIHMubWF0aEZpZWxkLnZhbHVlcy5yMiA9ICc1JztcbiAgICAgIHMub25Qcm9tcHRJbnB1dCgpO1xuXG4gICAgICBleHBlY3Qob25TdWJGaWVsZENoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgZXhwZWN0KG9uU3ViRmllbGRDaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdyMicsICc1Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgndXNlcyBnZXRGaWVsZE5hbWUgd2hlbiBpdCByZXR1cm5zIGEgbmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uU3ViRmllbGRDaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBzID0gbWFrZSh7IG9uU3ViRmllbGRDaGFuZ2UsIGdldEZpZWxkTmFtZTogKGhhbmRsZSkgPT4gJ25hbWVkLScgKyBoYW5kbGUuaWQgfSk7XG5cbiAgICAgIHMubWF0aEZpZWxkID0gc3R1YkZpZWxkKHsgcjE6ICcxJyB9KTtcbiAgICAgIHMucHJvbXB0VmFsdWVzID0ge307XG5cbiAgICAgIHMub25Qcm9tcHRJbnB1dCgpO1xuXG4gICAgICBleHBlY3Qob25TdWJGaWVsZENoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ25hbWVkLXIxJywgJzEnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzdGlsbCB0cmFja3MgdmFsdWVzIHdoZW4gbm8gY2FsbGJhY2sgaXMgc3VwcGxpZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzID0gbWFrZSgpO1xuXG4gICAgICBzLm1hdGhGaWVsZCA9IHN0dWJGaWVsZCh7IHIxOiAnMycgfSk7XG4gICAgICBzLm9uUHJvbXB0SW5wdXQoKTtcblxuICAgICAgZXhwZWN0KHMucHJvbXB0VmFsdWVzKS50b0VxdWFsKHsgcjE6ICczJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ29uU3ViRmllbGRGb2N1cycsICgpID0+IHtcbiAgICBpdCgncmVwb3J0cyB0aGUgcHJvbXB0IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGlvbiwgcGx1cyBzZXRJbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uU3ViRmllbGRGb2N1cyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHNldElucHV0ID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgcyA9IG1ha2UoeyBvblN1YkZpZWxkRm9jdXMsIHNldElucHV0IH0pO1xuXG4gICAgICAvLyByMiBvY2N1cGllcyBvZmZzZXRzIDEwLi4xNVxuICAgICAgcy5tYXRoRmllbGQgPSBzdHViRmllbGQoeyByMTogJycsIHIyOiAnJyB9LCB7IHJhbmdlczogW1sxMSwgMTFdXSB9KTtcbiAgICAgIHMub25Qcm9tcHRGb2N1cygpO1xuXG4gICAgICBleHBlY3Qob25TdWJGaWVsZEZvY3VzKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICBleHBlY3Qob25TdWJGaWVsZEZvY3VzLm1vY2suY2FsbHNbMF1bMF0pLnRvRXF1YWwoJ3IyJyk7XG4gICAgICBleHBlY3Qob25TdWJGaWVsZEZvY3VzLm1vY2suY2FsbHNbMF1bMV0uaWQpLnRvRXF1YWwoJ3IyJyk7XG4gICAgICBleHBlY3Qoc2V0SW5wdXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdGhpbmcgd2l0aG91dCBhIHNlbGVjdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uU3ViRmllbGRGb2N1cyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHMgPSBtYWtlKHsgb25TdWJGaWVsZEZvY3VzIH0pO1xuXG4gICAgICBzLm1hdGhGaWVsZCA9IHN0dWJGaWVsZCh7IHIxOiAnJyB9LCBudWxsKTtcbiAgICAgIHMub25Qcm9tcHRGb2N1cygpO1xuXG4gICAgICBleHBlY3Qob25TdWJGaWVsZEZvY3VzKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IHdoZW4gdGhlIGZpZWxkIGlzIG1pc3NpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzID0gbWFrZSh7IG9uU3ViRmllbGRGb2N1czogamVzdC5mbigpIH0pO1xuXG4gICAgICBleHBlY3QoKCkgPT4gcy5vblByb21wdEZvY3VzKCkpLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhY2Nlc3NpYmlsaXR5IGFubm91bmNlbWVudHMnLCAoKSA9PiB7XG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJyc7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlcyBhIHBvbGl0ZSBvZmYtc2NyZWVuIGxpdmUgcmVnaW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgcy5jcmVhdGVMaXZlUmVnaW9uKCk7XG5cbiAgICAgIGV4cGVjdChzLmxpdmVSZWdpb24uZ2V0QXR0cmlidXRlKCdhcmlhLWxpdmUnKSkudG9FcXVhbCgncG9saXRlJyk7XG4gICAgICBleHBlY3Qocy5saXZlUmVnaW9uLmdldEF0dHJpYnV0ZSgnYXJpYS1hdG9taWMnKSkudG9FcXVhbCgndHJ1ZScpO1xuICAgICAgZXhwZWN0KGRvY3VtZW50LmJvZHkuY29udGFpbnMocy5saXZlUmVnaW9uKSkudG9CZSh0cnVlKTtcblxuICAgICAgcy5yZW1vdmVMaXZlUmVnaW9uKCk7XG4gICAgICBleHBlY3Qocy5saXZlUmVnaW9uKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgc2Vjb25kIHJlZ2lvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHMgPSBtYWtlKCk7XG5cbiAgICAgIHMuY3JlYXRlTGl2ZVJlZ2lvbigpO1xuICAgICAgY29uc3QgZmlyc3QgPSBzLmxpdmVSZWdpb247XG5cbiAgICAgIHMuY3JlYXRlTGl2ZVJlZ2lvbigpO1xuICAgICAgZXhwZWN0KHMubGl2ZVJlZ2lvbikudG9CZShmaXJzdCk7XG4gICAgICBzLnJlbW92ZUxpdmVSZWdpb24oKTtcbiAgICB9KTtcblxuICAgIGl0KCdhbm5vdW5jZXMgd2hlbiB0eXBlZCBpbnB1dCBleHBhbmRzIGludG8gYSBjb21tYW5kJywgKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgcy5jcmVhdGVMaXZlUmVnaW9uKCk7XG4gICAgICBzLnByb21wdFZhbHVlcyA9IHsgcjE6ICd4JyB9O1xuICAgICAgLy8gZ3JldyBieSBtb3JlIHRoYW4gb25lIGNoYXIgQU5EIGdhaW5lZCBhIGJhY2tzbGFzaCA9PiBhIGNvbnZlcnNpb25cbiAgICAgIHMuYW5ub3VuY2VDb252ZXJzaW9uKHsgcjE6ICd4XFxcXGZyYWN7fXt9JyB9KTtcblxuICAgICAgZXhwZWN0KHMubGl2ZVJlZ2lvbi50ZXh0Q29udGVudCkudG9FcXVhbCgnQ29udmVydGVkIHRvIG1hdGggc3ltYm9sJyk7XG4gICAgICBzLnJlbW92ZUxpdmVSZWdpb24oKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBhbm5vdW5jZSBvcmRpbmFyeSB0eXBpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzID0gbWFrZSgpO1xuXG4gICAgICBzLmNyZWF0ZUxpdmVSZWdpb24oKTtcbiAgICAgIHMucHJvbXB0VmFsdWVzID0geyByMTogJ3gnIH07XG4gICAgICBzLmFubm91bmNlQ29udmVyc2lvbih7IHIxOiAneHknIH0pO1xuXG4gICAgICBleHBlY3Qocy5saXZlUmVnaW9uLnRleHRDb250ZW50KS50b0VxdWFsKCcnKTtcbiAgICAgIHMucmVtb3ZlTGl2ZVJlZ2lvbigpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGFubm91bmNlIGEgZGVsZXRpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBzID0gbWFrZSgpO1xuXG4gICAgICBzLmNyZWF0ZUxpdmVSZWdpb24oKTtcbiAgICAgIHMucHJvbXB0VmFsdWVzID0geyByMTogJ3hcXFxcZnJhY3t9e30nIH07XG4gICAgICBzLm9uS2V5RG93bih7IGtleTogJ0JhY2tzcGFjZScgfSk7XG4gICAgICBzLmFubm91bmNlQ29udmVyc2lvbih7IHIxOiAneCcgfSk7XG5cbiAgICAgIGV4cGVjdChzLmxpdmVSZWdpb24udGV4dENvbnRlbnQpLnRvRXF1YWwoJycpO1xuICAgICAgcy5yZW1vdmVMaXZlUmVnaW9uKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmb2N1cyAvIGJsdXInLCAoKSA9PiB7XG4gICAgaXQoJ2RlbGVnYXRlcyB0byB0aGUgZmllbGQgYW5kIGlzIHNhZmUgd2l0aG91dCBvbmUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzID0gbWFrZSgpO1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBzLmZvY3VzKCk7XG4gICAgICAgIHMuYmx1cigpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcblxuICAgICAgcy5tYXRoRmllbGQgPSBzdHViRmllbGQoKTtcbiAgICAgIHMuZm9jdXMoKTtcbiAgICAgIHMuYmx1cigpO1xuXG4gICAgICBleHBlY3Qocy5tYXRoRmllbGQuZm9jdXNlZCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChzLm1hdGhGaWVsZC5ibHVycmVkKS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICAvKipcbiAgICogTWF0aExpdmUgc2hvd3MgdGhlIGNhcmV0IG9ubHkgd2hpbGUgdGhlIGZpZWxkIGNhcnJpZXMgYE1MX19mb2N1c2VkYCwgd2hpY2hcbiAgICogaXQgYWRkcyBkdXJpbmcgYSByZW5kZXIgZ2F0ZWQgb24gYGlzU2VsZWN0aW9uRWRpdGFibGUgJiYgaGFzRm9jdXMoKWAuIEluIGFcbiAgICogcmVhZC1vbmx5IGZpZWxkIG9ubHkgcHJvbXB0IGludGVyaW9ycyBhcmUgZWRpdGFibGUsIHNvIGFmdGVyIGEgYmFyZVxuICAgKiBgZm9jdXMoKWAgLSB3aG9zZSBzZWxlY3Rpb24gc2l0cyBvdXRzaWRlIGV2ZXJ5IHByb21wdCAtIHRoZSBhbnN3ZXIgYmxvY2tcbiAgICogbG9va2VkIGZvY3VzZWQgYnV0IGhhZCBubyBibGlua2luZyBjdXJzb3IuIFZlcmlmaWVkIGluIENocm9taXVtOiB0aGUgY2FyZXRcbiAgICogc3BhbiBnb2VzIGZyb20gdmlzaWJpbGl0eTpoaWRkZW4gdG8gdmlzaWJsZSBvbmNlIHRoZSBzZWxlY3Rpb24gaXMgaW5zaWRlIGFcbiAgICogcHJvbXB0IEFORCBhIHJlbmRlciBoYXMgcnVuLlxuICAgKi9cbiAgZGVzY3JpYmUoJ2NhcmV0IHBsYWNlbWVudCcsICgpID0+IHtcbiAgICBpdCgncHV0cyBhIGNvbGxhcHNlZCBjYXJldCBpbiB0aGUgZmlyc3QgcHJvbXB0IG9uIGZvY3VzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgcy5tYXRoRmllbGQgPSBzdHViRmllbGQoeyByMTogJycsIHIyOiAnJyB9KTtcbiAgICAgIHMuZm9jdXMoKTtcblxuICAgICAgLy8gc3R1YiByYW5nZXMgYXJlIFswLDVdIGZvciByMSwgWzEwLDE1XSBmb3IgcjJcbiAgICAgIGV4cGVjdChzLm1hdGhGaWVsZC5zZWxlY3Rpb24pLnRvRXF1YWwoeyByYW5nZXM6IFtbMCwgMF1dIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZvcmNlcyB0aGUgcmVuZGVyIHRoYXQgbWFrZXMgdGhlIGNhcmV0IHZpc2libGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzID0gbWFrZSgpO1xuXG4gICAgICBzLm1hdGhGaWVsZCA9IHN0dWJGaWVsZCh7IHIxOiAnJyB9KTtcbiAgICAgIHMuZm9jdXMoKTtcblxuICAgICAgLy8gYXNzaWduaW5nIGBzZWxlY3Rpb25gIGFsb25lIHVwZGF0ZXMgdGhlIG1vZGVsIHdpdGhvdXQgcmUtcmVuZGVyaW5nLCBzb1xuICAgICAgLy8gTUxfX2ZvY3VzZWQgd291bGQgbmV2ZXIgYmUgYWRkZWRcbiAgICAgIGV4cGVjdChzLm1hdGhGaWVsZC5jb21tYW5kcykudG9FcXVhbChbJ3Njcm9sbEludG9WaWV3J10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IG1vdmUgYSBjYXJldCB0aGF0IGlzIGFscmVhZHkgaW5zaWRlIGEgcHJvbXB0JywgKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgcy5tYXRoRmllbGQgPSBzdHViRmllbGQoeyByMTogJycsIHIyOiAnJyB9KTtcbiAgICAgIHMubWF0aEZpZWxkLnBvc2l0aW9uID0gMTI7IC8vIGluc2lkZSByMlxuICAgICAgcy5mb2N1cygpO1xuXG4gICAgICBleHBlY3Qocy5tYXRoRmllbGQuc2VsZWN0aW9uKS50b0JlKG51bGwpO1xuICAgICAgZXhwZWN0KHMubWF0aEZpZWxkLmNvbW1hbmRzKS50b0VxdWFsKFtdKTtcbiAgICB9KTtcblxuICAgIGl0KCd0YXJnZXRzIGEgc3BlY2lmaWMgcHJvbXB0JywgKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgcy5tYXRoRmllbGQgPSBzdHViRmllbGQoeyByMTogJycsIHIyOiAnJyB9KTtcbiAgICAgIHMuZm9jdXNQcm9tcHQoJ3IyJyk7XG5cbiAgICAgIGV4cGVjdChzLm1hdGhGaWVsZC5zZWxlY3Rpb24pLnRvRXF1YWwoeyByYW5nZXM6IFtbMTAsIDEwXV0gfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZmFsbHMgYmFjayB0byB0aGUgZmlyc3QgcHJvbXB0IGZvciBhbiB1bmtub3duIGlkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgcy5tYXRoRmllbGQgPSBzdHViRmllbGQoeyByMTogJycsIHIyOiAnJyB9KTtcbiAgICAgIHMuZm9jdXNQcm9tcHQoJ25vcGUnKTtcblxuICAgICAgZXhwZWN0KHMubWF0aEZpZWxkLnNlbGVjdGlvbikudG9FcXVhbCh7IHJhbmdlczogW1swLCAwXV0gfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaXMgYSBuby1vcCB3aGVuIHRoZXJlIGFyZSBubyBwcm9tcHRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgcy5tYXRoRmllbGQgPSBzdHViRmllbGQoe30pO1xuXG4gICAgICBleHBlY3QoKCkgPT4gcy5mb2N1c1Byb21wdCgpKS5ub3QudG9UaHJvdygpO1xuICAgICAgZXhwZWN0KHMubWF0aEZpZWxkLnNlbGVjdGlvbikudG9CZShudWxsKTtcbiAgICB9KTtcblxuICAgIGl0KCdpcyBzYWZlIHdpdGhvdXQgYSBmaWVsZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiBtYWtlKCkuZm9jdXNQcm9tcHQoJ3IxJykpLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncHJvbXB0Q29udGFpbmluZycsICgpID0+IHtcbiAgICAgIGl0KCdmaW5kcyB0aGUgcHJvbXB0IHdob3NlIHJhbmdlIGhvbGRzIHRoZSBvZmZzZXQsIGluY2x1c2l2ZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgICBzLm1hdGhGaWVsZCA9IHN0dWJGaWVsZCh7IHIxOiAnJywgcjI6ICcnIH0pO1xuXG4gICAgICAgIGV4cGVjdChzLnByb21wdENvbnRhaW5pbmcoMCkpLnRvRXF1YWwoJ3IxJyk7XG4gICAgICAgIGV4cGVjdChzLnByb21wdENvbnRhaW5pbmcoNSkpLnRvRXF1YWwoJ3IxJyk7XG4gICAgICAgIGV4cGVjdChzLnByb21wdENvbnRhaW5pbmcoMTApKS50b0VxdWFsKCdyMicpO1xuICAgICAgICBleHBlY3Qocy5wcm9tcHRDb250YWluaW5nKDcpKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3RyZWF0cyBhIG1pc3NpbmcgcG9zaXRpb24gYXMgb3V0c2lkZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgICBzLm1hdGhGaWVsZCA9IHN0dWJGaWVsZCh7IHIxOiAnJyB9KTtcblxuICAgICAgICBleHBlY3Qocy5wcm9tcHRDb250YWluaW5nKHVuZGVmaW5lZCkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gTWF0aFF1aWxsJ3MgaW5uZXIgZmllbGRzIGNvdWxkIGJlIGZvY3VzZWQgZGlyZWN0bHkuXG4gICAgaXQoJ3Byb21wdEhhbmRsZSBleHBvc2VzIGZvY3VzKCkgZm9yIGl0cyBvd24gcHJvbXB0JywgKCkgPT4ge1xuICAgICAgY29uc3QgcyA9IG1ha2UoKTtcblxuICAgICAgcy5tYXRoRmllbGQgPSBzdHViRmllbGQoeyByMTogJycsIHIyOiAnJyB9KTtcbiAgICAgIHMucHJvbXB0SGFuZGxlKCdyMicpLmZvY3VzKCk7XG5cbiAgICAgIGV4cGVjdChzLm1hdGhGaWVsZC5mb2N1c2VkKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHMubWF0aEZpZWxkLnNlbGVjdGlvbikudG9FcXVhbCh7IHJhbmdlczogW1sxMCwgMTBdXSB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFrQyxTQUFBQyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUss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
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
-
var _mathliveInstance = require("../mathlive-instance");
|
|
7
|
-
describe('tmp', function () {
|
|
8
|
-
it('prints markup', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
9
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
10
|
-
while (1) switch (_context.prev = _context.next) {
|
|
11
|
-
case 0:
|
|
12
|
-
_context.next = 1;
|
|
13
|
-
return (0, _mathliveInstance.loadMathLive)();
|
|
14
|
-
case 1:
|
|
15
|
-
// eslint-disable-next-line no-console
|
|
16
|
-
console.log('SQRT1:', (0, _mathliveInstance.latexToMarkup)('\\sqrt[1]{2}'));
|
|
17
|
-
// eslint-disable-next-line no-console
|
|
18
|
-
console.log('NTHROOT:', (0, _mathliveInstance.latexToMarkup)('\\sqrt[{}]{}'));
|
|
19
|
-
case 2:
|
|
20
|
-
case "end":
|
|
21
|
-
return _context.stop();
|
|
22
|
-
}
|
|
23
|
-
}, _callee);
|
|
24
|
-
})));
|
|
25
|
-
});
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0aGxpdmVJbnN0YW5jZSIsInJlcXVpcmUiLCJkZXNjcmliZSIsIml0IiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImxvYWRNYXRoTGl2ZSIsImNvbnNvbGUiLCJsb2ciLCJsYXRleFRvTWFya3VwIiwic3RvcCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdG1wLW1hcmt1cC50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvYWRNYXRoTGl2ZSwgbGF0ZXhUb01hcmt1cCB9IGZyb20gJy4uL21hdGhsaXZlLWluc3RhbmNlJztcblxuZGVzY3JpYmUoJ3RtcCcsICgpID0+IHtcbiAgaXQoJ3ByaW50cyBtYXJrdXAnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgbG9hZE1hdGhMaXZlKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnU1FSVDE6JywgbGF0ZXhUb01hcmt1cCgnXFxcXHNxcnRbMV17Mn0nKSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnTlRIUk9PVDonLCBsYXRleFRvTWFya3VwKCdcXFxcc3FydFt7fV17fScpKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxpQkFBQSxHQUFBQyxPQUFBO0FBRUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBTTtFQUNwQkMsRUFBRSxDQUFDLGVBQWUsbUJBQUFDLGtCQUFBLDBCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FBRSxTQUFBQyxRQUFBO0lBQUEsT0FBQUYsWUFBQSxZQUFBRyxJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQUFGLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BQ1osSUFBQUMsOEJBQVksRUFBQyxDQUFDO1FBQUE7VUFDcEI7VUFDQUMsT0FBTyxDQUFDQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUFDLCtCQUFhLEVBQUMsY0FBYyxDQUFDLENBQUM7VUFDcEQ7VUFDQUYsT0FBTyxDQUFDQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUFDLCtCQUFhLEVBQUMsY0FBYyxDQUFDLENBQUM7UUFBQztRQUFBO1VBQUEsT0FBQU4sUUFBQSxDQUFBTyxJQUFBO01BQUE7SUFBQSxHQUFBVCxPQUFBO0VBQUEsQ0FDeEQsR0FBQztBQUNKLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
package/lib/horizontal-keypad.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports["default"] = void 0;
|
|
8
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
11
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
12
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
-
var _react = _interopRequireDefault(require("react"));
|
|
15
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
16
|
-
var _grades = require("./keys/grades");
|
|
17
|
-
var _utils = require("./keys/utils");
|
|
18
|
-
var _keypad = _interopRequireDefault(require("./keypad"));
|
|
19
|
-
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
20
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
21
|
-
/**
|
|
22
|
-
* Maps a key definition to the legacy `{value, type}` shape that
|
|
23
|
-
* @pie-lib/math-toolbar consumes. Unchanged from the MathQuill implementation:
|
|
24
|
-
* the shape is part of the 4.x-compatible contract, and translation to MathLive
|
|
25
|
-
* happens later, in `latex-bridge.keyToAction`.
|
|
26
|
-
*/
|
|
27
|
-
var toOldModel = function toOldModel(d) {
|
|
28
|
-
if (d.command) {
|
|
29
|
-
return {
|
|
30
|
-
value: d.command,
|
|
31
|
-
type: 'command'
|
|
32
|
-
};
|
|
33
|
-
} else if (d.write) {
|
|
34
|
-
return {
|
|
35
|
-
value: d.write
|
|
36
|
-
};
|
|
37
|
-
} else if (d.keystroke) {
|
|
38
|
-
return {
|
|
39
|
-
type: 'cursor',
|
|
40
|
-
value: d.keystroke
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
var HorizontalKeypad = exports["default"] = /*#__PURE__*/function (_React$Component) {
|
|
45
|
-
function HorizontalKeypad() {
|
|
46
|
-
var _this;
|
|
47
|
-
(0, _classCallCheck2["default"])(this, HorizontalKeypad);
|
|
48
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
49
|
-
args[_key] = arguments[_key];
|
|
50
|
-
}
|
|
51
|
-
_this = _callSuper(this, HorizontalKeypad, [].concat(args));
|
|
52
|
-
(0, _defineProperty2["default"])(_this, "keypadPress", function (data) {
|
|
53
|
-
_this.props.onClick(toOldModel(data));
|
|
54
|
-
});
|
|
55
|
-
return _this;
|
|
56
|
-
}
|
|
57
|
-
(0, _inherits2["default"])(HorizontalKeypad, _React$Component);
|
|
58
|
-
return (0, _createClass2["default"])(HorizontalKeypad, [{
|
|
59
|
-
key: "render",
|
|
60
|
-
value: function render() {
|
|
61
|
-
var _this$props = this.props,
|
|
62
|
-
mode = _this$props.mode,
|
|
63
|
-
onFocus = _this$props.onFocus,
|
|
64
|
-
controlledKeypadMode = _this$props.controlledKeypadMode,
|
|
65
|
-
noDecimal = _this$props.noDecimal,
|
|
66
|
-
className = _this$props.className,
|
|
67
|
-
additionalKeys = _this$props.additionalKeys,
|
|
68
|
-
layoutForKeyPad = _this$props.layoutForKeyPad,
|
|
69
|
-
setKeypadInteraction = _this$props.setKeypadInteraction;
|
|
70
|
-
var normalizedKeys = (0, _grades.normalizeAdditionalKeys)(additionalKeys);
|
|
71
|
-
return /*#__PURE__*/_react["default"].createElement(_keypad["default"], {
|
|
72
|
-
className: className,
|
|
73
|
-
controlledKeypadMode: controlledKeypadMode,
|
|
74
|
-
onFocus: onFocus,
|
|
75
|
-
noDecimal: noDecimal,
|
|
76
|
-
layoutForKeyPad: layoutForKeyPad,
|
|
77
|
-
additionalKeys: (0, _utils.extendKeySet)((0, _grades.keysForGrade)(mode), normalizedKeys),
|
|
78
|
-
onPress: this.keypadPress,
|
|
79
|
-
mode: mode,
|
|
80
|
-
setKeypadInteraction: setKeypadInteraction
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}]);
|
|
84
|
-
}(_react["default"].Component);
|
|
85
|
-
(0, _defineProperty2["default"])(HorizontalKeypad, "propTypes", {
|
|
86
|
-
className: _propTypes["default"].string,
|
|
87
|
-
controlledKeypadMode: _propTypes["default"].bool,
|
|
88
|
-
mode: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
|
89
|
-
layoutForKeyPad: _propTypes["default"].object,
|
|
90
|
-
onClick: _propTypes["default"].func.isRequired,
|
|
91
|
-
onFocus: _propTypes["default"].func,
|
|
92
|
-
noDecimal: _propTypes["default"].bool,
|
|
93
|
-
additionalKeys: _propTypes["default"].array,
|
|
94
|
-
setKeypadInteraction: _propTypes["default"].func
|
|
95
|
-
});
|
|
96
|
-
(0, _defineProperty2["default"])(HorizontalKeypad, "defaultProps", {
|
|
97
|
-
mode: 'scientific',
|
|
98
|
-
noDecimal: false,
|
|
99
|
-
additionalKeys: []
|
|
100
|
-
});
|
|
101
|
-
//# sourceMappingURL=horizontal-keypad.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"horizontal-keypad.js","names":["_react","_interopRequireDefault","require","_propTypes","_grades","_utils","_keypad","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","toOldModel","d","command","value","type","write","keystroke","HorizontalKeypad","exports","_React$Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","concat","_defineProperty2","data","props","onClick","_inherits2","_createClass2","key","render","_this$props","mode","onFocus","controlledKeypadMode","noDecimal","className","additionalKeys","layoutForKeyPad","setKeypadInteraction","normalizedKeys","normalizeAdditionalKeys","createElement","extendKeySet","keysForGrade","onPress","keypadPress","React","Component","PropTypes","string","bool","oneOfType","number","object","func","isRequired","array"],"sources":["../src/horizontal-keypad.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { keysForGrade, normalizeAdditionalKeys } from './keys/grades';\nimport { extendKeySet } from './keys/utils';\nimport Keypad from './keypad';\n\n/**\n * Maps a key definition to the legacy `{value, type}` shape that\n * @pie-lib/math-toolbar consumes. Unchanged from the MathQuill implementation:\n * the shape is part of the 4.x-compatible contract, and translation to MathLive\n * happens later, in `latex-bridge.keyToAction`.\n */\nconst toOldModel = (d) => {\n if (d.command) {\n return { value: d.command, type: 'command' };\n } else if (d.write) {\n return { value: d.write };\n } else if (d.keystroke) {\n return { type: 'cursor', value: d.keystroke };\n }\n};\n\nexport default class HorizontalKeypad extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n controlledKeypadMode: PropTypes.bool,\n mode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n layoutForKeyPad: PropTypes.object,\n onClick: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n noDecimal: PropTypes.bool,\n additionalKeys: PropTypes.array,\n setKeypadInteraction: PropTypes.func,\n };\n\n static defaultProps = {\n mode: 'scientific',\n noDecimal: false,\n additionalKeys: [],\n };\n\n keypadPress = (data) => {\n this.props.onClick(toOldModel(data));\n };\n\n render() {\n const {\n mode,\n onFocus,\n controlledKeypadMode,\n noDecimal,\n className,\n additionalKeys,\n layoutForKeyPad,\n setKeypadInteraction,\n } = this.props;\n const normalizedKeys = normalizeAdditionalKeys(additionalKeys);\n\n return (\n <Keypad\n className={className}\n controlledKeypadMode={controlledKeypadMode}\n onFocus={onFocus}\n noDecimal={noDecimal}\n layoutForKeyPad={layoutForKeyPad}\n additionalKeys={extendKeySet(keysForGrade(mode), normalizedKeys)}\n onPress={this.keypadPress}\n mode={mode}\n setKeypadInteraction={setKeypadInteraction}\n />\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|