@pie-lib/math-input-mathlive 1.1.5-beta.9 → 2.0.1-next.20261107131445

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 (195) hide show
  1. package/README.md +84 -109
  2. package/dist/_virtual/_rolldown/runtime.js +11 -0
  3. package/dist/horizontal-keypad.d.ts +22 -0
  4. package/dist/horizontal-keypad.js +54 -0
  5. package/dist/index.d.ts +20 -0
  6. package/dist/index.js +12 -0
  7. package/dist/keypad/index.d.ts +40 -0
  8. package/dist/keypad/index.js +245 -0
  9. package/dist/keypad/keys-layout.d.ts +7 -0
  10. package/dist/keypad/keys-layout.js +5 -0
  11. package/dist/keys/basic-operators.d.ts +5 -0
  12. package/dist/keys/basic-operators.js +30 -0
  13. package/dist/keys/chars.d.ts +5 -0
  14. package/dist/keys/comparison.d.ts +4 -0
  15. package/dist/keys/comparison.js +32 -0
  16. package/dist/keys/constants.d.ts +4 -0
  17. package/dist/keys/constants.js +35 -0
  18. package/dist/keys/digits.d.ts +15 -0
  19. package/dist/keys/digits.js +34 -0
  20. package/dist/keys/edit.d.ts +6 -0
  21. package/dist/keys/edit.js +9 -0
  22. package/dist/keys/exponent.d.ts +4 -0
  23. package/dist/keys/exponent.js +28 -0
  24. package/dist/keys/fractions.d.ts +3 -0
  25. package/dist/keys/fractions.js +27 -0
  26. package/dist/keys/geometry.d.ts +23 -0
  27. package/dist/keys/geometry.js +127 -0
  28. package/dist/keys/grades.d.ts +9 -0
  29. package/dist/keys/grades.js +414 -0
  30. package/dist/keys/index.d.ts +6 -0
  31. package/dist/keys/index.js +50 -0
  32. package/dist/keys/log.d.ts +3 -0
  33. package/dist/keys/log.js +25 -0
  34. package/dist/keys/logic.d.ts +2 -0
  35. package/dist/keys/logic.js +13 -0
  36. package/dist/keys/matrices.d.ts +2 -0
  37. package/dist/keys/matrices.js +17 -0
  38. package/dist/keys/misc.d.ts +10 -0
  39. package/dist/keys/misc.js +60 -0
  40. package/dist/keys/navigation.d.ts +2 -0
  41. package/dist/keys/navigation.js +13 -0
  42. package/dist/keys/operators.d.ts +1 -0
  43. package/dist/keys/operators.js +11 -0
  44. package/dist/keys/statistics.d.ts +5 -0
  45. package/dist/keys/statistics.js +38 -0
  46. package/dist/keys/sub-sup.d.ts +2 -0
  47. package/dist/keys/sub-sup.js +17 -0
  48. package/dist/keys/trigonometry.d.ts +6 -0
  49. package/dist/keys/trigonometry.js +43 -0
  50. package/dist/keys/utils.d.ts +5 -0
  51. package/dist/keys/utils.js +24 -0
  52. package/dist/keys/vars.d.ts +3 -0
  53. package/dist/keys/vars.js +22 -0
  54. package/dist/latex-bridge.d.ts +197 -0
  55. package/dist/latex-bridge.js +210 -0
  56. package/dist/longdiv.d.ts +24 -0
  57. package/dist/longdiv.js +43 -0
  58. package/dist/math-input.d.ts +26 -0
  59. package/dist/math-input.js +74 -0
  60. package/dist/mathlive-instance.d.ts +221 -0
  61. package/dist/mathlive-instance.js +159 -0
  62. package/dist/mf/common-styles.d.ts +594 -0
  63. package/dist/mf/common-styles.js +80 -0
  64. package/dist/mf/field-label.d.ts +16 -0
  65. package/dist/mf/field-label.js +13 -0
  66. package/dist/mf/index.d.ts +4 -0
  67. package/dist/mf/index.js +21 -0
  68. package/dist/mf/input.d.ts +94 -0
  69. package/dist/mf/input.js +127 -0
  70. package/dist/mf/static.d.ts +143 -0
  71. package/dist/mf/static.js +230 -0
  72. package/dist/selection.d.ts +43 -0
  73. package/dist/selection.js +39 -0
  74. package/package.json +32 -18
  75. package/lib/__tests__/composites.test.js +0 -255
  76. package/lib/__tests__/drop-in-compat.test.js +0 -133
  77. package/lib/__tests__/embedded-fonts.test.js +0 -121
  78. package/lib/__tests__/index.test.js +0 -118
  79. package/lib/__tests__/input-imperative.test.js +0 -155
  80. package/lib/__tests__/keypad-label.test.js +0 -231
  81. package/lib/__tests__/keypad-render.test.js +0 -206
  82. package/lib/__tests__/latex-bridge.test.js +0 -386
  83. package/lib/__tests__/mathlive-instance.test.js +0 -419
  84. package/lib/__tests__/mount-race.test.js +0 -218
  85. package/lib/__tests__/static-prompts.test.js +0 -405
  86. package/lib/__tests__/tmp-markup.test.js +0 -26
  87. package/lib/horizontal-keypad.js +0 -101
  88. package/lib/horizontal-keypad.js.map +0 -1
  89. package/lib/index.js +0 -143
  90. package/lib/index.js.map +0 -1
  91. package/lib/keypad/index.js +0 -431
  92. package/lib/keypad/index.js.map +0 -1
  93. package/lib/keypad/keys-layout.js +0 -22
  94. package/lib/keypad/keys-layout.js.map +0 -1
  95. package/lib/keys/basic-operators.js +0 -33
  96. package/lib/keys/basic-operators.js.map +0 -1
  97. package/lib/keys/chars.js +0 -12
  98. package/lib/keys/chars.js.map +0 -1
  99. package/lib/keys/comparison.js +0 -39
  100. package/lib/keys/comparison.js.map +0 -1
  101. package/lib/keys/constants.js +0 -37
  102. package/lib/keys/constants.js.map +0 -1
  103. package/lib/keys/digits.js +0 -46
  104. package/lib/keys/digits.js.map +0 -1
  105. package/lib/keys/edit.js +0 -14
  106. package/lib/keys/edit.js.map +0 -1
  107. package/lib/keys/exponent.js +0 -30
  108. package/lib/keys/exponent.js.map +0 -1
  109. package/lib/keys/fractions.js +0 -29
  110. package/lib/keys/fractions.js.map +0 -1
  111. package/lib/keys/geometry.js +0 -143
  112. package/lib/keys/geometry.js.map +0 -1
  113. package/lib/keys/grades.js +0 -259
  114. package/lib/keys/grades.js.map +0 -1
  115. package/lib/keys/index.js +0 -35
  116. package/lib/keys/index.js.map +0 -1
  117. package/lib/keys/log.js +0 -27
  118. package/lib/keys/log.js.map +0 -1
  119. package/lib/keys/logic.js +0 -19
  120. package/lib/keys/logic.js.map +0 -1
  121. package/lib/keys/matrices.js +0 -19
  122. package/lib/keys/matrices.js.map +0 -1
  123. package/lib/keys/misc.js +0 -69
  124. package/lib/keys/misc.js.map +0 -1
  125. package/lib/keys/navigation.js +0 -20
  126. package/lib/keys/navigation.js.map +0 -1
  127. package/lib/keys/operators.js +0 -15
  128. package/lib/keys/operators.js.map +0 -1
  129. package/lib/keys/statistics.js +0 -40
  130. package/lib/keys/statistics.js.map +0 -1
  131. package/lib/keys/sub-sup.js +0 -19
  132. package/lib/keys/sub-sup.js.map +0 -1
  133. package/lib/keys/trigonometry.js +0 -45
  134. package/lib/keys/trigonometry.js.map +0 -1
  135. package/lib/keys/utils.js +0 -87
  136. package/lib/keys/utils.js.map +0 -1
  137. package/lib/keys/vars.js +0 -24
  138. package/lib/keys/vars.js.map +0 -1
  139. package/lib/latex-bridge.js +0 -508
  140. package/lib/latex-bridge.js.map +0 -1
  141. package/lib/math-input.js +0 -143
  142. package/lib/math-input.js.map +0 -1
  143. package/lib/mathlive-instance.js +0 -585
  144. package/lib/mathlive-instance.js.map +0 -1
  145. package/lib/mf/common-styles.js +0 -203
  146. package/lib/mf/common-styles.js.map +0 -1
  147. package/lib/mf/index.js +0 -84
  148. package/lib/mf/index.js.map +0 -1
  149. package/lib/mf/input.js +0 -364
  150. package/lib/mf/input.js.map +0 -1
  151. package/lib/mf/static.js +0 -500
  152. package/lib/mf/static.js.map +0 -1
  153. package/src/__tests__/composites.test.jsx +0 -220
  154. package/src/__tests__/drop-in-compat.test.jsx +0 -112
  155. package/src/__tests__/index.test.jsx +0 -109
  156. package/src/__tests__/input-imperative.test.jsx +0 -144
  157. package/src/__tests__/keypad-label.test.jsx +0 -283
  158. package/src/__tests__/keypad-render.test.jsx +0 -123
  159. package/src/__tests__/latex-bridge.test.js +0 -389
  160. package/src/__tests__/mathlive-instance.test.js +0 -418
  161. package/src/__tests__/mount-race.test.jsx +0 -142
  162. package/src/__tests__/static-prompts.test.jsx +0 -364
  163. package/src/horizontal-keypad.jsx +0 -73
  164. package/src/index.jsx +0 -63
  165. package/src/keypad/index.jsx +0 -386
  166. package/src/keypad/keys-layout.js +0 -16
  167. package/src/keys/basic-operators.js +0 -32
  168. package/src/keys/chars.js +0 -5
  169. package/src/keys/comparison.js +0 -28
  170. package/src/keys/constants.js +0 -35
  171. package/src/keys/digits.js +0 -40
  172. package/src/keys/edit.js +0 -3
  173. package/src/keys/exponent.js +0 -28
  174. package/src/keys/fractions.js +0 -26
  175. package/src/keys/geometry.js +0 -149
  176. package/src/keys/grades.js +0 -367
  177. package/src/keys/index.js +0 -20
  178. package/src/keys/log.js +0 -22
  179. package/src/keys/logic.js +0 -15
  180. package/src/keys/matrices.js +0 -15
  181. package/src/keys/misc.js +0 -71
  182. package/src/keys/navigation.js +0 -8
  183. package/src/keys/operators.js +0 -10
  184. package/src/keys/statistics.js +0 -38
  185. package/src/keys/sub-sup.js +0 -15
  186. package/src/keys/trigonometry.js +0 -15
  187. package/src/keys/utils.js +0 -66
  188. package/src/keys/vars.js +0 -19
  189. package/src/latex-bridge.js +0 -524
  190. package/src/math-input.jsx +0 -115
  191. package/src/mathlive-instance.js +0 -582
  192. package/src/mf/common-styles.js +0 -210
  193. package/src/mf/index.js +0 -30
  194. package/src/mf/input.jsx +0 -319
  195. package/src/mf/static.jsx +0 -479
