@pie-lib/math-input 6.6.1-next.42 → 6.6.1-next.437

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 (68) hide show
  1. package/CHANGELOG.json +75 -0
  2. package/CHANGELOG.md +95 -0
  3. package/lib/horizontal-keypad.js +33 -38
  4. package/lib/horizontal-keypad.js.map +1 -1
  5. package/lib/index.js +12 -7
  6. package/lib/index.js.map +1 -1
  7. package/lib/keypad/index.js +114 -68
  8. package/lib/keypad/index.js.map +1 -1
  9. package/lib/keypad/keys-layout.js +5 -1
  10. package/lib/keypad/keys-layout.js.map +1 -1
  11. package/lib/keys/basic-operators.js +1 -1
  12. package/lib/keys/basic-operators.js.map +1 -1
  13. package/lib/keys/chars.js +1 -1
  14. package/lib/keys/chars.js.map +1 -1
  15. package/lib/keys/comparison.js +7 -5
  16. package/lib/keys/comparison.js.map +1 -1
  17. package/lib/keys/constants.js +17 -1
  18. package/lib/keys/constants.js.map +1 -1
  19. package/lib/keys/digits.js +2 -2
  20. package/lib/keys/digits.js.map +1 -1
  21. package/lib/keys/edit.js.map +1 -1
  22. package/lib/keys/exponent.js +1 -1
  23. package/lib/keys/exponent.js.map +1 -1
  24. package/lib/keys/fractions.js +1 -1
  25. package/lib/keys/fractions.js.map +1 -1
  26. package/lib/keys/geometry.js +35 -7
  27. package/lib/keys/geometry.js.map +1 -1
  28. package/lib/keys/grades.js +122 -37
  29. package/lib/keys/grades.js.map +1 -1
  30. package/lib/keys/index.js +7 -3
  31. package/lib/keys/index.js.map +1 -1
  32. package/lib/keys/log.js +2 -2
  33. package/lib/keys/log.js.map +1 -1
  34. package/lib/keys/logic.js +1 -1
  35. package/lib/keys/logic.js.map +1 -1
  36. package/lib/keys/matrices.js +1 -1
  37. package/lib/keys/matrices.js.map +1 -1
  38. package/lib/keys/misc.js +1 -1
  39. package/lib/keys/misc.js.map +1 -1
  40. package/lib/keys/navigation.js.map +1 -1
  41. package/lib/keys/operators.js.map +1 -1
  42. package/lib/keys/statistics.js +8 -1
  43. package/lib/keys/statistics.js.map +1 -1
  44. package/lib/keys/sub-sup.js +1 -1
  45. package/lib/keys/sub-sup.js.map +1 -1
  46. package/lib/keys/trigonometry.js +1 -1
  47. package/lib/keys/trigonometry.js.map +1 -1
  48. package/lib/keys/utils.js +11 -17
  49. package/lib/keys/utils.js.map +1 -1
  50. package/lib/keys/vars.js +1 -1
  51. package/lib/keys/vars.js.map +1 -1
  52. package/lib/math-input.js +39 -47
  53. package/lib/math-input.js.map +1 -1
  54. package/lib/mq/custom-elements.js.map +1 -1
  55. package/lib/mq/index.js +2 -2
  56. package/lib/mq/index.js.map +1 -1
  57. package/lib/mq/input.js +30 -40
  58. package/lib/mq/input.js.map +1 -1
  59. package/lib/mq/static.js +26 -34
  60. package/lib/mq/static.js.map +1 -1
  61. package/package.json +2 -2
  62. package/src/horizontal-keypad.jsx +4 -1
  63. package/src/keypad/index.jsx +91 -8
  64. package/src/keys/constants.js +16 -0
  65. package/src/keys/geometry.js +26 -2
  66. package/src/keys/grades.js +198 -84
  67. package/src/keys/log.js +1 -1
  68. package/src/keys/statistics.js +7 -0
package/lib/mq/input.js CHANGED
@@ -1,45 +1,43 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports["default"] = exports.Input = void 0;
7
9
 
8
- var _react = _interopRequireDefault(require("react"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
11
 
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
13
 
12
- var _styles = require("@material-ui/core/styles");
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
15
 
14
- var _debug = _interopRequireDefault(require("debug"));
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
17
 
16
- var _classnames = _interopRequireDefault(require("classnames"));
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
19
 
18
- var _customElements = require("./custom-elements");
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
21
 
20
- var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
21
-
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
-
24
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
23
 
26
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
24
+ var _react = _interopRequireDefault(require("react"));
27
25
 
28
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
26
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
27
 
30
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
28
+ var _styles = require("@material-ui/core/styles");
31
29
 
32
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
30
+ var _debug = _interopRequireDefault(require("debug"));
33
31
 
34
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
32
+ var _classnames = _interopRequireDefault(require("classnames"));
35
33
 
36
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
34
+ var _customElements = require("./custom-elements");
37
35
 
38
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
36
+ var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
39
37
 
40
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
38
+ 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); }; }
41
39
 
