@pie-lib/math-toolbar 3.0.3 → 3.0.5

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 CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.0.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-toolbar@3.0.4...@pie-lib/math-toolbar@3.0.5) (2026-06-25)
7
+
8
+ ### Bug Fixes
9
+
10
+ - math editor saves on close and focuses when switching node [PIE-695][PIE-697] ([54beb75](https://github.com/pie-framework/pie-lib/commit/54beb75afe197d157623bb7feec92796a196091a))
11
+
12
+ ## [3.0.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-toolbar@3.0.3...@pie-lib/math-toolbar@3.0.4) (2026-06-12)
13
+
14
+ ### Bug Fixes
15
+
16
+ - correct @emotion/style typo to @emotion/styled in package deps PIE-678 ([d529ac7](https://github.com/pie-framework/pie-lib/commit/d529ac7bc3dfa94d8037688452d4c70c66f2590b))
17
+
6
18
  ## [3.0.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-toolbar@3.0.2...@pie-lib/math-toolbar@3.0.3) (2026-06-01)
7
19
 
8
20
  **Note:** Version bump only for package @pie-lib/math-toolbar
@@ -368,8 +368,12 @@ var EditorAndPad = exports.EditorAndPad = /*#__PURE__*/function (_React$Componen
368
368
  return (0, _createClass2["default"])(EditorAndPad, [{
369
369
  key: "componentDidMount",
370
370
  value: function componentDidMount() {
371
+ var _this2 = this;
371
372
  if (this.input && this.props.autoFocus) {
372
- this.input.focus();
373
+ // adding a timeout to wait for other stuff related to focus to be finished
374
+ setTimeout(function () {
375
+ return _this2.input.focus();
376
+ }, 0);
373
377
  }
374
378
  }
375
379
  }, {
@@ -400,7 +404,7 @@ var EditorAndPad = exports.EditorAndPad = /*#__PURE__*/function (_React$Componen
400
404
  }, {
401
405
  key: "render",
402
406
  value: function render() {
403
- var _this2 = this;
407
+ var _this3 = this;
404
408
  var _this$props3 = this.props,
405
409
  classNames = _this$props3.classNames,
406
410
  keypadMode = _this$props3.keypadMode,
@@ -470,16 +474,16 @@ var EditorAndPad = exports.EditorAndPad = /*#__PURE__*/function (_React$Componen
470
474
  }, /*#__PURE__*/_react["default"].createElement(MathEditor, {
471
475
  onFocus: function onFocus() {
472
476
  _onFocus && _onFocus();
473
- _this2.updateDisable(false);
477
+ _this3.updateDisable(false);
474
478
  },
475
479
  onBlur: function onBlur(event) {
476
- _this2.updateDisable(false);
480
+ _this3.updateDisable(false);
477
481
  _onBlur && _onBlur(event);
478
482
  },
479
483
  className: classNames && classNames.editor || '',
480
484
  controlledKeypadMode: controlledKeypadMode,
481
485
  ref: function ref(r) {
482
- return _this2.input = r;
486
+ return _this3.input = r;
483
487
  },
484
488
  latex: latex,
485
489
  onChange: this.onEditorChange
@@ -1 +1 @@
1
- {"version":3,"file":"editor-and-pad.js","names":["_react","_interopRequireDefault","require","_debug","_propTypes","_Button","_styles","_MenuItem","_Select","_lodashEs","_FormControl","_InputLabel","_mathInput","_renderUi","_utils","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_mq$CommonMqStyles","mq","CommonMqStyles","commonMqFontStyles","commonMqKeyboardStyles","longdivStyles","supsubStyles","log","debug","decimalRegex","MathToolbarContainer","styled","_ref","theme","zIndex","position","textAlign","width","border","outline","boxShadow","concat","palette","primary","main","borderRadius","paddingTop","display","borderTop","top","marginTop","minWidth","lineHeight","InputAndTypeContainer","_ref2","hide","alignItems","fontFamily","left","right","verticalAlign","padding","marginLeft","paddingLeft","paddingBottom","marginBottom","StyledFormControl","FormControl","flex","marginRight","StyledInputLabel","InputLabel","backgroundColor","InputContainerDiv","_ref3","error","maxWidth","minHeight","spacing","MathEditor","Input","_ref4","controlledKeypadMode","color","text","background","AddAnswerBlockButton","Button","StyledHr","_ref5","margin","height","borderBottom","KeyboardContainer","HorizontalKeypad","_ref6","mode","toNodeData","data","type","value","EditorAndPad","exports","_React$Component","props","_this","_classCallCheck2","_this$props","noDecimal","noLatexHandling","onChange","c","input","clear","command","keystroke","write","isEdit","maxResponseAreas","shouldDisable","checkResponseAreasNumber","setState","addDisabled","onAnswerBlockAdd","onClick","updateDisable","latex","_this$props2","updateSpans","markFractionBaseSuperscripts","indexOf","replace","regexMatch","match","mathField","__controller","cursor","insLeftOf","parent","el","dispatchEvent","KeyboardEvent","keyCode","console","toString","evt","equationEditor","target","_ref7","count","state","_inherits2","_createClass2","key","componentDidMount","autoFocus","focus","shouldComponentUpdate","nextProps","nextState","inputIsDifferent","isEqual","keypadMode","controlledKeypad","showKeypad","render","_this2","_this$props3","classNames","allowAnswerBlock","additionalKeys","setKeypadInteraction","hideInput","layoutForKeyPad","onFocus","onBlur","shouldShowKeypad","createElement","className","mathToolbar","variant","id","labelId","name","label","onEditorTypeChange","MenuProps","transitionDuration","enter","exit","event","editor","ref","onEditorChange","style","bottom","onAnswerBlockClick","disabled","React","Component","PropTypes","object","oneOfType","string","number","bool","array","isRequired","func","_default"],"sources":["../src/editor-and-pad.jsx"],"sourcesContent":["import React from 'react';\nimport debug from 'debug';\nimport PropTypes from 'prop-types';\nimport Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\nimport MenuItem from '@mui/material/MenuItem';\nimport Select from '@mui/material/Select';\nimport { isEqual } from 'lodash-es';\nimport FormControl from '@mui/material/FormControl';\nimport InputLabel from '@mui/material/InputLabel';\n\nimport { HorizontalKeypad, mq, updateSpans } from '@pie-lib/math-input';\nimport { color } from '@pie-lib/render-ui';\nimport { markFractionBaseSuperscripts } from './utils';\n\nconst { commonMqFontStyles, commonMqKeyboardStyles, longdivStyles, supsubStyles } = mq.CommonMqStyles;\nconst log = debug('@pie-lib:math-toolbar:editor-and-pad');\n\nconst decimalRegex = /\\.|,/g;\n\nconst MathToolbarContainer = styled('div')(({ theme }) => ({\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\nconst InputAndTypeContainer = styled('div')(({ theme, hide }) => ({\n display: hide ? 'none' : '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 !important',\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 ...commonMqFontStyles,\n ...supsubStyles,\n ...longdivStyles,\n '& .mq-math-mode .mq-sqrt-prefix': {\n verticalAlign: 'baseline !important',\n top: '1px !important',\n left: '-0.1em !important',\n },\n '& .mq-math-mode .mq-overarc ': {\n paddingTop: '0.45em !important',\n },\n '& .mq-math-mode .mq-empty': {\n padding: '9px 1px !important',\n },\n '& .mq-math-mode .mq-root-block': {\n paddingTop: '10px',\n },\n '& .mq-scaled .mq-sqrt-prefix': {\n top: '0 !important',\n },\n '& .mq-math-mode .mq-longdiv .mq-longdiv-inner': {\n marginLeft: '4px !important',\n paddingTop: '6px !important',\n paddingLeft: '6px !important',\n },\n '& .mq-math-mode .mq-paren': {\n verticalAlign: 'top !important',\n padding: '1px 0.1em !important',\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 '& .mq-math-mode .mq-denominator': {\n marginTop: '-5px !important',\n padding: '0.5em 0.1em 0.1em !important',\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 '& span[data-prime=\"true\"]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n}));\n\nconst StyledFormControl = styled(FormControl)({\n flex: 'initial',\n width: '25%',\n minWidth: '100px',\n marginLeft: '15px',\n marginTop: '5px',\n marginBottom: '5px',\n marginRight: '5px',\n '& label': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n '& div': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n});\n\nconst StyledInputLabel = styled(InputLabel)(() => ({\n backgroundColor: 'transparent',\n}));\n\nconst InputContainerDiv = styled('div')(({ theme, error }) => ({\n minWidth: '500px',\n maxWidth: '900px',\n minHeight: '30px',\n width: '100%',\n display: 'flex',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n ...(error && {\n border: '2px solid red',\n }),\n '& .mq-sqrt-prefix .mq-scaled': {\n verticalAlign: 'middle !important',\n },\n}));\n\nconst MathEditor = styled(mq.Input)(({ controlledKeypadMode }) => ({\n maxWidth: controlledKeypadMode ? '400px' : '500px',\n color: color.text(),\n backgroundColor: color.background(),\n padding: '2px',\n}));\n\nconst AddAnswerBlockButton = styled(Button)({\n position: 'absolute',\n right: '12px',\n border: '1px solid lightgrey',\n color: color.text(),\n});\n\nconst StyledHr = styled('hr')(({ theme }) => ({\n padding: 0,\n margin: 0,\n height: '1px',\n border: 'none',\n borderBottom: `solid 1px ${theme.palette.primary.main}`,\n}));\n\nconst KeyboardContainer = styled(HorizontalKeypad)(({ mode }) => ({\n ...commonMqKeyboardStyles,\n ...(mode === 'language' && {\n '& *': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n }),\n}));\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.isRequired,\n onAnswerBlockAdd: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n setKeypadInteraction: PropTypes.func,\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 markFractionBaseSuperscripts();\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 setKeypadInteraction,\n noDecimal,\n hideInput,\n layoutForKeyPad,\n latex,\n onFocus,\n onBlur,\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 <MathToolbarContainer className={classNames.mathToolbar}>\n <InputAndTypeContainer hide={hideInput}>\n {controlledKeypadMode && (\n <StyledFormControl variant={'standard'}>\n <StyledInputLabel id=\"equation-editor-label\">{'Equation Editor'}</StyledInputLabel>\n <Select\n labelId=\"equation-editor-label\"\n id=\"equation-editor-select\"\n name=\"equationEditor\"\n label={'Equation Editor'}\n onChange={this.onEditorTypeChange}\n value={this.state.equationEditor}\n MenuProps={{ transitionDuration: { enter: 225, exit: 195 } }}\n >\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 </StyledFormControl>\n )}\n <InputContainerDiv error={error}>\n <MathEditor\n onFocus={() => {\n onFocus && onFocus();\n this.updateDisable(false);\n }}\n onBlur={(event) => {\n this.updateDisable(false);\n onBlur && onBlur(event);\n }}\n className={(classNames && classNames.editor) || ''}\n controlledKeypadMode={controlledKeypadMode}\n ref={(r) => (this.input = r)}\n latex={latex}\n onChange={this.onEditorChange}\n />\n </InputContainerDiv>\n </InputAndTypeContainer>\n {allowAnswerBlock && (\n <AddAnswerBlockButton\n type=\"primary\"\n style={{ bottom: shouldShowKeypad ? '320px' : '20px' }}\n onClick={this.onAnswerBlockClick}\n disabled={addDisabled}\n >\n + Response Area\n </AddAnswerBlockButton>\n )}\n <StyledHr />\n {shouldShowKeypad && (\n <KeyboardContainer\n mode={controlledKeypadMode ? this.state.equationEditor : keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n layoutForKeyPad={layoutForKeyPad}\n additionalKeys={additionalKeys}\n onClick={this.onClick}\n noDecimal={noDecimal}\n setKeypadInteraction={setKeypadInteraction}\n />\n )}\n </MathToolbarContainer>\n );\n }\n}\n\nexport default EditorAndPad;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"editor-and-pad.js","names":["_react","_interopRequireDefault","require","_debug","_propTypes","_Button","_styles","_MenuItem","_Select","_lodashEs","_FormControl","_InputLabel","_mathInput","_renderUi","_utils","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_mq$CommonMqStyles","mq","CommonMqStyles","commonMqFontStyles","commonMqKeyboardStyles","longdivStyles","supsubStyles","log","debug","decimalRegex","MathToolbarContainer","styled","_ref","theme","zIndex","position","textAlign","width","border","outline","boxShadow","concat","palette","primary","main","borderRadius","paddingTop","display","borderTop","top","marginTop","minWidth","lineHeight","InputAndTypeContainer","_ref2","hide","alignItems","fontFamily","left","right","verticalAlign","padding","marginLeft","paddingLeft","paddingBottom","marginBottom","StyledFormControl","FormControl","flex","marginRight","StyledInputLabel","InputLabel","backgroundColor","InputContainerDiv","_ref3","error","maxWidth","minHeight","spacing","MathEditor","Input","_ref4","controlledKeypadMode","color","text","background","AddAnswerBlockButton","Button","StyledHr","_ref5","margin","height","borderBottom","KeyboardContainer","HorizontalKeypad","_ref6","mode","toNodeData","data","type","value","EditorAndPad","exports","_React$Component","props","_this","_classCallCheck2","_this$props","noDecimal","noLatexHandling","onChange","c","input","clear","command","keystroke","write","isEdit","maxResponseAreas","shouldDisable","checkResponseAreasNumber","setState","addDisabled","onAnswerBlockAdd","onClick","updateDisable","latex","_this$props2","updateSpans","markFractionBaseSuperscripts","indexOf","replace","regexMatch","match","mathField","__controller","cursor","insLeftOf","parent","el","dispatchEvent","KeyboardEvent","keyCode","console","toString","evt","equationEditor","target","_ref7","count","state","_inherits2","_createClass2","key","componentDidMount","_this2","autoFocus","setTimeout","focus","shouldComponentUpdate","nextProps","nextState","inputIsDifferent","isEqual","keypadMode","controlledKeypad","showKeypad","render","_this3","_this$props3","classNames","allowAnswerBlock","additionalKeys","setKeypadInteraction","hideInput","layoutForKeyPad","onFocus","onBlur","shouldShowKeypad","createElement","className","mathToolbar","variant","id","labelId","name","label","onEditorTypeChange","MenuProps","transitionDuration","enter","exit","event","editor","ref","onEditorChange","style","bottom","onAnswerBlockClick","disabled","React","Component","PropTypes","object","oneOfType","string","number","bool","array","isRequired","func","_default"],"sources":["../src/editor-and-pad.jsx"],"sourcesContent":["import React from 'react';\nimport debug from 'debug';\nimport PropTypes from 'prop-types';\nimport Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\nimport MenuItem from '@mui/material/MenuItem';\nimport Select from '@mui/material/Select';\nimport { isEqual } from 'lodash-es';\nimport FormControl from '@mui/material/FormControl';\nimport InputLabel from '@mui/material/InputLabel';\n\nimport { HorizontalKeypad, mq, updateSpans } from '@pie-lib/math-input';\nimport { color } from '@pie-lib/render-ui';\nimport { markFractionBaseSuperscripts } from './utils';\n\nconst { commonMqFontStyles, commonMqKeyboardStyles, longdivStyles, supsubStyles } = mq.CommonMqStyles;\nconst log = debug('@pie-lib:math-toolbar:editor-and-pad');\n\nconst decimalRegex = /\\.|,/g;\n\nconst MathToolbarContainer = styled('div')(({ theme }) => ({\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\nconst InputAndTypeContainer = styled('div')(({ theme, hide }) => ({\n display: hide ? 'none' : '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 !important',\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 ...commonMqFontStyles,\n ...supsubStyles,\n ...longdivStyles,\n '& .mq-math-mode .mq-sqrt-prefix': {\n verticalAlign: 'baseline !important',\n top: '1px !important',\n left: '-0.1em !important',\n },\n '& .mq-math-mode .mq-overarc ': {\n paddingTop: '0.45em !important',\n },\n '& .mq-math-mode .mq-empty': {\n padding: '9px 1px !important',\n },\n '& .mq-math-mode .mq-root-block': {\n paddingTop: '10px',\n },\n '& .mq-scaled .mq-sqrt-prefix': {\n top: '0 !important',\n },\n '& .mq-math-mode .mq-longdiv .mq-longdiv-inner': {\n marginLeft: '4px !important',\n paddingTop: '6px !important',\n paddingLeft: '6px !important',\n },\n '& .mq-math-mode .mq-paren': {\n verticalAlign: 'top !important',\n padding: '1px 0.1em !important',\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 '& .mq-math-mode .mq-denominator': {\n marginTop: '-5px !important',\n padding: '0.5em 0.1em 0.1em !important',\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 '& span[data-prime=\"true\"]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n}));\n\nconst StyledFormControl = styled(FormControl)({\n flex: 'initial',\n width: '25%',\n minWidth: '100px',\n marginLeft: '15px',\n marginTop: '5px',\n marginBottom: '5px',\n marginRight: '5px',\n '& label': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n '& div': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n});\n\nconst StyledInputLabel = styled(InputLabel)(() => ({\n backgroundColor: 'transparent',\n}));\n\nconst InputContainerDiv = styled('div')(({ theme, error }) => ({\n minWidth: '500px',\n maxWidth: '900px',\n minHeight: '30px',\n width: '100%',\n display: 'flex',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n ...(error && {\n border: '2px solid red',\n }),\n '& .mq-sqrt-prefix .mq-scaled': {\n verticalAlign: 'middle !important',\n },\n}));\n\nconst MathEditor = styled(mq.Input)(({ controlledKeypadMode }) => ({\n maxWidth: controlledKeypadMode ? '400px' : '500px',\n color: color.text(),\n backgroundColor: color.background(),\n padding: '2px',\n}));\n\nconst AddAnswerBlockButton = styled(Button)({\n position: 'absolute',\n right: '12px',\n border: '1px solid lightgrey',\n color: color.text(),\n});\n\nconst StyledHr = styled('hr')(({ theme }) => ({\n padding: 0,\n margin: 0,\n height: '1px',\n border: 'none',\n borderBottom: `solid 1px ${theme.palette.primary.main}`,\n}));\n\nconst KeyboardContainer = styled(HorizontalKeypad)(({ mode }) => ({\n ...commonMqKeyboardStyles,\n ...(mode === 'language' && {\n '& *': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n }),\n}));\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.isRequired,\n onAnswerBlockAdd: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n setKeypadInteraction: PropTypes.func,\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 // adding a timeout to wait for other stuff related to focus to be finished\n setTimeout(() => this.input.focus(), 0);\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 markFractionBaseSuperscripts();\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 setKeypadInteraction,\n noDecimal,\n hideInput,\n layoutForKeyPad,\n latex,\n onFocus,\n onBlur,\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 <MathToolbarContainer className={classNames.mathToolbar}>\n <InputAndTypeContainer hide={hideInput}>\n {controlledKeypadMode && (\n <StyledFormControl variant={'standard'}>\n <StyledInputLabel id=\"equation-editor-label\">{'Equation Editor'}</StyledInputLabel>\n <Select\n labelId=\"equation-editor-label\"\n id=\"equation-editor-select\"\n name=\"equationEditor\"\n label={'Equation Editor'}\n onChange={this.onEditorTypeChange}\n value={this.state.equationEditor}\n MenuProps={{ transitionDuration: { enter: 225, exit: 195 } }}\n >\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 </StyledFormControl>\n )}\n <InputContainerDiv error={error}>\n <MathEditor\n onFocus={() => {\n onFocus && onFocus();\n this.updateDisable(false);\n }}\n onBlur={(event) => {\n this.updateDisable(false);\n onBlur && onBlur(event);\n }}\n className={(classNames && classNames.editor) || ''}\n controlledKeypadMode={controlledKeypadMode}\n ref={(r) => (this.input = r)}\n latex={latex}\n onChange={this.onEditorChange}\n />\n </InputContainerDiv>\n </InputAndTypeContainer>\n {allowAnswerBlock && (\n <AddAnswerBlockButton\n type=\"primary\"\n style={{ bottom: shouldShowKeypad ? '320px' : '20px' }}\n onClick={this.onAnswerBlockClick}\n disabled={addDisabled}\n >\n + Response Area\n </AddAnswerBlockButton>\n )}\n <StyledHr />\n {shouldShowKeypad && (\n <KeyboardContainer\n mode={controlledKeypadMode ? this.state.equationEditor : keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n layoutForKeyPad={layoutForKeyPad}\n additionalKeys={additionalKeys}\n onClick={this.onClick}\n noDecimal={noDecimal}\n setKeypadInteraction={setKeypadInteraction}\n />\n )}\n </MathToolbarContainer>\n );\n }\n}\n\nexport default EditorAndPad;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "3.0.3",
6
+ "version": "3.0.5",
7
7
  "description": "Math toolbar for editing math equations",
8
8
  "keywords": [
9
9
  "math",
@@ -18,11 +18,11 @@
18
18
  "repository": "pie-framework/pie-lib",
19
19
  "dependencies": {
20
20
  "@emotion/react": "^11.14.0",
21
- "@emotion/style": "^0.8.0",
21
+ "@emotion/styled": "^11.14.1",
22
22
  "@mui/icons-material": "^7.3.4",
23
23
  "@mui/material": "^7.3.4",
24
- "@pie-lib/math-input": "^8.1.0",
25
- "@pie-lib/render-ui": "^6.1.1",
24
+ "@pie-lib/math-input": "^8.1.1",
25
+ "@pie-lib/render-ui": "^6.1.2",
26
26
  "debug": "^4.1.1",
27
27
  "lodash-es": "^4.17.23",
28
28
  "prop-types": "^15.7.2"
@@ -35,5 +35,5 @@
35
35
  "@pie-lib/test-utils": "^2.0.2"
36
36
  },
37
37
  "scripts": {},
38
- "gitHead": "381e012542b7849f83aa84b08e4b6664cedff245"
38
+ "gitHead": "1747b14454cbfdf9ad47058bb1ede12ff7ed51a9"
39
39
  }
@@ -9,8 +9,66 @@ describe('EditorAndPad', () => {
9
9
  onBlur: jest.fn(),
10
10
  };
11
11
 
12
+ beforeEach(() => {
13
+ jest.useFakeTimers();
14
+ });
15
+
16
+ afterEach(() => {
17
+ jest.useRealTimers();
18
+ });
19
+
12
20
  it('renders with default props', () => {
13
21
  const { container } = render(<EditorAndPad {...defaultProps} />);
14
22
  expect(container.firstChild).toBeInTheDocument();
15
23
  });
24
+
25
+ describe('autoFocus', () => {
26
+ it('focuses input immediately via setTimeout when autoFocus is true', () => {
27
+ const mockFocus = jest.fn();
28
+ const component = new EditorAndPad({ ...defaultProps, autoFocus: true });
29
+ component.input = { focus: mockFocus };
30
+
31
+ component.componentDidMount();
32
+
33
+ expect(mockFocus).not.toHaveBeenCalled();
34
+
35
+ jest.runAllTimers();
36
+
37
+ expect(mockFocus).toHaveBeenCalledTimes(1);
38
+ });
39
+
40
+ it('does not focus input when autoFocus is false', () => {
41
+ const mockFocus = jest.fn();
42
+ const component = new EditorAndPad({ ...defaultProps, autoFocus: false });
43
+ component.input = { focus: mockFocus };
44
+
45
+ component.componentDidMount();
46
+ jest.runAllTimers();
47
+
48
+ expect(mockFocus).not.toHaveBeenCalled();
49
+ });
50
+
51
+ it('does not focus when input ref is not set', () => {
52
+ const component = new EditorAndPad({ ...defaultProps, autoFocus: true });
53
+ component.input = null;
54
+
55
+ expect(() => {
56
+ component.componentDidMount();
57
+ jest.runAllTimers();
58
+ }).not.toThrow();
59
+ });
60
+
61
+ it('uses setTimeout with 0ms delay to defer focus', () => {
62
+ const setTimeoutSpy = jest.spyOn(global, 'setTimeout');
63
+ const mockFocus = jest.fn();
64
+ const component = new EditorAndPad({ ...defaultProps, autoFocus: true });
65
+ component.input = { focus: mockFocus };
66
+
67
+ component.componentDidMount();
68
+
69
+ expect(setTimeoutSpy).toHaveBeenCalledWith(expect.any(Function), 0);
70
+
71
+ setTimeoutSpy.mockRestore();
72
+ });
73
+ });
16
74
  });
@@ -263,7 +263,8 @@ export class EditorAndPad extends React.Component {
263
263
 
264
264
  componentDidMount() {
265
265
  if (this.input && this.props.autoFocus) {
266
- this.input.focus();
266
+ // adding a timeout to wait for other stuff related to focus to be finished
267
+ setTimeout(() => this.input.focus(), 0);
267
268
  }
268
269
  }
269
270