@pie-lib/math-input 6.31.2-next.11 → 6.31.2-next.164

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +6 -64
  2. package/lib/horizontal-keypad.js +16 -44
  3. package/lib/horizontal-keypad.js.map +1 -1
  4. package/lib/index.js +3 -25
  5. package/lib/index.js.map +1 -1
  6. package/lib/keypad/index.js +254 -332
  7. package/lib/keypad/index.js.map +1 -1
  8. package/lib/keypad/keys-layout.js +2 -12
  9. package/lib/keypad/keys-layout.js.map +1 -1
  10. package/lib/keys/basic-operators.js +5 -13
  11. package/lib/keys/basic-operators.js.map +1 -1
  12. package/lib/keys/chars.js +5 -10
  13. package/lib/keys/chars.js.map +1 -1
  14. package/lib/keys/comparison.js +6 -16
  15. package/lib/keys/comparison.js.map +1 -1
  16. package/lib/keys/constants.js +4 -10
  17. package/lib/keys/constants.js.map +1 -1
  18. package/lib/keys/digits.js +1 -7
  19. package/lib/keys/digits.js.map +1 -1
  20. package/lib/keys/edit.js +1 -4
  21. package/lib/keys/edit.js.map +1 -1
  22. package/lib/keys/exponent.js +4 -10
  23. package/lib/keys/exponent.js.map +1 -1
  24. package/lib/keys/fractions.js +3 -8
  25. package/lib/keys/fractions.js.map +1 -1
  26. package/lib/keys/geometry.js +25 -54
  27. package/lib/keys/geometry.js.map +1 -1
  28. package/lib/keys/grades.js +10 -46
  29. package/lib/keys/grades.js.map +1 -1
  30. package/lib/keys/index.js +13 -32
  31. package/lib/keys/index.js.map +1 -1
  32. package/lib/keys/log.js +3 -8
  33. package/lib/keys/log.js.map +1 -1
  34. package/lib/keys/logic.js +2 -6
  35. package/lib/keys/logic.js.map +1 -1
  36. package/lib/keys/matrices.js +2 -6
  37. package/lib/keys/matrices.js.map +1 -1
  38. package/lib/keys/misc.js +10 -22
  39. package/lib/keys/misc.js.map +1 -1
  40. package/lib/keys/navigation.js +2 -7
  41. package/lib/keys/navigation.js.map +1 -1
  42. package/lib/keys/operators.js +1 -4
  43. package/lib/keys/operators.js.map +1 -1
  44. package/lib/keys/statistics.js +5 -12
  45. package/lib/keys/statistics.js.map +1 -1
  46. package/lib/keys/sub-sup.js +2 -6
  47. package/lib/keys/sub-sup.js.map +1 -1
  48. package/lib/keys/trigonometry.js +6 -14
  49. package/lib/keys/trigonometry.js.map +1 -1
  50. package/lib/keys/utils.js +7 -40
  51. package/lib/keys/utils.js.map +1 -1
  52. package/lib/keys/vars.js +3 -8
  53. package/lib/keys/vars.js.map +1 -1
  54. package/lib/math-input.js +52 -103
  55. package/lib/math-input.js.map +1 -1
  56. package/lib/mq/common-mq-styles.js +7 -18
  57. package/lib/mq/common-mq-styles.js.map +1 -1
  58. package/lib/mq/custom-elements.js +1 -4
  59. package/lib/mq/custom-elements.js.map +1 -1
  60. package/lib/mq/index.js +0 -4
  61. package/lib/mq/index.js.map +1 -1
  62. package/lib/mq/input.js +22 -75
  63. package/lib/mq/input.js.map +1 -1
  64. package/lib/mq/static.js +34 -92
  65. package/lib/mq/static.js.map +1 -1
  66. package/lib/shared/constants.js +3 -6
  67. package/lib/updateSpans.js +1 -5
  68. package/lib/updateSpans.js.map +1 -1
  69. package/package.json +10 -10
  70. package/src/__tests__/math-input-test.jsx +31 -71
  71. package/src/keypad/__tests__/index.test.jsx +18 -17
  72. package/src/keypad/index.jsx +172 -169
  73. package/src/math-input.jsx +35 -44
  74. package/src/mq/__tests__/input.test.jsx +26 -78
  75. package/src/mq/__tests__/static.test.jsx +14 -38
  76. package/src/mq/input.jsx +9 -9
  77. package/src/mq/static.jsx +3 -0
  78. package/esm/index.css +0 -847
  79. package/esm/index.js +0 -44393
  80. package/esm/index.js.map +0 -1
  81. package/src/__tests__/__snapshots__/math-input-test.jsx.snap +0 -152
  82. package/src/keypad/__tests__/__snapshots__/index.test.jsx.snap +0 -193
  83. package/src/mq/__tests__/__snapshots__/input.test.jsx.snap +0 -9
