@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.
- package/README.md +119 -0
- package/lib/__tests__/index.test.js +118 -0
- package/lib/__tests__/index.test.js.map +1 -0
- package/lib/__tests__/latex-bridge.test.js +186 -0
- package/lib/__tests__/latex-bridge.test.js.map +1 -0
- package/lib/__tests__/mathlive-instance.test.js +137 -0
- package/lib/__tests__/mathlive-instance.test.js.map +1 -0
- package/lib/horizontal-keypad.js +101 -0
- package/lib/horizontal-keypad.js.map +1 -0
- package/lib/index.js +143 -0
- package/lib/index.js.map +1 -0
- package/lib/keypad/index.js +365 -0
- package/lib/keypad/index.js.map +1 -0
- package/lib/keypad/keys-layout.js +22 -0
- package/lib/keypad/keys-layout.js.map +1 -0
- package/lib/keys/basic-operators.js +33 -0
- package/lib/keys/basic-operators.js.map +1 -0
- package/lib/keys/chars.js +12 -0
- package/lib/keys/chars.js.map +1 -0
- package/lib/keys/comparison.js +39 -0
- package/lib/keys/comparison.js.map +1 -0
- package/lib/keys/constants.js +37 -0
- package/lib/keys/constants.js.map +1 -0
- package/lib/keys/digits.js +46 -0
- package/lib/keys/digits.js.map +1 -0
- package/lib/keys/edit.js +14 -0
- package/lib/keys/edit.js.map +1 -0
- package/lib/keys/exponent.js +30 -0
- package/lib/keys/exponent.js.map +1 -0
- package/lib/keys/fractions.js +29 -0
- package/lib/keys/fractions.js.map +1 -0
- package/lib/keys/geometry.js +140 -0
- package/lib/keys/geometry.js.map +1 -0
- package/lib/keys/grades.js +259 -0
- package/lib/keys/grades.js.map +1 -0
- package/lib/keys/index.js +35 -0
- package/lib/keys/index.js.map +1 -0
- package/lib/keys/log.js +27 -0
- package/lib/keys/log.js.map +1 -0
- package/lib/keys/logic.js +19 -0
- package/lib/keys/logic.js.map +1 -0
- package/lib/keys/matrices.js +19 -0
- package/lib/keys/matrices.js.map +1 -0
- package/lib/keys/misc.js +62 -0
- package/lib/keys/misc.js.map +1 -0
- package/lib/keys/navigation.js +20 -0
- package/lib/keys/navigation.js.map +1 -0
- package/lib/keys/operators.js +15 -0
- package/lib/keys/operators.js.map +1 -0
- package/lib/keys/statistics.js +40 -0
- package/lib/keys/statistics.js.map +1 -0
- package/lib/keys/sub-sup.js +19 -0
- package/lib/keys/sub-sup.js.map +1 -0
- package/lib/keys/trigonometry.js +45 -0
- package/lib/keys/trigonometry.js.map +1 -0
- package/lib/keys/utils.js +87 -0
- package/lib/keys/utils.js.map +1 -0
- package/lib/keys/vars.js +24 -0
- package/lib/keys/vars.js.map +1 -0
- package/lib/latex-bridge.js +195 -0
- package/lib/latex-bridge.js.map +1 -0
- package/lib/math-input.js +143 -0
- package/lib/math-input.js.map +1 -0
- package/lib/mathlive-instance.js +319 -0
- package/lib/mathlive-instance.js.map +1 -0
- package/lib/mf/common-styles.js +111 -0
- package/lib/mf/common-styles.js.map +1 -0
- package/lib/mf/index.js +72 -0
- package/lib/mf/index.js.map +1 -0
- package/lib/mf/input.js +266 -0
- package/lib/mf/input.js.map +1 -0
- package/lib/mf/static.js +396 -0
- package/lib/mf/static.js.map +1 -0
- package/package.json +31 -0
- package/src/__tests__/index.test.jsx +109 -0
- package/src/__tests__/latex-bridge.test.js +151 -0
- package/src/__tests__/mathlive-instance.test.js +130 -0
- package/src/horizontal-keypad.jsx +73 -0
- package/src/index.jsx +63 -0
- package/src/keypad/index.jsx +335 -0
- package/src/keypad/keys-layout.js +16 -0
- package/src/keys/basic-operators.js +32 -0
- package/src/keys/chars.js +5 -0
- package/src/keys/comparison.js +28 -0
- package/src/keys/constants.js +35 -0
- package/src/keys/digits.js +40 -0
- package/src/keys/edit.js +3 -0
- package/src/keys/exponent.js +28 -0
- package/src/keys/fractions.js +26 -0
- package/src/keys/geometry.js +144 -0
- package/src/keys/grades.js +367 -0
- package/src/keys/index.js +20 -0
- package/src/keys/log.js +22 -0
- package/src/keys/logic.js +15 -0
- package/src/keys/matrices.js +15 -0
- package/src/keys/misc.js +65 -0
- package/src/keys/navigation.js +8 -0
- package/src/keys/operators.js +10 -0
- package/src/keys/statistics.js +38 -0
- package/src/keys/sub-sup.js +15 -0
- package/src/keys/trigonometry.js +15 -0
- package/src/keys/utils.js +66 -0
- package/src/keys/vars.js +19 -0
- package/src/latex-bridge.js +190 -0
- package/src/math-input.jsx +115 -0
- package/src/mathlive-instance.js +286 -0
- package/src/mf/common-styles.js +108 -0
- package/src/mf/index.js +26 -0
- package/src/mf/input.jsx +223 -0
- 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":[]}
|
package/lib/keys/vars.js
ADDED
|
@@ -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":[]}
|