42
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
40
+ 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; } }
43
41
 
44
42
  var MQ;
45
43
 
@@ -56,25 +54,22 @@ var log = (0, _debug["default"])('math-input:mq:input');
56
54
  * Wrapper for MathQuill MQ.MathField.
57
55
  */
58
56
 
59
- var Input =
60
- /*#__PURE__*/
61
- function (_React$Component) {
62
- _inherits(Input, _React$Component);
57
+ var Input = /*#__PURE__*/function (_React$Component) {
58
+ (0, _inherits2["default"])(Input, _React$Component);
63
59
 
64
- function Input() {
65
- var _getPrototypeOf2;
60
+ var _super = _createSuper(Input);
66
61
 
62
+ function Input() {
67
63
  var _this;
68
64
 
69
- _classCallCheck(this, Input);
65
+ (0, _classCallCheck2["default"])(this, Input);
70
66
 
71
67
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
72
68
  args[_key] = arguments[_key];
73
69
  }
74
70
 
75
- _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Input)).call.apply(_getPrototypeOf2, [this].concat(args)));
76
-
77
- _defineProperty(_assertThisInitialized(_this), "onInputEdit", function () {
71
+ _this = _super.call.apply(_super, [this].concat(args));
72
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onInputEdit", function () {
78
73
  log('[onInputEdit] ...');
79
74
  var onChange = _this.props.onChange;
80
75
 
@@ -86,14 +81,12 @@ function (_React$Component) {
86
81
  onChange(_this.mathField.latex());
87
82
  }
88
83
  });
