@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.
- package/README.md +84 -109
- package/dist/_virtual/_rolldown/runtime.js +11 -0
- package/dist/horizontal-keypad.d.ts +22 -0
- package/dist/horizontal-keypad.js +54 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +12 -0
- package/dist/keypad/index.d.ts +40 -0
- package/dist/keypad/index.js +245 -0
- package/dist/keypad/keys-layout.d.ts +7 -0
- package/dist/keypad/keys-layout.js +5 -0
- package/dist/keys/basic-operators.d.ts +5 -0
- package/dist/keys/basic-operators.js +30 -0
- package/dist/keys/chars.d.ts +5 -0
- package/dist/keys/comparison.d.ts +4 -0
- package/dist/keys/comparison.js +32 -0
- package/dist/keys/constants.d.ts +4 -0
- package/dist/keys/constants.js +35 -0
- package/dist/keys/digits.d.ts +15 -0
- package/dist/keys/digits.js +34 -0
- package/dist/keys/edit.d.ts +6 -0
- package/dist/keys/edit.js +9 -0
- package/dist/keys/exponent.d.ts +4 -0
- package/dist/keys/exponent.js +28 -0
- package/dist/keys/fractions.d.ts +3 -0
- package/dist/keys/fractions.js +27 -0
- package/dist/keys/geometry.d.ts +23 -0
- package/dist/keys/geometry.js +127 -0
- package/dist/keys/grades.d.ts +9 -0
- package/dist/keys/grades.js +414 -0
- package/dist/keys/index.d.ts +6 -0
- package/dist/keys/index.js +50 -0
- package/dist/keys/log.d.ts +3 -0
- package/dist/keys/log.js +25 -0
- package/dist/keys/logic.d.ts +2 -0
- package/dist/keys/logic.js +13 -0
- package/dist/keys/matrices.d.ts +2 -0
- package/dist/keys/matrices.js +17 -0
- package/dist/keys/misc.d.ts +10 -0
- package/dist/keys/misc.js +60 -0
- package/dist/keys/navigation.d.ts +2 -0
- package/dist/keys/navigation.js +13 -0
- package/dist/keys/operators.d.ts +1 -0
- package/dist/keys/operators.js +11 -0
- package/dist/keys/statistics.d.ts +5 -0
- package/dist/keys/statistics.js +38 -0
- package/dist/keys/sub-sup.d.ts +2 -0
- package/dist/keys/sub-sup.js +17 -0
- package/dist/keys/trigonometry.d.ts +6 -0
- package/dist/keys/trigonometry.js +43 -0
- package/dist/keys/utils.d.ts +5 -0
- package/dist/keys/utils.js +24 -0
- package/dist/keys/vars.d.ts +3 -0
- package/dist/keys/vars.js +22 -0
- package/dist/latex-bridge.d.ts +197 -0
- package/dist/latex-bridge.js +210 -0
- package/dist/longdiv.d.ts +24 -0
- package/dist/longdiv.js +43 -0
- package/dist/math-input.d.ts +26 -0
- package/dist/math-input.js +74 -0
- package/dist/mathlive-instance.d.ts +221 -0
- package/dist/mathlive-instance.js +159 -0
- package/dist/mf/common-styles.d.ts +594 -0
- package/dist/mf/common-styles.js +80 -0
- package/dist/mf/field-label.d.ts +16 -0
- package/dist/mf/field-label.js +13 -0
- package/dist/mf/index.d.ts +4 -0
- package/dist/mf/index.js +21 -0
- package/dist/mf/input.d.ts +94 -0
- package/dist/mf/input.js +127 -0
- package/dist/mf/static.d.ts +143 -0
- package/dist/mf/static.js +230 -0
- package/dist/selection.d.ts +43 -0
- package/dist/selection.js +39 -0
- package/package.json +32 -18
- package/lib/__tests__/composites.test.js +0 -255
- package/lib/__tests__/drop-in-compat.test.js +0 -133
- package/lib/__tests__/embedded-fonts.test.js +0 -121
- package/lib/__tests__/index.test.js +0 -118
- package/lib/__tests__/input-imperative.test.js +0 -155
- package/lib/__tests__/keypad-label.test.js +0 -231
- package/lib/__tests__/keypad-render.test.js +0 -206
- package/lib/__tests__/latex-bridge.test.js +0 -386
- package/lib/__tests__/mathlive-instance.test.js +0 -419
- package/lib/__tests__/mount-race.test.js +0 -218
- package/lib/__tests__/static-prompts.test.js +0 -405
- package/lib/__tests__/tmp-markup.test.js +0 -26
- package/lib/horizontal-keypad.js +0 -101
- package/lib/horizontal-keypad.js.map +0 -1
- package/lib/index.js +0 -143
- package/lib/index.js.map +0 -1
- package/lib/keypad/index.js +0 -431
- package/lib/keypad/index.js.map +0 -1
- package/lib/keypad/keys-layout.js +0 -22
- package/lib/keypad/keys-layout.js.map +0 -1
- package/lib/keys/basic-operators.js +0 -33
- package/lib/keys/basic-operators.js.map +0 -1
- package/lib/keys/chars.js +0 -12
- package/lib/keys/chars.js.map +0 -1
- package/lib/keys/comparison.js +0 -39
- package/lib/keys/comparison.js.map +0 -1
- package/lib/keys/constants.js +0 -37
- package/lib/keys/constants.js.map +0 -1
- package/lib/keys/digits.js +0 -46
- package/lib/keys/digits.js.map +0 -1
- package/lib/keys/edit.js +0 -14
- package/lib/keys/edit.js.map +0 -1
- package/lib/keys/exponent.js +0 -30
- package/lib/keys/exponent.js.map +0 -1
- package/lib/keys/fractions.js +0 -29
- package/lib/keys/fractions.js.map +0 -1
- package/lib/keys/geometry.js +0 -143
- package/lib/keys/geometry.js.map +0 -1
- package/lib/keys/grades.js +0 -259
- package/lib/keys/grades.js.map +0 -1
- package/lib/keys/index.js +0 -35
- package/lib/keys/index.js.map +0 -1
- package/lib/keys/log.js +0 -27
- package/lib/keys/log.js.map +0 -1
- package/lib/keys/logic.js +0 -19
- package/lib/keys/logic.js.map +0 -1
- package/lib/keys/matrices.js +0 -19
- package/lib/keys/matrices.js.map +0 -1
- package/lib/keys/misc.js +0 -69
- package/lib/keys/misc.js.map +0 -1
- package/lib/keys/navigation.js +0 -20
- package/lib/keys/navigation.js.map +0 -1
- package/lib/keys/operators.js +0 -15
- package/lib/keys/operators.js.map +0 -1
- package/lib/keys/statistics.js +0 -40
- package/lib/keys/statistics.js.map +0 -1
- package/lib/keys/sub-sup.js +0 -19
- package/lib/keys/sub-sup.js.map +0 -1
- package/lib/keys/trigonometry.js +0 -45
- package/lib/keys/trigonometry.js.map +0 -1
- package/lib/keys/utils.js +0 -87
- package/lib/keys/utils.js.map +0 -1
- package/lib/keys/vars.js +0 -24
- package/lib/keys/vars.js.map +0 -1
- package/lib/latex-bridge.js +0 -508
- package/lib/latex-bridge.js.map +0 -1
- package/lib/math-input.js +0 -143
- package/lib/math-input.js.map +0 -1
- package/lib/mathlive-instance.js +0 -585
- package/lib/mathlive-instance.js.map +0 -1
- package/lib/mf/common-styles.js +0 -203
- package/lib/mf/common-styles.js.map +0 -1
- package/lib/mf/index.js +0 -84
- package/lib/mf/index.js.map +0 -1
- package/lib/mf/input.js +0 -364
- package/lib/mf/input.js.map +0 -1
- package/lib/mf/static.js +0 -500
- package/lib/mf/static.js.map +0 -1
- package/src/__tests__/composites.test.jsx +0 -220
- package/src/__tests__/drop-in-compat.test.jsx +0 -112
- package/src/__tests__/index.test.jsx +0 -109
- package/src/__tests__/input-imperative.test.jsx +0 -144
- package/src/__tests__/keypad-label.test.jsx +0 -283
- package/src/__tests__/keypad-render.test.jsx +0 -123
- package/src/__tests__/latex-bridge.test.js +0 -389
- package/src/__tests__/mathlive-instance.test.js +0 -418
- package/src/__tests__/mount-race.test.jsx +0 -142
- package/src/__tests__/static-prompts.test.jsx +0 -364
- package/src/horizontal-keypad.jsx +0 -73
- package/src/index.jsx +0 -63
- package/src/keypad/index.jsx +0 -386
- package/src/keypad/keys-layout.js +0 -16
- package/src/keys/basic-operators.js +0 -32
- package/src/keys/chars.js +0 -5
- package/src/keys/comparison.js +0 -28
- package/src/keys/constants.js +0 -35
- package/src/keys/digits.js +0 -40
- package/src/keys/edit.js +0 -3
- package/src/keys/exponent.js +0 -28
- package/src/keys/fractions.js +0 -26
- package/src/keys/geometry.js +0 -149
- package/src/keys/grades.js +0 -367
- package/src/keys/index.js +0 -20
- package/src/keys/log.js +0 -22
- package/src/keys/logic.js +0 -15
- package/src/keys/matrices.js +0 -15
- package/src/keys/misc.js +0 -71
- package/src/keys/navigation.js +0 -8
- package/src/keys/operators.js +0 -10
- package/src/keys/statistics.js +0 -38
- package/src/keys/sub-sup.js +0 -15
- package/src/keys/trigonometry.js +0 -15
- package/src/keys/utils.js +0 -66
- package/src/keys/vars.js +0 -19
- package/src/latex-bridge.js +0 -524
- package/src/math-input.jsx +0 -115
- package/src/mathlive-instance.js +0 -582
- package/src/mf/common-styles.js +0 -210
- package/src/mf/index.js +0 -30
- package/src/mf/input.jsx +0 -319
- package/src/mf/static.jsx +0 -479
package/lib/index.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
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
|
-
Object.defineProperty(exports, "HorizontalKeypad", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function get() {
|
|
11
|
-
return _horizontalKeypad["default"];
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
Object.defineProperty(exports, "KeyPad", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function get() {
|
|
17
|
-
return _keypad["default"];
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(exports, "MathInput", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
get: function get() {
|
|
23
|
-
return _mathInput["default"];
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
Object.defineProperty(exports, "NEWLINE_EMBED", {
|
|
27
|
-
enumerable: true,
|
|
28
|
-
get: function get() {
|
|
29
|
-
return _latexBridge.NEWLINE_EMBED;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
Object.defineProperty(exports, "PIE_MACROS", {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: function get() {
|
|
35
|
-
return _mathliveInstance.PIE_MACROS;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
exports.addBrackets = void 0;
|
|
39
|
-
Object.defineProperty(exports, "applyStaticMath", {
|
|
40
|
-
enumerable: true,
|
|
41
|
-
get: function get() {
|
|
42
|
-
return _mathliveInstance.applyStaticMath;
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
Object.defineProperty(exports, "configureFonts", {
|
|
46
|
-
enumerable: true,
|
|
47
|
-
get: function get() {
|
|
48
|
-
return _mathliveInstance.configureFonts;
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
Object.defineProperty(exports, "fromMathLive", {
|
|
52
|
-
enumerable: true,
|
|
53
|
-
get: function get() {
|
|
54
|
-
return _latexBridge.fromMathLive;
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
Object.defineProperty(exports, "getMacros", {
|
|
58
|
-
enumerable: true,
|
|
59
|
-
get: function get() {
|
|
60
|
-
return _mathliveInstance.getMacros;
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
Object.defineProperty(exports, "keyToAction", {
|
|
64
|
-
enumerable: true,
|
|
65
|
-
get: function get() {
|
|
66
|
-
return _latexBridge.keyToAction;
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
exports.keys = void 0;
|
|
70
|
-
Object.defineProperty(exports, "keysForGrade", {
|
|
71
|
-
enumerable: true,
|
|
72
|
-
get: function get() {
|
|
73
|
-
return _grades.keysForGrade;
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
Object.defineProperty(exports, "latexToMarkup", {
|
|
77
|
-
enumerable: true,
|
|
78
|
-
get: function get() {
|
|
79
|
-
return _mathliveInstance.latexToMarkup;
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
Object.defineProperty(exports, "loadMathLive", {
|
|
83
|
-
enumerable: true,
|
|
84
|
-
get: function get() {
|
|
85
|
-
return _mathliveInstance.loadMathLive;
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
exports.mq = exports.mf = void 0;
|
|
89
|
-
Object.defineProperty(exports, "registerEmbed", {
|
|
90
|
-
enumerable: true,
|
|
91
|
-
get: function get() {
|
|
92
|
-
return _mathliveInstance.registerEmbed;
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
exports.removeBrackets = void 0;
|
|
96
|
-
Object.defineProperty(exports, "toMathLive", {
|
|
97
|
-
enumerable: true,
|
|
98
|
-
get: function get() {
|
|
99
|
-
return _latexBridge.toMathLive;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
exports.updateSpans = void 0;
|
|
103
|
-
var _grades = require("./keys/grades");
|
|
104
|
-
var keys = _interopRequireWildcard(require("./keys"));
|
|
105
|
-
exports.keys = keys;
|
|
106
|
-
var _mathInput = _interopRequireDefault(require("./math-input"));
|
|
107
|
-
var _horizontalKeypad = _interopRequireDefault(require("./horizontal-keypad"));
|
|
108
|
-
var _keypad = _interopRequireDefault(require("./keypad"));
|
|
109
|
-
var mf = _interopRequireWildcard(require("./mf"));
|
|
110
|
-
exports.mf = mf;
|
|
111
|
-
exports.mq = mf;
|
|
112
|
-
var _mathliveInstance = require("./mathlive-instance");
|
|
113
|
-
var _latexBridge = require("./latex-bridge");
|
|
114
|
-
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); }
|
|
115
|
-
var addLeftBracket = function addLeftBracket(s) {
|
|
116
|
-
return s.indexOf('\\(') === 0 ? s : "\\(".concat(s);
|
|
117
|
-
};
|
|
118
|
-
var addRightBracket = function addRightBracket(s) {
|
|
119
|
-
return s.indexOf('\\)') === s.length - 2 ? s : "".concat(s, "\\)");
|
|
120
|
-
};
|
|
121
|
-
var rmLeftBracket = function rmLeftBracket(s) {
|
|
122
|
-
return s.indexOf('\\(') === 0 ? s.substring(2) : s;
|
|
123
|
-
};
|
|
124
|
-
var rmRightBracket = function rmRightBracket(s) {
|
|
125
|
-
return s.indexOf('\\)') === s.length - 2 ? s.substring(0, s.length - 2) : s;
|
|
126
|
-
};
|
|
127
|
-
var addBrackets = exports.addBrackets = function addBrackets(s) {
|
|
128
|
-
return addRightBracket(addLeftBracket(s));
|
|
129
|
-
};
|
|
130
|
-
var removeBrackets = exports.removeBrackets = function removeBrackets(s) {
|
|
131
|
-
return rmRightBracket(rmLeftBracket(s));
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* `updateSpans` is intentionally a no-op.
|
|
136
|
-
*
|
|
137
|
-
* In @pie-lib/math-input it patched MathQuill's rendered DOM by walking
|
|
138
|
-
* `span[mathquill-command-id]` to resize the parallel glyph and tag primes.
|
|
139
|
-
* MathLive emits none of those attributes and does not need the fixups, but the
|
|
140
|
-
* export is kept so callers do not break.
|
|
141
|
-
*/
|
|
142
|
-
var updateSpans = exports.updateSpans = function updateSpans() {};
|
|
143
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_grades","require","keys","_interopRequireWildcard","exports","_mathInput","_interopRequireDefault","_horizontalKeypad","_keypad","mf","mq","_mathliveInstance","_latexBridge","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","addLeftBracket","s","indexOf","concat","addRightBracket","length","rmLeftBracket","substring","rmRightBracket","addBrackets","removeBrackets","updateSpans"],"sources":["../src/index.jsx"],"sourcesContent":["import { keysForGrade } from './keys/grades';\nimport * as keys from './keys';\n\nimport MathInput from './math-input';\nimport HorizontalKeypad from './horizontal-keypad';\nimport KeyPad from './keypad';\n\nimport * as mf from './mf';\nimport {\n registerEmbed,\n applyStaticMath,\n latexToMarkup,\n loadMathLive,\n configureFonts,\n getMacros,\n PIE_MACROS,\n} from './mathlive-instance';\nimport { toMathLive, fromMathLive, keyToAction, NEWLINE_EMBED } from './latex-bridge';\n\nconst addLeftBracket = (s) => (s.indexOf('\\\\(') === 0 ? s : `\\\\(${s}`);\nconst addRightBracket = (s) => (s.indexOf('\\\\)') === s.length - 2 ? s : `${s}\\\\)`);\nconst rmLeftBracket = (s) => (s.indexOf('\\\\(') === 0 ? s.substring(2) : s);\nconst rmRightBracket = (s) => (s.indexOf('\\\\)') === s.length - 2 ? s.substring(0, s.length - 2) : s);\n\nconst addBrackets = (s) => addRightBracket(addLeftBracket(s));\nconst removeBrackets = (s) => rmRightBracket(rmLeftBracket(s));\n\n/**\n * `updateSpans` is intentionally a no-op.\n *\n * In @pie-lib/math-input it patched MathQuill's rendered DOM by walking\n * `span[mathquill-command-id]` to resize the parallel glyph and tag primes.\n * MathLive emits none of those attributes and does not need the fixups, but the\n * export is kept so callers do not break.\n */\nconst updateSpans = () => {};\n\nexport {\n keysForGrade,\n addBrackets,\n removeBrackets,\n keys,\n MathInput,\n HorizontalKeypad,\n KeyPad,\n updateSpans,\n // `mf` is the MathLive equivalent of math-input's `mq`. Both names are\n // exported so a consumer can switch packages by changing only the import.\n mf,\n mf as mq,\n registerEmbed,\n applyStaticMath,\n // MathLive-specific additions\n latexToMarkup,\n loadMathLive,\n configureFonts,\n getMacros,\n PIE_MACROS,\n toMathLive,\n fromMathLive,\n keyToAction,\n NEWLINE_EMBED,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAC,uBAAA,CAAAF,OAAA;AAA+BG,OAAA,CAAAF,IAAA,GAAAA,IAAA;AAE/B,IAAAG,UAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAD,sBAAA,CAAAL,OAAA;AACA,IAAAO,OAAA,GAAAF,sBAAA,CAAAL,OAAA;AAEA,IAAAQ,EAAA,GAAAN,uBAAA,CAAAF,OAAA;AAA2BG,OAAA,CAAAK,EAAA,GAAAA,EAAA;AAAAL,OAAA,CAAAM,EAAA,GAAAD,EAAA;AAC3B,IAAAE,iBAAA,GAAAV,OAAA;AASA,IAAAW,YAAA,GAAAX,OAAA;AAAsF,SAAAE,wBAAAU,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAZ,uBAAA,YAAAA,wBAAAU,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEtF,IAAMmB,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,CAAC;EAAA,OAAMA,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAGD,CAAC,SAAAE,MAAA,CAASF,CAAC,CAAE;AAAA,CAAC;AACtE,IAAMG,eAAe,GAAG,SAAlBA,eAAeA,CAAIH,CAAC;EAAA,OAAMA,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC,KAAKD,CAAC,CAACI,MAAM,GAAG,CAAC,GAAGJ,CAAC,MAAAE,MAAA,CAAMF,CAAC,QAAK;AAAA,CAAC;AAClF,IAAMK,aAAa,GAAG,SAAhBA,aAAaA,CAAIL,CAAC;EAAA,OAAMA,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAGD,CAAC,CAACM,SAAS,CAAC,CAAC,CAAC,GAAGN,CAAC;AAAA,CAAC;AAC1E,IAAMO,cAAc,GAAG,SAAjBA,cAAcA,CAAIP,CAAC;EAAA,OAAMA,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC,KAAKD,CAAC,CAACI,MAAM,GAAG,CAAC,GAAGJ,CAAC,CAACM,SAAS,CAAC,CAAC,EAAEN,CAAC,CAACI,MAAM,GAAG,CAAC,CAAC,GAAGJ,CAAC;AAAA,CAAC;AAEpG,IAAMQ,WAAW,GAAAtC,OAAA,CAAAsC,WAAA,GAAG,SAAdA,WAAWA,CAAIR,CAAC;EAAA,OAAKG,eAAe,CAACJ,cAAc,CAACC,CAAC,CAAC,CAAC;AAAA;AAC7D,IAAMS,cAAc,GAAAvC,OAAA,CAAAuC,cAAA,GAAG,SAAjBA,cAAcA,CAAIT,CAAC;EAAA,OAAKO,cAAc,CAACF,aAAa,CAACL,CAAC,CAAC,CAAC;AAAA;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMU,WAAW,GAAAxC,OAAA,CAAAwC,WAAA,GAAG,SAAdA,WAAWA,CAAA,EAAS,CAAC,CAAC","ignoreList":[]}
|
package/lib/keypad/index.js
DELETED
|
@@ -1,431 +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.LatexLabel = exports.KeyPad = void 0;
|
|
8
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
15
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
-
var _react = _interopRequireDefault(require("react"));
|
|
19
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
20
|
-
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
21
|
-
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
22
|
-
var _styles = require("@mui/material/styles");
|
|
23
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
24
|
-
var _lodashEs = require("lodash-es");
|
|
25
|
-
var _renderUi = require("@pie-lib/render-ui");
|
|
26
|
-
var _keys = require("../keys");
|
|
27
|
-
var _keysLayout = require("./keys-layout");
|
|
28
|
-
var _commonStyles = require("../mf/common-styles");
|
|
29
|
-
var _mathliveInstance = require("../mathlive-instance");
|
|
30
|
-
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)); }
|
|
31
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
32
|
-
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; }
|
|
33
|
-
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; }
|
|
34
|
-
var log = (0, _debug["default"])('pie-lib:math-input-mathlive:keypad');
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* A LaTeX keypad label.
|
|
38
|
-
*
|
|
39
|
-
* The MathQuill implementation rendered every LaTeX label as its own
|
|
40
|
-
* `MQ.StaticMath` instance. Here each label is static HTML produced once by
|
|
41
|
-
* `convertLatexToMarkup`, so a 40-key keypad no longer creates 40 live math
|
|
42
|
-
* instances.
|
|
43
|
-
*/
|
|
44
|
-
// Labels that the legacy keypad drew slanted. MathQuill styled `\parallel` as
|
|
45
|
-
// italic, which slants the two bars; MathLive draws it upright. A skew is used
|
|
46
|
-
// rather than `font-style: italic` so the slant does not depend on the font
|
|
47
|
-
// having an italic face for this glyph.
|
|
48
|
-
var SLANTED_LABELS = ['\\parallel'];
|
|
49
|
-
var SLANT = 'skewX(-15deg)';
|
|
50
|
-
// MathLive's `∥` has hairline bars next to the radical sign and the other keys, so
|
|
51
|
-
// they are thickened with a text stroke and stretched a little taller.
|
|
52
|
-
var SLANTED_STROKE = '0.03em currentColor';
|
|
53
|
-
var SLANTED_SCALE_Y = 1.25;
|
|
54
|
-
|
|
55
|
-
// The `color.*()` helpers must be called lazily, inside the styled callback.
|
|
56
|
-
// Evaluating them in a plain object literal runs them at module load, which
|
|
57
|
-
// breaks any consumer that mocks a subset of @pie-lib/render-ui.
|
|
58
|
-
var LabelHolder = (0, _styles.styled)('span', {
|
|
59
|
-
shouldForwardProp: function shouldForwardProp(prop) {
|
|
60
|
-
return prop !== 'slanted';
|
|
61
|
-
}
|
|
62
|
-
})(function (_ref) {
|
|
63
|
-
var slanted = _ref.slanted;
|
|
64
|
-
return _objectSpread(_objectSpread({}, slanted && {
|
|
65
|
-
transform: "".concat(SLANT, " scaleY(").concat(SLANTED_SCALE_Y, ")"),
|
|
66
|
-
'& *': {
|
|
67
|
-
WebkitTextStroke: SLANTED_STROKE
|
|
68
|
-
}
|
|
69
|
-
}), {}, {
|
|
70
|
-
pointerEvents: 'none',
|
|
71
|
-
textTransform: 'none',
|
|
72
|
-
color: _renderUi.color.text(),
|
|
73
|
-
// Deliberately inline-block, NOT inline-flex: MathLive's markup relies on
|
|
74
|
-
// normal inline flow. Making its spans flex items collapses their width, and
|
|
75
|
-
// stretchy accents render an <svg width="100%" preserveAspectRatio="none">
|
|
76
|
-
// that then squeezes into a spike instead of spanning the content.
|
|
77
|
-
display: 'inline-block',
|
|
78
|
-
textAlign: 'center',
|
|
79
|
-
lineHeight: 1,
|
|
80
|
-
// Keep a label from sizing its grid column. `overflow: hidden` also collapses
|
|
81
|
-
// the label's min-content contribution, so a wide accent cannot drag the
|
|
82
|
-
// column across the screen. The svg's own positioning is left to
|
|
83
|
-
// mathlive-static.css (injected by the package) - duplicating it here broke
|
|
84
|
-
// the accent's containing block.
|
|
85
|
-
maxWidth: '100%',
|
|
86
|
-
overflow: 'hidden',
|
|
87
|
-
// Answer-block / empty-slot boxes inside a label.
|
|
88
|
-
'& .ML__placeholder': {
|
|
89
|
-
backgroundColor: _renderUi.color.keypadEmptyPlaceholder ? _renderUi.color.keypadEmptyPlaceholder() : undefined
|
|
90
|
-
},
|
|
91
|
-
// The stand-in glyph for an empty argument slot (see EMPTY_SLOT). Muted so it
|
|
92
|
-
// reads as "a slot goes here" rather than as part of the symbol, matching how
|
|
93
|
-
// MathQuill shaded `.mq-empty`.
|
|
94
|
-
'& [data-pie-empty]': {
|
|
95
|
-
opacity: 0.5
|
|
96
|
-
}
|
|
97
|
-
}, _commonStyles.rootIndexStyles);
|
|
98
|
-
});
|
|
99
|
-
var LatexLabel = exports.LatexLabel = /*#__PURE__*/function (_React$Component) {
|
|
100
|
-
function LatexLabel(props) {
|
|
101
|
-
var _this;
|
|
102
|
-
(0, _classCallCheck2["default"])(this, LatexLabel);
|
|
103
|
-
_this = _callSuper(this, LatexLabel, [props]);
|
|
104
|
-
_this.state = {
|
|
105
|
-
markup: (0, _mathliveInstance.latexToMarkup)(props.latex)
|
|
106
|
-
};
|
|
107
|
-
return _this;
|
|
108
|
-
}
|
|
109
|
-
(0, _inherits2["default"])(LatexLabel, _React$Component);
|
|
110
|
-
return (0, _createClass2["default"])(LatexLabel, [{
|
|
111
|
-
key: "componentDidMount",
|
|
112
|
-
value: function () {
|
|
113
|
-
var _componentDidMount = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
114
|
-
var markup;
|
|
115
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
116
|
-
while (1) switch (_context.prev = _context.next) {
|
|
117
|
-
case 0:
|
|
118
|
-
if (!this.state.markup) {
|
|
119
|
-
_context.next = 1;
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
return _context.abrupt("return");
|
|
123
|
-
case 1:
|
|
124
|
-
_context.next = 2;
|
|
125
|
-
return (0, _mathliveInstance.loadMathLive)();
|
|
126
|
-
case 2:
|
|
127
|
-
if (!this.unmounted) {
|
|
128
|
-
_context.next = 3;
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
return _context.abrupt("return");
|
|
132
|
-
case 3:
|
|
133
|
-
markup = (0, _mathliveInstance.latexToMarkup)(this.props.latex);
|
|
134
|
-
if (!markup) {
|
|
135
|
-
_context.next = 4;
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
this.setState({
|
|
139
|
-
markup: markup
|
|
140
|
-
});
|
|
141
|
-
return _context.abrupt("return");
|
|
142
|
-
case 4:
|
|
143
|
-
// Still nothing: the engine is genuinely unavailable (a missing chunk, a
|
|
144
|
-
// blocked request). Keep the raw-latex fallback visible rather than an
|
|
145
|
-
// empty button, and log once so this is diagnosable.
|
|
146
|
-
if (!LatexLabel.warned) {
|
|
147
|
-
LatexLabel.warned = true;
|
|
148
|
-
log('MathLive unavailable - keypad labels are falling back to raw latex');
|
|
149
|
-
}
|
|
150
|
-
case 5:
|
|
151
|
-
case "end":
|
|
152
|
-
return _context.stop();
|
|
153
|
-
}
|
|
154
|
-
}, _callee, this);
|
|
155
|
-
}));
|
|
156
|
-
function componentDidMount() {
|
|
157
|
-
return _componentDidMount.apply(this, arguments);
|
|
158
|
-
}
|
|
159
|
-
return componentDidMount;
|
|
160
|
-
}()
|
|
161
|
-
}, {
|
|
162
|
-
key: "componentDidUpdate",
|
|
163
|
-
value: function componentDidUpdate(prevProps) {
|
|
164
|
-
if (prevProps.latex !== this.props.latex) {
|
|
165
|
-
this.setState({
|
|
166
|
-
markup: (0, _mathliveInstance.latexToMarkup)(this.props.latex)
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}, {
|
|
171
|
-
key: "componentWillUnmount",
|
|
172
|
-
value: function componentWillUnmount() {
|
|
173
|
-
this.unmounted = true;
|
|
174
|
-
}
|
|
175
|
-
}, {
|
|
176
|
-
key: "render",
|
|
177
|
-
value: function render() {
|
|
178
|
-
var markup = this.state.markup;
|
|
179
|
-
|
|
180
|
-
// Fall back to the raw latex so a button is never blank.
|
|
181
|
-
return markup ?
|
|
182
|
-
/*#__PURE__*/
|
|
183
|
-
// eslint-disable-next-line react/no-danger
|
|
184
|
-
_react["default"].createElement(LabelHolder, {
|
|
185
|
-
slanted: SLANTED_LABELS.includes(this.props.latex),
|
|
186
|
-
dangerouslySetInnerHTML: {
|
|
187
|
-
__html: markup
|
|
188
|
-
}
|
|
189
|
-
}) : /*#__PURE__*/_react["default"].createElement(LabelHolder, {
|
|
190
|
-
slanted: SLANTED_LABELS.includes(this.props.latex)
|
|
191
|
-
}, this.props.latex);
|
|
192
|
-
}
|
|
193
|
-
}]);
|
|
194
|
-
}(_react["default"].Component);
|
|
195
|
-
(0, _defineProperty2["default"])(LatexLabel, "propTypes", {
|
|
196
|
-
latex: _propTypes["default"].string.isRequired
|
|
197
|
-
});
|
|
198
|
-
var createCustomLayout = function createCustomLayout(layoutObj) {
|
|
199
|
-
if (layoutObj) {
|
|
200
|
-
return {
|
|
201
|
-
gridTemplateColumns: "repeat(".concat(layoutObj.columns, ", minmax(min-content, 150px))"),
|
|
202
|
-
gridTemplateRows: "repeat(".concat(layoutObj.rows, ", minmax(40px, 60px))"),
|
|
203
|
-
gridAutoFlow: 'initial'
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
return {};
|
|
207
|
-
};
|
|
208
|
-
var KeyPadContainer = (0, _styles.styled)('div')(function () {
|
|
209
|
-
return _objectSpread(_objectSpread({}, _commonStyles.commonKeyboardStyles), {}, {
|
|
210
|
-
width: '100%',
|
|
211
|
-
display: 'grid',
|
|
212
|
-
gridTemplateRows: 'repeat(5, minmax(40px, 60px))',
|
|
213
|
-
gridRowGap: '0px',
|
|
214
|
-
gridColumnGap: '0px',
|
|
215
|
-
gridAutoFlow: 'column',
|
|
216
|
-
'&.character': {
|
|
217
|
-
textTransform: 'initial !important',
|
|
218
|
-
gridTemplateRows: 'repeat(5, minmax(40px, 50px)) !important'
|
|
219
|
-
},
|
|
220
|
-
'&.language': {
|
|
221
|
-
gridTemplateRows: 'repeat(4, minmax(40px, 50px)) !important',
|
|
222
|
-
'& *': {
|
|
223
|
-
fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
var buttonBackground = function buttonBackground(category) {
|
|
229
|
-
return {
|
|
230
|
-
backgroundColor: category === 'operators' ? _renderUi.color.keypadButtonOperator() : _renderUi.color.keypadButton(),
|
|
231
|
-
'&:hover': {
|
|
232
|
-
backgroundColor: category === 'operators' ? _renderUi.color.keypadButtonOperatorHover() : _renderUi.color.keypadButtonHover()
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
};
|
|
236
|
-
var StyledButton = (0, _styles.styled)(_Button["default"])(function (_ref2) {
|
|
237
|
-
var category = _ref2.category,
|
|
238
|
-
isDelete = _ref2.isDelete,
|
|
239
|
-
isComma = _ref2.isComma,
|
|
240
|
-
isDot = _ref2.isDot;
|
|
241
|
-
return _objectSpread(_objectSpread({
|
|
242
|
-
minWidth: 'auto',
|
|
243
|
-
textTransform: 'none',
|
|
244
|
-
fontSize: isComma || isDot ? '200% !important' : '140% !important',
|
|
245
|
-
lineHeight: isComma || isDot ? '100%' : 'normal',
|
|
246
|
-
color: _renderUi.color.text()
|
|
247
|
-
}, buttonBackground(category)), {}, {
|
|
248
|
-
borderRadius: 0
|
|
249
|
-
}, isDelete && {
|
|
250
|
-
fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
|
|
251
|
-
});
|
|
252
|
-
});
|
|
253
|
-
var StyledLatexButtonWrapper = (0, _styles.styled)(_Button["default"])(function (_ref3) {
|
|
254
|
-
var category = _ref3.category;
|
|
255
|
-
return _objectSpread({
|
|
256
|
-
textTransform: 'none',
|
|
257
|
-
padding: 0,
|
|
258
|
-
margin: 0,
|
|
259
|
-
fontSize: '110% !important',
|
|
260
|
-
minWidth: 'auto',
|
|
261
|
-
borderRadius: 0
|
|
262
|
-
}, buttonBackground(category));
|
|
263
|
-
});
|
|
264
|
-
var StyledIconButton = (0, _styles.styled)(_IconButton["default"])(function (_ref4) {
|
|
265
|
-
var category = _ref4.category;
|
|
266
|
-
return _objectSpread(_objectSpread({
|
|
267
|
-
minWidth: 'auto'
|
|
268
|
-
}, buttonBackground(category)), {}, {
|
|
269
|
-
borderRadius: 0,
|
|
270
|
-
'& .icon': {
|
|
271
|
-
height: '30px'
|
|
272
|
-
}
|
|
273
|
-
});
|
|
274
|
-
});
|
|
275
|
-
var KeyPad = exports.KeyPad = /*#__PURE__*/function (_React$Component2) {
|
|
276
|
-
function KeyPad(props) {
|
|
277
|
-
var _this2;
|
|
278
|
-
(0, _classCallCheck2["default"])(this, KeyPad);
|
|
279
|
-
_this2 = _callSuper(this, KeyPad, [props]);
|
|
280
|
-
(0, _defineProperty2["default"])(_this2, "handleKeypadInteraction", function () {
|
|
281
|
-
if (_this2.props.setKeypadInteraction) {
|
|
282
|
-
_this2.props.setKeypadInteraction(true);
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
(0, _defineProperty2["default"])(_this2, "buttonClick", function (key) {
|
|
286
|
-
log('[buttonClick]', key);
|
|
287
|
-
_this2.props.onPress(key);
|
|
288
|
-
});
|
|
289
|
-
(0, _defineProperty2["default"])(_this2, "flowKeys", function (base, extras) {
|
|
290
|
-
return (0, _lodashEs.flatten)([].concat((0, _toConsumableArray2["default"])((0, _keysLayout.sortKeys)(base)), (0, _toConsumableArray2["default"])((0, _keysLayout.sortKeys)(extras))));
|
|
291
|
-
});
|
|
292
|
-
(0, _defineProperty2["default"])(_this2, "keyIsNotAllowed", function (key) {
|
|
293
|
-
var noDecimal = _this2.props.noDecimal;
|
|
294
|
-
return !!((key.write === '.' && key.label === '.' || key.write === ',' && key.label === ',') && noDecimal);
|
|
295
|
-
});
|
|
296
|
-
_this2.keypadRef = /*#__PURE__*/_react["default"].createRef();
|
|
297
|
-
return _this2;
|
|
298
|
-
}
|
|
299
|
-
(0, _inherits2["default"])(KeyPad, _React$Component2);
|
|
300
|
-
return (0, _createClass2["default"])(KeyPad, [{
|
|
301
|
-
key: "componentDidMount",
|
|
302
|
-
value: function componentDidMount() {
|
|
303
|
-
var _this$keypadRef;
|
|
304
|
-
// Ensure MathLive is available for the LaTeX labels.
|
|
305
|
-
(0, _mathliveInstance.loadMathLive)();
|
|
306
|
-
var keyPadElement = (_this$keypadRef = this.keypadRef) === null || _this$keypadRef === void 0 ? void 0 : _this$keypadRef.current;
|
|
307
|
-
var mainContainer = keyPadElement === null || keyPadElement === void 0 ? void 0 : keyPadElement.closest('.main-container');
|
|
308
|
-
var currentToolbar = keyPadElement === null || keyPadElement === void 0 ? void 0 : keyPadElement.closest('.pie-toolbar');
|
|
309
|
-
|
|
310
|
-
// need only for math keyboard so we need also controlledKeypadMode
|
|
311
|
-
if (this.props.controlledKeypadMode && mainContainer && currentToolbar) {
|
|
312
|
-
var mainContainerPosition = mainContainer.getBoundingClientRect();
|
|
313
|
-
var currentToolbarPosition = currentToolbar.getBoundingClientRect();
|
|
314
|
-
var difference = mainContainerPosition.top + mainContainerPosition.height - (currentToolbarPosition.top + currentToolbarPosition.height);
|
|
315
|
-
if (difference < 0) {
|
|
316
|
-
var totalHeight = mainContainerPosition.height + mainContainerPosition.top - difference;
|
|
317
|
-
mainContainer.style.height = "".concat(totalHeight, "px");
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
if (keyPadElement) {
|
|
321
|
-
keyPadElement.addEventListener('touchstart', this.handleKeypadInteraction, true);
|
|
322
|
-
keyPadElement.addEventListener('mousedown', this.handleKeypadInteraction, true);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
}, {
|
|
326
|
-
key: "componentWillUnmount",
|
|
327
|
-
value: function componentWillUnmount() {
|
|
328
|
-
var _this$keypadRef2;
|
|
329
|
-
var keyPadElement = (_this$keypadRef2 = this.keypadRef) === null || _this$keypadRef2 === void 0 ? void 0 : _this$keypadRef2.current;
|
|
330
|
-
if (this.props.controlledKeypadMode && keyPadElement) {
|
|
331
|
-
var mainContainer = keyPadElement.closest('.main-container');
|
|
332
|
-
if (mainContainer) {
|
|
333
|
-
mainContainer.style.height = 'unset';
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
if (keyPadElement) {
|
|
337
|
-
keyPadElement.removeEventListener('touchstart', this.handleKeypadInteraction, true);
|
|
338
|
-
keyPadElement.removeEventListener('mousedown', this.handleKeypadInteraction, true);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
}, {
|
|
342
|
-
key: "render",
|
|
343
|
-
value: function render() {
|
|
344
|
-
var _this3 = this;
|
|
345
|
-
var _this$props = this.props,
|
|
346
|
-
className = _this$props.className,
|
|
347
|
-
base = _this$props.baseSet,
|
|
348
|
-
additionalKeys = _this$props.additionalKeys,
|
|
349
|
-
layoutForKeyPad = _this$props.layoutForKeyPad,
|
|
350
|
-
onFocus = _this$props.onFocus,
|
|
351
|
-
mode = _this$props.mode;
|
|
352
|
-
var noBaseSet = ['non-negative-integers', 'integers', 'decimals', 'fractions', 'item-authoring', 'language'];
|
|
353
|
-
var keysWithoutBaseSet = noBaseSet.includes(mode);
|
|
354
|
-
var allKeys = keysWithoutBaseSet ? this.flowKeys([], additionalKeys || []) : this.flowKeys(base, additionalKeys || []);
|
|
355
|
-
var shift = allKeys.length % 5 ? 1 : 0;
|
|
356
|
-
var style = _objectSpread({
|
|
357
|
-
gridTemplateColumns: "repeat(".concat(Math.floor(allKeys.length / 5) + shift, ", minmax(min-content, 150px))")
|
|
358
|
-
}, createCustomLayout(layoutForKeyPad));
|
|
359
|
-
return /*#__PURE__*/_react["default"].createElement(KeyPadContainer, {
|
|
360
|
-
ref: this.keypadRef,
|
|
361
|
-
className: [className, mode].filter(Boolean).join(' '),
|
|
362
|
-
style: style,
|
|
363
|
-
onFocus: onFocus
|
|
364
|
-
}, allKeys.map(function (k, index) {
|
|
365
|
-
if (!k) {
|
|
366
|
-
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
367
|
-
key: "empty-".concat(index)
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
var key = "".concat(k.label || k.latex || k.command, "-").concat(index);
|
|
371
|
-
var category = !keysWithoutBaseSet ? k.category : undefined;
|
|
372
|
-
var extra = _objectSpread(_objectSpread({}, k.actions || {}), k.extraProps || {});
|
|
373
|
-
var onClick = _this3.buttonClick.bind(_this3, k);
|
|
374
|
-
var disabled = _this3.keyIsNotAllowed(k);
|
|
375
|
-
var ariaLabel = k.ariaLabel ? k.ariaLabel : k.name || k.label;
|
|
376
|
-
if (k.latex) {
|
|
377
|
-
return /*#__PURE__*/_react["default"].createElement(StyledLatexButtonWrapper, (0, _extends2["default"])({
|
|
378
|
-
key: key,
|
|
379
|
-
onClick: onClick,
|
|
380
|
-
disabled: disabled,
|
|
381
|
-
category: category,
|
|
382
|
-
"aria-label": ariaLabel
|
|
383
|
-
}, extra), /*#__PURE__*/_react["default"].createElement(LatexLabel, {
|
|
384
|
-
latex: k.latex
|
|
385
|
-
}));
|
|
386
|
-
}
|
|
387
|
-
if (k.label) {
|
|
388
|
-
return /*#__PURE__*/_react["default"].createElement(StyledButton, (0, _extends2["default"])({
|
|
389
|
-
key: key,
|
|
390
|
-
onClick: onClick,
|
|
391
|
-
disabled: disabled,
|
|
392
|
-
category: category,
|
|
393
|
-
isDelete: k.label === '⌫',
|
|
394
|
-
isComma: k.label === ',',
|
|
395
|
-
isDot: k.label === '.',
|
|
396
|
-
"aria-label": ariaLabel
|
|
397
|
-
}, extra), k.label);
|
|
398
|
-
}
|
|
399
|
-
var Icon = k.icon ? k.icon : 'div';
|
|
400
|
-
return /*#__PURE__*/_react["default"].createElement(StyledIconButton, (0, _extends2["default"])({
|
|
401
|
-
key: key,
|
|
402
|
-
tabIndex: '-1',
|
|
403
|
-
onClick: onClick,
|
|
404
|
-
disabled: disabled,
|
|
405
|
-
category: category,
|
|
406
|
-
size: "large"
|
|
407
|
-
}, extra), /*#__PURE__*/_react["default"].createElement(Icon, {
|
|
408
|
-
className: "icon"
|
|
409
|
-
}));
|
|
410
|
-
}));
|
|
411
|
-
}
|
|
412
|
-
}]);
|
|
413
|
-
}(_react["default"].Component);
|
|
414
|
-
(0, _defineProperty2["default"])(KeyPad, "propTypes", {
|
|
415
|
-
className: _propTypes["default"].string,
|
|
416
|
-
controlledKeypadMode: _propTypes["default"].bool,
|
|
417
|
-
baseSet: _propTypes["default"].array,
|
|
418
|
-
additionalKeys: _propTypes["default"].array,
|
|
419
|
-
layoutForKeyPad: _propTypes["default"].object,
|
|
420
|
-
onPress: _propTypes["default"].func.isRequired,
|
|
421
|
-
onFocus: _propTypes["default"].func,
|
|
422
|
-
noDecimal: _propTypes["default"].bool,
|
|
423
|
-
setKeypadInteraction: _propTypes["default"].func,
|
|
424
|
-
mode: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
|
|
425
|
-
});
|
|
426
|
-
(0, _defineProperty2["default"])(KeyPad, "defaultProps", {
|
|
427
|
-
baseSet: _keys.baseSet,
|
|
428
|
-
noDecimal: false
|
|
429
|
-
});
|
|
430
|
-
var _default = exports["default"] = KeyPad;
|
|
431
|
-
//# sourceMappingURL=index.js.map
|
package/lib/keypad/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_Button","_IconButton","_styles","_debug","_lodashEs","_renderUi","_keys","_keysLayout","_commonStyles","_mathliveInstance","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","log","debug","SLANTED_LABELS","SLANT","SLANTED_STROKE","SLANTED_SCALE_Y","LabelHolder","styled","shouldForwardProp","prop","_ref","slanted","transform","concat","WebkitTextStroke","pointerEvents","textTransform","color","text","display","textAlign","lineHeight","maxWidth","overflow","backgroundColor","keypadEmptyPlaceholder","undefined","opacity","rootIndexStyles","LatexLabel","exports","_React$Component","props","_this","_classCallCheck2","state","markup","latexToMarkup","latex","_inherits2","_createClass2","key","value","_componentDidMount","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_context","prev","next","abrupt","loadMathLive","unmounted","setState","warned","stop","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","render","createElement","includes","dangerouslySetInnerHTML","__html","React","Component","PropTypes","string","isRequired","createCustomLayout","layoutObj","gridTemplateColumns","columns","gridTemplateRows","rows","gridAutoFlow","KeyPadContainer","commonKeyboardStyles","width","gridRowGap","gridColumnGap","fontFamily","buttonBackground","category","keypadButtonOperator","keypadButton","keypadButtonOperatorHover","keypadButtonHover","StyledButton","Button","_ref2","isDelete","isComma","isDot","minWidth","fontSize","borderRadius","StyledLatexButtonWrapper","_ref3","padding","margin","StyledIconButton","IconButton","_ref4","height","KeyPad","_React$Component2","_this2","setKeypadInteraction","onPress","base","extras","flatten","_toConsumableArray2","sortKeys","noDecimal","write","label","keypadRef","createRef","_this$keypadRef","keyPadElement","current","mainContainer","closest","currentToolbar","controlledKeypadMode","mainContainerPosition","getBoundingClientRect","currentToolbarPosition","difference","top","totalHeight","style","addEventListener","handleKeypadInteraction","_this$keypadRef2","removeEventListener","_this3","_this$props","className","baseSet","additionalKeys","layoutForKeyPad","onFocus","mode","noBaseSet","keysWithoutBaseSet","allKeys","flowKeys","shift","Math","floor","ref","join","map","k","index","command","extra","actions","extraProps","onClick","buttonClick","bind","disabled","keyIsNotAllowed","ariaLabel","name","_extends2","Icon","icon","tabIndex","size","bool","array","object","func","oneOfType","number","_default"],"sources":["../../src/keypad/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\nimport debug from 'debug';\nimport { flatten } from 'lodash-es';\nimport { color } from '@pie-lib/render-ui';\n\nimport { baseSet } from '../keys';\nimport { sortKeys } from './keys-layout';\nimport { commonKeyboardStyles, rootIndexStyles } from '../mf/common-styles';\nimport { loadMathLive, latexToMarkup } from '../mathlive-instance';\n\nconst log = debug('pie-lib:math-input-mathlive:keypad');\n\n/**\n * A LaTeX keypad label.\n *\n * The MathQuill implementation rendered every LaTeX label as its own\n * `MQ.StaticMath` instance. Here each label is static HTML produced once by\n * `convertLatexToMarkup`, so a 40-key keypad no longer creates 40 live math\n * instances.\n */\n// Labels that the legacy keypad drew slanted. MathQuill styled `\\parallel` as\n// italic, which slants the two bars; MathLive draws it upright. A skew is used\n// rather than `font-style: italic` so the slant does not depend on the font\n// having an italic face for this glyph.\nconst SLANTED_LABELS = ['\\\\parallel'];\nconst SLANT = 'skewX(-15deg)';\n// MathLive's `∥` has hairline bars next to the radical sign and the other keys, so\n// they are thickened with a text stroke and stretched a little taller.\nconst SLANTED_STROKE = '0.03em currentColor';\nconst SLANTED_SCALE_Y = 1.25;\n\n// The `color.*()` helpers must be called lazily, inside the styled callback.\n// Evaluating them in a plain object literal runs them at module load, which\n// breaks any consumer that mocks a subset of @pie-lib/render-ui.\nconst LabelHolder = styled('span', { shouldForwardProp: (prop) => prop !== 'slanted' })(({ slanted }) => ({\n ...(slanted && {\n transform: `${SLANT} scaleY(${SLANTED_SCALE_Y})`,\n '& *': { WebkitTextStroke: SLANTED_STROKE },\n }),\n pointerEvents: 'none',\n textTransform: 'none',\n color: color.text(),\n // Deliberately inline-block, NOT inline-flex: MathLive's markup relies on\n // normal inline flow. Making its spans flex items collapses their width, and\n // stretchy accents render an <svg width=\"100%\" preserveAspectRatio=\"none\">\n // that then squeezes into a spike instead of spanning the content.\n display: 'inline-block',\n textAlign: 'center',\n lineHeight: 1,\n // Keep a label from sizing its grid column. `overflow: hidden` also collapses\n // the label's min-content contribution, so a wide accent cannot drag the\n // column across the screen. The svg's own positioning is left to\n // mathlive-static.css (injected by the package) - duplicating it here broke\n // the accent's containing block.\n maxWidth: '100%',\n overflow: 'hidden',\n // Answer-block / empty-slot boxes inside a label.\n '& .ML__placeholder': {\n backgroundColor: color.keypadEmptyPlaceholder ? color.keypadEmptyPlaceholder() : undefined,\n },\n // The stand-in glyph for an empty argument slot (see EMPTY_SLOT). Muted so it\n // reads as \"a slot goes here\" rather than as part of the symbol, matching how\n // MathQuill shaded `.mq-empty`.\n '& [data-pie-empty]': {\n opacity: 0.5,\n },\n // A readable index on the nth-root key. Carried by the label itself, not only\n // by the keypad container, so it holds wherever a LatexLabel is mounted.\n ...rootIndexStyles,\n}));\n\nexport class LatexLabel extends React.Component {\n static propTypes = {\n latex: PropTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = { markup: latexToMarkup(props.latex) };\n }\n\n async componentDidMount() {\n // MathLive may not have finished loading when the keypad first mounts.\n if (this.state.markup) {\n return;\n }\n\n await loadMathLive();\n\n if (this.unmounted) {\n return;\n }\n\n const markup = latexToMarkup(this.props.latex);\n\n if (markup) {\n this.setState({ markup });\n return;\n }\n\n // Still nothing: the engine is genuinely unavailable (a missing chunk, a\n // blocked request). Keep the raw-latex fallback visible rather than an\n // empty button, and log once so this is diagnosable.\n if (!LatexLabel.warned) {\n LatexLabel.warned = true;\n log('MathLive unavailable - keypad labels are falling back to raw latex');\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.latex !== this.props.latex) {\n this.setState({ markup: latexToMarkup(this.props.latex) });\n }\n }\n\n componentWillUnmount() {\n this.unmounted = true;\n }\n\n render() {\n const { markup } = this.state;\n\n // Fall back to the raw latex so a button is never blank.\n return markup ? (\n // eslint-disable-next-line react/no-danger\n <LabelHolder slanted={SLANTED_LABELS.includes(this.props.latex)} dangerouslySetInnerHTML={{ __html: markup }} />\n ) : (\n <LabelHolder slanted={SLANTED_LABELS.includes(this.props.latex)}>{this.props.latex}</LabelHolder>\n );\n }\n}\n\nconst createCustomLayout = (layoutObj) => {\n if (layoutObj) {\n return {\n gridTemplateColumns: `repeat(${layoutObj.columns}, minmax(min-content, 150px))`,\n gridTemplateRows: `repeat(${layoutObj.rows}, minmax(40px, 60px))`,\n gridAutoFlow: 'initial',\n };\n }\n\n return {};\n};\n\nconst KeyPadContainer = styled('div')(() => ({\n ...commonKeyboardStyles,\n width: '100%',\n display: 'grid',\n gridTemplateRows: 'repeat(5, minmax(40px, 60px))',\n gridRowGap: '0px',\n gridColumnGap: '0px',\n gridAutoFlow: 'column',\n '&.character': {\n textTransform: 'initial !important',\n gridTemplateRows: 'repeat(5, minmax(40px, 50px)) !important',\n },\n '&.language': {\n gridTemplateRows: 'repeat(4, minmax(40px, 50px)) !important',\n '& *': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n },\n}));\n\nconst buttonBackground = (category) => ({\n backgroundColor: category === 'operators' ? color.keypadButtonOperator() : color.keypadButton(),\n '&:hover': {\n backgroundColor: category === 'operators' ? color.keypadButtonOperatorHover() : color.keypadButtonHover(),\n },\n});\n\nconst StyledButton = styled(Button)(({ category, isDelete, isComma, isDot }) => ({\n minWidth: 'auto',\n textTransform: 'none',\n fontSize: isComma || isDot ? '200% !important' : '140% !important',\n lineHeight: isComma || isDot ? '100%' : 'normal',\n color: color.text(),\n ...buttonBackground(category),\n borderRadius: 0,\n ...(isDelete && {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n }),\n}));\n\nconst StyledLatexButtonWrapper = styled(Button)(({ category }) => ({\n textTransform: 'none',\n padding: 0,\n margin: 0,\n fontSize: '110% !important',\n minWidth: 'auto',\n borderRadius: 0,\n ...buttonBackground(category),\n}));\n\nconst StyledIconButton = styled(IconButton)(({ category }) => ({\n minWidth: 'auto',\n ...buttonBackground(category),\n borderRadius: 0,\n '& .icon': {\n height: '30px',\n },\n}));\n\nexport class KeyPad extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n controlledKeypadMode: PropTypes.bool,\n baseSet: PropTypes.array,\n additionalKeys: PropTypes.array,\n layoutForKeyPad: PropTypes.object,\n onPress: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n noDecimal: PropTypes.bool,\n setKeypadInteraction: PropTypes.func,\n mode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n };\n\n static defaultProps = {\n baseSet: baseSet,\n noDecimal: false,\n };\n\n constructor(props) {\n super(props);\n this.keypadRef = React.createRef();\n }\n\n componentDidMount() {\n // Ensure MathLive is available for the LaTeX labels.\n loadMathLive();\n\n const keyPadElement = this.keypadRef?.current;\n const mainContainer = keyPadElement?.closest('.main-container');\n const currentToolbar = keyPadElement?.closest('.pie-toolbar');\n\n // need only for math keyboard so we need also controlledKeypadMode\n if (this.props.controlledKeypadMode && mainContainer && currentToolbar) {\n const mainContainerPosition = mainContainer.getBoundingClientRect();\n const currentToolbarPosition = currentToolbar.getBoundingClientRect();\n const difference =\n mainContainerPosition.top +\n mainContainerPosition.height -\n (currentToolbarPosition.top + currentToolbarPosition.height);\n\n if (difference < 0) {\n const totalHeight = mainContainerPosition.height + mainContainerPosition.top - difference;\n\n mainContainer.style.height = `${totalHeight}px`;\n }\n }\n\n if (keyPadElement) {\n keyPadElement.addEventListener('touchstart', this.handleKeypadInteraction, true);\n keyPadElement.addEventListener('mousedown', this.handleKeypadInteraction, true);\n }\n }\n\n componentWillUnmount() {\n const keyPadElement = this.keypadRef?.current;\n\n if (this.props.controlledKeypadMode && keyPadElement) {\n const mainContainer = keyPadElement.closest('.main-container');\n\n if (mainContainer) {\n mainContainer.style.height = 'unset';\n }\n }\n\n if (keyPadElement) {\n keyPadElement.removeEventListener('touchstart', this.handleKeypadInteraction, true);\n keyPadElement.removeEventListener('mousedown', this.handleKeypadInteraction, true);\n }\n }\n\n handleKeypadInteraction = () => {\n if (this.props.setKeypadInteraction) {\n this.props.setKeypadInteraction(true);\n }\n };\n\n buttonClick = (key) => {\n log('[buttonClick]', key);\n this.props.onPress(key);\n };\n\n flowKeys = (base, extras) => flatten([...sortKeys(base), ...sortKeys(extras)]);\n\n keyIsNotAllowed = (key) => {\n const { noDecimal } = this.props;\n\n return !!(((key.write === '.' && key.label === '.') || (key.write === ',' && key.label === ',')) && noDecimal);\n };\n\n render() {\n const { className, baseSet: base, additionalKeys, layoutForKeyPad, onFocus, mode } = this.props;\n\n const noBaseSet = ['non-negative-integers', 'integers', 'decimals', 'fractions', 'item-authoring', 'language'];\n const keysWithoutBaseSet = noBaseSet.includes(mode);\n const allKeys = keysWithoutBaseSet\n ? this.flowKeys([], additionalKeys || [])\n : this.flowKeys(base, additionalKeys || []);\n\n const shift = allKeys.length % 5 ? 1 : 0;\n const style = {\n gridTemplateColumns: `repeat(${Math.floor(allKeys.length / 5) + shift}, minmax(min-content, 150px))`,\n ...createCustomLayout(layoutForKeyPad),\n };\n\n return (\n <KeyPadContainer\n ref={this.keypadRef}\n className={[className, mode].filter(Boolean).join(' ')}\n style={style}\n onFocus={onFocus}\n >\n {allKeys.map((k, index) => {\n if (!k) {\n return <span key={`empty-${index}`} />;\n }\n\n const key = `${k.label || k.latex || k.command}-${index}`;\n const category = !keysWithoutBaseSet ? k.category : undefined;\n const extra = { ...(k.actions || {}), ...(k.extraProps || {}) };\n const onClick = this.buttonClick.bind(this, k);\n const disabled = this.keyIsNotAllowed(k);\n const ariaLabel = k.ariaLabel ? k.ariaLabel : k.name || k.label;\n\n if (k.latex) {\n return (\n <StyledLatexButtonWrapper\n key={key}\n onClick={onClick}\n disabled={disabled}\n category={category}\n aria-label={ariaLabel}\n {...extra}\n >\n <LatexLabel latex={k.latex} />\n </StyledLatexButtonWrapper>\n );\n }\n\n if (k.label) {\n return (\n <StyledButton\n key={key}\n onClick={onClick}\n disabled={disabled}\n category={category}\n isDelete={k.label === '⌫'}\n isComma={k.label === ','}\n isDot={k.label === '.'}\n aria-label={ariaLabel}\n {...extra}\n >\n {k.label}\n </StyledButton>\n );\n }\n\n const Icon = k.icon ? k.icon : 'div';\n\n return (\n <StyledIconButton\n key={key}\n tabIndex={'-1'}\n onClick={onClick}\n disabled={disabled}\n category={category}\n size=\"large\"\n {...extra}\n >\n <Icon className=\"icon\" />\n </StyledIconButton>\n );\n })}\n </KeyPadContainer>\n );\n }\n}\n\nexport default KeyPad;\n"],"mappings":"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","ignoreList":[]}
|