package/lib/mf/input.js DELETED
@@ -1,364 +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"] = exports.Input = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
- var _react = _interopRequireDefault(require("react"));
17
- var _propTypes = _interopRequireDefault(require("prop-types"));
18
- var _styles = require("@mui/material/styles");
19
- var _debug = _interopRequireDefault(require("debug"));
20
- var _mathliveInstance = require("../mathlive-instance");
21
- var _latexBridge = require("../latex-bridge");
22
- 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)); }
23
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
24
- var log = (0, _debug["default"])('pie-lib:math-input-mathlive:input');
25
- var Holder = (0, _styles.styled)('span')({
26
- display: 'inline-block',
27
- '& math-field': {
28
- display: 'block',
29
- width: '100%'
30
- },
31
- // MathLive ships its own virtual keyboard toggle; pie supplies its own keypad.
32
- '& math-field::part(virtual-keyboard-toggle)': {
33
- display: 'none'
34
- },
35
- '& math-field::part(menu-toggle)': {
36
- display: 'none'
37
- }
38
- });
39
-
40
- /**
41
- * Editable math field. Drop-in replacement for @pie-lib/math-input's `mq.Input`.
42
- *
43
- * Keeps the same imperative surface used by MathInput's keypad
44
- * (`write`, `command`, `keystroke`, `clear`, `focus`, `blur`) so callers do not
45
- * change, and the same `latex` / `onChange` props.
46
- */
47
- var Input = exports.Input = /*#__PURE__*/function (_React$Component) {
48
- function Input(props) {
49
- var _this;
50
- (0, _classCallCheck2["default"])(this, Input);
51
- _this = _callSuper(this, Input, [props]);
52
- (0, _defineProperty2["default"])(_this, "onInputEdit", function () {
53
- var onChange = _this.props.onChange;
54
- if (!_this.mathField) {
55
- return;
56
- }
57
- var latex = (0, _latexBridge.fromMathLive)(_this.mathField.getValue('latex'));
58
- _this.lastEmitted = latex;
59
- if (onChange) {
60
- onChange(latex);
61
- }
62
- });
63
- /**
64
- * Enter must not insert a line break: math input is single-expression, and
65
- * the MathQuill version swallowed charCode 13 for the same reason. Newlines
66
- * are authored explicitly through the newLine embed, not the Enter key.
67
- */
68
- (0, _defineProperty2["default"])(_this, "onKeyDown", function (event) {
69
- if (event.key === 'Enter') {
70
- event.preventDefault();
71
- }
72
- });
73
- _this.holderRef = /*#__PURE__*/_react["default"].createRef();
74
- // Tracks the last latex we emitted, so prop echoes don't reset the cursor.
75
- _this.lastEmitted = undefined;
76
- return _this;
77
- }
78
- (0, _inherits2["default"])(Input, _React$Component);
79
- return (0, _createClass2["default"])(Input, [{
80
- key: "componentDidMount",
81
- value: function () {
82
- var _componentDidMount = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
83
- var generation, ml;
84
- return _regenerator["default"].wrap(function (_context) {
85
- while (1) switch (_context.prev = _context.next) {
86
- case 0:
87
- // MathLive loads asynchronously, so this method resumes after an await and
88
- // has to know whether it is still the current mount. React StrictMode calls
89
- // mount -> unmount -> mount on the SAME instance in dev, so a boolean
90
- // "unmounted" flag would latch and block the remount from ever creating a
91
- // field. A generation counter identifies the live mount instead: only the
92
- // newest one proceeds, and a real unmount invalidates all pending ones.
93
- generation = this.mountGeneration = (this.mountGeneration || 0) + 1;
94
- _context.next = 1;
95
- return (0, _mathliveInstance.loadMathLive)();
96
- case 1:
97
- ml = _context.sent;
98
- if (!(generation !== this.mountGeneration || !ml || !this.holderRef.current || this.mathField)) {
99
- _context.next = 2;
100
- break;
101
- }
102
- return _context.abrupt("return");
103
- case 2:
104
- this.mathField = new ml.MathfieldElement({
105
- macros: (0, _mathliveInstance.getMacros)()
106
- });
107
- this.mathField.value = (0, _latexBridge.toMathLive)(this.props.latex || '');
108
- if (this.props.readOnly) {
109
- this.mathField.readOnly = true;
110
- }
111
-
112
- // pie drives input through its own keypad, so suppress MathLive's.
113
- this.mathField.mathVirtualKeyboardPolicy = 'manual';
114
- // Without this the spacebar does nothing: MathLive's mathModeSpace
115
- // defaults to an empty string.
116
- this.mathField.mathModeSpace = _mathliveInstance.MATH_MODE_SPACE;
117
- // After the exponent key the cursor must stay in the exponent until it is moved
118
- // MathLive's `smartSuperscript` (on by
119
- // default) jumps out of an empty superscript after a single digit, which breaks
120
- // typing x^23 or 10^6 and is inconsistent with non-digit exponents.
121
- this.mathField.smartSuperscript = false;
122
-
123
- // The mathfield renders in shadow DOM, so page CSS cannot reach it - the
124
- // stretchy-accent fix has to be injected there directly.
125
- (0, _mathliveInstance.applyShadowStyles)(this.mathField);
126
-
127
- // A selected `\placeholder{}` gets no MathLive caret; draw one.
128
- this.untrackCaret = (0, _mathliveInstance.trackPlaceholderCaret)(this.mathField);
129
- this.mathField.addEventListener('input', this.onInputEdit);
130
-
131
- // Belt and braces: drop anything a previous mount may have left behind.
132
- this.holderRef.current.replaceChildren(this.mathField);
133
- if (this.props.innerRef) {
134
- this.props.innerRef(this);
135
- }
136
- case 3:
137
- case "end":
138
- return _context.stop();
139
- }
140
- }, _callee, this);
141
- }));
142
- function componentDidMount() {
143
- return _componentDidMount.apply(this, arguments);
144
- }
145
- return componentDidMount;
146
- }()
147
- }, {
148
- key: "componentDidUpdate",
149
- value: function componentDidUpdate(prevProps) {
150
- if (!this.mathField) {
151
- return;
152
- }
153
- var _this$props = this.props,
154
- latex = _this$props.latex,
155
- readOnly = _this$props.readOnly;
156
- if (readOnly !== prevProps.readOnly) {
157
- this.mathField.readOnly = !!readOnly;
158
- }
159
-
160
- // Only push the prop back into the field when it genuinely differs from
161
- // what the field already holds. This is the analogue of the old
162
- // shouldComponentUpdate latex-equality guard and prevents cursor thrash.
163
- if (latex !== undefined && latex !== null && latex !== this.lastEmitted) {
164
- var next = (0, _latexBridge.toMathLive)(latex);
165
- if (next !== this.mathField.value) {
166
- this.mathField.value = next;
167
- }
168
- }
169
- }
170
- }, {
171
- key: "componentWillUnmount",
172
- value: function componentWillUnmount() {
173
- // Invalidate any mount still awaiting the MathLive load, so it does not
174
- // append a field into a holder that is going away.
175
- this.mountGeneration = (this.mountGeneration || 0) + 1;
176
- if (this.untrackCaret) {
177
- this.untrackCaret();
178
- this.untrackCaret = undefined;
179
- }
180
- if (this.mathField) {
181
- this.mathField.removeEventListener('input', this.onInputEdit);
182
- this.mathField.remove();
183
- this.mathField = undefined;
184
- }
185
- if (this.props.innerRef) {
186
- this.props.innerRef(null);
187
- }
188
- }
189
- }, {
190
- key: "latex",
191
- value: /** Current latex, in stored (MathQuill-compatible) form. */
192
- function latex() {
193
- return this.mathField ? (0, _latexBridge.fromMathLive)(this.mathField.getValue('latex')) : '';
194
- }
195
-
196
- /**
197
- * The underlying `<math-field>` element, or undefined until MathLive has
198
- * finished loading. Exposed for callers that need the real element.
199
- *
200
- * NOTE: this is NOT a MathQuill field. Code written against
201
- * `@pie-lib/math-input` often did `input.mathField.latex()`; that shape is
202
- * provided by `mqCompat` below, and `latex()` on this component is the
203
- * supported replacement.
204
- */
205
- }, {
206
- key: "element",
207
- get: function get() {
208
- return this.mathField;
209
- }
210
-
211
- /**
212
- * MathQuill-shaped facade, so existing `input.mathField.latex()` /
213
- * `.el()` call sites keep working instead of throwing. Only the members that
214
- * consumers actually used are provided; MathQuill internals such as
215
- * `__controller` have no MathLive equivalent and are deliberately absent.
216
- */
217
- }, {
218
- key: "mqCompat",
219
- get: function get() {
220
- var _this2 = this;
221
- return {
222
- latex: function latex(v) {
223
- return v === undefined ? _this2.latex() : (_this2.setLatex(v), v);
224
- },
225
- el: function el() {
226
- return _this2.mathField;
227
- },
228
- focus: function focus() {
229
- return _this2.focus();
230
- },
231
- blur: function blur() {
232
- return _this2.blur();
233
- }
234
- };
235
- }
236
-
237
- /** Programmatically replace the content. */
238
- }, {
239
- key: "setLatex",
240
- value: function setLatex(v) {
241
- if (this.mathField) {
242
- this.mathField.value = (0, _latexBridge.toMathLive)(v || '');
243
- }
244
- }
245
- }, {
246
- key: "clear",
247
- value: function clear() {
248
- if (this.mathField) {
249
- this.mathField.value = '';
250
- }
251
- return '';
252
- }
253
- }, {
254
- key: "blur",
255
- value: function blur() {
256
- log('blur mathfield');
257
- this.mathField && this.mathField.blur();
258
- }
259
- }, {
260
- key: "focus",
261
- value: function focus() {
262
- log('focus mathfield...');
263
- this.mathField && this.mathField.focus();
264
- }
265
-
266
- /**
267
- * MathQuill `cmd()` equivalent.
268
- *
269
- * Callers pass MathQuill command names (`'\\frac'`, `'\\sqrt'`, `'^'`, or an
270
- * array of them). Those must be expanded into latex with `#?` placeholders,
271
- * otherwise inserting a bare `\frac` produces no editable slots.
272
- */
273
- }, {
274
- key: "command",
275
- value: function command(v) {
276
- log('command: ', v);
277
- if (!this.mathField) {
278
- return '';
279
- }
280
- var action = (0, _latexBridge.keyToAction)({
281
- command: v
282
- });
283
- if (action) {
284
- this.mathField.insert(action.value, {
285
- focus: true
286
- });
287
- }
288
- this.mathField.focus();
289
- return this.latex();
290
- }
291
-
292
- /**
293
- * MathQuill `keystroke()` equivalent.
294
- *
295
- * Accepts MathQuill keystroke names (`'Left'`, `'Right'`, `'Backspace'`) as
296
- * the keypad emits them, and passes anything else through as a MathLive
297
- * selector.
298
- */
299
- }, {
300
- key: "keystroke",
301
- value: function keystroke(v) {
302
- log('keystroke: ', v);
303
- if (!this.mathField) {
304
- return '';
305
- }
306
- var selector = _latexBridge.KEYSTROKES[v] || v;
307
- try {
308
- this.mathField.executeCommand(selector);
309
- } catch (e) {
310
- log('unknown keystroke/selector "%s": %s', v, e && e.message);
311
- }
312
- this.mathField.focus();
313
- return this.latex();
314
- }
315
-
316
- /** MathQuill `write()` equivalent. Accepts an array, as `cmd()` did. */
317
- }, {
318
- key: "write",
319
- value: function write(v) {
320
- var _this3 = this;
321
- log('write: ', v);
322
- if (!this.mathField) {
323
- return '';
324
- }
325
- var values = Array.isArray(v) ? v : [v];
326
- values.forEach(function (vv) {
327
- return _this3.mathField.insert(vv, {
328
- focus: true
329
- });
330
- });
331
- this.mathField.focus();
332
- return this.latex();
333
- }
334
- }, {
335
- key: "render",
336
- value: function render() {
337
- var _this$props2 = this.props,
338
- className = _this$props2.className,
339
- onFocus = _this$props2.onFocus,
340
- onBlur = _this$props2.onBlur,
341
- onClick = _this$props2.onClick;
342
- return /*#__PURE__*/_react["default"].createElement(Holder, {
343
- className: className,
344
- onFocus: onFocus,
345
- onBlur: onBlur,
346
- onClick: onClick,
347
- onKeyDown: this.onKeyDown,
348
- ref: this.holderRef
349
- });
350
- }
351
- }]);
352
- }(_react["default"].Component);
353
- (0, _defineProperty2["default"])(Input, "propTypes", {
354
- className: _propTypes["default"].string,
355
- latex: _propTypes["default"].string,
356
- onChange: _propTypes["default"].func,
357
- onClick: _propTypes["default"].func,
358
- onFocus: _propTypes["default"].func,
359
- onBlur: _propTypes["default"].func,
360
- readOnly: _propTypes["default"].bool,
361
- innerRef: _propTypes["default"].func
362
- });
363
- var _default = exports["default"] = Input;
364
- //# sourceMappingURL=input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_debug","_mathliveInstance","_latexBridge","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","log","debug","Holder","styled","display","width","Input","exports","_React$Component","props","_this","_classCallCheck2","_defineProperty2","onChange","mathField","latex","fromMathLive","getValue","lastEmitted","event","key","preventDefault","holderRef","React","createRef","undefined","_inherits2","_createClass2","value","_componentDidMount","_asyncToGenerator2","_regenerator","mark","_callee","generation","ml","wrap","_context","prev","next","mountGeneration","loadMathLive","sent","current","abrupt","MathfieldElement","macros","getMacros","toMathLive","readOnly","mathVirtualKeyboardPolicy","mathModeSpace","MATH_MODE_SPACE","smartSuperscript","applyShadowStyles","untrackCaret","trackPlaceholderCaret","addEventListener","onInputEdit","replaceChildren","innerRef","stop","componentDidMount","arguments","componentDidUpdate","prevProps","_this$props","componentWillUnmount","removeEventListener","remove","get","_this2","v","setLatex","el","focus","blur","clear","command","action","keyToAction","insert","keystroke","selector","KEYSTROKES","executeCommand","message","write","_this3","values","Array","isArray","forEach","vv","render","_this$props2","className","onFocus","onBlur","onClick","createElement","onKeyDown","ref","Component","PropTypes","string","func","bool","_default"],"sources":["../../src/mf/input.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport debug from 'debug';\nimport {\n loadMathLive,\n getMacros,\n MATH_MODE_SPACE,\n applyShadowStyles,\n trackPlaceholderCaret,\n} from '../mathlive-instance';\nimport { toMathLive, fromMathLive, keyToAction, KEYSTROKES } from '../latex-bridge';\n\nconst log = debug('pie-lib:math-input-mathlive:input');\n\nconst Holder = styled('span')({\n display: 'inline-block',\n '& math-field': {\n display: 'block',\n width: '100%',\n },\n // MathLive ships its own virtual keyboard toggle; pie supplies its own keypad.\n '& math-field::part(virtual-keyboard-toggle)': {\n display: 'none',\n },\n '& math-field::part(menu-toggle)': {\n display: 'none',\n },\n});\n\n/**\n * Editable math field. Drop-in replacement for @pie-lib/math-input's `mq.Input`.\n *\n * Keeps the same imperative surface used by MathInput's keypad\n * (`write`, `command`, `keystroke`, `clear`, `focus`, `blur`) so callers do not\n * change, and the same `latex` / `onChange` props.\n */\nexport class Input extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n latex: PropTypes.string,\n onChange: PropTypes.func,\n onClick: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n readOnly: PropTypes.bool,\n innerRef: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.holderRef = React.createRef();\n // Tracks the last latex we emitted, so prop echoes don't reset the cursor.\n this.lastEmitted = undefined;\n }\n\n async componentDidMount() {\n // MathLive loads asynchronously, so this method resumes after an await and\n // has to know whether it is still the current mount. React StrictMode calls\n // mount -> unmount -> mount on the SAME instance in dev, so a boolean\n // \"unmounted\" flag would latch and block the remount from ever creating a\n // field. A generation counter identifies the live mount instead: only the\n // newest one proceeds, and a real unmount invalidates all pending ones.\n const generation = (this.mountGeneration = (this.mountGeneration || 0) + 1);\n const ml = await loadMathLive();\n\n if (generation !== this.mountGeneration || !ml || !this.holderRef.current || this.mathField) {\n return;\n }\n\n this.mathField = new ml.MathfieldElement({ macros: getMacros() });\n this.mathField.value = toMathLive(this.props.latex || '');\n\n if (this.props.readOnly) {\n this.mathField.readOnly = true;\n }\n\n // pie drives input through its own keypad, so suppress MathLive's.\n this.mathField.mathVirtualKeyboardPolicy = 'manual';\n // Without this the spacebar does nothing: MathLive's mathModeSpace\n // defaults to an empty string.\n this.mathField.mathModeSpace = MATH_MODE_SPACE;\n // After the exponent key the cursor must stay in the exponent until it is moved\n // MathLive's `smartSuperscript` (on by\n // default) jumps out of an empty superscript after a single digit, which breaks\n // typing x^23 or 10^6 and is inconsistent with non-digit exponents.\n this.mathField.smartSuperscript = false;\n\n // The mathfield renders in shadow DOM, so page CSS cannot reach it - the\n // stretchy-accent fix has to be injected there directly.\n applyShadowStyles(this.mathField);\n\n // A selected `\\placeholder{}` gets no MathLive caret; draw one.\n this.untrackCaret = trackPlaceholderCaret(this.mathField);\n\n this.mathField.addEventListener('input', this.onInputEdit);\n\n // Belt and braces: drop anything a previous mount may have left behind.\n this.holderRef.current.replaceChildren(this.mathField);\n\n if (this.props.innerRef) {\n this.props.innerRef(this);\n }\n }\n\n componentDidUpdate(prevProps) {\n if (!this.mathField) {\n return;\n }\n\n const { latex, readOnly } = this.props;\n\n if (readOnly !== prevProps.readOnly) {\n this.mathField.readOnly = !!readOnly;\n }\n\n // Only push the prop back into the field when it genuinely differs from\n // what the field already holds. This is the analogue of the old\n // shouldComponentUpdate latex-equality guard and prevents cursor thrash.\n if (latex !== undefined && latex !== null && latex !== this.lastEmitted) {\n const next = toMathLive(latex);\n\n if (next !== this.mathField.value) {\n this.mathField.value = next;\n }\n }\n }\n\n componentWillUnmount() {\n // Invalidate any mount still awaiting the MathLive load, so it does not\n // append a field into a holder that is going away.\n this.mountGeneration = (this.mountGeneration || 0) + 1;\n\n if (this.untrackCaret) {\n this.untrackCaret();\n this.untrackCaret = undefined;\n }\n\n if (this.mathField) {\n this.mathField.removeEventListener('input', this.onInputEdit);\n this.mathField.remove();\n this.mathField = undefined;\n }\n\n if (this.props.innerRef) {\n this.props.innerRef(null);\n }\n }\n\n onInputEdit = () => {\n const { onChange } = this.props;\n\n if (!this.mathField) {\n return;\n }\n\n const latex = fromMathLive(this.mathField.getValue('latex'));\n\n this.lastEmitted = latex;\n\n if (onChange) {\n onChange(latex);\n }\n };\n\n /** Current latex, in stored (MathQuill-compatible) form. */\n latex() {\n return this.mathField ? fromMathLive(this.mathField.getValue('latex')) : '';\n }\n\n /**\n * The underlying `<math-field>` element, or undefined until MathLive has\n * finished loading. Exposed for callers that need the real element.\n *\n * NOTE: this is NOT a MathQuill field. Code written against\n * `@pie-lib/math-input` often did `input.mathField.latex()`; that shape is\n * provided by `mqCompat` below, and `latex()` on this component is the\n * supported replacement.\n */\n get element() {\n return this.mathField;\n }\n\n /**\n * MathQuill-shaped facade, so existing `input.mathField.latex()` /\n * `.el()` call sites keep working instead of throwing. Only the members that\n * consumers actually used are provided; MathQuill internals such as\n * `__controller` have no MathLive equivalent and are deliberately absent.\n */\n get mqCompat() {\n return {\n latex: (v) => (v === undefined ? this.latex() : (this.setLatex(v), v)),\n el: () => this.mathField,\n focus: () => this.focus(),\n blur: () => this.blur(),\n };\n }\n\n /** Programmatically replace the content. */\n setLatex(v) {\n if (this.mathField) {\n this.mathField.value = toMathLive(v || '');\n }\n }\n\n clear() {\n if (this.mathField) {\n this.mathField.value = '';\n }\n\n return '';\n }\n\n blur() {\n log('blur mathfield');\n this.mathField && this.mathField.blur();\n }\n\n focus() {\n log('focus mathfield...');\n this.mathField && this.mathField.focus();\n }\n\n /**\n * MathQuill `cmd()` equivalent.\n *\n * Callers pass MathQuill command names (`'\\\\frac'`, `'\\\\sqrt'`, `'^'`, or an\n * array of them). Those must be expanded into latex with `#?` placeholders,\n * otherwise inserting a bare `\\frac` produces no editable slots.\n */\n command(v) {\n log('command: ', v);\n\n if (!this.mathField) {\n return '';\n }\n\n const action = keyToAction({ command: v });\n\n if (action) {\n this.mathField.insert(action.value, { focus: true });\n }\n\n this.mathField.focus();\n\n return this.latex();\n }\n\n /**\n * MathQuill `keystroke()` equivalent.\n *\n * Accepts MathQuill keystroke names (`'Left'`, `'Right'`, `'Backspace'`) as\n * the keypad emits them, and passes anything else through as a MathLive\n * selector.\n */\n keystroke(v) {\n log('keystroke: ', v);\n\n if (!this.mathField) {\n return '';\n }\n\n const selector = KEYSTROKES[v] || v;\n\n try {\n this.mathField.executeCommand(selector);\n } catch (e) {\n log('unknown keystroke/selector \"%s\": %s', v, e && e.message);\n }\n\n this.mathField.focus();\n\n return this.latex();\n }\n\n /** MathQuill `write()` equivalent. Accepts an array, as `cmd()` did. */\n write(v) {\n log('write: ', v);\n\n if (!this.mathField) {\n return '';\n }\n\n const values = Array.isArray(v) ? v : [v];\n\n values.forEach((vv) => this.mathField.insert(vv, { focus: true }));\n this.mathField.focus();\n\n return this.latex();\n }\n\n /**\n * Enter must not insert a line break: math input is single-expression, and\n * the MathQuill version swallowed charCode 13 for the same reason. Newlines\n * are authored explicitly through the newLine embed, not the Enter key.\n */\n onKeyDown = (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n };\n\n render() {\n const { className, onFocus, onBlur, onClick } = this.props;\n\n return (\n <Holder\n className={className}\n onFocus={onFocus}\n onBlur={onBlur}\n onClick={onClick}\n onKeyDown={this.onKeyDown}\n ref={this.holderRef}\n />\n );\n }\n}\n\nexport default Input;\n"],"mappings":"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","ignoreList":[]}