@@ -1,193 +1,161 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = exports.KeyPad = void 0;
11
-
12
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
-
16
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
21
-
22
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
-
24
13
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
-
26
14
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
-
15
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
28
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
-
30
17
  var _react = _interopRequireDefault(require("react"));
31
-
32
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
33
-
34
- var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
35
-
36
- var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
37
-
38
- var _styles = require("@material-ui/core/styles");
39
-
40
- var _classnames = _interopRequireDefault(require("classnames"));
41
-
42
- var _colorManipulator = require("@material-ui/core/styles/colorManipulator");
43
-
44
- var _green = _interopRequireDefault(require("@material-ui/core/colors/green"));
45
-
19
+ var _Button = _interopRequireDefault(require("@mui/material/Button"));
20
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
21
+ var _styles = require("@mui/material/styles");
46
22
  var _debug = _interopRequireDefault(require("debug"));
47
-
48
23
  var _lodash = _interopRequireDefault(require("lodash"));
49
-
50
24
  var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
51
-
52
25
  var mq = _interopRequireWildcard(require("../mq"));
53
-
54
26
  var _keys = require("../keys");
55
-
56
27
  var _constants = _interopRequireDefault(require("./../shared/constants"));
57
-
58
28
  var _commonMqStyles = require("../mq/common-mq-styles");
59
-
60
29
  var _keysLayout = require("./keys-layout");
61
-
62
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
63
-
64
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
65
-
66
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
67
-
68
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
69
-
70
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
71
-
72
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
73
-
30
+ var _colors = require("@mui/material/colors");
31
+ var _renderUi = require("@pie-lib/render-ui");
32
+ 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); }
33
+ 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)); }
34
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
35
+ 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; }
36
+ 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; }
74
37
  var log = (0, _debug["default"])('pie-lib:math-inline:keypad');