89
-
90
- _defineProperty(_assertThisInitialized(_this), "refresh", function () {
84
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "refresh", function () {
91
85
  _this.blur();
92
86
 
93
87
  _this.focus();
94
88
  });
95
-
96
- _defineProperty(_assertThisInitialized(_this), "onKeyPress", function (event) {
89
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onKeyPress", function (event) {
97
90
  var keys = Object.keys(_this.mathField.__controller.options);
98
91
 
99
92
  if (keys.indexOf('ignoreNextMousedown') < 0) {
@@ -112,11 +105,10 @@ function (_React$Component) {
112
105
  _this.onInputEdit();
113
106
  }
114
107
  });
115
-
116
108
  return _this;
117
109
  }
118
110
 
119
- _createClass(Input, [{
111
+ (0, _createClass2["default"])(Input, [{
120
112
  key: "componentDidMount",
121
113
  value: function componentDidMount() {
122
114
  if (!MQ) {
@@ -217,7 +209,7 @@ function (_React$Component) {
217
209
  onBlur = _this$props.onBlur,
218
210
  classes = _this$props.classes,
219
211
  className = _this$props.className;
220
- return _react["default"].createElement("span", {
212
+ return /*#__PURE__*/_react["default"].createElement("span", {
221
213
  className: (0, _classnames["default"])(classes.input, className),
222
214
  onKeyPress: this.onKeyPress,
223
215
  onClick: onClick,
@@ -229,13 +221,11 @@ function (_React$Component) {
229
221
  });
230
222
  }
231
223
  }]);
232
-
233
224
  return Input;
234
225
  }(_react["default"].Component);
235
226
 
236
227
  exports.Input = Input;
237
-
238
- _defineProperty(Input, "propTypes", {
228
+ (0, _defineProperty2["default"])(Input, "propTypes", {
239
229
  className: _propTypes["default"].string,
240
230
  classes: _propTypes["default"].object.isRequired,
241
231
  onClick: _propTypes["default"].func,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mq/input.jsx"],"names":["MQ","window","MathQuill","getInterface","registerEmbed","log","Input","onChange","props","mathField","latex","blur","focus","event","keys","Object","__controller","options","indexOf","refresh","charCode","write","onInputEdit","Error","MathField","input","handlers","edit","bind","updateLatex","v","Array","isArray","forEach","vv","cmd","keystroke","nextProps","onClick","onFocus","onBlur","classes","className","onKeyPress","r","React","Component","PropTypes","string","object","isRequired","func","styles"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport classNames from 'classnames';\nimport { registerLineBreak } from './custom-elements';\nimport MathQuill from '@pie-framework/mathquill';\n\nlet MQ;\nif (typeof window !== 'undefined') {\n MQ = MathQuill.getInterface(2);\n\n if (MQ && MQ.registerEmbed) {\n registerLineBreak(MQ);\n }\n}\n\nconst log = debug('math-input:mq:input');\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport class Input extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n onClick: PropTypes.func,\n onChange: PropTypes.func,\n latex: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n };\n\n componentDidMount() {\n if (!MQ) {\n throw new Error('MQ is not defined - but component has mounted?');\n }\n\n this.mathField = MQ.MathField(this.input, {\n handlers: {\n edit: this.onInputEdit.bind(this)\n }\n });\n\n this.updateLatex();\n }\n\n componentDidUpdate() {\n this.updateLatex();\n }\n\n updateLatex() {\n if (!this.mathField) {\n return;\n }\n const { latex } = this.props;\n if (latex) {\n this.mathField.latex(latex);\n }\n }\n\n clear() {\n this.mathField.latex('');\n return '';\n }\n\n blur() {\n log('blur mathfield');\n this.mathField.blur();\n }\n\n focus() {\n log('focus mathfield...');\n this.mathField.focus();\n }\n\n command(v) {\n log('command: ', v);\n if (Array.isArray(v)) {\n v.forEach(vv => {\n this.mathField.cmd(vv);\n });\n } else {\n this.mathField.cmd(v);\n }\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n keystroke(v) {\n this.mathField.keystroke(v);\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n write(v) {\n log('write: ', v);\n this.mathField.write(v);\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n onInputEdit = () => {\n log('[onInputEdit] ...');\n const { onChange } = this.props;\n if (!this.mathField) {\n return;\n }\n\n if (onChange) {\n onChange(this.mathField.latex());\n }\n };\n\n refresh = () => {\n this.blur();\n this.focus();\n };\n\n onKeyPress = event => {\n const keys = Object.keys(this.mathField.__controller.options);\n\n if (keys.indexOf('ignoreNextMousedown') < 0) {\n // It seems like the controller has the above handler as an option\n // when all the right events are set and everything works fine\n // this seems to work in all cases\n this.refresh();\n }\n\n if (event.charCode === 13) {\n // if enter's pressed, we're going for a custom embedded element that'll\n // have a block display (empty div) - for a hacked line break using ccs\n // all because mathquill doesn't support a line break\n this.write('\\\\embed{newLine}[]');\n this.onInputEdit();\n }\n };\n\n shouldComponentUpdate(nextProps) {\n log('next: ', nextProps.latex);\n log('current: ', this.mathField.latex());\n return nextProps.latex !== this.mathField.latex();\n }\n\n render() {\n const { onClick, onFocus, onBlur, classes, className } = this.props;\n\n return (\n <span\n className={classNames(classes.input, className)}\n onKeyPress={this.onKeyPress}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n ref={r => (this.input = r)}\n />\n );\n }\n}\n\nconst styles = () => ({});\n\nexport default withStyles(styles)(Input);\n"],"file":"input.js"}
1
+ {"version":3,"file":"input.js","names":["MQ","window","MathQuill","getInterface","registerEmbed","registerLineBreak","log","debug","Input","onChange","props","mathField","latex","blur","focus","event","keys","Object","__controller","options","indexOf","refresh","charCode","write","onInputEdit","Error","MathField","input","handlers","edit","bind","updateLatex","v","Array","isArray","forEach","vv","cmd","keystroke","nextProps","onClick","onFocus","onBlur","classes","className","classNames","onKeyPress","r","React","Component","PropTypes","string","object","isRequired","func","styles","withStyles"],"sources":["../../src/mq/input.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport classNames from 'classnames';\nimport { registerLineBreak } from './custom-elements';\nimport MathQuill from '@pie-framework/mathquill';\n\nlet MQ;\nif (typeof window !== 'undefined') {\n MQ = MathQuill.getInterface(2);\n\n if (MQ && MQ.registerEmbed) {\n registerLineBreak(MQ);\n }\n}\n\nconst log = debug('math-input:mq:input');\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport class Input extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n onClick: PropTypes.func,\n onChange: PropTypes.func,\n latex: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n };\n\n componentDidMount() {\n if (!MQ) {\n throw new Error('MQ is not defined - but component has mounted?');\n }\n\n this.mathField = MQ.MathField(this.input, {\n handlers: {\n edit: this.onInputEdit.bind(this)\n }\n });\n\n this.updateLatex();\n }\n\n componentDidUpdate() {\n this.updateLatex();\n }\n\n updateLatex() {\n if (!this.mathField) {\n return;\n }\n const { latex } = this.props;\n if (latex) {\n this.mathField.latex(latex);\n }\n }\n\n clear() {\n this.mathField.latex('');\n return '';\n }\n\n blur() {\n log('blur mathfield');\n this.mathField.blur();\n }\n\n focus() {\n log('focus mathfield...');\n this.mathField.focus();\n }\n\n command(v) {\n log('command: ', v);\n if (Array.isArray(v)) {\n v.forEach(vv => {\n this.mathField.cmd(vv);\n });\n } else {\n this.mathField.cmd(v);\n }\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n keystroke(v) {\n this.mathField.keystroke(v);\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n write(v) {\n log('write: ', v);\n this.mathField.write(v);\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n onInputEdit = () => {\n log('[onInputEdit] ...');\n const { onChange } = this.props;\n if (!this.mathField) {\n return;\n }\n\n if (onChange) {\n onChange(this.mathField.latex());\n }\n };\n\n refresh = () => {\n this.blur();\n this.focus();\n };\n\n onKeyPress = event => {\n const keys = Object.keys(this.mathField.__controller.options);\n\n if (keys.indexOf('ignoreNextMousedown') < 0) {\n // It seems like the controller has the above handler as an option\n // when all the right events are set and everything works fine\n // this seems to work in all cases\n this.refresh();\n }\n\n if (event.charCode === 13) {\n // if enter's pressed, we're going for a custom embedded element that'll\n // have a block display (empty div) - for a hacked line break using ccs\n // all because mathquill doesn't support a line break\n this.write('\\\\embed{newLine}[]');\n this.onInputEdit();\n }\n };\n\n shouldComponentUpdate(nextProps) {\n log('next: ', nextProps.latex);\n log('current: ', this.mathField.latex());\n return nextProps.latex !== this.mathField.latex();\n }\n\n render() {\n const { onClick, onFocus, onBlur, classes, className } = this.props;\n\n return (\n <span\n className={classNames(classes.input, className)}\n onKeyPress={this.onKeyPress}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n ref={r => (this.input = r)}\n />\n );\n }\n}\n\nconst styles = () => ({});\n\nexport default withStyles(styles)(Input);\n"],"mappings":"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"}
package/lib/mq/static.js CHANGED
@@ -1,41 +1,39 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports["default"] = void 0;
7
9
 
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _debug = _interopRequireDefault(require("debug"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
11
 
14
- var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
13
 
16
- var _index = require("../index");
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
15
 
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
17
 
20
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
19
 
22
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
21
 
24
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
23
 
26
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
24
+ var _propTypes = _interopRequireDefault(require("prop-types"));
27
25
 
28
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
26
+ var _react = _interopRequireDefault(require("react"));
29
27
 
30
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
28
+ var _debug = _interopRequireDefault(require("debug"));
31
29
 
32
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
30
+ var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
33
31
 
34
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
32
+ var _index = require("../index");
35
33
 
36
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
34
+ 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); }; }
37
35
 
38
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
36
+ 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; } }
39
37
 
40
38
  var MQ;
41
39
 
@@ -56,25 +54,22 @@ function stripSpaces() {
56
54
  */
57
55
 
58
56
 
59
- var Static =
60
- /*#__PURE__*/
61
- function (_React$Component) {
62
- _inherits(Static, _React$Component);
57
+ var Static = /*#__PURE__*/function (_React$Component) {
58
+ (0, _inherits2["default"])(Static, _React$Component);
63
59
 
64
- function Static() {
65
- var _getPrototypeOf2;
60
+ var _super = _createSuper(Static);
66
61
 
62
+ function Static() {
67
63
  var _this;
68
64
 
69
- _classCallCheck(this, Static);
65
+ (0, _classCallCheck2["default"])(this, Static);
70
66
 
71
67
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
72
68
  args[_key] = arguments[_key];
73
69
  }
74
70
 
75
- _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Static)).call.apply(_getPrototypeOf2, [this].concat(args)));
76
-
77
- _defineProperty(_assertThisInitialized(_this), "onFocus", function (e) {
71
+ _this = _super.call.apply(_super, [this].concat(args));
72
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onFocus", function (e) {
78
73
  try {
79
74
  var rootBlock = e.target.parentElement.nextSibling;
80
75
  var id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);
@@ -102,11 +97,10 @@ function (_React$Component) {
102
97
  console.error('error finding root block', err.message);
103
98
  }
104
99
  });
105
-
106
100
  return _this;
107
101
  }
108
102
 
109
- _createClass(Static, [{
103
+ (0, _createClass2["default"])(Static, [{
110
104
  key: "componentDidMount",
111
105
  value: function componentDidMount() {
112
106
  this.update();
@@ -193,7 +187,7 @@ function (_React$Component) {
193
187
  var _this$props = this.props,
194
188
  onBlur = _this$props.onBlur,
195
189
  className = _this$props.className;
196
- return _react["default"].createElement("span", {
190
+ return /*#__PURE__*/_react["default"].createElement("span", {
197
191
  className: className,
198
192
  onFocus: this.onFocus,
199
193
  onBlur: onBlur,
@@ -203,13 +197,11 @@ function (_React$Component) {
203
197
  });
204
198
  }
205
199
  }]);
206
-
207
200
  return Static;
208
201
  }(_react["default"].Component);
209
202
 
210
203
  exports["default"] = Static;
211
-
212
- _defineProperty(Static, "propTypes", {
204
+ (0, _defineProperty2["default"])(Static, "propTypes", {
213
205
  latex: _propTypes["default"].string.isRequired,
214
206
  onFocus: _propTypes["default"].func,
215
207
  onBlur: _propTypes["default"].func,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mq/static.jsx"],"names":["MQ","window","MathQuill","getInterface","log","REGEX","WHITESPACE_REGEX","stripSpaces","string","replace","Static","e","rootBlock","target","parentElement","nextSibling","id","parseInt","getAttribute","innerField","mathField","innerFields","find","f","name","props","getFieldName","setInput","onSubFieldFocus","err","console","error","message","update","field","onSubFieldChange","latex","Error","StaticMath","input","handlers","edit","onInputEdit","bind","parseLatex","blur","focus","nextProps","parsedLatex","stripped","newFieldCount","match","length","out","trim","Object","keys","warn","onBlur","className","onFocus","r","React","Component","PropTypes","isRequired","func"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport MathQuill from '@pie-framework/mathquill';\nimport { updateSpans } from '../index';\n\nlet MQ;\nif (typeof window !== 'undefined') {\n MQ = MathQuill.getInterface(2);\n}\n\nconst log = debug('pie-lib:math-input:mq:static');\nconst REGEX = /\\\\MathQuillMathField\\[r\\d*\\]\\{(.*?)\\}/g;\nconst WHITESPACE_REGEX = / /g;\n\nfunction stripSpaces(string = '') {\n return string.replace(WHITESPACE_REGEX, '');\n}\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport default class Static extends React.Component {\n static propTypes = {\n latex: PropTypes.string.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n className: PropTypes.string,\n getFieldName: PropTypes.func,\n onSubFieldChange: PropTypes.func,\n onSubFieldFocus: PropTypes.func,\n setInput: PropTypes.func\n };\n\n componentDidMount() {\n this.update();\n updateSpans();\n }\n\n componentDidUpdate() {\n this.update();\n updateSpans();\n }\n\n onInputEdit(field) {\n if (!this.mathField) {\n return;\n }\n const name = this.props.getFieldName(field, this.mathField.innerFields);\n if (this.props.onSubFieldChange) {\n this.props.onSubFieldChange(name, field.latex());\n }\n }\n\n update() {\n if (!MQ) {\n throw new Error('MQ is not defined - but component has mounted?');\n }\n // this.input.innerHTML = this.props.latex;\n if (!this.mathField) {\n this.mathField = MQ.StaticMath(this.input, {\n handlers: {\n edit: this.onInputEdit.bind(this)\n }\n });\n }\n\n try {\n this.mathField.parseLatex(this.props.latex);\n this.mathField.latex(this.props.latex);\n } catch (e) {\n // default latex if received has errors\n this.mathField.latex('\\\\MathQuillMathField[r1]{}');\n }\n }\n\n blur() {\n log('blur mathfield');\n this.mathField.blur();\n }\n\n focus() {\n log('focus mathfield...');\n this.mathField.focus();\n }\n\n shouldComponentUpdate(nextProps) {\n try {\n const parsedLatex = this.mathField.parseLatex(nextProps.latex);\n const stripped = stripSpaces(parsedLatex);\n const newFieldCount = (nextProps.latex.match(REGEX) || []).length;\n\n const out =\n stripped !== stripSpaces(this.mathField.latex().trim()) ||\n newFieldCount !== Object.keys(this.mathField.innerFields).length / 2;\n\n log('[shouldComponentUpdate] ', out);\n return out;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Error parsing latex:', e.message, 'skip update');\n // eslint-disable-next-line no-console\n console.warn(e);\n return false;\n }\n }\n\n onFocus = e => {\n try {\n let rootBlock = e.target.parentElement.nextSibling;\n let id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);\n\n if (!id) {\n rootBlock = rootBlock.parentElement;\n id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);\n }\n\n const innerField = this.mathField.innerFields.find(f => f.id === id);\n\n if (innerField) {\n const name = this.props.getFieldName(innerField, this.mathField.innerFields);\n if (this.props.setInput) {\n this.props.setInput(innerField);\n }\n this.props.onSubFieldFocus(name, innerField);\n }\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('error finding root block', err.message);\n }\n };\n\n render() {\n const { onBlur, className } = this.props;\n\n return (\n <span\n className={className}\n onFocus={this.onFocus}\n onBlur={onBlur}\n ref={r => (this.input = r)}\n />\n );\n }\n}\n"],"file":"static.js"}
1
+ {"version":3,"file":"static.js","names":["MQ","window","MathQuill","getInterface","log","debug","REGEX","WHITESPACE_REGEX","stripSpaces","string","replace","Static","e","rootBlock","target","parentElement","nextSibling","id","parseInt","getAttribute","innerField","mathField","innerFields","find","f","name","props","getFieldName","setInput","onSubFieldFocus","err","console","error","message","update","updateSpans","field","onSubFieldChange","latex","Error","StaticMath","input","handlers","edit","onInputEdit","bind","parseLatex","blur","focus","nextProps","parsedLatex","stripped","newFieldCount","match","length","out","trim","Object","keys","warn","onBlur","className","onFocus","r","React","Component","PropTypes","isRequired","func"],"sources":["../../src/mq/static.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport MathQuill from '@pie-framework/mathquill';\nimport { updateSpans } from '../index';\n\nlet MQ;\nif (typeof window !== 'undefined') {\n MQ = MathQuill.getInterface(2);\n}\n\nconst log = debug('pie-lib:math-input:mq:static');\nconst REGEX = /\\\\MathQuillMathField\\[r\\d*\\]\\{(.*?)\\}/g;\nconst WHITESPACE_REGEX = / /g;\n\nfunction stripSpaces(string = '') {\n return string.replace(WHITESPACE_REGEX, '');\n}\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport default class Static extends React.Component {\n static propTypes = {\n latex: PropTypes.string.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n className: PropTypes.string,\n getFieldName: PropTypes.func,\n onSubFieldChange: PropTypes.func,\n onSubFieldFocus: PropTypes.func,\n setInput: PropTypes.func\n };\n\n componentDidMount() {\n this.update();\n updateSpans();\n }\n\n componentDidUpdate() {\n this.update();\n updateSpans();\n }\n\n onInputEdit(field) {\n if (!this.mathField) {\n return;\n }\n const name = this.props.getFieldName(field, this.mathField.innerFields);\n if (this.props.onSubFieldChange) {\n this.props.onSubFieldChange(name, field.latex());\n }\n }\n\n update() {\n if (!MQ) {\n throw new Error('MQ is not defined - but component has mounted?');\n }\n // this.input.innerHTML = this.props.latex;\n if (!this.mathField) {\n this.mathField = MQ.StaticMath(this.input, {\n handlers: {\n edit: this.onInputEdit.bind(this)\n }\n });\n }\n\n try {\n this.mathField.parseLatex(this.props.latex);\n this.mathField.latex(this.props.latex);\n } catch (e) {\n // default latex if received has errors\n this.mathField.latex('\\\\MathQuillMathField[r1]{}');\n }\n }\n\n blur() {\n log('blur mathfield');\n this.mathField.blur();\n }\n\n focus() {\n log('focus mathfield...');\n this.mathField.focus();\n }\n\n shouldComponentUpdate(nextProps) {\n try {\n const parsedLatex = this.mathField.parseLatex(nextProps.latex);\n const stripped = stripSpaces(parsedLatex);\n const newFieldCount = (nextProps.latex.match(REGEX) || []).length;\n\n const out =\n stripped !== stripSpaces(this.mathField.latex().trim()) ||\n newFieldCount !== Object.keys(this.mathField.innerFields).length / 2;\n\n log('[shouldComponentUpdate] ', out);\n return out;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Error parsing latex:', e.message, 'skip update');\n // eslint-disable-next-line no-console\n console.warn(e);\n return false;\n }\n }\n\n onFocus = e => {\n try {\n let rootBlock = e.target.parentElement.nextSibling;\n let id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);\n\n if (!id) {\n rootBlock = rootBlock.parentElement;\n id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);\n }\n\n const innerField = this.mathField.innerFields.find(f => f.id === id);\n\n if (innerField) {\n const name = this.props.getFieldName(innerField, this.mathField.innerFields);\n if (this.props.setInput) {\n this.props.setInput(innerField);\n }\n this.props.onSubFieldFocus(name, innerField);\n }\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('error finding root block', err.message);\n }\n };\n\n render() {\n const { onBlur, className } = this.props;\n\n return (\n <span\n className={className}\n onFocus={this.onFocus}\n onBlur={onBlur}\n ref={r => (this.input = r)}\n />\n );\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "6.6.1-next.42+985c4382",
6
+ "version": "6.6.1-next.437+7133506c",
7
7
  "main": "lib/index.js",
8
8
  "module": "src/index.jsx",
9
9
  "dependencies": {
@@ -22,5 +22,5 @@
22
22
  "react-dom": "^16.9.0"
23
23
  },
24
24
  "scripts": {},
25
- "gitHead": "985c438271eab63669ced70263c7263e5be7cbd7"
25
+ "gitHead": "7133506c26c247c6be91245284e61ccd14789d4f"
26
26
  }
@@ -18,6 +18,7 @@ export default class HorizontalKeypad extends React.Component {
18
18
  static propTypes = {
19
19
  className: PropTypes.string,
20
20
  mode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
21
+ layoutForKeyPad: PropTypes.object,
21
22
  onClick: PropTypes.func.isRequired,
22
23
  onFocus: PropTypes.func,
23
24
  noDecimal: PropTypes.bool,
@@ -37,7 +38,7 @@ export default class HorizontalKeypad extends React.Component {
37
38
  };
38
39
 
39
40
  render() {
40
- const { mode, onFocus, noDecimal, className, additionalKeys } = this.props;
41
+ const { mode, onFocus, noDecimal, className, additionalKeys, layoutForKeyPad } = this.props;
41
42
  const normalizedKeys = normalizeAdditionalKeys(additionalKeys);
42
43
 
43
44
  return (
@@ -45,8 +46,10 @@ export default class HorizontalKeypad extends React.Component {
45
46
  className={className}
46
47
  onFocus={onFocus}
47
48
  noDecimal={noDecimal}
49
+ layoutForKeyPad={layoutForKeyPad}
48
50
  additionalKeys={extendKeySet(keysForGrade(mode), normalizedKeys)}
49
51
  onPress={this.keypadPress}
52
+ mode={mode}
50
53
  />
51
54
  );
52
55
  }
@@ -103,11 +103,29 @@ const LatexButton = withStyles(theme => ({
103
103
  paddingTop: '1.5px !important'
104
104
  },
105
105
  '& .mq-parallelogram': {
106
- lineHeight: 0.8
106
+ lineHeight: 0.85
107
+ },
108
+ '& .mq-overarc': {
109
+ borderTop: '2px solid black !important',
110
+ '& .mq-overline-inner': {
111
+ borderTop: 'none !important',
112
+ paddingTop: '0 !important'
113
+ }
107
114
  }
108
115
  },
109
116
  parallelButton: {
110
117
  fontStyle: 'italic'
118
+ },
119
+ leftRightArrowButton: {
120
+ '& .mq-overarrow.mq-arrow-both': {
121
+ '& .mq-overline-inner': {
122
+ borderTop: 'none !important',
123
+ paddingTop: '0 !important'
124
+ },
125
+ '&:after': {
126
+ top: '-1.64em !important'
127
+ }
128
+ }
111
129
  }
112
130
  }))(props => {
113
131
  let buttonClass;
@@ -118,9 +136,29 @@ const LatexButton = withStyles(theme => ({
118
136
  props.mqClassName,
119
137
  props.classes.parallelButton
120
138
  );
139
+ } else if (props.latex === '\\overleftrightarrow{\\overline{}}') {
140
+ buttonClass = classNames(
141
+ props.classes.latexButton,
142
+ props.mqClassName,
143
+ props.classes.leftRightArrowButton
144
+ );
121
145
  } else {
122
146
  buttonClass = classNames(props.classes.latexButton, props.mqClassName);
123
147
  }
148
+
149
+ try {
150
+ const MQ = MathQuill.getInterface(2);
151
+ const span = document.createElement('span');
152
+ span.innerHTML = '';
153
+ const mathField = MQ.StaticMath(span);
154
+
155
+ mathField.parseLatex(props.latex);
156
+ mathField.latex(props.latex);
157
+ } catch (e) {
158
+ // received latex has errors - do not create button
159
+ return <></>;
160
+ }
161
+
124
162
  return (
125
163
  <Button className={classNames(props.classes.root, props.className)} onClick={props.onClick}>
126
164
  <mq.Static className={buttonClass} latex={props.latex} />
@@ -128,15 +166,29 @@ const LatexButton = withStyles(theme => ({
128
166
  );
129
167
  });
130
168
 
169
+ const createCustomLayout = layoutObj => {
170
+ if (layoutObj) {
171
+ return {
172
+ gridTemplateColumns: `repeat(${layoutObj.columns}, minmax(min-content, 150px))`,
173
+ gridTemplateRows: `repeat(${layoutObj.rows}, minmax(40px, 60px))`,
174
+ gridAutoFlow: 'initial'
175
+ };
176
+ }
177
+
178
+ return {};
179
+ };
180
+
131
181
  export class KeyPad extends React.Component {
132
182
  static propTypes = {
133
183
  classes: PropTypes.object.isRequired,
134
184
  className: PropTypes.string,
135
185
  baseSet: PropTypes.array,
136
186
  additionalKeys: PropTypes.array,
187
+ layoutForKeyPad: PropTypes.object,
137
188
  onPress: PropTypes.func.isRequired,
138
189
  onFocus: PropTypes.func,
139
- noDecimal: PropTypes.bool
190
+ noDecimal: PropTypes.bool,
191
+ mode: PropTypes.string
140
192
  };
141
193
  static defaultProps = {
142
194
  baseSet: baseSet,
@@ -168,17 +220,42 @@ export class KeyPad extends React.Component {
168
220
  };
169
221
 
170
222
  render() {
171
- const { classes, className, baseSet, additionalKeys, onFocus } = this.props;
223
+ const {
224
+ classes,
225
+ className,
226
+ baseSet,
227
+ additionalKeys,
228
+ layoutForKeyPad,
229
+ onFocus,
230
+ mode
231
+ } = this.props;
172
232
 
173
- const allKeys = this.flowKeys(baseSet, additionalKeys || []); //, ...sortKeys(additionalKeys)];
233
+ const noBaseSet = [
234
+ 'non-negative-integers',
235
+ 'integers',
236
+ 'decimals',
237
+ 'fractions',
238
+ 'item-authoring',
239
+ 'language'
240
+ ];
241
+
242
+ const keysWithoutBaseSet = noBaseSet.includes(mode);
243
+ const allKeys = keysWithoutBaseSet
244
+ ? this.flowKeys([], additionalKeys || [])
245
+ : this.flowKeys(baseSet, additionalKeys || []); //, ...sortKeys(additionalKeys)];
174
246
 
175
247
  const shift = allKeys.length % 5 ? 1 : 0;
176
248
  const style = {
177
249
  gridTemplateColumns: `repeat(${Math.floor(allKeys.length / 5) +
178
- shift}, minmax(min-content, 150px))`
250
+ shift}, minmax(min-content, 150px))`,
251
+ ...createCustomLayout(layoutForKeyPad)
179
252
  };
180
253
  return (
181
- <div className={classNames(classes.keys, className)} style={style} onFocus={onFocus}>
254
+ <div
255
+ className={classNames(classes.keys, className, classes[mode])}
256
+ style={style}
257
+ onFocus={onFocus}
258
+ >
182
259
  {allKeys.map((k, index) => {
183
260
  const onClick = this.buttonClick.bind(this, k);
184
261
 
@@ -190,12 +267,15 @@ export class KeyPad extends React.Component {
190
267
  onClick,
191
268
  className: classNames(
192
269
  classes.labelButton,
193
- classes[k.category],
270
+ !keysWithoutBaseSet && classes[k.category],
271
+ classes[k.extraClass],
194
272
  k.label === ',' && classes.comma,
195
273
  k.label === '.' && classes.dot
196
274
  ),
197
275
  disabled: this.keyIsNotAllowed(k),
198
- key: `${k.label || k.latex || k.command}-${index}`
276
+ key: `${k.label || k.latex || k.command}-${index}`,
277
+ ...(k.actions || {}),
278
+ ...(k.extraProps || {})
199
279
  };
200
280
 
201
281
  if (k.latex) {
@@ -231,6 +311,9 @@ const styles = theme => ({
231
311
  gridColumnGap: '0px',
232
312
  gridAutoFlow: 'column'
233
313
  },
314
+ character: {
315
+ textTransform: 'initial !important'
316
+ },
234
317
  holder: {
235
318
  position: 'relative',
236
319
  width: '100%',
@@ -17,3 +17,19 @@ export const eulers = set({
17
17
  command: 'e',
18
18
  category: 'constants'
19
19
  });
20
+
21
+ export const infinity = set({
22
+ name: 'Infinity',
23
+ label: '\\infty',
24
+ latex: '\\infty',
25
+ command: '\\infty',
26
+ category: 'constants'
27
+ });
28
+
29
+ export const halfInfinity = set({
30
+ name: 'Half Infinity',
31
+ label: '\\propto',
32
+ latex: '\\propto',
33
+ command: '\\propto',
34
+ category: 'constants'
35
+ });