@pie-lib/math-toolbar 1.11.31-next.134 → 1.13.0-beta.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.
@@ -1,17 +1,20 @@
1
- import { HorizontalKeypad, mq } from '@pie-lib/math-input';
2
1
  import React from 'react';
3
2
  import debug from 'debug';
4
3
  import PropTypes from 'prop-types';
5
4
  import cx from 'classnames';
6
5
  import Button from '@material-ui/core/Button';
7
6
  import { withStyles } from '@material-ui/core/styles';
8
- const log = debug('@pie-lib:math-toolbar:editor-and-pad');
9
- import { color, InputContainer } from '@pie-lib/render-ui';
10
7
  import MenuItem from '@material-ui/core/MenuItem';
11
8
  import Select from '@material-ui/core/Select';
12
- import { updateSpans } from '@pie-lib/math-input';
13
9
  import isEqual from 'lodash/isEqual';
14
10
 
11
+ import { HorizontalKeypad, mq, updateSpans } from '@pie-lib/math-input';
12
+ import { color, InputContainer } from '@pie-lib/render-ui';
13
+ import { markFractionBaseSuperscripts } from './utils';
14
+
15
+ const { commonMqFontStyles, commonMqKeyboardStyles, longdivStyles, supsubStyles } = mq.CommonMqStyles;
16
+ const log = debug('@pie-lib:math-toolbar:editor-and-pad');
17
+
15
18
  const decimalRegex = /\.|,/g;
16
19
 
