@pie-lib/math-input-mathlive 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +119 -0
  2. package/lib/__tests__/index.test.js +118 -0
  3. package/lib/__tests__/index.test.js.map +1 -0
  4. package/lib/__tests__/latex-bridge.test.js +186 -0
  5. package/lib/__tests__/latex-bridge.test.js.map +1 -0
  6. package/lib/__tests__/mathlive-instance.test.js +137 -0
  7. package/lib/__tests__/mathlive-instance.test.js.map +1 -0
  8. package/lib/horizontal-keypad.js +101 -0
  9. package/lib/horizontal-keypad.js.map +1 -0
  10. package/lib/index.js +143 -0
  11. package/lib/index.js.map +1 -0
  12. package/lib/keypad/index.js +365 -0
  13. package/lib/keypad/index.js.map +1 -0
  14. package/lib/keypad/keys-layout.js +22 -0
  15. package/lib/keypad/keys-layout.js.map +1 -0
  16. package/lib/keys/basic-operators.js +33 -0
  17. package/lib/keys/basic-operators.js.map +1 -0
  18. package/lib/keys/chars.js +12 -0
  19. package/lib/keys/chars.js.map +1 -0
  20. package/lib/keys/comparison.js +39 -0
  21. package/lib/keys/comparison.js.map +1 -0
  22. package/lib/keys/constants.js +37 -0
  23. package/lib/keys/constants.js.map +1 -0
  24. package/lib/keys/digits.js +46 -0
  25. package/lib/keys/digits.js.map +1 -0
  26. package/lib/keys/edit.js +14 -0
  27. package/lib/keys/edit.js.map +1 -0
  28. package/lib/keys/exponent.js +30 -0
  29. package/lib/keys/exponent.js.map +1 -0
  30. package/lib/keys/fractions.js +29 -0
  31. package/lib/keys/fractions.js.map +1 -0
  32. package/lib/keys/geometry.js +140 -0
  33. package/lib/keys/geometry.js.map +1 -0
  34. package/lib/keys/grades.js +259 -0
  35. package/lib/keys/grades.js.map +1 -0
  36. package/lib/keys/index.js +35 -0
  37. package/lib/keys/index.js.map +1 -0
  38. package/lib/keys/log.js +27 -0
  39. package/lib/keys/log.js.map +1 -0
  40. package/lib/keys/logic.js +19 -0
  41. package/lib/keys/logic.js.map +1 -0
  42. package/lib/keys/matrices.js +19 -0
  43. package/lib/keys/matrices.js.map +1 -0
  44. package/lib/keys/misc.js +62 -0
  45. package/lib/keys/misc.js.map +1 -0
  46. package/lib/keys/navigation.js +20 -0
  47. package/lib/keys/navigation.js.map +1 -0
  48. package/lib/keys/operators.js +15 -0
  49. package/lib/keys/operators.js.map +1 -0
  50. package/lib/keys/statistics.js +40 -0
  51. package/lib/keys/statistics.js.map +1 -0
  52. package/lib/keys/sub-sup.js +19 -0
  53. package/lib/keys/sub-sup.js.map +1 -0
  54. package/lib/keys/trigonometry.js +45 -0
  55. package/lib/keys/trigonometry.js.map +1 -0
  56. package/lib/keys/utils.js +87 -0
  57. package/lib/keys/utils.js.map +1 -0
  58. package/lib/keys/vars.js +24 -0
  59. package/lib/keys/vars.js.map +1 -0
  60. package/lib/latex-bridge.js +195 -0
  61. package/lib/latex-bridge.js.map +1 -0
  62. package/lib/math-input.js +143 -0
  63. package/lib/math-input.js.map +1 -0
  64. package/lib/mathlive-instance.js +319 -0
  65. package/lib/mathlive-instance.js.map +1 -0
  66. package/lib/mf/common-styles.js +111 -0
  67. package/lib/mf/common-styles.js.map +1 -0
  68. package/lib/mf/index.js +72 -0
  69. package/lib/mf/index.js.map +1 -0
  70. package/lib/mf/input.js +266 -0
  71. package/lib/mf/input.js.map +1 -0
  72. package/lib/mf/static.js +396 -0
  73. package/lib/mf/static.js.map +1 -0
  74. package/package.json +31 -0
  75. package/src/__tests__/index.test.jsx +109 -0
  76. package/src/__tests__/latex-bridge.test.js +151 -0
  77. package/src/__tests__/mathlive-instance.test.js +130 -0
  78. package/src/horizontal-keypad.jsx +73 -0
  79. package/src/index.jsx +63 -0
  80. package/src/keypad/index.jsx +335 -0
  81. package/src/keypad/keys-layout.js +16 -0
  82. package/src/keys/basic-operators.js +32 -0
  83. package/src/keys/chars.js +5 -0
  84. package/src/keys/comparison.js +28 -0
  85. package/src/keys/constants.js +35 -0
  86. package/src/keys/digits.js +40 -0
  87. package/src/keys/edit.js +3 -0
  88. package/src/keys/exponent.js +28 -0
  89. package/src/keys/fractions.js +26 -0
  90. package/src/keys/geometry.js +144 -0
  91. package/src/keys/grades.js +367 -0
  92. package/src/keys/index.js +20 -0
  93. package/src/keys/log.js +22 -0
  94. package/src/keys/logic.js +15 -0
  95. package/src/keys/matrices.js +15 -0
  96. package/src/keys/misc.js +65 -0
  97. package/src/keys/navigation.js +8 -0
  98. package/src/keys/operators.js +10 -0
  99. package/src/keys/statistics.js +38 -0
  100. package/src/keys/sub-sup.js +15 -0
  101. package/src/keys/trigonometry.js +15 -0
  102. package/src/keys/utils.js +66 -0
  103. package/src/keys/vars.js +19 -0
  104. package/src/latex-bridge.js +190 -0
  105. package/src/math-input.jsx +115 -0
  106. package/src/mathlive-instance.js +286 -0
  107. package/src/mf/common-styles.js +108 -0
  108. package/src/mf/index.js +26 -0
  109. package/src/mf/input.jsx +223 -0
  110. package/src/mf/static.jsx +358 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sub-sup.js","names":["_utils","require","set","mkSet","superscript","exports","name","latex","command","subscript"],"sources":["../../src/keys/sub-sup.js"],"sourcesContent":["import { mkSet } from './utils';\n\nconst set = mkSet('sub-sup');\n\nexport const superscript = set({\n name: 'Superscript',\n latex: 'x^{}',\n command: '^',\n});\n\nexport const subscript = set({\n name: 'Subscript',\n latex: 'x_{}',\n command: '_',\n});\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAMC,GAAG,GAAG,IAAAC,YAAK,EAAC,SAAS,CAAC;AAErB,IAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAGF,GAAG,CAAC;EAC7BI,IAAI,EAAE,aAAa;EACnBC,KAAK,EAAE,MAAM;EACbC,OAAO,EAAE;AACX,CAAC,CAAC;AAEK,IAAMC,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGP,GAAG,CAAC;EAC3BI,IAAI,EAAE,WAAW;EACjBC,KAAK,EAAE,MAAM;EACbC,OAAO,EAAE;AACX,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.tan = exports.sin = exports.sec = exports.csc = exports.cot = exports.cos = void 0;