75
- var LatexButton = (0, _styles.withStyles)(function (theme) {
38
+ var StyledLatexButton = (0, _styles.styled)(_Button["default"])(function () {
76
39
  return {
77
- root: {
78
- textTransform: 'none',
79
- padding: 0,
80
- margin: 0,
81
- fontSize: '110% !important'
40
+ textTransform: 'none',
41
+ padding: 0,
42
+ margin: 0,
43
+ fontSize: '110% !important'
44
+ };
45
+ });
46
+ var LatexButtonContent = (0, _styles.styled)(mq.Static)(function (_ref) {
47
+ var latex = _ref.latex;
48
+ var baseStyles = {
49
+ pointerEvents: 'none',
50
+ textTransform: 'none !important',
51
+ color: _renderUi.color.text(),
52
+ '& .mq-scaled.mq-sqrt-prefix': {
53
+ transform: 'scale(1, 0.9) !important'
82
54
  },
83
- latexButton: {
84
- pointerEvents: 'none',
85
- textTransform: 'none !important',
86
- '& .mq-scaled.mq-sqrt-prefix': {
87
- transform: 'scale(1, 0.9) !important'
88
- },
89
- '& .mq-sup-only .mq-sup': {
90
- marginBottom: '0.9px !important'
91
- },
92
- '& .mq-empty': {
93
- backgroundColor: "".concat((0, _colorManipulator.fade)(theme.palette.secondary.main, 0.4), " !important")
94
- },
95
- '& .mq-overline .mq-overline-inner': {
96
- borderTop: '2px solid black'
97
- },
98
- '& .mq-non-leaf.mq-overline': {
99
- borderTop: 'none !important' // fixing PD-4873 - in OT, it has border-top 1px and adds extra line
100
-
101
- },
102
- '& .mq-overarrow': {
103
- width: '30px',
104
- marginTop: '0 !important',
105
- borderTop: '2px solid black',
106
- fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',
107
- '&.mq-arrow-both': {
108
- top: '0px !important',
109
- '& *': {
110
- lineHeight: '1 !important',
111
- borderTop: 'none !important' // fixing PD-4873 - in OT, it has border-top 1px and adds extra line,
112
-
113
- },
114
- '&:before': {
115
- fontSize: '80%',
116
- left: 'calc(-13%) !important',
117
- top: '-0.31em !important'
118
- },
119
- '&:after': {
120
- fontSize: '80% !important',
121
- right: 'calc(-13%) !important',
122
- top: '-1.5em'
123
- },
124
- '&.mq-empty:before': {
125
- fontSize: '80%',
126
- left: 'calc(-13%)',
127
- top: '-0.26em'
128
- },
129
- '&.mq-empty:after': {
130
- fontSize: '80%',
131
- right: 'calc(-13%)',
132
- top: '-0.26em'
133
- },
134
- '&.mq-empty': {
135
- minHeight: '1.4em'
136
- }
55
+ '& .mq-sup-only .mq-sup': {
56
+ marginBottom: '0.9px !important'
57
+ },
58
+ '& .mq-empty': {
59
+ backgroundColor: "".concat((0, _styles.alpha)(_colors.pink[300], 0.4), " !important")
60
+ },
61
+ '& .mq-overline .mq-overline-inner': {
62
+ borderTop: '2px solid black'
63
+ },
64
+ '& .mq-non-leaf.mq-overline': {
65
+ borderTop: 'none !important'
66
+ },
67
+ '& .mq-overarrow': {
68
+ width: '30px',
69
+ marginTop: '0 !important',
70
+ borderTop: '2px solid black',
71
+ fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',
72
+ '&.mq-arrow-both': {
73
+ top: '0px !important',
74
+ '& *': {
75
+ lineHeight: '1 !important',
76
+ borderTop: 'none !important'
137
77
  },
138
- '&.mq-arrow-right:before': {
78
+ '&:before': {
139
79
  fontSize: '80%',
80
+ left: 'calc(-13%) !important',
81
+ top: '-0.31em !important'
82
+ },
83
+ '&:after': {
84
+ fontSize: '80% !important',
140
85
  right: 'calc(-13%) !important',
141
- top: '-0.26em !important'
86
+ top: '-1.5em'
142
87
  },
143
- '& .mq-overarrow-inner': {
144
- border: 'none !important'
88
+ '&.mq-empty:before': {
89
+ fontSize: '80%',
90
+ left: 'calc(-13%)',
91
+ top: '-0.26em'
145
92
  },
146
- '& .mq-overarrow-inner .mq-overarrow-inner-right': {
147
- display: 'none !important'
93
+ '&.mq-empty:after': {
94
+ fontSize: '80%',
95
+ right: 'calc(-13%)',
96
+ top: '-0.26em'
97
+ },
98
+ '&.mq-empty': {
99
+ minHeight: '1.4em'
148
100
  }
149
101
  },
150
- '& .mq-root-block': {
151
- padding: '5px !important'
152
- },
153
- '& .mq-overarrow.mq-arrow-both.mq-empty:after': {
154
- right: '-6px',
155
- fontSize: '80% !important',
156
- top: '-3px'
157
- },
158
- '& .mq-overarrow.mq-arrow-right.mq-empty:before': {
159
- right: '-5px',
160
- fontSize: '80% !important',
161
- top: '-3px'
162
- },
163
- '& .mq-overarrow.mq-arrow-both.mq-empty:before': {
164
- left: '-6px',
165
- fontSize: '80% !important',
166
- top: '-3px'
167
- },
168
- '& .mq-longdiv-inner': {
169
- borderTop: '1px solid !important',
170
- paddingTop: '1.5px !important'
102
+ '&.mq-arrow-right:before': {
103
+ fontSize: '80%',
104
+ right: 'calc(-13%) !important',
105
+ top: '-0.26em !important'
171
106
  },
172
- '& .mq-parallelogram': {
173
- lineHeight: 0.85
107
+ '& .mq-overarrow-inner': {
108
+ border: 'none !important'
174
109
  },
175
- '& .mq-overarc': {
176
- borderTop: '2px solid black !important',
177
- '& .mq-overline': {
178
- borderTop: 'none !important' // fixing PD-4873 - in OT, it has border-top 1px and adds extra line
179
-
180
- },
181
- '& .mq-overline-inner': {
182
- borderTop: 'none !important',
183
- paddingTop: '0 !important'
184
- }
110
+ '& .mq-overarrow-inner .mq-overarrow-inner-right': {
111
+ display: 'none !important'
185
112
  }
186
113
  },
187
- parallelButton: {
188
- fontStyle: 'italic !important'
114
+ '& .mq-root-block': {
115
+ padding: '5px !important'
116
+ },
117
+ '& .mq-overarrow.mq-arrow-both.mq-empty:after': {
118
+ right: '-6px',
119
+ fontSize: '80% !important',
120
+ top: '-3px'
121
+ },
122
+ '& .mq-overarrow.mq-arrow-right.mq-empty:before': {
123
+ right: '-5px',
124
+ fontSize: '80% !important',
125
+ top: '-3px'
126
+ },
127
+ '& .mq-overarrow.mq-arrow-both.mq-empty:before': {
128
+ left: '-6px',
129
+ fontSize: '80% !important',
130
+ top: '-3px'
131
+ },
132
+ '& .mq-longdiv-inner': {
133
+ borderTop: '1px solid !important',
134
+ paddingTop: '1.5px !important'
189
135
  },
190
- leftRightArrowButton: {
136
+ '& .mq-parallelogram': {
137
+ lineHeight: 0.85
138
+ },
139
+ '& .mq-overarc': {
140
+ borderTop: '2px solid black !important',
141
+ '& .mq-overline': {
142
+ borderTop: 'none !important'
143
+ },
144
+ '& .mq-overline-inner': {
145
+ borderTop: 'none !important',
146
+ paddingTop: '0 !important'
147
+ }
148
+ }
149
+ };
150
+
151
+ // Add specific styles based on latex content
152
+ if (latex === '\\parallel') {
153
+ return _objectSpread(_objectSpread({}, baseStyles), {}, {
154
+ fontStyle: 'italic !important'
155
+ });
156
+ }
157
+ if (latex === '\\overleftrightarrow{\\overline{}}') {
158
+ return _objectSpread(_objectSpread({}, baseStyles), {}, {
191
159
  '& .mq-overarrow.mq-arrow-both': {
192
160
  '& .mq-overline-inner': {
193
161
  borderTop: 'none !important',
@@ -198,41 +166,15 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
198
166
  top: '0px !important'
199
167
  }
200
168
  }
201
- }
202
- };
203
- })(function (props) {
204
- var buttonClass;
205
-
206
- if (props.latex === '\\parallel') {
207
- buttonClass = (0, _classnames["default"])(props.classes.latexButton, props.mqClassName, props.classes.parallelButton);
208
- } else if (props.latex === '\\overleftrightarrow{\\overline{}}') {
209
- buttonClass = (0, _classnames["default"])(props.classes.latexButton, props.mqClassName, props.classes.leftRightArrowButton);
210
- } else {
211
- buttonClass = (0, _classnames["default"])(props.classes.latexButton, props.mqClassName);
212
- }
213
-
214
- try {
215
- var MQ = _mathquill["default"].getInterface(2);
216
-
217
- var span = document.createElement('span');
218
- span.innerHTML = '';
219
- var mathField = MQ.StaticMath(span);
220
- mathField.parseLatex(props.latex);
221
- mathField.latex(props.latex);
222
- } catch (e) {
223
- // received latex has errors - do not create button
224
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null);
169
+ });
225
170
  }
226
-
227
- return /*#__PURE__*/_react["default"].createElement(_Button["default"], {
228
- className: (0, _classnames["default"])(props.classes.root, props.className),
229
- onClick: props.onClick,
230
- "aria-label": props.ariaLabel
231
- }, /*#__PURE__*/_react["default"].createElement(mq.Static, {
232
- className: buttonClass,
233
- latex: props.latex
234
- }));
171
+ return baseStyles;
235
172
  });
173
+ LatexButtonContent.propTypes = {
174
+ latex: _propTypes["default"].string.isRequired
175
+ };
176
+
177
+ // LatexButton component removed - LatexButtonContent is used directly instead
236
178
 
237
179
  var createCustomLayout = function createCustomLayout(layoutObj) {
238
180
  if (layoutObj) {
@@ -242,72 +184,140 @@ var createCustomLayout = function createCustomLayout(layoutObj) {
242
184
  gridAutoFlow: 'initial'
243
185
  };
244
186
  }
245
-
246
187
  return {};
247
188
  };
248
-
249
- var KeyPad = /*#__PURE__*/function (_React$Component) {
250
- (0, _inherits2["default"])(KeyPad, _React$Component);
251
-
252
- var _super = _createSuper(KeyPad);
253
-
189
+ var KeyPadContainer = (0, _styles.styled)('div')(function () {
190
+ return _objectSpread(_objectSpread({}, _commonMqStyles.commonMqKeyboardStyles), {}, {
191
+ width: '100%',
192
+ display: 'grid',
193
+ gridTemplateRows: 'repeat(5, minmax(40px, 60px))',
194
+ gridRowGap: '0px',
195
+ gridColumnGap: '0px',
196
+ gridAutoFlow: 'column',
197
+ '&.character': {
198
+ textTransform: 'initial !important',
199
+ gridTemplateRows: 'repeat(5, minmax(40px, 50px)) !important'
200
+ },
201
+ '&.language': {
202
+ gridTemplateRows: 'repeat(4, minmax(40px, 50px)) !important',
203
+ '& *': {
204
+ fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
205
+ }
206
+ }
207
+ });
208
+ });
209
+ var StyledButton = (0, _styles.styled)(_Button["default"])(function (_ref2) {
210
+ var category = _ref2.category,
211
+ isDelete = _ref2.isDelete,
212
+ isComma = _ref2.isComma,
213
+ isDot = _ref2.isDot;
214
+ return _objectSpread({
215
+ minWidth: 'auto',
216
+ fontSize: isComma || isDot ? '200% !important' : '140% !important',
217
+ lineHeight: isComma || isDot ? '100%' : 'normal',
218
+ color: _renderUi.color.text(),
219
+ backgroundColor: category === 'operators' ? (0, _styles.lighten)(_colors.pink[300], 0.5) :
220
+ // this code with green seems to not be applied to current implementation, so I commented it out, but left it here just in case
221
+ // category === 'comparison' ? lighten(green[500], 0.5) :
222
+ (0, _styles.lighten)(_colors.indigo[300], 0.5),
223
+ '&:hover': {
224
+ backgroundColor: category === 'operators' ? (0, _styles.lighten)(_colors.pink[300], 0.7) :
225
+ // category === 'comparison' ? lighten(green[500], 0.7) :
226
+ (0, _styles.lighten)(_colors.indigo[300], 0.7)
227
+ },
228
+ borderRadius: 0
229
+ }, isDelete && {
230
+ '& > span': {
231
+ fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
232
+ }
233
+ });
234
+ });
235
+ var StyledLatexButtonWrapper = (0, _styles.styled)(_Button["default"])(function (_ref3) {
236
+ var category = _ref3.category;
237
+ return {
238
+ minWidth: 'auto',
239
+ borderRadius: 0,
240
+ backgroundColor: category === 'operators' ? (0, _styles.lighten)(_colors.pink[300], 0.5) :
241
+ // category === 'comparison' ? lighten(green[500], 0.5) :
242
+ (0, _styles.lighten)(_colors.indigo[300], 0.5),
243
+ '&:hover': {
244
+ backgroundColor: category === 'operators' ? (0, _styles.lighten)(_colors.pink[300], 0.7) :
245
+ // category === 'comparison' ? lighten(green[500], 0.7) :
246
+ (0, _styles.lighten)(_colors.indigo[300], 0.7)
247
+ }
248
+ };
249
+ });
250
+ var StyledIconButton = (0, _styles.styled)(_IconButton["default"])(function (_ref4) {
251
+ var category = _ref4.category;
252
+ return {
253
+ minWidth: 'auto',
254
+ backgroundColor: category === 'operators' ? (0, _styles.lighten)(_colors.pink[300], 0.5) :
255
+ // category === 'comparison' ? lighten(green[500], 0.5) :
256
+ (0, _styles.lighten)(_colors.indigo[300], 0.5),
257
+ '&:hover': {
258
+ backgroundColor: category === 'operators' ? (0, _styles.lighten)(_colors.pink[300], 0.7) :
259
+ // category === 'comparison' ? lighten(green[500], 0.7) :
260
+ (0, _styles.lighten)(_colors.indigo[300], 0.7)
261
+ },
262
+ borderRadius: 0,
263
+ '& .icon': {
264
+ height: '30px'
265
+ }
266
+ };
267
+ });
268
+ var KeyPad = exports.KeyPad = /*#__PURE__*/function (_React$Component) {
254
269
  function KeyPad(props) {
255
270
  var _this;
256
-
257
271
  (0, _classCallCheck2["default"])(this, KeyPad);
258
- _this = _super.call(this, props);
259
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleKeypadInteraction", function () {
272
+ _this = _callSuper(this, KeyPad, [props]);
273
+ (0, _defineProperty2["default"])(_this, "handleKeypadInteraction", function () {
260
274
  // Check if the setKeypadInteraction prop is available, which is used for both
261
275
  // the language keypad and the special characters keypad
262
276
  if (_this.props.setKeypadInteraction) {
263
277
  _this.props.setKeypadInteraction(true);
264
278
  }
265
279
  });
266
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "buttonClick", function (key) {
280
+ (0, _defineProperty2["default"])(_this, "buttonClick", function (key) {
267
281
  log('[buttonClick]', key);
268
282
  var onPress = _this.props.onPress;
269
283
  onPress(key);
270
284
  });
271
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "flowKeys", function (base, extras) {
285
+ (0, _defineProperty2["default"])(_this, "flowKeys", function (base, extras) {
272
286
  var transposed = [].concat((0, _toConsumableArray2["default"])((0, _keysLayout.sortKeys)(base)), (0, _toConsumableArray2["default"])((0, _keysLayout.sortKeys)(extras)));
273
287
  return _lodash["default"].flatten(transposed);
274
288
  });
275
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "keyIsNotAllowed", function (key) {
289
+ (0, _defineProperty2["default"])(_this, "keyIsNotAllowed", function (key) {
276
290
  var noDecimal = _this.props.noDecimal;
277
-
278
291
  if ((key.write === '.' && key.label === '.' || key.write === ',' && key.label === ',') && noDecimal) {
279
292
  return true;
280
293
  }
281
-
282
294
  return false;
283
295
  });
284
296
  _this.keypadRef = /*#__PURE__*/_react["default"].createRef();
285
297
  return _this;
286
298
  }
287
-
288
- (0, _createClass2["default"])(KeyPad, [{
299
+ (0, _inherits2["default"])(KeyPad, _React$Component);
300
+ return (0, _createClass2["default"])(KeyPad, [{
289
301
  key: "componentDidMount",
290
302
  value: function componentDidMount() {
291
303
  var _this$keypadRef;
292
-
293
304
  var keyPadElement = (_this$keypadRef = this.keypadRef) === null || _this$keypadRef === void 0 ? void 0 : _this$keypadRef.current;
294
305
  var mainContainer = keyPadElement === null || keyPadElement === void 0 ? void 0 : keyPadElement.closest(".".concat(_constants["default"].MAIN_CONTAINER_CLASS));
295
- var currentToolbar = keyPadElement === null || keyPadElement === void 0 ? void 0 : keyPadElement.closest('.pie-toolbar'); // need only for math keyboard so we need also controlledKeypadMode
306
+ var currentToolbar = keyPadElement === null || keyPadElement === void 0 ? void 0 : keyPadElement.closest('.pie-toolbar');
296
307
 
308
+ // need only for math keyboard so we need also controlledKeypadMode
297
309
  if (this.props.controlledKeypadMode && mainContainer && currentToolbar) {
298
310
  var mainContainerPosition = mainContainer.getBoundingClientRect();
299
311
  var currentToolbarPosition = currentToolbar.getBoundingClientRect();
300
312
  var difference = mainContainerPosition.top + mainContainerPosition.height - (currentToolbarPosition.top + currentToolbarPosition.height);
301
-
302
313
  if (difference < 0) {
303
- var totalHeight = mainContainerPosition.height + mainContainerPosition.top - difference; // increase the height of the main container if keyboard needs it
304
-
314
+ var totalHeight = mainContainerPosition.height + mainContainerPosition.top - difference;
315
+ // increase the height of the main container if keyboard needs it
305
316
  if (mainContainer) {
306
317
  mainContainer.style.height = "".concat(totalHeight, "px");
307
318
  }
308
319
  }
309
320
  }
310
-
311
321
  if (keyPadElement) {
312
322
  keyPadElement.addEventListener('touchstart', this.handleKeypadInteraction, true);
313
323
  keyPadElement.addEventListener('mousedown', this.handleKeypadInteraction, true);
@@ -317,17 +327,14 @@ var KeyPad = /*#__PURE__*/function (_React$Component) {
317
327
  key: "componentWillUnmount",
318
328
  value: function componentWillUnmount() {
319
329
  var _this$keypadRef2;
320
-
321
- var keyPadElement = (_this$keypadRef2 = this.keypadRef) === null || _this$keypadRef2 === void 0 ? void 0 : _this$keypadRef2.current; // need only for math keyboard
322
-
330
+ var keyPadElement = (_this$keypadRef2 = this.keypadRef) === null || _this$keypadRef2 === void 0 ? void 0 : _this$keypadRef2.current;
331
+ // need only for math keyboard
323
332
  if (this.props.controlledKeypadMode && keyPadElement) {
324
333
  var mainContainer = keyPadElement.closest(".".concat(_constants["default"].MAIN_CONTAINER_CLASS));
325
-
326
334
  if (mainContainer) {
327
335
  mainContainer.style.height = 'unset';
328
336
  }
329
337
  }
330
-
331
338
  if (keyPadElement) {
332
339
  keyPadElement.removeEventListener('touchstart', this.handleKeypadInteraction, true);
333
340
  keyPadElement.removeEventListener('mousedown', this.handleKeypadInteraction, true);
@@ -337,82 +344,77 @@ var KeyPad = /*#__PURE__*/function (_React$Component) {
337
344
  key: "render",
338
345
  value: function render() {
339
346
  var _this2 = this;
340
-
341
347
  var _this$props = this.props,
342
- classes = _this$props.classes,
343
- className = _this$props.className,
344
- baseSet = _this$props.baseSet,
345
- additionalKeys = _this$props.additionalKeys,
346
- layoutForKeyPad = _this$props.layoutForKeyPad,
347
- onFocus = _this$props.onFocus,
348
- mode = _this$props.mode;
348
+ className = _this$props.className,
349
+ baseSet = _this$props.baseSet,
350
+ additionalKeys = _this$props.additionalKeys,
351
+ layoutForKeyPad = _this$props.layoutForKeyPad,
352
+ onFocus = _this$props.onFocus,
353
+ mode = _this$props.mode;
349
354
  var noBaseSet = ['non-negative-integers', 'integers', 'decimals', 'fractions', 'item-authoring', 'language'];
350
355
  var keysWithoutBaseSet = noBaseSet.includes(mode);
351
- var allKeys = keysWithoutBaseSet ? this.flowKeys([], additionalKeys || []) : this.flowKeys(baseSet, additionalKeys || []); //, ...sortKeys(additionalKeys)];
352
-
356
+ var allKeys = keysWithoutBaseSet ? this.flowKeys([], additionalKeys || []) : this.flowKeys(baseSet, additionalKeys || []);
353
357
  var shift = allKeys.length % 5 ? 1 : 0;
354
-
355
358
  var style = _objectSpread({
356
359
  gridTemplateColumns: "repeat(".concat(Math.floor(allKeys.length / 5) + shift, ", minmax(min-content, 150px))")
357
360
  }, createCustomLayout(layoutForKeyPad));
358
-
359
- return /*#__PURE__*/_react["default"].createElement("div", {
361
+ return /*#__PURE__*/_react["default"].createElement(KeyPadContainer, {
360
362
  ref: this.keypadRef,
361
- className: (0, _classnames["default"])(classes.keys, className, classes[mode]),
363
+ className: [className, mode].filter(Boolean).join(' '),
362
364
  style: style,
363
365
  onFocus: onFocus
364
366
  }, allKeys.map(function (k, index) {
365
367
  var onClick = _this2.buttonClick.bind(_this2, k);
366
-
367
368
  if (!k) {
368
369
  return /*#__PURE__*/_react["default"].createElement("span", {
369
370
  key: "empty-".concat(index)
370
371
  });
371
372
  }
372
-
373
373
  var common = _objectSpread(_objectSpread({
374
374
  onClick: onClick,
375
- className: (0, _classnames["default"])(classes.labelButton, !keysWithoutBaseSet && classes[k.category], classes[k.extraClass], k.label === ',' && classes.comma, k.label === '.' && classes.dot),
376
375
  disabled: _this2.keyIsNotAllowed(k),
377
376
  key: "".concat(k.label || k.latex || k.command, "-").concat(index)
378
377
  }, k.actions || {}), k.extraProps || {});
379
-
380
378
  if (k.latex) {
381
- return /*#__PURE__*/_react["default"].createElement(LatexButton, (0, _extends2["default"])({
382
- latex: k.latex,
383
- key: index
384
- }, common, {
385
- className: classes.latexButton,
386
- ariaLabel: k.ariaLabel ? k.ariaLabel : k.name || k.label
379
+ return /*#__PURE__*/_react["default"].createElement(StyledLatexButtonWrapper, (0, _extends2["default"])({
380
+ key: common.key,
381
+ onClick: common.onClick,
382
+ disabled: common.disabled,
383
+ category: !keysWithoutBaseSet ? k.category : undefined,
384
+ "aria-label": k.ariaLabel ? k.ariaLabel : k.name || k.label
385
+ }, k.actions || {}, k.extraProps || {}), /*#__PURE__*/_react["default"].createElement(LatexButtonContent, {
386
+ latex: k.latex
387
387
  }));
388
388
  }
389
-
390
389
  if (k.label) {
391
- return /*#__PURE__*/_react["default"].createElement(_Button["default"], (0, _extends2["default"])({
392
- key: index
393
- }, common, {
394
- className: (0, _classnames["default"])(common.className, (0, _defineProperty2["default"])({}, classes.deleteButton, k.label === '⌫')),
390
+ return /*#__PURE__*/_react["default"].createElement(StyledButton, (0, _extends2["default"])({
391
+ key: common.key,
392
+ onClick: common.onClick,
393
+ disabled: common.disabled,
394
+ category: !keysWithoutBaseSet ? k.category : undefined,
395
+ isDelete: k.label === '⌫',
396
+ isComma: k.label === ',',
397
+ isDot: k.label === '.',
395
398
  "aria-label": k.ariaLabel ? k.ariaLabel : k.name || k.label
396
- }), k.label);
399
+ }, k.actions || {}, k.extraProps || {}), k.label);
397
400
  } else {
398
401
  var Icon = k.icon ? k.icon : 'div';
399
- return /*#__PURE__*/_react["default"].createElement(_IconButton["default"], (0, _extends2["default"])({
400
- tabIndex: '-1'
401
- }, common, {
402
- key: index
403
- }), /*#__PURE__*/_react["default"].createElement(Icon, {
404
- className: classes.icon
402
+ return /*#__PURE__*/_react["default"].createElement(StyledIconButton, (0, _extends2["default"])({
403
+ key: common.key,
404
+ tabIndex: '-1',
405
+ onClick: common.onClick,
406
+ disabled: common.disabled,
407
+ category: !keysWithoutBaseSet ? k.category : undefined,
408
+ size: "large"
409
+ }, k.actions || {}, k.extraProps || {}), /*#__PURE__*/_react["default"].createElement(Icon, {
410
+ className: "icon"
405
411
  }));
406
412
  }
407
413
  }));
408
414
  }
409
415
  }]);
410
- return KeyPad;
411
416
  }(_react["default"].Component);
412
-
413
- exports.KeyPad = KeyPad;
414
417
  (0, _defineProperty2["default"])(KeyPad, "propTypes", {
415
- classes: _propTypes["default"].object.isRequired,
416
418
  className: _propTypes["default"].string,
417
419
  controlledKeypadMode: _propTypes["default"].bool,
418
420
  baseSet: _propTypes["default"].array,
@@ -428,85 +430,5 @@ exports.KeyPad = KeyPad;
428
430
  baseSet: _keys.baseSet,
429
431
  noDecimal: false
430
432
  });
431
-
432
- var styles = function styles(theme) {
433
- return {
434
- keys: _objectSpread(_objectSpread({}, _commonMqStyles.commonMqKeyboardStyles), {}, {
435
- width: '100%',
436
- display: 'grid',
437
- gridTemplateRows: 'repeat(5, minmax(40px, 60px))',
438
- gridRowGap: '0px',
439
- gridColumnGap: '0px',
440
- gridAutoFlow: 'column'
441
- }),
442
- character: {
443
- textTransform: 'initial !important',
444
- gridTemplateRows: 'repeat(5, minmax(40px, 50px)) !important'
445
- },
446
- language: {
447
- gridTemplateRows: 'repeat(4, minmax(40px, 50px)) !important',
448
- '& *': {
449
- fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
450
- }
451
- },
452
- holder: {
453
- position: 'relative',
454
- width: '100%',
455
- height: '100%',
456
- backgroundColor: '#cef',
457
- borderRadius: 0,
458
- padding: "".concat(theme.spacing.unit, "px 0 ").concat(theme.spacing.unit, "px 0")
459
- },
460
- labelButton: {
461
- minWidth: 'auto',
462
- fontSize: '140% !important',
463
- backgroundColor: (0, _colorManipulator.lighten)(theme.palette.primary.light, 0.5),
464
- '&:hover': {
465
- backgroundColor: (0, _colorManipulator.lighten)(theme.palette.primary.light, 0.7)
466
- },
467
- borderRadius: 0
468
- },
469
- latexButton: {
470
- minWidth: 'auto',
471
- borderRadius: 0,
472
- backgroundColor: (0, _colorManipulator.lighten)(theme.palette.primary.light, 0.5),
473
- '&:hover': {
474
- backgroundColor: (0, _colorManipulator.lighten)(theme.palette.primary.light, 0.7)
475
- }
476
- },
477
- deleteButton: {
478
- '& > span': {
479
- fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'
480
- }
481
- },
482
- base: {},
483
- operators: {
484
- backgroundColor: (0, _colorManipulator.lighten)(theme.palette.secondary.light, 0.5),
485
- '&:hover': {
486
- backgroundColor: (0, _colorManipulator.lighten)(theme.palette.secondary.light, 0.7)
487
- }
488
- },
489
- comparison: {
490
- backgroundColor: (0, _colorManipulator.lighten)(_green["default"][500], 0.5),
491
- '&:hover': {
492
- backgroundColor: (0, _colorManipulator.lighten)(_green["default"][500], 0.7)
493
- }
494
- },
495
- comma: {
496
- fontSize: '200% !important',
497
- lineHeight: '100%'
498
- },
499
- dot: {
500
- fontSize: '200% !important',
501
- lineHeight: '100%'
502
- },
503
- icon: {
504
- height: '30px'
505
- }
506
- };
507
- };
508
-
509
- var _default = (0, _styles.withStyles)(styles)(KeyPad);
510
-
511
- exports["default"] = _default;
433
+ var _default = exports["default"] = KeyPad;
512
434
  //# sourceMappingURL=index.js.map