17
20
  const toNodeData = (data) => {
@@ -48,12 +51,13 @@ export class EditorAndPad extends React.Component {
48
51
  layoutForKeyPad: PropTypes.object,
49
52
  maxResponseAreas: PropTypes.number,
50
53
  additionalKeys: PropTypes.array,
51
- latex: PropTypes.string,
54
+ latex: PropTypes.string.isRequired,
52
55
  onAnswerBlockAdd: PropTypes.func,
53
56
  onFocus: PropTypes.func,
54
57
  onBlur: PropTypes.func,
55
58
  onChange: PropTypes.func.isRequired,
56
59
  classes: PropTypes.object,
60
+ setKeypadInteraction: PropTypes.func,
57
61
  };
58
62
 
59
63
  constructor(props) {
@@ -124,6 +128,7 @@ export class EditorAndPad extends React.Component {
124
128
  const { onChange, noDecimal } = this.props;
125
129
 
126
130
  updateSpans();
131
+ markFractionBaseSuperscripts();
127
132
 
128
133
  this.updateDisable(true);
129
134
 
@@ -206,6 +211,7 @@ export class EditorAndPad extends React.Component {
206
211
  controlledKeypad,
207
212
  controlledKeypadMode,
208
213
  showKeypad,
214
+ setKeypadInteraction,
209
215
  noDecimal,
210
216
  hideInput,
211
217
  layoutForKeyPad,
@@ -273,11 +279,13 @@ export class EditorAndPad extends React.Component {
273
279
  {shouldShowKeypad && (
274
280
  <HorizontalKeypad
275
281
  className={cx(classes[keypadMode], classes.keyboard)}
282
+ controlledKeypadMode={controlledKeypadMode}
276
283
  layoutForKeyPad={layoutForKeyPad}
277
284
  additionalKeys={additionalKeys}
278
285
  mode={controlledKeypadMode ? this.state.equationEditor : keypadMode}
279
286
  onClick={this.onClick}
280
287
  noDecimal={noDecimal}
288
+ setKeypadInteraction={setKeypadInteraction}
281
289
  />
282
290
  )}
283
291
  </div>
@@ -311,7 +319,7 @@ const styles = (theme) => ({
311
319
  left: '-1px',
312
320
  },
313
321
  '&:after': {
314
- position: 'absolute',
322
+ position: 'absolute !important',
315
323
  top: '0px !important',
316
324
  right: '-2px',
317
325
  },
@@ -325,22 +333,11 @@ const styles = (theme) => ({
325
333
  right: '-1px',
326
334
  },
327
335
  },
328
- '& *': {
329
- fontFamily: 'MJXZERO, MJXTEX !important',
330
-
331
- '& .mq-math-mode > span > var': {
332
- fontFamily: 'MJXZERO, MJXTEX-I !important',
333
- },
334
- '& .mq-math-mode span var': {
335
- fontFamily: 'MJXZERO, MJXTEX-I !important',
336
- },
337
- '& .mq-math-mode .mq-nonSymbola': {
338
- fontFamily: 'MJXZERO, MJXTEX-I !important',
339
- },
340
- '& .mq-math-mode > span > var.mq-operator-name': {
341
- fontFamily: 'MJXZERO, MJXTEX !important',
342
- },
343
336
 
337
+ '& *': {
338
+ ...commonMqFontStyles,
339
+ ...supsubStyles,
340
+ ...longdivStyles,
344
341
  '& .mq-math-mode .mq-sqrt-prefix': {
345
342
  verticalAlign: 'baseline !important',
346
343
  top: '1px !important',
@@ -351,12 +348,6 @@ const styles = (theme) => ({
351
348
  paddingTop: '0.45em !important',
352
349
  },
353
350
 
354
- '& .mq-math-mode sup.mq-nthroot': {
355
- fontSize: '70% !important',
356
- verticalAlign: '0.5em !important',
357
- paddingRight: '0.15em',
358
- },
359
-
360
351
  '& .mq-math-mode .mq-empty': {
361
352
  padding: '9px 1px !important',
362
353
  },
@@ -369,31 +360,12 @@ const styles = (theme) => ({
369
360
  top: '0 !important',
370
361
  },
371
362
 
372
- '& .mq-longdiv-inner': {
373
- marginTop: '-1px',
374
- marginLeft: '5px !important;',
375
-
376
- '& > .mq-empty': {
377
- padding: '0 !important',
378
- marginLeft: '0px !important',
379
- marginTop: '2px',
380
- },
381
- },
382
-
383
- '& .mq-math-mode .mq-longdiv': {
384
- display: 'inline-flex !important',
385
- },
386
-
387
363
  '& .mq-math-mode .mq-longdiv .mq-longdiv-inner': {
388
364
  marginLeft: '4px !important',
389
365
  paddingTop: '6px !important',
390
366
  paddingLeft: '6px !important',
391
367
  },
392
368
 
393
- '& .mq-math-mode .mq-supsub': {
394
- fontSize: '70.7% !important',
395
- },
396
-
397
369
  '& .mq-math-mode .mq-paren': {
398
370
  verticalAlign: 'top !important',
399
371
  padding: '1px 0.1em !important',
@@ -406,18 +378,6 @@ const styles = (theme) => ({
406
378
  paddingTop: '5px !important',
407
379
  },
408
380
 
409
- '& .mq-supsub ': {
410
- fontSize: '70.7%',
411
- },
412
-
413
- '& .mq-math-mode .mq-supsub.mq-sup-only': {
414
- verticalAlign: '-0.1em !important',
415
-
416
- '& .mq-sup': {
417
- marginBottom: '0px !important',
418
- },
419
- },
420
-
421
381
  '& .mq-math-mode .mq-denominator': {
422
382
  marginTop: '-5px !important',
423
383
  padding: '0.5em 0.1em 0.1em !important',
@@ -428,8 +388,10 @@ const styles = (theme) => ({
428
388
  paddingBottom: '0 !important',
429
389
  marginBottom: '-2px',
430
390
  },
391
+ },
431
392
 
432
- '-webkit-font-smoothing': 'antialiased !important',
393
+ '& span[data-prime="true"]': {
394
+ fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',
433
395
  },
434
396
  },
435
397
  hide: {
@@ -526,68 +488,7 @@ const styles = (theme) => ({
526
488
  error: {
527
489
  border: '2px solid red',
528
490
  },
529
- keyboard: {
530
- '& *': {
531
- fontFamily: 'MJXZERO, MJXTEX !important',
532
-
533
- '& .mq-math-mode > span > var': {
534
- fontFamily: 'MJXZERO, MJXTEX-I !important',
535
- },
536
- '& .mq-math-mode span var': {
537
- fontFamily: 'MJXZERO, MJXTEX-I !important',
538
- },
539
- '& .mq-math-mode .mq-nonSymbola': {
540
- fontFamily: 'MJXZERO, MJXTEX-I !important',
541
- },
542
- '& .mq-math-mode > span > var.mq-operator-name': {
543
- fontFamily: 'MJXZERO, MJXTEX !important',
544
- },
545
-
546
- '& .mq-math-mode .mq-sqrt-prefix': {
547
- top: '0 !important',
548
- },
549
-
550
- '& .mq-math-mode .mq-empty': {
551
- padding: '9px 1px !important',
552
- },
553
-
554
- '& .mq-longdiv-inner': {
555
- marginTop: '-1px',
556
- marginLeft: '5px !important;',
557
-
558
- '& > .mq-empty': {
559
- padding: '0 !important',
560
- marginLeft: '0px !important',
561
- marginTop: '2px',
562
- },
563
- },
564
-
565
- '& .mq-math-mode .mq-longdiv': {
566
- display: 'inline-flex !important',
567
- },
568
-
569
- '& .mq-math-mode .mq-supsub': {
570
- fontSize: '70.7% !important',
571
- },
572
-
573
- '& .mq-math-mode .mq-sqrt-stem': {
574
- marginTop: '-5px',
575
- paddingTop: '4px',
576
- },
577
-
578
- '& .mq-math-mode .mq-paren': {
579
- verticalAlign: 'middle !important',
580
- },
581
-
582
- '& .mq-math-mode .mq-overarrow .mq-overarrow-inner .mq-empty': {
583
- padding: '0 !important',
584
- },
585
-
586
- '& .mq-math-mode .mq-overline .mq-overline-inner .mq-empty ': {
587
- padding: '0 !important',
588
- },
589
- },
590
- },
491
+ keyboard: commonMqKeyboardStyles,
591
492
  language: {
592
493
  '& *': {
593
494
  fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',
package/src/index.jsx CHANGED
@@ -28,6 +28,8 @@ export class MathToolbar extends React.Component {
28
28
  onFocus: PropTypes.func,
29
29
  onBlur: PropTypes.func,
30
30
  hideDoneButton: PropTypes.bool,
31
+ keyPadCharacterRef: PropTypes.func,
32
+ setKeypadInteraction: PropTypes.func,
31
33
  };
32
34
 
33
35
  static defaultProps = {
@@ -83,6 +85,8 @@ export class MathToolbar extends React.Component {
83
85
  onBlur,
84
86
  hideDoneButton,
85
87
  error,
88
+ keyPadCharacterRef,
89
+ setKeypadInteraction,
86
90
  maxResponseAreas,
87
91
  } = this.props;
88
92
 
@@ -96,6 +100,8 @@ export class MathToolbar extends React.Component {
96
100
  additionalKeys={additionalKeys}
97
101
  noDecimal={noDecimal}
98
102
  keypadMode={keypadMode}
103
+ keyPadCharacterRef={keyPadCharacterRef}
104
+ setKeypadInteraction={setKeypadInteraction}
99
105
  onChange={this.onChange}
100
106
  onDone={this.done}
101
107
  onFocus={onFocus}
@@ -114,7 +120,7 @@ export class MathToolbar extends React.Component {
114
120
  export class RawPureToolbar extends React.Component {
115
121
  static propTypes = {
116
122
  classNames: PropTypes.object,
117
- latex: PropTypes.string,
123
+ latex: PropTypes.string.isRequired,
118
124
  keypadMode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
119
125
  hideInput: PropTypes.bool,
120
126
  noLatexHandling: PropTypes.bool,
@@ -136,6 +142,8 @@ export class RawPureToolbar extends React.Component {
136
142
  hideDoneButtonBackground: PropTypes.bool,
137
143
  error: PropTypes.any,
138
144
  maxResponseAreas: PropTypes.number,
145
+ keyPadCharacterRef: PropTypes.object,
146
+ setKeypadInteraction: PropTypes.func,
139
147
  };
140
148
 
141
149
  static defaultProps = {
@@ -158,6 +166,8 @@ export class RawPureToolbar extends React.Component {
158
166
  hideInput,
159
167
  noLatexHandling,
160
168
  layoutForKeyPad,
169
+ keyPadCharacterRef,
170
+ setKeypadInteraction,
161
171
  latex,
162
172
  onChange,
163
173
  onDone,
@@ -171,7 +181,7 @@ export class RawPureToolbar extends React.Component {
171
181
  } = this.props;
172
182
 
173
183
  return (
174
- <div className={cx(classes.pureToolbar, (classNames || {}).toolbar)} contentEditable={false}>
184
+ <div className={cx(classes.pureToolbar, (classNames || {}).toolbar)} ref={keyPadCharacterRef}>
175
185
  <div />
176
186
  <EditorAndPad
177
187
  autoFocus={autoFocus}
@@ -193,6 +203,7 @@ export class RawPureToolbar extends React.Component {
193
203
  onBlur={onBlur}
194
204
  error={error}
195
205
  maxResponseAreas={maxResponseAreas}
206
+ setKeypadInteraction={setKeypadInteraction}
196
207
  />
197
208
  {(!controlledKeypad || (controlledKeypad && showKeypad)) && !hideDoneButton && (
198
209
  <DoneButton hideBackground={hideDoneButtonBackground} onClick={onDone} />
@@ -1,34 +1,58 @@
1
1
  import React from 'react';
2
2
  import classNames from 'classnames';
3
- import get from 'lodash/get';
4
3
  import debug from 'debug';
5
- import { makeStyles } from '@material-ui/styles';
4
+ import { withStyles } from '@material-ui/core/styles';
6
5
  import PropTypes from 'prop-types';
7
6
  import { mq } from '@pie-lib/math-input';
7
+ import { markFractionBaseSuperscripts } from './utils';
8
+
9
+ const { commonMqFontStyles, longdivStyles, supsubStyles } = mq.CommonMqStyles;
8
10
 
9
11
  const log = debug('@pie-lib:math-toolbar:math-preview');
10
12
 
11
- const useStyles = makeStyles((theme) => ({
13
+ export class RawMathPreview extends React.Component {
14
+ static propTypes = {
15
+ latex: PropTypes.string,
16
+ node: PropTypes.object,
17
+ classes: PropTypes.object,
18
+ isSelected: PropTypes.bool,
19
+ onFocus: PropTypes.func,
20
+ onBlur: PropTypes.func,
21
+ };
22
+
23
+ componentDidMount() {
24
+ markFractionBaseSuperscripts();
25
+ }
26
+
27
+ componentDidUpdate(prevProps) {
28
+ // Re-run only if LaTeX changed
29
+ if (this.props.node.data.get('latex') !== prevProps.node.data.get('latex')) {
30
+ markFractionBaseSuperscripts();
31
+ }
32
+ }
33
+
34
+ render() {
35
+ log('[render] data: ', this.props.node.data);
36
+ const latex = this.props.node.data.get('latex');
37
+ const { classes, isSelected, onFocus, onBlur } = this.props;
38
+ return (
39
+ <div className={classNames(classes.root, isSelected && classes.selected)}>
40
+ {' '}
41
+ <span className={classes.insideOverlay} />
42
+ <mq.Static latex={latex} onFocus={onFocus} onBlur={onBlur} />
43
+ </div>
44
+ );
45
+ }
46
+ }
47
+
48
+ const mp = (theme) => ({
12
49
  root: {
13
50
  display: 'inline-flex',
14
51
  alignItems: 'center',
15
52
  position: 'relative',
16
- '& *': {
17
- fontFamily: 'MJXZERO, MJXTEX !important',
18
- '-webkit-font-smoothing': 'antialiased !important',
19
- },
20
- '& > .mq-math-mode > span > var': {
21
- fontFamily: 'MJXZERO, MJXTEX-I !important',
22
- },
23
- '& > .mq-math-mode span var': {
24
- fontFamily: 'MJXZERO, MJXTEX-I !important',
25
- },
26
- '& > .mq-math-mode .mq-nonSymbola': {
27
- fontFamily: 'MJXZERO, MJXTEX-I !important',
28
- },
29
- '& > .mq-math-mode > span > var.mq-operator-name': {
30
- fontFamily: 'MJXZERO, MJXTEX !important',
31
- },
53
+ '& *': commonMqFontStyles,
54
+ ...supsubStyles,
55
+ ...longdivStyles,
32
56
  '& > .mq-math-mode': {
33
57
  border: 'solid 1px lightgrey',
34
58
  },
@@ -58,24 +82,6 @@ const useStyles = makeStyles((theme) => ({
58
82
  paddingBottom: '0 !important',
59
83
  marginBottom: '-2px',
60
84
  },
61
- '& > .mq-math-mode sup.mq-nthroot': {
62
- fontSize: '70.7% !important',
63
- verticalAlign: '0.5em !important',
64
- paddingRight: '0.15em',
65
- },
66
- '& > .mq-longdiv-inner': {
67
- marginTop: '-1px',
68
- marginLeft: '5px !important;',
69
-
70
- '& > .mq-empty': {
71
- padding: '0 !important',
72
- marginLeft: '0px !important',
73
- marginTop: '2px',
74
- },
75
- },
76
- '& > .mq-math-mode .mq-longdiv': {
77
- display: 'inline-flex !important',
78
- },
79
85
  '& > .mq-math-mode .mq-longdiv .mq-longdiv-inner .mq-empty': {
80
86
  paddingTop: '6px !important',
81
87
  paddingLeft: '4px !important',
@@ -83,9 +89,6 @@ const useStyles = makeStyles((theme) => ({
83
89
  '& > .mq-math-mode .mq-longdiv .mq-longdiv-inner': {
84
90
  marginLeft: '0 !important',
85
91
  },
86
- '& > .mq-math-mode .mq-supsub': {
87
- fontSize: '70.7% !important',
88
- },
89
92
  '& > .mq-math-mode .mq-overarrow': {
90
93
  fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',
91
94
  },
@@ -100,17 +103,7 @@ const useStyles = makeStyles((theme) => ({
100
103
  marginTop: '-2px !important',
101
104
  paddingTop: '5px !important',
102
105
  },
103
- '& > .mq-supsub ': {
104
- fontSize: '70.7%',
105
- },
106
-
107
- '& > .mq-math-mode .mq-supsub.mq-sup-only': {
108
- verticalAlign: '-0.1em !important',
109
106
 
110
- '& .mq-sup': {
111
- marginBottom: '0px !important',
112
- },
113
- },
114
107
  '& .mq-overarrow-inner': {
115
108
  paddingTop: '0 !important',
116
109
  border: 'none !important',
@@ -129,9 +122,16 @@ const useStyles = makeStyles((theme) => ({
129
122
  top: '-0.4em',
130
123
  left: '-1px',
131
124
  },
125
+ // NOTE: This workaround adds `!important` to enforce the correct positioning and styling
126
+ // of `.mq-overarrow.mq-arrow-both` elements in MathQuill. This ensures consistent display
127
+ // regardless of the order in which MathQuill is initialized on our websites.
128
+ //
129
+ // In the future, investigate why MathQuill scripts and styles are being initialized
130
+ // more than once and address the root cause to prevent potential conflicts and ensure
131
+ // optimal performance.
132
132
  '&:after': {
133
133
  top: '0px !important',
134
- position: 'absolute',
134
+ position: 'absolute !important',
135
135
  right: '-2px',
136
136
  },
137
137
  '&.mq-empty:after': {
@@ -157,9 +157,12 @@ const useStyles = makeStyles((theme) => ({
157
157
  '& .mq-parallelogram': {
158
158
  lineHeight: 0.85,
159
159
  },
160
+ '& span[data-prime="true"]': {
161
+ fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',
162
+ },
160
163
  },
161
164
  selected: {
162
- border: `solid 1px ${get(theme, 'palette.primary.main')}`,
165
+ border: `solid 1px ${theme.palette.primary.main}`,
163
166
  '& > .mq-math-mode': {
164
167
  border: 'solid 0px lightgrey',
165
168
  },
@@ -171,35 +174,6 @@ const useStyles = makeStyles((theme) => ({
171
174
  right: 0,
172
175
  top: 0,
173
176
  },
174
- }));
175
-
176
- export const RawMathPreview = React.forwardRef((props, ref) => {
177
- log('[render] data: ', props.node.data);
178
- const latex = props.node.data.latex;
179
- const { isSelected, onFocus, onBlur, attributes, children } = props;
180
- const classes = useStyles(props);
181
-
182
- return (
183
- <div
184
- className={classNames(classes.root, isSelected && classes.selected)}
185
- {...attributes}
186
- contentEditable={false}
187
- ref={ref}
188
- >
189
- {children} <span className={classes.insideOverlay} />
190
- <mq.Static latex={latex} onFocus={onFocus} onBlur={onBlur} />
191
- </div>
192
- );
193
177
  });
194
178
 
195
- RawMathPreview.propTypes = {
196
- element: PropTypes.object,
197
- latex: PropTypes.string,
198
- node: PropTypes.object,
199
- classes: PropTypes.object,
200
- isSelected: PropTypes.bool,
201
- onFocus: PropTypes.func,
202
- onBlur: PropTypes.func,
203
- };
204
-
205
- export default RawMathPreview;
179
+ export default withStyles(mp)(RawMathPreview);
package/src/utils.js ADDED
@@ -0,0 +1,11 @@
1
+ export const markFractionBaseSuperscripts = () => {
2
+ document.querySelectorAll('.mq-supsub.mq-sup-only').forEach((supsub) => {
3
+ const prev = supsub.previousElementSibling;
4
+
5
+ if (prev && prev.classList.contains('mq-non-leaf') && prev.querySelector('.mq-fraction')) {
6
+ supsub.classList.add('mq-after-fraction-group');
7
+ } else {
8
+ supsub.classList.remove('mq-after-fraction-group');
9
+ }
10
+ });
11
+ };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/done-button.jsx"],"names":["RawDoneButton","classes","onClick","hideBackground","iconRoot","label","root","propTypes","PropTypes","object","isRequired","func","styles","theme","verticalAlign","width","height","color","backgroundColor","palette","common","white","grey","position","top","DoneButton"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB;AAAA,MAAGC,OAAH,QAAGA,OAAH;AAAA,MAAYC,OAAZ,QAAYA,OAAZ;AAAA,MAAqBC,cAArB,QAAqBA,cAArB;AAAA,sBAC3B,gCAAC,sBAAD;AACE,kBAAW,MADb;AAEE,IAAA,SAAS,EAAEF,OAAO,CAACG,QAFrB;AAGE,IAAA,OAAO,EAAEF,OAHX;AAIE,IAAA,OAAO,EAAE;AACPG,MAAAA,KAAK,EAAEJ,OAAO,CAACI,KADR;AAEPC,MAAAA,IAAI,EAAE,4BAAWL,OAAO,CAACG,QAAnB,uCAAgCH,OAAO,CAACE,cAAxC,EAAyDA,cAAzD;AAFC;AAJX,kBASE,gCAAC,iBAAD,OATF,CAD2B;AAAA,CAAtB;;;AAcPH,aAAa,CAACO,SAAd,GAA0B;AACxBN,EAAAA,OAAO,EAAEO,sBAAUC,MAAV,CAAiBC,UADF;AAExBR,EAAAA,OAAO,EAAEM,sBAAUG;AAFK,CAA1B;;AAKA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBT,IAAAA,QAAQ,EAAE;AACRU,MAAAA,aAAa,EAAE,KADP;AAERC,MAAAA,KAAK,EAAE,MAFC;AAGRC,MAAAA,MAAM,EAAE,MAHA;AAIRC,MAAAA,KAAK,EAAE;AAJC,KADe;AAOzBd,IAAAA,cAAc,EAAE;AACde,MAAAA,eAAe,EAAEL,KAAK,CAACM,OAAN,CAAcC,MAAd,CAAqBC,KADxB;AAGd,iBAAW;AACTH,QAAAA,eAAe,EAAEL,KAAK,CAACM,OAAN,CAAcG,IAAd,CAAmB,GAAnB;AADR;AAHG,KAPS;AAczBjB,IAAAA,KAAK,EAAE;AACLkB,MAAAA,QAAQ,EAAE,UADL;AAELC,MAAAA,GAAG,EAAE;AAFA;AAdkB,GAAZ;AAAA,CAAf;;AAmBO,IAAMC,UAAU,GAAG,wBAAWb,MAAX,EAAmBZ,aAAnB,CAAnB","sourcesContent":["import React from 'react';\n\nimport IconButton from '@material-ui/core/IconButton';\nimport Check from '@material-ui/icons/Check';\nimport { withStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nexport const RawDoneButton = ({ classes, onClick, hideBackground }) => (\n <IconButton\n aria-label=\"Done\"\n className={classes.iconRoot}\n onClick={onClick}\n classes={{\n label: classes.label,\n root: classNames(classes.iconRoot, { [classes.hideBackground]: hideBackground }),\n }}\n >\n <Check />\n </IconButton>\n);\n\nRawDoneButton.propTypes = {\n classes: PropTypes.object.isRequired,\n onClick: PropTypes.func,\n};\n\nconst styles = (theme) => ({\n iconRoot: {\n verticalAlign: 'top',\n width: '28px',\n height: '28px',\n color: '#00bb00',\n },\n hideBackground: {\n backgroundColor: theme.palette.common.white,\n\n '&:hover': {\n backgroundColor: theme.palette.grey[200],\n },\n },\n label: {\n position: 'absolute',\n top: '2px',\n },\n});\nexport const DoneButton = withStyles(styles)(RawDoneButton);\n"],"file":"done-button.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/editor-and-pad.jsx"],"names":["log","decimalRegex","toNodeData","data","type","value","EditorAndPad","props","noDecimal","noLatexHandling","onChange","c","input","clear","command","keystroke","write","isEdit","maxResponseAreas","shouldDisable","checkResponseAreasNumber","setState","addDisabled","onAnswerBlockAdd","onClick","updateDisable","latex","indexOf","replace","regexMatch","match","length","mathField","__controller","cursor","insLeftOf","parent","el","dispatchEvent","KeyboardEvent","keyCode","e","console","error","toString","evt","equationEditor","target","count","state","autoFocus","focus","nextProps","nextState","inputIsDifferent","keypadMode","controlledKeypad","showKeypad","classNames","allowAnswerBlock","additionalKeys","controlledKeypadMode","hideInput","layoutForKeyPad","onFocus","onBlur","classes","shouldShowKeypad","mathToolbar","inputAndTypeContainer","hide","selectContainer","select","onEditorTypeChange","inputContainer","event","mathEditor","editor","longMathEditor","r","onEditorChange","addAnswerBlockButton","bottom","onAnswerBlockClick","hr","keyboard","React","Component","PropTypes","object","oneOfType","string","number","bool","array","func","isRequired","styles","theme","display","alignItems","top","paddingTop","fontFamily","minWidth","lineHeight","left","position","right","verticalAlign","fontSize","paddingRight","padding","marginTop","marginLeft","paddingLeft","borderTop","marginBottom","paddingBottom","flex","width","marginRight","maxWidth","color","text","backgroundColor","background","border","margin","height","borderBottom","palette","primary","main","zIndex","textAlign","outline","boxShadow","borderRadius","minHeight","spacing","unit","language"],"mappings":"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","sourcesContent":["import { HorizontalKeypad, mq } from '@pie-lib/math-input';\nimport React from 'react';\nimport debug from 'debug';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/core/styles';\nconst log = debug('@pie-lib:math-toolbar:editor-and-pad');\nimport { color, InputContainer } from '@pie-lib/render-ui';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport { updateSpans } from '@pie-lib/math-input';\nimport isEqual from 'lodash/isEqual';\n\nconst decimalRegex = /\\.|,/g;\n\nconst toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return { type: 'answer', ...data };\n } else if (value === 'clear') {\n return { type: 'clear' };\n } else {\n return { type: 'write', value };\n }\n};\n\nexport class EditorAndPad extends React.Component {\n static propTypes = {\n classNames: PropTypes.object,\n keypadMode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n autoFocus: PropTypes.bool,\n allowAnswerBlock: PropTypes.bool,\n showKeypad: PropTypes.bool,\n controlledKeypad: PropTypes.bool,\n controlledKeypadMode: PropTypes.bool,\n error: PropTypes.string,\n noDecimal: PropTypes.bool,\n hideInput: PropTypes.bool,\n noLatexHandling: PropTypes.bool,\n layoutForKeyPad: PropTypes.object,\n maxResponseAreas: PropTypes.number,\n additionalKeys: PropTypes.array,\n latex: PropTypes.string,\n onAnswerBlockAdd: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n\n this.state = { equationEditor: 'item-authoring', addDisabled: false };\n }\n\n componentDidMount() {\n if (this.input && this.props.autoFocus) {\n this.input.focus();\n }\n }\n\n onClick = (data) => {\n const { noDecimal, noLatexHandling, onChange } = this.props;\n const c = toNodeData(data);\n log('mathChange: ', c);\n\n if (noLatexHandling) {\n onChange(c.value);\n return;\n }\n\n // if decimals are not allowed for this response, we discard the input\n if (noDecimal && (c.value === '.' || c.value === ',')) {\n return;\n }\n\n if (!c) {\n return;\n }\n\n if (c.type === 'clear') {\n log('call clear...');\n this.input.clear();\n } else if (c.type === 'command') {\n this.input.command(c.value);\n } else if (c.type === 'cursor') {\n this.input.keystroke(c.value);\n } else if (c.type === 'answer') {\n this.input.write('%response%');\n } else {\n this.input.write(c.value);\n }\n };\n\n updateDisable = (isEdit) => {\n const { maxResponseAreas } = this.props;\n\n if (maxResponseAreas) {\n const shouldDisable = this.checkResponseAreasNumber(maxResponseAreas, isEdit);\n\n this.setState({ addDisabled: shouldDisable });\n }\n };\n\n onAnswerBlockClick = () => {\n this.props.onAnswerBlockAdd();\n this.onClick({\n type: 'answer',\n });\n\n this.updateDisable(true);\n };\n\n onEditorChange = (latex) => {\n const { onChange, noDecimal } = this.props;\n\n updateSpans();\n\n this.updateDisable(true);\n\n // if no decimals are allowed and the last change is a decimal dot, discard the change\n if (noDecimal && (latex.indexOf('.') !== -1 || latex.indexOf(',') !== -1) && this.input) {\n this.input.clear();\n this.input.write(latex.replace(decimalRegex, ''));\n return;\n }\n\n // eslint-disable-next-line no-useless-escape\n const regexMatch = latex.match(/[0-9]\\\\ \\\\frac\\{[^\\{]*\\}\\{ \\}/);\n\n if (this.input && regexMatch && regexMatch?.length) {\n try {\n this.input.mathField.__controller.cursor.insLeftOf(this.input.mathField.__controller.cursor.parent[-1].parent);\n this.input.mathField.el().dispatchEvent(new KeyboardEvent('keydown', { keyCode: 8 }));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n\n return;\n }\n\n onChange(latex);\n };\n\n /** Only render if the mathquill instance's latex is different\n * or the keypad state changed from one state to the other (shown / hidden) */\n shouldComponentUpdate(nextProps, nextState) {\n const inputIsDifferent = this.input.mathField.latex() !== nextProps.latex;\n log('[shouldComponentUpdate] ', 'inputIsDifferent: ', inputIsDifferent);\n\n if (!isEqual(this.props.error, nextProps.error)) {\n return true;\n }\n\n if (!inputIsDifferent && this.props.keypadMode !== nextProps.keypadMode) {\n return true;\n }\n\n if (!inputIsDifferent && this.props.noDecimal !== nextProps.noDecimal) {\n return true;\n }\n\n if (!inputIsDifferent && this.state.equationEditor !== nextState.equationEditor) {\n return true;\n }\n\n if (!inputIsDifferent && this.props.controlledKeypad) {\n return this.props.showKeypad !== nextProps.showKeypad;\n }\n\n return inputIsDifferent;\n }\n\n onEditorTypeChange = (evt) => {\n this.setState({ equationEditor: evt.target.value });\n };\n\n checkResponseAreasNumber = (maxResponseAreas, isEdit) => {\n const { latex } = (this.input && this.input.props) || {};\n\n if (latex) {\n const count = (latex.match(/answerBlock/g) || []).length;\n\n return isEdit ? count === maxResponseAreas - 1 : count === maxResponseAreas;\n }\n\n return false;\n };\n\n render() {\n const {\n classNames,\n keypadMode,\n allowAnswerBlock,\n additionalKeys,\n controlledKeypad,\n controlledKeypadMode,\n showKeypad,\n noDecimal,\n hideInput,\n layoutForKeyPad,\n latex,\n onFocus,\n onBlur,\n classes,\n error,\n } = this.props;\n const shouldShowKeypad = !controlledKeypad || (controlledKeypad && showKeypad);\n const { addDisabled } = this.state;\n\n log('[render]', latex);\n\n return (\n <div className={cx(classes.mathToolbar, classNames.mathToolbar)}>\n <div className={cx(classes.inputAndTypeContainer, { [classes.hide]: hideInput })}>\n {controlledKeypadMode && (\n <InputContainer label=\"Equation Editor\" className={classes.selectContainer}>\n <Select className={classes.select} onChange={this.onEditorTypeChange} value={this.state.equationEditor}>\n <MenuItem value=\"non-negative-integers\">Numeric - Non-Negative Integers</MenuItem>\n <MenuItem value=\"integers\">Numeric - Integers</MenuItem>\n <MenuItem value=\"decimals\">Numeric - Decimals</MenuItem>\n <MenuItem value=\"fractions\">Numeric - Fractions</MenuItem>\n <MenuItem value={1}>Grade 1 - 2</MenuItem>\n <MenuItem value={3}>Grade 3 - 5</MenuItem>\n <MenuItem value={6}>Grade 6 - 7</MenuItem>\n <MenuItem value={8}>Grade 8 - HS</MenuItem>\n <MenuItem value={'geometry'}>Geometry</MenuItem>\n <MenuItem value={'advanced-algebra'}>Advanced Algebra</MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </InputContainer>\n )}\n <div className={cx(classes.inputContainer, error ? classes.error : '')}>\n <mq.Input\n onFocus={() => {\n onFocus && onFocus();\n this.updateDisable(false);\n }}\n onBlur={(event) => {\n this.updateDisable(false);\n onBlur && onBlur(event);\n }}\n className={cx(classes.mathEditor, classNames.editor, !controlledKeypadMode ? classes.longMathEditor : '')}\n innerRef={(r) => (this.input = r)}\n latex={latex}\n onChange={this.onEditorChange}\n />\n </div>\n </div>\n {allowAnswerBlock && (\n <Button\n className={classes.addAnswerBlockButton}\n type=\"primary\"\n style={{ bottom: shouldShowKeypad ? '320px' : '20px' }}\n onClick={this.onAnswerBlockClick}\n disabled={addDisabled}\n >\n + Response Area\n </Button>\n )}\n <hr className={classes.hr} />\n {shouldShowKeypad && (\n <HorizontalKeypad\n className={cx(classes[keypadMode], classes.keyboard)}\n layoutForKeyPad={layoutForKeyPad}\n additionalKeys={additionalKeys}\n mode={controlledKeypadMode ? this.state.equationEditor : keypadMode}\n onClick={this.onClick}\n noDecimal={noDecimal}\n />\n )}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n inputAndTypeContainer: {\n display: 'flex',\n alignItems: 'center',\n '& .mq-editable-field .mq-cursor': {\n top: '-4px',\n },\n '& .mq-math-mode .mq-selection, .mq-editable-field .mq-selection': {\n paddingTop: '18px',\n },\n '& .mq-math-mode .mq-overarrow': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n '& .mq-math-mode .mq-overline .mq-overline-inner': {\n paddingTop: '0.4em !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.45em',\n left: '-1px',\n },\n '&:after': {\n position: 'absolute',\n top: '0px !important',\n right: '-2px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& *': {\n fontFamily: 'MJXZERO, MJXTEX !important',\n\n '& .mq-math-mode > span > var': {\n fontFamily: 'MJXZERO, MJXTEX-I !important',\n },\n '& .mq-math-mode span var': {\n fontFamily: 'MJXZERO, MJXTEX-I !important',\n },\n '& .mq-math-mode .mq-nonSymbola': {\n fontFamily: 'MJXZERO, MJXTEX-I !important',\n },\n '& .mq-math-mode > span > var.mq-operator-name': {\n fontFamily: 'MJXZERO, MJXTEX !important',\n },\n\n '& .mq-math-mode .mq-sqrt-prefix': {\n verticalAlign: 'baseline !important',\n top: '1px !important',\n left: '-0.1em !important',\n },\n\n '& .mq-math-mode .mq-overarc ': {\n paddingTop: '0.45em !important',\n },\n\n '& .mq-math-mode sup.mq-nthroot': {\n fontSize: '70% !important',\n verticalAlign: '0.5em !important',\n paddingRight: '0.15em',\n },\n\n '& .mq-math-mode .mq-empty': {\n padding: '9px 1px !important',\n },\n\n '& .mq-math-mode .mq-root-block': {\n paddingTop: '10px',\n },\n\n '& .mq-scaled .mq-sqrt-prefix': {\n top: '0 !important',\n },\n\n '& .mq-longdiv-inner': {\n marginTop: '-1px',\n marginLeft: '5px !important;',\n\n '& > .mq-empty': {\n padding: '0 !important',\n marginLeft: '0px !important',\n marginTop: '2px',\n },\n },\n\n '& .mq-math-mode .mq-longdiv': {\n display: 'inline-flex !important',\n },\n\n '& .mq-math-mode .mq-longdiv .mq-longdiv-inner': {\n marginLeft: '4px !important',\n paddingTop: '6px !important',\n paddingLeft: '6px !important',\n },\n\n '& .mq-math-mode .mq-supsub': {\n fontSize: '70.7% !important',\n },\n\n '& .mq-math-mode .mq-paren': {\n verticalAlign: 'top !important',\n padding: '1px 0.1em !important',\n },\n\n '& .mq-math-mode .mq-sqrt-stem': {\n borderTop: '0.07em solid',\n marginLeft: '-1.5px',\n marginTop: '-2px !important',\n paddingTop: '5px !important',\n },\n\n '& .mq-supsub ': {\n fontSize: '70.7%',\n },\n\n '& .mq-math-mode .mq-supsub.mq-sup-only': {\n verticalAlign: '-0.1em !important',\n\n '& .mq-sup': {\n marginBottom: '0px !important',\n },\n },\n\n '& .mq-math-mode .mq-denominator': {\n marginTop: '-5px !important',\n padding: '0.5em 0.1em 0.1em !important',\n },\n\n '& .mq-math-mode .mq-numerator, .mq-math-mode .mq-over': {\n padding: '0 0.1em !important',\n paddingBottom: '0 !important',\n marginBottom: '-2px',\n },\n\n '-webkit-font-smoothing': 'antialiased !important',\n },\n },\n hide: {\n display: 'none',\n },\n selectContainer: {\n flex: 'initial',\n width: '25%',\n minWidth: '100px',\n marginLeft: '15px',\n marginTop: '5px',\n marginBottom: '5px',\n marginRight: '5px',\n\n '& label': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n\n '& div': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n },\n mathEditor: {\n maxWidth: '400px',\n color: color.text(),\n backgroundColor: color.background(),\n padding: '2px',\n },\n longMathEditor: {\n maxWidth: '500px',\n },\n addAnswerBlockButton: {\n position: 'absolute',\n right: '12px',\n border: '1px solid lightgrey',\n },\n hr: {\n padding: 0,\n margin: 0,\n height: '1px',\n border: 'none',\n borderBottom: `solid 1px ${theme.palette.primary.main}`,\n },\n mathToolbar: {\n zIndex: 9,\n position: 'relative',\n textAlign: 'center',\n width: 'auto',\n '& > .mq-math-mode': {\n border: 'solid 1px lightgrey',\n },\n '& > .mq-focused': {\n outline: 'none',\n boxShadow: 'none',\n border: `dotted 1px ${theme.palette.primary.main}`,\n borderRadius: '0px',\n },\n '& .mq-overarrow-inner': {\n border: 'none !important',\n paddingTop: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n top: '7.8px',\n marginTop: '0px',\n minWidth: '1.23em',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n },\n inputContainer: {\n minWidth: '500px',\n maxWidth: '900px',\n minHeight: '30px',\n width: '100%',\n display: 'flex',\n marginTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit,\n\n '& .mq-sqrt-prefix .mq-scaled': {\n verticalAlign: 'middle !important',\n },\n },\n error: {\n border: '2px solid red',\n },\n keyboard: {\n '& *': {\n fontFamily: 'MJXZERO, MJXTEX !important',\n\n '& .mq-math-mode > span > var': {\n fontFamily: 'MJXZERO, MJXTEX-I !important',\n },\n '& .mq-math-mode span var': {\n fontFamily: 'MJXZERO, MJXTEX-I !important',\n },\n '& .mq-math-mode .mq-nonSymbola': {\n fontFamily: 'MJXZERO, MJXTEX-I !important',\n },\n '& .mq-math-mode > span > var.mq-operator-name': {\n fontFamily: 'MJXZERO, MJXTEX !important',\n },\n\n '& .mq-math-mode .mq-sqrt-prefix': {\n top: '0 !important',\n },\n\n '& .mq-math-mode .mq-empty': {\n padding: '9px 1px !important',\n },\n\n '& .mq-longdiv-inner': {\n marginTop: '-1px',\n marginLeft: '5px !important;',\n\n '& > .mq-empty': {\n padding: '0 !important',\n marginLeft: '0px !important',\n marginTop: '2px',\n },\n },\n\n '& .mq-math-mode .mq-longdiv': {\n display: 'inline-flex !important',\n },\n\n '& .mq-math-mode .mq-supsub': {\n fontSize: '70.7% !important',\n },\n\n '& .mq-math-mode .mq-sqrt-stem': {\n marginTop: '-5px',\n paddingTop: '4px',\n },\n\n '& .mq-math-mode .mq-paren': {\n verticalAlign: 'middle !important',\n },\n\n '& .mq-math-mode .mq-overarrow .mq-overarrow-inner .mq-empty': {\n padding: '0 !important',\n },\n\n '& .mq-math-mode .mq-overline .mq-overline-inner .mq-empty ': {\n padding: '0 !important',\n },\n },\n },\n language: {\n '& *': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n },\n});\n\nexport default withStyles(styles)(EditorAndPad);\n"],"file":"editor-and-pad.js"}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.jsx"],"names":["MathToolbar","props","onDone","state","latex","setState","onChange","nextProps","classNames","autoFocus","allowAnswerBlock","onAnswerBlockAdd","controlledKeypad","controlledKeypadMode","keypadMode","noDecimal","additionalKeys","showKeypad","onFocus","onBlur","hideDoneButton","error","maxResponseAreas","done","React","Component","PropTypes","bool","oneOfType","string","number","object","array","isRequired","func","RawPureToolbar","hideInput","noLatexHandling","layoutForKeyPad","hideDoneButtonBackground","classes","pureToolbar","toolbar","any","styles","display","width","zIndex","alignItems","PureToolbar"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport EditorAndPad from './editor-and-pad';\nimport { DoneButton } from './done-button';\nimport { withStyles } from '@material-ui/core/styles';\nimport MathPreview from './math-preview';\n\nexport { MathPreview };\n\nexport class MathToolbar extends React.Component {\n static propTypes = {\n autoFocus: PropTypes.bool,\n allowAnswerBlock: PropTypes.bool,\n controlledKeypad: PropTypes.bool,\n controlledKeypadMode: PropTypes.bool,\n keypadMode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n classNames: PropTypes.object,\n error: PropTypes.string,\n maxResponseAreas: PropTypes.number,\n showKeypad: PropTypes.bool,\n noDecimal: PropTypes.bool,\n additionalKeys: PropTypes.array,\n latex: PropTypes.string.isRequired,\n onAnswerBlockAdd: PropTypes.func,\n onChange: PropTypes.func,\n onDone: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n hideDoneButton: PropTypes.bool,\n };\n\n static defaultProps = {\n classNames: {},\n keypadMode: 'item-authoring',\n autoFocus: false,\n allowAnswerBlock: false,\n controlledKeypad: false,\n controlledKeypadMode: false,\n noDecimal: false,\n showKeypad: true,\n additionalKeys: [],\n onChange: () => {},\n onAnswerBlockAdd: () => {},\n onFocus: () => {},\n hideDoneButton: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n latex: props.latex,\n };\n }\n\n done = () => {\n this.props.onDone(this.state.latex);\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ latex: nextProps.latex });\n }\n\n onChange = (latex) => {\n this.setState({ latex });\n this.props.onChange(latex);\n };\n\n render() {\n const { latex } = this.state;\n const {\n classNames,\n autoFocus,\n allowAnswerBlock,\n onAnswerBlockAdd,\n controlledKeypad,\n controlledKeypadMode,\n keypadMode,\n noDecimal,\n additionalKeys,\n showKeypad,\n onFocus,\n onBlur,\n hideDoneButton,\n error,\n maxResponseAreas,\n } = this.props;\n\n return (\n <PureToolbar\n autoFocus={autoFocus}\n classNames={classNames}\n onAnswerBlockAdd={onAnswerBlockAdd}\n allowAnswerBlock={allowAnswerBlock}\n latex={latex}\n additionalKeys={additionalKeys}\n noDecimal={noDecimal}\n keypadMode={keypadMode}\n onChange={this.onChange}\n onDone={this.done}\n onFocus={onFocus}\n onBlur={onBlur}\n showKeypad={showKeypad}\n controlledKeypad={controlledKeypad}\n controlledKeypadMode={controlledKeypadMode}\n hideDoneButton={hideDoneButton}\n error={error}\n maxResponseAreas={maxResponseAreas}\n />\n );\n }\n}\n\nexport class RawPureToolbar extends React.Component {\n static propTypes = {\n classNames: PropTypes.object,\n latex: PropTypes.string,\n keypadMode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n hideInput: PropTypes.bool,\n noLatexHandling: PropTypes.bool,\n layoutForKeyPad: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n onDone: PropTypes.func.isRequired,\n onBlur: PropTypes.func,\n onAnswerBlockAdd: PropTypes.func,\n additionalKeys: PropTypes.array,\n onFocus: PropTypes.func,\n classes: PropTypes.object.isRequired,\n autoFocus: PropTypes.bool,\n noDecimal: PropTypes.bool,\n allowAnswerBlock: PropTypes.bool,\n controlledKeypad: PropTypes.bool,\n controlledKeypadMode: PropTypes.bool,\n showKeypad: PropTypes.bool,\n hideDoneButton: PropTypes.bool,\n hideDoneButtonBackground: PropTypes.bool,\n error: PropTypes.any,\n maxResponseAreas: PropTypes.number,\n };\n\n static defaultProps = {\n classNames: {},\n hideDoneButtonBackground: false,\n };\n\n render() {\n const {\n classNames,\n autoFocus,\n allowAnswerBlock,\n onAnswerBlockAdd,\n controlledKeypad,\n controlledKeypadMode,\n additionalKeys,\n showKeypad,\n keypadMode,\n noDecimal,\n hideInput,\n noLatexHandling,\n layoutForKeyPad,\n latex,\n onChange,\n onDone,\n onFocus,\n onBlur,\n hideDoneButton,\n hideDoneButtonBackground,\n classes,\n error,\n maxResponseAreas,\n } = this.props;\n\n return (\n <div className={cx(classes.pureToolbar, (classNames || {}).toolbar)} contentEditable={false}>\n <div />\n <EditorAndPad\n autoFocus={autoFocus}\n keypadMode={keypadMode}\n classNames={classNames || {}}\n controlledKeypad={controlledKeypad}\n controlledKeypadMode={controlledKeypadMode}\n noDecimal={noDecimal}\n hideInput={hideInput}\n noLatexHandling={noLatexHandling}\n layoutForKeyPad={layoutForKeyPad}\n showKeypad={showKeypad}\n additionalKeys={additionalKeys}\n allowAnswerBlock={allowAnswerBlock}\n onAnswerBlockAdd={onAnswerBlockAdd}\n latex={latex}\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n error={error}\n maxResponseAreas={maxResponseAreas}\n />\n {(!controlledKeypad || (controlledKeypad && showKeypad)) && !hideDoneButton && (\n <DoneButton hideBackground={hideDoneButtonBackground} onClick={onDone} />\n )}\n </div>\n );\n }\n}\nconst styles = () => ({\n pureToolbar: {\n display: 'flex',\n width: '100%',\n zIndex: 8,\n alignItems: 'center',\n },\n});\n\nexport const PureToolbar = withStyles(styles)(RawPureToolbar);\n"],"file":"index.js"}