@pie-lib/math-input 6.17.0 → 6.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -10
- package/lib/horizontal-keypad.js +124 -0
- package/lib/horizontal-keypad.js.map +1 -0
- package/lib/index.js +76 -0
- package/lib/index.js.map +1 -0
- package/lib/keypad/index.js +512 -0
- package/lib/keypad/index.js.map +1 -0
- package/lib/keypad/keys-layout.js +34 -0
- package/lib/keypad/keys-layout.js.map +1 -0
- package/lib/keys/basic-operators.js +41 -0
- package/lib/keys/basic-operators.js.map +1 -0
- package/lib/keys/chars.js +17 -0
- package/lib/keys/chars.js.map +1 -0
- package/lib/keys/comparison.js +49 -0
- package/lib/keys/comparison.js.map +1 -0
- package/lib/keys/constants.js +43 -0
- package/lib/keys/constants.js.map +1 -0
- package/lib/keys/digits.js +53 -0
- package/lib/keys/digits.js.map +1 -0
- package/lib/keys/edit.js +17 -0
- package/lib/keys/edit.js.map +1 -0
- package/lib/keys/exponent.js +36 -0
- package/lib/keys/exponent.js.map +1 -0
- package/lib/keys/fractions.js +34 -0
- package/lib/keys/fractions.js.map +1 -0
- package/lib/keys/geometry.js +169 -0
- package/lib/keys/geometry.js.map +1 -0
- package/lib/keys/grades.js +295 -0
- package/lib/keys/grades.js.map +1 -0
- package/lib/keys/index.js +54 -0
- package/lib/keys/index.js.map +1 -0
- package/lib/keys/log.js +32 -0
- package/lib/keys/log.js.map +1 -0
- package/lib/keys/logic.js +23 -0
- package/lib/keys/logic.js.map +1 -0
- package/lib/keys/matrices.js +23 -0
- package/lib/keys/matrices.js.map +1 -0
- package/lib/keys/misc.js +74 -0
- package/lib/keys/misc.js.map +1 -0
- package/lib/keys/navigation.js +25 -0
- package/lib/keys/navigation.js.map +1 -0
- package/lib/keys/operators.js +18 -0
- package/lib/keys/operators.js.map +1 -0
- package/lib/keys/statistics.js +47 -0
- package/lib/keys/statistics.js.map +1 -0
- package/lib/keys/sub-sup.js +23 -0
- package/lib/keys/sub-sup.js.map +1 -0
- package/lib/keys/trigonometry.js +53 -0
- package/lib/keys/trigonometry.js.map +1 -0
- package/lib/keys/utils.js +120 -0
- package/lib/keys/utils.js.map +1 -0
- package/lib/keys/vars.js +29 -0
- package/lib/keys/vars.js.map +1 -0
- package/lib/math-input.js +192 -0
- package/lib/math-input.js.map +1 -0
- package/lib/mq/common-mq-styles.js +110 -0
- package/lib/mq/common-mq-styles.js.map +1 -0
- package/lib/mq/custom-elements.js +23 -0
- package/lib/mq/custom-elements.js.map +1 -0
- package/lib/mq/index.js +32 -0
- package/lib/mq/index.js.map +1 -0
- package/lib/mq/input.js +247 -0
- package/lib/mq/input.js.map +1 -0
- package/lib/mq/static.js +356 -0
- package/lib/mq/static.js.map +1 -0
- package/lib/shared/constants.js +16 -0
- package/lib/updateSpans.js +23 -0
- package/lib/updateSpans.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/mq/custom-elements.js"],"names":["registerLineBreak","MQ","registerEmbed","htmlString","text","latex"],"mappings":";;;;;;;AAAA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,CAASC,EAAT,EAAa;AACrCA,EAAAA,EAAE,CAACC,aAAH,CAAiB,SAAjB,EAA4B,YAAM;AAChC,WAAO;AACLC,MAAAA,UAAU,EAAE,6BADP;AAELC,MAAAA,IAAI,EAAE;AAAA,eAAM,UAAN;AAAA,OAFD;AAGLC,MAAAA,KAAK,EAAE;AAAA,eAAM,oBAAN;AAAA;AAHF,KAAP;AAKD,GAND;AAOD,CARD","sourcesContent":["const registerLineBreak = function(MQ) {\n MQ.registerEmbed('newLine', () => {\n return {\n htmlString: '<div class=\"newLine\"></div>',\n text: () => 'testText',\n latex: () => '\\\\embed{newLine}[]',\n };\n });\n};\n\nexport { registerLineBreak };\n"],"file":"custom-elements.js"}
|
package/lib/mq/index.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports, "CommonMqStyles", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _commonMqStyles["default"];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "Input", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function get() {
|
|
17
|
+
return _input["default"];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "Static", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function get() {
|
|
23
|
+
return _static["default"];
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
var _input = _interopRequireDefault(require("./input"));
|
|
28
|
+
|
|
29
|
+
var _static = _interopRequireDefault(require("./static"));
|
|
30
|
+
|
|
31
|
+
var _commonMqStyles = _interopRequireDefault(require("./common-mq-styles"));
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/mq/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["import Input from './input';\nimport Static from './static';\nimport CommonMqStyles from './common-mq-styles';\n\nexport { Input, Static, CommonMqStyles };\n"],"file":"index.js"}
|
package/lib/mq/input.js
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = exports.Input = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
24
|
+
var _react = _interopRequireDefault(require("react"));
|
|
25
|
+
|
|
26
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
27
|
+
|
|
28
|
+
var _styles = require("@material-ui/core/styles");
|
|
29
|
+
|
|
30
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
31
|
+
|
|
32
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
33
|
+
|
|
34
|
+
var _customElements = require("./custom-elements");
|
|
35
|
+
|
|
36
|
+
var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
|
|
37
|
+
|
|
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); }; }
|
|
39
|
+
|
|
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; } }
|
|
41
|
+
|
|
42
|
+
var MQ;
|
|
43
|
+
|
|
44
|
+
if (typeof window !== 'undefined') {
|
|
45
|
+
MQ = _mathquill["default"].getInterface(2);
|
|
46
|
+
|
|
47
|
+
if (MQ && MQ.registerEmbed) {
|
|
48
|
+
(0, _customElements.registerLineBreak)(MQ);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
var log = (0, _debug["default"])('math-input:mq:input');
|
|
53
|
+
/**
|
|
54
|
+
* Wrapper for MathQuill MQ.MathField.
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
var Input = /*#__PURE__*/function (_React$Component) {
|
|
58
|
+
(0, _inherits2["default"])(Input, _React$Component);
|
|
59
|
+
|
|
60
|
+
var _super = _createSuper(Input);
|
|
61
|
+
|
|
62
|
+
function Input() {
|
|
63
|
+
var _this;
|
|
64
|
+
|
|
65
|
+
(0, _classCallCheck2["default"])(this, Input);
|
|
66
|
+
|
|
67
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
68
|
+
args[_key] = arguments[_key];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
72
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onInputEdit", function () {
|
|
73
|
+
log('[onInputEdit] ...');
|
|
74
|
+
var onChange = _this.props.onChange;
|
|
75
|
+
|
|
76
|
+
if (!_this.mathField) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (onChange) {
|
|
81
|
+
onChange(_this.mathField.latex());
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "refresh", function () {
|
|
85
|
+
_this.blur();
|
|
86
|
+
|
|
87
|
+
_this.focus();
|
|
88
|
+
});
|
|
89
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onKeyPress", function (event) {
|
|
90
|
+
var keys = Object.keys(_this.mathField.__controller.options);
|
|
91
|
+
|
|
92
|
+
if (keys.indexOf('ignoreNextMousedown') < 0) {
|
|
93
|
+
// It seems like the controller has the above handler as an option
|
|
94
|
+
// when all the right events are set and everything works fine
|
|
95
|
+
// this seems to work in all cases
|
|
96
|
+
_this.refresh();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (event.charCode === 13) {
|
|
100
|
+
event.preventDefault();
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onClick", function (event) {
|
|
105
|
+
var onClick = _this.props.onClick;
|
|
106
|
+
|
|
107
|
+
_this.refresh();
|
|
108
|
+
|
|
109
|
+
onClick && onClick(event);
|
|
110
|
+
});
|
|
111
|
+
return _this;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
(0, _createClass2["default"])(Input, [{
|
|
115
|
+
key: "componentDidMount",
|
|
116
|
+
value: function componentDidMount() {
|
|
117
|
+
if (!MQ) {
|
|
118
|
+
throw new Error('MQ is not defined - but component has mounted?');
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
this.mathField = MQ.MathField(this.input, {
|
|
122
|
+
handlers: {
|
|
123
|
+
edit: this.onInputEdit.bind(this)
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
this.updateLatex();
|
|
127
|
+
}
|
|
128
|
+
}, {
|
|
129
|
+
key: "componentDidUpdate",
|
|
130
|
+
value: function componentDidUpdate() {
|
|
131
|
+
this.updateLatex();
|
|
132
|
+
}
|
|
133
|
+
}, {
|
|
134
|
+
key: "updateLatex",
|
|
135
|
+
value: function updateLatex() {
|
|
136
|
+
if (!this.mathField) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
var latex = this.props.latex;
|
|
141
|
+
|
|
142
|
+
if (latex !== undefined && latex !== null) {
|
|
143
|
+
this.mathField.latex(latex);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}, {
|
|
147
|
+
key: "clear",
|
|
148
|
+
value: function clear() {
|
|
149
|
+
this.mathField.latex('');
|
|
150
|
+
return '';
|
|
151
|
+
}
|
|
152
|
+
}, {
|
|
153
|
+
key: "blur",
|
|
154
|
+
value: function blur() {
|
|
155
|
+
log('blur mathfield');
|
|
156
|
+
this.mathField.blur();
|
|
157
|
+
}
|
|
158
|
+
}, {
|
|
159
|
+
key: "focus",
|
|
160
|
+
value: function focus() {
|
|
161
|
+
log('focus mathfield...');
|
|
162
|
+
this.mathField.focus();
|
|
163
|
+
}
|
|
164
|
+
}, {
|
|
165
|
+
key: "command",
|
|
166
|
+
value: function command(v) {
|
|
167
|
+
var _this2 = this;
|
|
168
|
+
|
|
169
|
+
log('command: ', v);
|
|
170
|
+
|
|
171
|
+
if (Array.isArray(v)) {
|
|
172
|
+
v.forEach(function (vv) {
|
|
173
|
+
_this2.mathField.cmd(vv);
|
|
174
|
+
});
|
|
175
|
+
} else {
|
|
176
|
+
this.mathField.cmd(v);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
this.mathField.focus();
|
|
180
|
+
return this.mathField.latex();
|
|
181
|
+
}
|
|
182
|
+
}, {
|
|
183
|
+
key: "keystroke",
|
|
184
|
+
value: function keystroke(v) {
|
|
185
|
+
this.mathField.keystroke(v);
|
|
186
|
+
this.mathField.focus();
|
|
187
|
+
return this.mathField.latex();
|
|
188
|
+
}
|
|
189
|
+
}, {
|
|
190
|
+
key: "write",
|
|
191
|
+
value: function write(v) {
|
|
192
|
+
log('write: ', v);
|
|
193
|
+
this.mathField.write(v);
|
|
194
|
+
this.mathField.focus();
|
|
195
|
+
return this.mathField.latex();
|
|
196
|
+
}
|
|
197
|
+
}, {
|
|
198
|
+
key: "shouldComponentUpdate",
|
|
199
|
+
value: function shouldComponentUpdate(nextProps) {
|
|
200
|
+
log('next: ', nextProps.latex);
|
|
201
|
+
log('current: ', this.mathField.latex());
|
|
202
|
+
return nextProps.latex !== this.mathField.latex();
|
|
203
|
+
}
|
|
204
|
+
}, {
|
|
205
|
+
key: "render",
|
|
206
|
+
value: function render() {
|
|
207
|
+
var _this3 = this;
|
|
208
|
+
|
|
209
|
+
var _this$props = this.props,
|
|
210
|
+
onFocus = _this$props.onFocus,
|
|
211
|
+
onBlur = _this$props.onBlur,
|
|
212
|
+
classes = _this$props.classes,
|
|
213
|
+
className = _this$props.className;
|
|
214
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
215
|
+
className: (0, _classnames["default"])(classes.input, className),
|
|
216
|
+
onKeyDown: this.onKeyPress,
|
|
217
|
+
onClick: this.onClick,
|
|
218
|
+
onFocus: onFocus,
|
|
219
|
+
onBlur: onBlur,
|
|
220
|
+
ref: function ref(r) {
|
|
221
|
+
return _this3.input = r;
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}]);
|
|
226
|
+
return Input;
|
|
227
|
+
}(_react["default"].Component);
|
|
228
|
+
|
|
229
|
+
exports.Input = Input;
|
|
230
|
+
(0, _defineProperty2["default"])(Input, "propTypes", {
|
|
231
|
+
className: _propTypes["default"].string,
|
|
232
|
+
classes: _propTypes["default"].object.isRequired,
|
|
233
|
+
onClick: _propTypes["default"].func,
|
|
234
|
+
onChange: _propTypes["default"].func,
|
|
235
|
+
latex: _propTypes["default"].string,
|
|
236
|
+
onFocus: _propTypes["default"].func,
|
|
237
|
+
onBlur: _propTypes["default"].func
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
var styles = function styles() {
|
|
241
|
+
return {};
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
var _default = (0, _styles.withStyles)(styles)(Input);
|
|
245
|
+
|
|
246
|
+
exports["default"] = _default;
|
|
247
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +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","preventDefault","onClick","Error","MathField","input","handlers","edit","onInputEdit","bind","updateLatex","undefined","v","Array","isArray","forEach","vv","cmd","keystroke","write","nextProps","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\n const { latex } = this.props;\n\n if (latex !== undefined && latex !== null) {\n this.mathField.latex(latex);\n }\n }\n\n clear() {\n this.mathField.latex('');\n\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\n this.mathField.focus();\n\n return this.mathField.latex();\n }\n\n keystroke(v) {\n this.mathField.keystroke(v);\n this.mathField.focus();\n\n return this.mathField.latex();\n }\n\n write(v) {\n log('write: ', v);\n this.mathField.write(v);\n this.mathField.focus();\n\n return this.mathField.latex();\n }\n\n onInputEdit = () => {\n log('[onInputEdit] ...');\n const { onChange } = this.props;\n\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 event.preventDefault();\n return;\n }\n };\n\n onClick = (event) => {\n const { onClick } = this.props;\n\n this.refresh();\n onClick && onClick(event);\n };\n\n shouldComponentUpdate(nextProps) {\n log('next: ', nextProps.latex);\n log('current: ', this.mathField.latex());\n\n return nextProps.latex !== this.mathField.latex();\n }\n\n render() {\n const { onFocus, onBlur, classes, className } = this.props;\n\n return (\n <span\n className={classNames(classes.input, className)}\n onKeyDown={this.onKeyPress}\n onClick={this.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"}
|
package/lib/mq/static.js
ADDED
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
24
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
|
+
|
|
26
|
+
var _react = _interopRequireDefault(require("react"));
|
|
27
|
+
|
|
28
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
29
|
+
|
|
30
|
+
var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
|
|
31
|
+
|
|
32
|
+
var _updateSpans = require("../updateSpans");
|
|
33
|
+
|
|
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); }; }
|
|
35
|
+
|
|
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; } }
|
|
37
|
+
|
|
38
|
+
var MQ;
|
|
39
|
+
|
|
40
|
+
if (typeof window !== 'undefined') {
|
|
41
|
+
MQ = _mathquill["default"].getInterface(2);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
var log = (0, _debug["default"])('pie-lib:math-input:mq:static');
|
|
45
|
+
var REGEX = /\\MathQuillMathField\[r\d*\]\{(.*?)\}/g;
|
|
46
|
+
var WHITESPACE_REGEX = / /g;
|
|
47
|
+
|
|
48
|
+
function stripSpaces() {
|
|
49
|
+
var string = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
50
|
+
return string.replace(WHITESPACE_REGEX, '');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function countBraces(latex) {
|
|
54
|
+
var count = 0;
|
|
55
|
+
|
|
56
|
+
for (var i = 0; i < (latex || '').length; i++) {
|
|
57
|
+
if (latex[i] === '{') {
|
|
58
|
+
count++;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return count;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Wrapper for MathQuill MQ.MathField.
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
var Static = /*#__PURE__*/function (_React$Component) {
|
|
70
|
+
(0, _inherits2["default"])(Static, _React$Component);
|
|
71
|
+
|
|
72
|
+
var _super = _createSuper(Static);
|
|
73
|
+
|
|
74
|
+
function Static(props) {
|
|
75
|
+
var _this;
|
|
76
|
+
|
|
77
|
+
(0, _classCallCheck2["default"])(this, Static);
|
|
78
|
+
_this = _super.call(this, props);
|
|
79
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "createLiveRegion", function () {
|
|
80
|
+
_this.liveRegion = document.createElement('div');
|
|
81
|
+
_this.liveRegion.style.position = 'absolute';
|
|
82
|
+
_this.liveRegion.style.width = '1px';
|
|
83
|
+
_this.liveRegion.style.height = '1px';
|
|
84
|
+
_this.liveRegion.style.marginTop = '-1px';
|
|
85
|
+
_this.liveRegion.style.clip = 'rect(1px, 1px, 1px, 1px)';
|
|
86
|
+
_this.liveRegion.style.overflow = 'hidden';
|
|
87
|
+
|
|
88
|
+
_this.liveRegion.setAttribute('aria-live', 'polite');
|
|
89
|
+
|
|
90
|
+
_this.liveRegion.setAttribute('aria-atomic', 'true');
|
|
91
|
+
|
|
92
|
+
document.body.appendChild(_this.liveRegion);
|
|
93
|
+
});
|
|
94
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addEventListeners", function () {
|
|
95
|
+
var input = _this.inputRef.current;
|
|
96
|
+
|
|
97
|
+
if (input) {
|
|
98
|
+
input.addEventListener('keydown', _this.handleKeyDown);
|
|
99
|
+
input.addEventListener('click', _this.handleMathKeyboardClick);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "removeEventListeners", function () {
|
|
103
|
+
var input = _this.inputRef.current;
|
|
104
|
+
|
|
105
|
+
if (input) {
|
|
106
|
+
input.removeEventListener('keydown', _this.handleKeyDown);
|
|
107
|
+
input.removeEventListener('click', _this.handleMathKeyboardClick);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "removeLiveRegion", function () {
|
|
111
|
+
if (_this.liveRegion) {
|
|
112
|
+
document.body.removeChild(_this.liveRegion);
|
|
113
|
+
_this.liveRegion = null;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleKeyDown", function (event) {
|
|
117
|
+
if ((event === null || event === void 0 ? void 0 : event.key) === 'Backspace' || (event === null || event === void 0 ? void 0 : event.key) === 'Delete') {
|
|
118
|
+
_this.setState({
|
|
119
|
+
isDeleteKeyPressed: true
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
_this.setState({
|
|
124
|
+
inputSource: 'keyboard'
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleMathKeyboardClick", function () {
|
|
128
|
+
_this.setState({
|
|
129
|
+
inputSource: 'mathKeyboard'
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onInputEdit", function (field) {
|
|
133
|
+
if (!_this.mathField) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
var name = _this.props.getFieldName(field, _this.mathField.innerFields);
|
|
138
|
+
|
|
139
|
+
if (_this.props.onSubFieldChange) {
|
|
140
|
+
var _this$inputRef;
|
|
141
|
+
|
|
142
|
+
// eslint-disable-next-line no-useless-escape
|
|
143
|
+
var regexMatch = field.latex().match(/[0-9]\\ \\frac\{[^\{]*\}\{ \}/);
|
|
144
|
+
|
|
145
|
+
if ((_this$inputRef = _this.inputRef) !== null && _this$inputRef !== void 0 && _this$inputRef.current && regexMatch && regexMatch !== null && regexMatch !== void 0 && regexMatch.length) {
|
|
146
|
+
try {
|
|
147
|
+
field.__controller.cursor.insLeftOf(field.__controller.cursor.parent[-1].parent);
|
|
148
|
+
|
|
149
|
+
field.el().dispatchEvent(new KeyboardEvent('keydown', {
|
|
150
|
+
keyCode: 8
|
|
151
|
+
}));
|
|
152
|
+
} catch (e) {
|
|
153
|
+
// eslint-disable-next-line no-console
|
|
154
|
+
console.error(e.toString());
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
_this.props.onSubFieldChange(name, field.latex());
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
_this.announceLatexConversion(field.latex());
|
|
162
|
+
});
|
|
163
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "announceLatexConversion", function (newLatex) {
|
|
164
|
+
if (!_this.state) {
|
|
165
|
+
console.error('State is not initialized');
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
var _this$state = _this.state,
|
|
170
|
+
previousLatex = _this$state.previousLatex,
|
|
171
|
+
inputSource = _this$state.inputSource,
|
|
172
|
+
isDeleteKeyPressed = _this$state.isDeleteKeyPressed;
|
|
173
|
+
var announcement = 'Converted to math symbol';
|
|
174
|
+
|
|
175
|
+
if (inputSource === 'keyboard' && !isDeleteKeyPressed) {
|
|
176
|
+
var newBraces = countBraces(newLatex);
|
|
177
|
+
var oldBraces = countBraces(previousLatex);
|
|
178
|
+
|
|
179
|
+
if (newBraces > oldBraces) {
|
|
180
|
+
_this.announceMessage(announcement);
|
|
181
|
+
} else {
|
|
182
|
+
try {
|
|
183
|
+
_this.mathField.parseLatex(previousLatex);
|
|
184
|
+
|
|
185
|
+
_this.mathField.parseLatex(newLatex);
|
|
186
|
+
|
|
187
|
+
if (newLatex == previousLatex) {
|
|
188
|
+
_this.announceMessage(announcement);
|
|
189
|
+
}
|
|
190
|
+
} catch (e) {
|
|
191
|
+
console.warn('Error parsing latex:', e.message);
|
|
192
|
+
console.warn(e);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
_this.setState({
|
|
198
|
+
previousLatex: newLatex,
|
|
199
|
+
isDeleteKeyPressed: false
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "announceMessage", function (message) {
|
|
203
|
+
_this.setState({
|
|
204
|
+
previousLatex: ''
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
if (_this.liveRegion) {
|
|
208
|
+
_this.liveRegion.textContent = message; // Clear the message after it is announced
|
|
209
|
+
|
|
210
|
+
setTimeout(function () {
|
|
211
|
+
_this.liveRegion.textContent = '';
|
|
212
|
+
}, 500);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "update", function () {
|
|
216
|
+
if (!MQ) {
|
|
217
|
+
throw new Error('MQ is not defined - but component has mounted?');
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (!_this.mathField) {
|
|
221
|
+
var _this$inputRef2;
|
|
222
|
+
|
|
223
|
+
_this.mathField = MQ.StaticMath((_this$inputRef2 = _this.inputRef) === null || _this$inputRef2 === void 0 ? void 0 : _this$inputRef2.current, {
|
|
224
|
+
handlers: {
|
|
225
|
+
edit: _this.onInputEdit.bind((0, _assertThisInitialized2["default"])(_this))
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
try {
|
|
231
|
+
_this.mathField.parseLatex(_this.props.latex);
|
|
232
|
+
|
|
233
|
+
_this.mathField.latex(_this.props.latex);
|
|
234
|
+
} catch (e) {
|
|
235
|
+
// default latex if received has errors
|
|
236
|
+
_this.mathField.latex('\\MathQuillMathField[r1]{}');
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "blur", function () {
|
|
240
|
+
log('blur mathfield');
|
|
241
|
+
|
|
242
|
+
_this.mathField.blur();
|
|
243
|
+
});
|
|
244
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "focus", function () {
|
|
245
|
+
log('focus mathfield...');
|
|
246
|
+
|
|
247
|
+
_this.mathField.focus();
|
|
248
|
+
});
|
|
249
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onFocus", function (e) {
|
|
250
|
+
try {
|
|
251
|
+
var rootBlock = e.target.parentElement.nextSibling;
|
|
252
|
+
var id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);
|
|
253
|
+
|
|
254
|
+
if (!id) {
|
|
255
|
+
rootBlock = rootBlock.parentElement;
|
|
256
|
+
id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
var innerField = _this.mathField.innerFields.find(function (f) {
|
|
260
|
+
return f.id === id;
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
if (innerField) {
|
|
264
|
+
var name = _this.props.getFieldName(innerField, _this.mathField.innerFields);
|
|
265
|
+
|
|
266
|
+
if (_this.props.setInput) {
|
|
267
|
+
_this.props.setInput(innerField);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
_this.props.onSubFieldFocus(name, innerField);
|
|
271
|
+
}
|
|
272
|
+
} catch (err) {
|
|
273
|
+
// eslint-disable-next-line no-console
|
|
274
|
+
console.error('error finding root block', err.message);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
_this.state = {
|
|
278
|
+
announcement: '',
|
|
279
|
+
previousLatex: '',
|
|
280
|
+
inputSource: null,
|
|
281
|
+
isDeleteKeyPressed: false
|
|
282
|
+
};
|
|
283
|
+
_this.inputRef = /*#__PURE__*/_react["default"].createRef();
|
|
284
|
+
return _this;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
(0, _createClass2["default"])(Static, [{
|
|
288
|
+
key: "componentDidMount",
|
|
289
|
+
value: function componentDidMount() {
|
|
290
|
+
this.update();
|
|
291
|
+
(0, _updateSpans.updateSpans)();
|
|
292
|
+
this.createLiveRegion();
|
|
293
|
+
this.addEventListeners();
|
|
294
|
+
}
|
|
295
|
+
}, {
|
|
296
|
+
key: "componentDidUpdate",
|
|
297
|
+
value: function componentDidUpdate() {
|
|
298
|
+
this.update();
|
|
299
|
+
(0, _updateSpans.updateSpans)();
|
|
300
|
+
}
|
|
301
|
+
}, {
|
|
302
|
+
key: "componentWillUnmount",
|
|
303
|
+
value: function componentWillUnmount() {
|
|
304
|
+
this.removeLiveRegion();
|
|
305
|
+
this.removeEventListeners();
|
|
306
|
+
}
|
|
307
|
+
}, {
|
|
308
|
+
key: "shouldComponentUpdate",
|
|
309
|
+
value: function shouldComponentUpdate(nextProps) {
|
|
310
|
+
try {
|
|
311
|
+
var parsedLatex = this.mathField.parseLatex(nextProps.latex);
|
|
312
|
+
var stripped = stripSpaces(parsedLatex);
|
|
313
|
+
var newFieldCount = (nextProps.latex.match(REGEX) || []).length;
|
|
314
|
+
var out = stripped !== stripSpaces(this.mathField.latex().trim()) || newFieldCount !== Object.keys(this.mathField.innerFields).length / 2;
|
|
315
|
+
log('[shouldComponentUpdate] ', out);
|
|
316
|
+
return out;
|
|
317
|
+
} catch (e) {
|
|
318
|
+
// eslint-disable-next-line no-console
|
|
319
|
+
console.warn('Error parsing latex:', e.message, 'skip update'); // eslint-disable-next-line no-console
|
|
320
|
+
|
|
321
|
+
console.warn(e);
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}, {
|
|
326
|
+
key: "render",
|
|
327
|
+
value: function render() {
|
|
328
|
+
var _this$props = this.props,
|
|
329
|
+
onBlur = _this$props.onBlur,
|
|
330
|
+
className = _this$props.className;
|
|
331
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
332
|
+
className: className,
|
|
333
|
+
onFocus: this.onFocus,
|
|
334
|
+
onBlur: onBlur,
|
|
335
|
+
ref: this.inputRef
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}]);
|
|
339
|
+
return Static;
|
|
340
|
+
}(_react["default"].Component);
|
|
341
|
+
|
|
342
|
+
exports["default"] = Static;
|
|
343
|
+
(0, _defineProperty2["default"])(Static, "propTypes", {
|
|
344
|
+
latex: _propTypes["default"].string.isRequired,
|
|
345
|
+
onFocus: _propTypes["default"].func,
|
|
346
|
+
onBlur: _propTypes["default"].func,
|
|
347
|
+
className: _propTypes["default"].string,
|
|
348
|
+
getFieldName: _propTypes["default"].func,
|
|
349
|
+
onSubFieldChange: _propTypes["default"].func,
|
|
350
|
+
onSubFieldFocus: _propTypes["default"].func,
|
|
351
|
+
setInput: _propTypes["default"].func
|
|
352
|
+
});
|
|
353
|
+
(0, _defineProperty2["default"])(Static, "defaultProps", {
|
|
354
|
+
getFieldName: function getFieldName() {}
|
|
355
|
+
});
|
|
356
|
+
//# sourceMappingURL=static.js.map
|