7
+ var _utils = require("./utils");
8
+ var set = (0, _utils.mkSet)('trigonometry');
9
+ var sin = exports.sin = set({
10
+ name: 'sine',
11
+ label: 'sin',
12
+ command: '\\sin',
13
+ latex: '\\sin'
14
+ });
15
+ var cos = exports.cos = set({
16
+ name: 'cosine',
17
+ label: 'cos',
18
+ command: '\\cos',
19
+ latex: '\\cos'
20
+ });
21
+ var tan = exports.tan = set({
22
+ name: 'tanget',
23
+ label: 'tan',
24
+ command: '\\tan',
25
+ latex: '\\tan'
26
+ });
27
+ var sec = exports.sec = set({
28
+ name: 'secant',
29
+ label: 'sec',
30
+ command: '\\sec',
31
+ latex: '\\sec'
32
+ });
33
+ var csc = exports.csc = set({
34
+ name: 'cosecant',
35
+ label: 'csc',
36
+ command: '\\csc',
37
+ latex: '\\csc'
38
+ });
39
+ var cot = exports.cot = set({
40
+ name: 'cotangent',
41
+ label: 'cot',
42
+ command: '\\cot',
43
+ latex: '\\cot'
44
+ });
45
+ //# sourceMappingURL=trigonometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigonometry.js","names":["_utils","require","set","mkSet","sin","exports","name","label","command","latex","cos","tan","sec","csc","cot"],"sources":["../../src/keys/trigonometry.js"],"sourcesContent":["import { mkSet } from './utils';\n\nconst set = mkSet('trigonometry');\n\nexport const sin = set({ name: 'sine', label: 'sin', command: '\\\\sin', latex: '\\\\sin' });\n\nexport const cos = set({ name: 'cosine', label: 'cos', command: '\\\\cos', latex: '\\\\cos' });\n\nexport const tan = set({ name: 'tanget', label: 'tan', command: '\\\\tan', latex: '\\\\tan' });\n\nexport const sec = set({ name: 'secant', label: 'sec', command: '\\\\sec', latex: '\\\\sec' });\n\nexport const csc = set({ name: 'cosecant', label: 'csc', command: '\\\\csc', latex: '\\\\csc' });\n\nexport const cot = set({ name: 'cotangent', label: 'cot', command: '\\\\cot', latex: '\\\\cot' });\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAMC,GAAG,GAAG,IAAAC,YAAK,EAAC,cAAc,CAAC;AAE1B,IAAMC,GAAG,GAAAC,OAAA,CAAAD,GAAA,GAAGF,GAAG,CAAC;EAAEI,IAAI,EAAE,MAAM;EAAEC,KAAK,EAAE,KAAK;EAAEC,OAAO,EAAE,OAAO;EAAEC,KAAK,EAAE;AAAQ,CAAC,CAAC;AAEjF,IAAMC,GAAG,GAAAL,OAAA,CAAAK,GAAA,GAAGR,GAAG,CAAC;EAAEI,IAAI,EAAE,QAAQ;EAAEC,KAAK,EAAE,KAAK;EAAEC,OAAO,EAAE,OAAO;EAAEC,KAAK,EAAE;AAAQ,CAAC,CAAC;AAEnF,IAAME,GAAG,GAAAN,OAAA,CAAAM,GAAA,GAAGT,GAAG,CAAC;EAAEI,IAAI,EAAE,QAAQ;EAAEC,KAAK,EAAE,KAAK;EAAEC,OAAO,EAAE,OAAO;EAAEC,KAAK,EAAE;AAAQ,CAAC,CAAC;AAEnF,IAAMG,GAAG,GAAAP,OAAA,CAAAO,GAAA,GAAGV,GAAG,CAAC;EAAEI,IAAI,EAAE,QAAQ;EAAEC,KAAK,EAAE,KAAK;EAAEC,OAAO,EAAE,OAAO;EAAEC,KAAK,EAAE;AAAQ,CAAC,CAAC;AAEnF,IAAMI,GAAG,GAAAR,OAAA,CAAAQ,GAAA,GAAGX,GAAG,CAAC;EAAEI,IAAI,EAAE,UAAU;EAAEC,KAAK,EAAE,KAAK;EAAEC,OAAO,EAAE,OAAO;EAAEC,KAAK,EAAE;AAAQ,CAAC,CAAC;AAErF,IAAMK,GAAG,GAAAT,OAAA,CAAAS,GAAA,GAAGZ,GAAG,CAAC;EAAEI,IAAI,EAAE,WAAW;EAAEC,KAAK,EAAE,KAAK;EAAEC,OAAO,EAAE,OAAO;EAAEC,KAAK,EAAE;AAAQ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.transformToKeySetStructure = exports.toKey = exports.toArray = exports.mkSet = exports.extendKeySet = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _lodashEs = require("lodash-es");
11
+ 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; }
12
+ 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; }
13
+ var mkSet = exports.mkSet = function mkSet(category) {
14
+ return function (o) {
15
+ return _objectSpread(_objectSpread({}, o), {}, {
16
+ category: category
17
+ });
18
+ };
19
+ };
20
+ var toArray = exports.toArray = function toArray(o) {
21
+ return Object.keys(o).map(function (k) {
22
+ return o[k];
23
+ });
24
+ };
25
+ var toKey = exports.toKey = function toKey(category) {
26
+ return function (v) {
27
+ if (typeof v === 'string') {
28
+ return {
29
+ name: v,
30
+ label: v,
31
+ category: category,
32
+ write: v
33
+ };
34
+ } else {
35
+ return _objectSpread(_objectSpread({}, v), {}, {
36
+ category: category
37
+ });
38
+ }
39
+ };
40
+ };
41
+ var transformToKeySetStructure = exports.transformToKeySetStructure = function transformToKeySetStructure() {
42
+ var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
43
+ var structure = [];
44
+ (0, _lodashEs.times)(5, function () {
45
+ return structure.push([]);
46
+ });
47
+ var ln = data.length;
48
+ var i = 0;
49
+ var j = 0;
50
+ while (j < ln) {
51
+ structure[i++].push(data[j++]);
52
+ if (i === 5) {
53
+ i = 0;
54
+ }
55
+ }
56
+ return structure;
57
+ };
58
+ var latexAndNameDontExist = function latexAndNameDontExist(base) {
59
+ return function (k) {
60
+ var flattened = (0, _lodashEs.flatten)(base);
61
+ var latexExists = flattened.some(function (b) {
62
+ return b.latex === k.latex;
63
+ });
64
+ var nameExists = flattened.some(function (b) {
65
+ return b.name === k.name;
66
+ });
67
+ return !latexExists && !nameExists;
68
+ };
69
+ };
70
+ var extendKeySet = exports.extendKeySet = function extendKeySet() {
71
+ var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
72
+ var keySetData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
73
+ keySetData = keySetData.filter(latexAndNameDontExist(base));
74
+ var _final = [];
75
+ (0, _lodashEs.times)(5 - base.length, function () {
76
+ return base.push([]);
77
+ });
78
+ (0, _lodashEs.times)(5, function () {
79
+ return _final.push([]);
80
+ });
81
+ var extra = transformToKeySetStructure(keySetData);
82
+ for (var i = 0; i < 5; i++) {
83
+ _final[i] = [].concat((0, _toConsumableArray2["default"])(base[i]), (0, _toConsumableArray2["default"])(extra[i]));
84
+ }
85
+ return _final;
86
+ };
87
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["_lodashEs","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","mkSet","exports","category","toArray","map","k","toKey","v","name","label","write","transformToKeySetStructure","data","undefined","structure","times","ln","i","j","latexAndNameDontExist","base","flattened","flatten","latexExists","some","b","latex","nameExists","extendKeySet","keySetData","final","extra","concat","_toConsumableArray2"],"sources":["../../src/keys/utils.js"],"sourcesContent":["import { flatten, times } from 'lodash-es';\n\nexport const mkSet = (category) => (o) => ({ ...o, category });\n\nexport const toArray = (o) => Object.keys(o).map((k) => o[k]);\n\nexport const toKey = (category) => (v) => {\n if (typeof v === 'string') {\n return {\n name: v,\n label: v,\n category,\n write: v,\n };\n } else {\n return {\n ...v,\n category,\n };\n }\n};\n\nexport const transformToKeySetStructure = (data = []) => {\n const structure = [];\n\n times(5, () => structure.push([]));\n\n let ln = data.length;\n let i = 0;\n let j = 0;\n\n while (j < ln) {\n structure[i++].push(data[j++]);\n\n if (i === 5) {\n i = 0;\n }\n }\n\n return structure;\n};\n\nconst latexAndNameDontExist = (base) => (k) => {\n const flattened = flatten(base);\n const latexExists = flattened.some((b) => b.latex === k.latex);\n const nameExists = flattened.some((b) => b.name === k.name);\n\n return !latexExists && !nameExists;\n};\n\nexport const extendKeySet = (base = [], keySetData = []) => {\n keySetData = keySetData.filter(latexAndNameDontExist(base));\n\n const final = [];\n\n times(5 - base.length, () => base.push([]));\n times(5, () => final.push([]));\n\n const extra = transformToKeySetStructure(keySetData);\n\n for (let i = 0; i < 5; i++) {\n final[i] = [...base[i], ...extra[i]];\n }\n\n return final;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.y = exports.x = exports.theta = void 0;
7
+ var _utils = require("./utils");
8
+ var set = (0, _utils.mkSet)('vars');
9
+ var x = exports.x = set({
10
+ name: 'X',
11
+ latex: 'x',
12
+ write: 'x'
13
+ });
14
+ var y = exports.y = set({
15
+ name: 'Y',
16
+ latex: 'y',
17
+ write: 'y'
18
+ });
19
+ var theta = exports.theta = set({
20
+ name: 'Theta',
21
+ latex: '\\theta',
22
+ write: '\\theta'
23
+ });
24
+ //# sourceMappingURL=vars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vars.js","names":["_utils","require","set","mkSet","x","exports","name","latex","write","y","theta"],"sources":["../../src/keys/vars.js"],"sourcesContent":["import { mkSet } from './utils';\n\nconst set = mkSet('vars');\n\nexport const x = set({\n name: 'X',\n latex: 'x',\n write: 'x',\n});\nexport const y = set({\n name: 'Y',\n latex: 'y',\n write: 'y',\n});\nexport const theta = set({\n name: 'Theta',\n latex: '\\\\theta',\n write: '\\\\theta',\n});\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAMC,GAAG,GAAG,IAAAC,YAAK,EAAC,MAAM,CAAC;AAElB,IAAMC,CAAC,GAAAC,OAAA,CAAAD,CAAA,GAAGF,GAAG,CAAC;EACnBI,IAAI,EAAE,GAAG;EACTC,KAAK,EAAE,GAAG;EACVC,KAAK,EAAE;AACT,CAAC,CAAC;AACK,IAAMC,CAAC,GAAAJ,OAAA,CAAAI,CAAA,GAAGP,GAAG,CAAC;EACnBI,IAAI,EAAE,GAAG;EACTC,KAAK,EAAE,GAAG;EACVC,KAAK,EAAE;AACT,CAAC,CAAC;AACK,IAAME,KAAK,GAAAL,OAAA,CAAAK,KAAA,GAAGR,GAAG,CAAC;EACvBI,IAAI,EAAE,OAAO;EACbC,KAAK,EAAE,SAAS;EAChBC,KAAK,EAAE;AACT,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.toMathLive = exports.keyToAction = exports.fromMathLive = exports.fieldIds = exports.NEWLINE_EMBED = exports.KEYSTROKES = exports.DEFAULT_FIELD_ID = exports.COMMANDS_WITH_ARGS = void 0;
7
+ /**
8
+ * LaTeX translation layer between the MathQuill-era content model and MathLive.
9
+ *
10
+ * Two independent concerns live here:
11
+ *
12
+ * 1. Newlines. MathQuill had no line break, so pie-lib registered a custom
13
+ * `newLine` embed that serialises to `\embed{newLine}[]`. MathLive has no
14
+ * embed system but supports real multiline environments, so we translate
15
+ * `\embed{newLine}[]` <-> `\\` inside `\displaylines{}`.
16
+ *
17
+ * Authored content keeps its `\embed{newLine}[]` on-disk form (that is what
18
+ * @pie-lib/math-rendering already normalises for MathJax), so each renderer
19
+ * normalises at its own boundary and stored items stay compatible.
20
+ *
21
+ * 2. Keypad key -> MathLive action. MathQuill keys carry `write`/`command`/
22
+ * `keystroke` built for `mf.write()` / `mf.cmd()` / `mf.keystroke()`.
23
+ * MathLive has `insert()` and `executeCommand()` instead.
24
+ */
25
+
26
+ var NEWLINE_EMBED = exports.NEWLINE_EMBED = '\\embed{newLine}[]';
27
+ var NEWLINE_EMBED_REGEX = /\\embed\{newLine\}\[\]/g;
28
+ var DISPLAYLINES_REGEX = /^\\displaylines\{([\s\S]*)\}$/;
29
+
30
+ /**
31
+ * MathQuill's editable sub-field syntax, e.g. `\MathQuillMathField[r1]{}`.
32
+ * These are the answer blocks in templated math items; MathLive expresses the
33
+ * same idea as `\placeholder[id]{}` and reads them back via the prompts API.
34
+ */
35
+ var MQ_FIELD_REGEX = /\\MathQuillMathField\[([^\]]*)\]\{([^{}]*)\}/g;
36
+ var PLACEHOLDER_REGEX = /\\placeholder\[([^\]]*)\]\{([^{}]*)\}/g;
37
+
38
+ /** Default id used when stored latex has an unnamed field. */
39
+ var DEFAULT_FIELD_ID = exports.DEFAULT_FIELD_ID = 'r1';
40
+
41
+ /**
42
+ * Ids of the answer blocks in a piece of stored latex, in document order.
43
+ *
44
+ * @param {string} latex
45
+ * @returns {string[]}
46
+ */
47
+ var fieldIds = exports.fieldIds = function fieldIds(latex) {
48
+ if (typeof latex !== 'string') {
49
+ return [];
50
+ }
51
+ var out = [];
52
+ var match;
53
+ MQ_FIELD_REGEX.lastIndex = 0;
54
+ while ((match = MQ_FIELD_REGEX.exec(latex)) !== null) {
55
+ out.push(match[1] || DEFAULT_FIELD_ID);
56
+ }
57
+ return out;
58
+ };
59
+
60
+ /**
61
+ * Convert stored latex (which may contain `\embed{newLine}[]`) into latex that
62
+ * MathLive can parse and render as multiple lines.
63
+ *
64
+ * @param {string} latex
65
+ * @returns {string}
66
+ */
67
+ var toMathLive = exports.toMathLive = function toMathLive(latex) {
68
+ if (typeof latex !== 'string' || !latex) {
69
+ return latex || '';
70
+ }
71
+
72
+ // Answer blocks: \MathQuillMathField[id]{x} -> \placeholder[id]{x}
73
+ var out = latex.replace(MQ_FIELD_REGEX, function (_m, id, content) {
74
+ return "\\placeholder[".concat(id || DEFAULT_FIELD_ID, "]{").concat(content, "}");
75
+ });
76
+
77
+ // Newlines: \embed{newLine}[] -> a multiline environment
78
+ if (out.indexOf(NEWLINE_EMBED) !== -1) {
79
+ out = "\\displaylines{".concat(out.split(NEWLINE_EMBED_REGEX).join(' \\\\ '), "}");
80
+ }
81
+ return out;
82
+ };
83
+
84
+ /**
85
+ * Convert latex out of MathLive back into the stored form, so items authored
86
+ * with the MathLive editor remain readable by @pie-lib/math-rendering and by
87
+ * the existing MathQuill implementation.
88
+ *
89
+ * @param {string} latex
90
+ * @returns {string}
91
+ */
92
+ var fromMathLive = exports.fromMathLive = function fromMathLive(latex) {
93
+ if (typeof latex !== 'string' || !latex) {
94
+ return latex || '';
95
+ }
96
+ var match = latex.trim().match(DISPLAYLINES_REGEX);
97
+ var out = match ? match[1] : latex;
98
+
99
+ // `\\` is the line separator inside a multiline environment.
100
+ if (out.indexOf('\\\\') !== -1) {
101
+ out = out.split(/\s*\\\\\s*/).map(function (s) {
102
+ return s.trim();
103
+ }).join(NEWLINE_EMBED);
104
+ }
105
+
106
+ // Answer blocks: \placeholder[id]{x} -> \MathQuillMathField[id]{x}
107
+ out = out.replace(PLACEHOLDER_REGEX, function (_m, id, content) {
108
+ return "\\MathQuillMathField[".concat(id || DEFAULT_FIELD_ID, "]{").concat(content, "}");
109
+ });
110
+ return out;
111
+ };
112
+
113
+ /**
114
+ * MathQuill `cmd()` semantics: commands that take arguments should land the
115
+ * cursor inside the first argument. MathLive expresses that with `#?`
116
+ * placeholders in the inserted latex.
117
+ */
118
+ var COMMANDS_WITH_ARGS = exports.COMMANDS_WITH_ARGS = {
119
+ '\\frac': '\\frac{#?}{#?}',
120
+ '/': '\\frac{#?}{#?}',
121
+ '\\sqrt': '\\sqrt{#?}',
122
+ '\\nthroot': '\\sqrt[#?]{#?}',
123
+ '\\overline': '\\overline{#?}',
124
+ '\\overrightarrow': '\\overrightarrow{#?}',
125
+ '\\overleftrightarrow': '\\overleftrightarrow{#?}',
126
+ '\\overarc': '\\overarc{#?}',
127
+ '\\longdiv': '\\longdiv{#?}',
128
+ '^': '^{#?}',
129
+ _: '_{#?}',
130
+ '(': '\\left(#?\\right)',
131
+ '[': '\\left[#?\\right]',
132
+ '|': '\\left|#?\\right|'
133
+ };
134
+
135
+ /**
136
+ * MathQuill keystroke names -> MathLive command selectors.
137
+ */
138
+ var KEYSTROKES = exports.KEYSTROKES = {
139
+ Left: 'moveToPreviousChar',
140
+ Right: 'moveToNextChar',
141
+ Backspace: 'deleteBackward',
142
+ Delete: 'deleteForward',
143
+ Up: 'moveUp',
144
+ Down: 'moveDown'
145
+ };
146
+
147
+ /**
148
+ * Translate a keypad key definition into a MathLive action.
149
+ *
150
+ * Mirrors the precedence in @pie-lib/math-input's MathInput.keypadPress:
151
+ * latex (unless a command is present) -> write -> command -> keystroke.
152
+ *
153
+ * @param {object} key
154
+ * @returns {{type: 'insert'|'command', value: string}|undefined}
155
+ */
156
+ var keyToAction = exports.keyToAction = function keyToAction(key) {
157
+ if (!key) {
158
+ return undefined;
159
+ }
160
+ if (key.latex && !key.command) {
161
+ return {
162
+ type: 'insert',
163
+ value: key.latex
164
+ };
165
+ }
166
+ if (key.write) {
167
+ return {
168
+ type: 'insert',
169
+ value: key.write
170
+ };
171
+ }
172
+ if (key.command) {
173
+ // Some keys carry an array of commands (e.g. Measured Angle is
174
+ // ['m', '\\angle'], log-base-n is ['\\log', '_']). MathQuill's `cmd()`
175
+ // applied them in sequence; MathLive inserts one latex string, so expand
176
+ // each part and concatenate.
177
+ var parts = Array.isArray(key.command) ? key.command : [key.command];
178
+ var value = parts.map(function (c) {
179
+ return COMMANDS_WITH_ARGS[c] || c;
180
+ }).join('');
181
+ return {
182
+ type: 'insert',
183
+ value: value
184
+ };
185
+ }
186
+ if (key.keystroke) {
187
+ var selector = KEYSTROKES[key.keystroke];
188
+ return selector ? {
189
+ type: 'command',
190
+ value: selector
191
+ } : undefined;
192
+ }
193
+ return undefined;
194
+ };
195
+ //# sourceMappingURL=latex-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latex-bridge.js","names":["NEWLINE_EMBED","exports","NEWLINE_EMBED_REGEX","DISPLAYLINES_REGEX","MQ_FIELD_REGEX","PLACEHOLDER_REGEX","DEFAULT_FIELD_ID","fieldIds","latex","out","match","lastIndex","exec","push","toMathLive","replace","_m","id","content","concat","indexOf","split","join","fromMathLive","trim","map","s","COMMANDS_WITH_ARGS","_","KEYSTROKES","Left","Right","Backspace","Delete","Up","Down","keyToAction","key","undefined","command","type","value","write","parts","Array","isArray","c","keystroke","selector"],"sources":["../src/latex-bridge.js"],"sourcesContent":["/**\n * LaTeX translation layer between the MathQuill-era content model and MathLive.\n *\n * Two independent concerns live here:\n *\n * 1. Newlines. MathQuill had no line break, so pie-lib registered a custom\n * `newLine` embed that serialises to `\\embed{newLine}[]`. MathLive has no\n * embed system but supports real multiline environments, so we translate\n * `\\embed{newLine}[]` <-> `\\\\` inside `\\displaylines{}`.\n *\n * Authored content keeps its `\\embed{newLine}[]` on-disk form (that is what\n * @pie-lib/math-rendering already normalises for MathJax), so each renderer\n * normalises at its own boundary and stored items stay compatible.\n *\n * 2. Keypad key -> MathLive action. MathQuill keys carry `write`/`command`/\n * `keystroke` built for `mf.write()` / `mf.cmd()` / `mf.keystroke()`.\n * MathLive has `insert()` and `executeCommand()` instead.\n */\n\nexport const NEWLINE_EMBED = '\\\\embed{newLine}[]';\nconst NEWLINE_EMBED_REGEX = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst DISPLAYLINES_REGEX = /^\\\\displaylines\\{([\\s\\S]*)\\}$/;\n\n/**\n * MathQuill's editable sub-field syntax, e.g. `\\MathQuillMathField[r1]{}`.\n * These are the answer blocks in templated math items; MathLive expresses the\n * same idea as `\\placeholder[id]{}` and reads them back via the prompts API.\n */\nconst MQ_FIELD_REGEX = /\\\\MathQuillMathField\\[([^\\]]*)\\]\\{([^{}]*)\\}/g;\nconst PLACEHOLDER_REGEX = /\\\\placeholder\\[([^\\]]*)\\]\\{([^{}]*)\\}/g;\n\n/** Default id used when stored latex has an unnamed field. */\nexport const DEFAULT_FIELD_ID = 'r1';\n\n/**\n * Ids of the answer blocks in a piece of stored latex, in document order.\n *\n * @param {string} latex\n * @returns {string[]}\n */\nexport const fieldIds = (latex) => {\n if (typeof latex !== 'string') {\n return [];\n }\n\n const out = [];\n let match;\n\n MQ_FIELD_REGEX.lastIndex = 0;\n\n while ((match = MQ_FIELD_REGEX.exec(latex)) !== null) {\n out.push(match[1] || DEFAULT_FIELD_ID);\n }\n\n return out;\n};\n\n/**\n * Convert stored latex (which may contain `\\embed{newLine}[]`) into latex that\n * MathLive can parse and render as multiple lines.\n *\n * @param {string} latex\n * @returns {string}\n */\nexport const toMathLive = (latex) => {\n if (typeof latex !== 'string' || !latex) {\n return latex || '';\n }\n\n // Answer blocks: \\MathQuillMathField[id]{x} -> \\placeholder[id]{x}\n let out = latex.replace(MQ_FIELD_REGEX, (_m, id, content) => `\\\\placeholder[${id || DEFAULT_FIELD_ID}]{${content}}`);\n\n // Newlines: \\embed{newLine}[] -> a multiline environment\n if (out.indexOf(NEWLINE_EMBED) !== -1) {\n out = `\\\\displaylines{${out.split(NEWLINE_EMBED_REGEX).join(' \\\\\\\\ ')}}`;\n }\n\n return out;\n};\n\n/**\n * Convert latex out of MathLive back into the stored form, so items authored\n * with the MathLive editor remain readable by @pie-lib/math-rendering and by\n * the existing MathQuill implementation.\n *\n * @param {string} latex\n * @returns {string}\n */\nexport const fromMathLive = (latex) => {\n if (typeof latex !== 'string' || !latex) {\n return latex || '';\n }\n\n const match = latex.trim().match(DISPLAYLINES_REGEX);\n let out = match ? match[1] : latex;\n\n // `\\\\` is the line separator inside a multiline environment.\n if (out.indexOf('\\\\\\\\') !== -1) {\n out = out\n .split(/\\s*\\\\\\\\\\s*/)\n .map((s) => s.trim())\n .join(NEWLINE_EMBED);\n }\n\n // Answer blocks: \\placeholder[id]{x} -> \\MathQuillMathField[id]{x}\n out = out.replace(\n PLACEHOLDER_REGEX,\n (_m, id, content) => `\\\\MathQuillMathField[${id || DEFAULT_FIELD_ID}]{${content}}`,\n );\n\n return out;\n};\n\n/**\n * MathQuill `cmd()` semantics: commands that take arguments should land the\n * cursor inside the first argument. MathLive expresses that with `#?`\n * placeholders in the inserted latex.\n */\nconst COMMANDS_WITH_ARGS = {\n '\\\\frac': '\\\\frac{#?}{#?}',\n '/': '\\\\frac{#?}{#?}',\n '\\\\sqrt': '\\\\sqrt{#?}',\n '\\\\nthroot': '\\\\sqrt[#?]{#?}',\n '\\\\overline': '\\\\overline{#?}',\n '\\\\overrightarrow': '\\\\overrightarrow{#?}',\n '\\\\overleftrightarrow': '\\\\overleftrightarrow{#?}',\n '\\\\overarc': '\\\\overarc{#?}',\n '\\\\longdiv': '\\\\longdiv{#?}',\n '^': '^{#?}',\n _: '_{#?}',\n '(': '\\\\left(#?\\\\right)',\n '[': '\\\\left[#?\\\\right]',\n '|': '\\\\left|#?\\\\right|',\n};\n\n/**\n * MathQuill keystroke names -> MathLive command selectors.\n */\nconst KEYSTROKES = {\n Left: 'moveToPreviousChar',\n Right: 'moveToNextChar',\n Backspace: 'deleteBackward',\n Delete: 'deleteForward',\n Up: 'moveUp',\n Down: 'moveDown',\n};\n\n/**\n * Translate a keypad key definition into a MathLive action.\n *\n * Mirrors the precedence in @pie-lib/math-input's MathInput.keypadPress:\n * latex (unless a command is present) -> write -> command -> keystroke.\n *\n * @param {object} key\n * @returns {{type: 'insert'|'command', value: string}|undefined}\n */\nexport const keyToAction = (key) => {\n if (!key) {\n return undefined;\n }\n\n if (key.latex && !key.command) {\n return { type: 'insert', value: key.latex };\n }\n\n if (key.write) {\n return { type: 'insert', value: key.write };\n }\n\n if (key.command) {\n // Some keys carry an array of commands (e.g. Measured Angle is\n // ['m', '\\\\angle'], log-base-n is ['\\\\log', '_']). MathQuill's `cmd()`\n // applied them in sequence; MathLive inserts one latex string, so expand\n // each part and concatenate.\n const parts = Array.isArray(key.command) ? key.command : [key.command];\n const value = parts.map((c) => COMMANDS_WITH_ARGS[c] || c).join('');\n\n return { type: 'insert', value };\n }\n\n if (key.keystroke) {\n const selector = KEYSTROKES[key.keystroke];\n\n return selector ? { type: 'command', value: selector } : undefined;\n }\n\n return undefined;\n};\n\nexport { COMMANDS_WITH_ARGS, KEYSTROKES };\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.MathInput = void 0;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _react = _interopRequireDefault(require("react"));
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+ var _styles = require("@mui/material/styles");
18
+ var _debug = _interopRequireDefault(require("debug"));
19
+ var mf = _interopRequireWildcard(require("./mf"));
20
+ var _keys = require("./keys");
21
+ var _keypad = _interopRequireDefault(require("./keypad"));
22
+ var _latexBridge = require("./latex-bridge");
23
+ 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); }
24
+ 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)); }
25
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
26
+ var log = (0, _debug["default"])('pie-lib:math-input-mathlive');
27
+ var grey = 'rgba(0, 0, 0, 0.23)';
28
+ var MathInputContainer = (0, _styles.styled)('div')(function (_ref) {
29
+ var theme = _ref.theme,
30
+ focused = _ref.focused;
31
+ return {
32
+ borderRadius: '4px',
33
+ border: "solid 1px ".concat(focused ? theme.palette.primary.main : grey),
34
+ marginTop: theme.spacing(1),
35
+ marginBottom: theme.spacing(1),
36
+ transition: 'border 200ms linear'
37
+ };
38
+ });
39
+ var PadContainer = (0, _styles.styled)('div')({
40
+ width: '100%',
41
+ display: 'flex'
42
+ });
43
+ var StyledInput = (0, _styles.styled)(mf.Input)(function (_ref2) {
44
+ var theme = _ref2.theme;
45
+ return {
46
+ width: '100%',
47
+ transition: 'border 200ms linear',
48
+ padding: theme.spacing(1),
49
+ '& math-field:focus-within': {
50
+ outline: 'none',
51
+ boxShadow: 'none'
52
+ }
53
+ };
54
+ });
55
+
56
+ /**
57
+ * MathLive-backed equivalent of @pie-lib/math-input's `MathInput`.
58
+ * Same props (`keyset`, `latex`, `onChange`, `displayMode`).
59
+ */
60
+ var MathInput = exports.MathInput = /*#__PURE__*/function (_React$Component) {
61
+ function MathInput(props) {
62
+ var _this;
63
+ (0, _classCallCheck2["default"])(this, MathInput);
64
+ _this = _callSuper(this, MathInput, [props]);
65
+ (0, _defineProperty2["default"])(_this, "keypadPress", function (key) {
66
+ log('[keypadPress] key:', key);
67
+ if (!_this.input) {
68
+ return;
69
+ }
70
+ var action = (0, _latexBridge.keyToAction)(key);
71
+ if (!action) {
72
+ return;
73
+ }
74
+ if (action.type === 'command') {
75
+ _this.input.keystroke(action.value);
76
+ } else {
77
+ _this.input.write(action.value);
78
+ }
79
+ });
80
+ (0, _defineProperty2["default"])(_this, "inputFocus", function () {
81
+ return _this.setState({
82
+ focused: true
83
+ });
84
+ });
85
+ (0, _defineProperty2["default"])(_this, "inputBlur", function () {
86
+ return _this.setState({
87
+ focused: false
88
+ });
89
+ });
90
+ (0, _defineProperty2["default"])(_this, "changeLatex", function (l) {
91
+ var onChange = _this.props.onChange;
92
+ if (onChange && l !== _this.props.latex) {
93
+ log('[changeLatex]', l, _this.props.latex);
94
+ onChange(l);
95
+ }
96
+ });
97
+ _this.state = {
98
+ focused: false
99
+ };
100
+ return _this;
101
+ }
102
+ (0, _inherits2["default"])(MathInput, _React$Component);
103
+ return (0, _createClass2["default"])(MathInput, [{
104
+ key: "render",
105
+ value: function render() {
106
+ var _this2 = this;
107
+ var _this$props = this.props,
108
+ className = _this$props.className,
109
+ keyset = _this$props.keyset,
110
+ latex = _this$props.latex;
111
+ var focused = this.state.focused;
112
+ return /*#__PURE__*/_react["default"].createElement(MathInputContainer, {
113
+ className: className,
114
+ focused: focused
115
+ }, /*#__PURE__*/_react["default"].createElement(StyledInput, {
116
+ innerRef: function innerRef(r) {
117
+ return _this2.input = r;
118
+ },
119
+ onFocus: this.inputFocus,
120
+ onBlur: this.inputBlur,
121
+ latex: latex,
122
+ onChange: this.changeLatex
123
+ }), /*#__PURE__*/_react["default"].createElement(PadContainer, null, /*#__PURE__*/_react["default"].createElement(_keypad["default"], {
124
+ baseSet: _keys.baseSet,
125
+ additionalKeys: keyset,
126
+ onPress: this.keypadPress
127
+ })));
128
+ }
129
+ }]);
130
+ }(_react["default"].Component);
131
+ (0, _defineProperty2["default"])(MathInput, "propTypes", {
132
+ className: _propTypes["default"].string,
133
+ keyset: _propTypes["default"].array,
134
+ displayMode: _propTypes["default"].oneOf(['block', 'block-on-focus']),
135
+ latex: _propTypes["default"].string,
136
+ onChange: _propTypes["default"].func
137
+ });
138
+ (0, _defineProperty2["default"])(MathInput, "defaultProps", {
139
+ keyset: [],
140
+ displayMode: 'block'
141
+ });
142
+ var _default = exports["default"] = MathInput;
143
+ //# sourceMappingURL=math-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math-input.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_debug","mf","_interopRequireWildcard","_keys","_keypad","_latexBridge","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","log","debug","grey","MathInputContainer","styled","_ref","theme","focused","borderRadius","border","concat","palette","primary","main","marginTop","spacing","marginBottom","transition","PadContainer","width","display","StyledInput","Input","_ref2","padding","outline","boxShadow","MathInput","exports","_React$Component","props","_this","_classCallCheck2","_defineProperty2","key","input","action","keyToAction","type","keystroke","value","write","setState","l","onChange","latex","state","_inherits2","_createClass2","render","_this2","_this$props","className","keyset","createElement","innerRef","onFocus","inputFocus","onBlur","inputBlur","changeLatex","baseSet","additionalKeys","onPress","keypadPress","React","Component","PropTypes","string","array","displayMode","oneOf","func","_default"],"sources":["../src/math-input.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport debug from 'debug';\n\nimport * as mf from './mf';\nimport { baseSet } from './keys';\nimport KeyPad from './keypad';\nimport { keyToAction } from './latex-bridge';\n\nconst log = debug('pie-lib:math-input-mathlive');\n\nconst grey = 'rgba(0, 0, 0, 0.23)';\n\nconst MathInputContainer = styled('div')(({ theme, focused }) => ({\n borderRadius: '4px',\n border: `solid 1px ${focused ? theme.palette.primary.main : grey}`,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n transition: 'border 200ms linear',\n}));\n\nconst PadContainer = styled('div')({\n width: '100%',\n display: 'flex',\n});\n\nconst StyledInput = styled(mf.Input)(({ theme }) => ({\n width: '100%',\n transition: 'border 200ms linear',\n padding: theme.spacing(1),\n '& math-field:focus-within': {\n outline: 'none',\n boxShadow: 'none',\n },\n}));\n\n/**\n * MathLive-backed equivalent of @pie-lib/math-input's `MathInput`.\n * Same props (`keyset`, `latex`, `onChange`, `displayMode`).\n */\nexport class MathInput extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n keyset: PropTypes.array,\n displayMode: PropTypes.oneOf(['block', 'block-on-focus']),\n latex: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n static defaultProps = {\n keyset: [],\n displayMode: 'block',\n };\n\n constructor(props) {\n super(props);\n this.state = { focused: false };\n }\n\n keypadPress = (key) => {\n log('[keypadPress] key:', key);\n\n if (!this.input) {\n return;\n }\n\n const action = keyToAction(key);\n\n if (!action) {\n return;\n }\n\n if (action.type === 'command') {\n this.input.keystroke(action.value);\n } else {\n this.input.write(action.value);\n }\n };\n\n inputFocus = () => this.setState({ focused: true });\n\n inputBlur = () => this.setState({ focused: false });\n\n changeLatex = (l) => {\n const { onChange } = this.props;\n\n if (onChange && l !== this.props.latex) {\n log('[changeLatex]', l, this.props.latex);\n onChange(l);\n }\n };\n\n render() {\n const { className, keyset, latex } = this.props;\n const { focused } = this.state;\n\n return (\n <MathInputContainer className={className} focused={focused}>\n <StyledInput\n innerRef={(r) => (this.input = r)}\n onFocus={this.inputFocus}\n onBlur={this.inputBlur}\n latex={latex}\n onChange={this.changeLatex}\n />\n <PadContainer>\n <KeyPad baseSet={baseSet} additionalKeys={keyset} onPress={this.keypadPress} />\n </PadContainer>\n </MathInputContainer>\n );\n }\n}\n\nexport default MathInput;\n"],"mappings":"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","ignoreList":[]}