@pie-lib/math-input 7.2.0-next.9 → 8.0.1
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 +22 -0
- package/lib/index.js +17 -2
- package/lib/index.js.map +1 -1
- package/lib/keypad/index.js +3 -3
- package/lib/keypad/index.js.map +1 -1
- package/lib/mq/input.js +3 -12
- package/lib/mq/input.js.map +1 -1
- package/lib/mq/mathquill-instance.js +52 -0
- package/lib/mq/mathquill-instance.js.map +1 -0
- package/lib/mq/static.js +3 -7
- package/lib/mq/static.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/index.test.js +6 -1
- package/src/index.jsx +12 -1
- package/src/keypad/index.jsx +8 -8
- package/src/mq/__tests__/mathquill-instance.test.js +67 -0
- package/src/mq/input.jsx +1 -13
- package/src/mq/mathquill-instance.js +45 -0
- package/src/mq/static.jsx +1 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
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
|
+
## [8.0.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@8.0.0...@pie-lib/math-input@8.0.1) (2026-04-28)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-lib/math-input
|
|
9
|
+
|
|
10
|
+
# [7.2.0-next.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@7.2.0-next.11...@pie-lib/math-input@7.2.0-next.12) (2026-04-09)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **math-input:** centralize MathQuill init; export registerEmbed and applyStaticMath PIE-57 ([43350d8](https://github.com/pie-framework/pie-lib/commit/43350d8d8cee0b64a8c6d2c585985d406eaa6871))
|
|
15
|
+
|
|
16
|
+
# [7.2.0-next.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@7.2.0-next.10...@pie-lib/math-input@7.2.0-next.11) (2026-04-03)
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- **math-input:** bump @pie-framework/mathquill to 1.2.1-beta.1 with jQuery shim fixes PIE-16 PIE-20 ([3eaa8fd](https://github.com/pie-framework/pie-lib/commit/3eaa8fd410d8668c2d085cca4a4995a7e66d774f))
|
|
21
|
+
|
|
22
|
+
# [7.2.0-next.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@7.2.0-next.9...@pie-lib/math-input@7.2.0-next.10) (2026-03-25)
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
|
|
26
|
+
- **math-input:** add hover styles for keypad buttons and update color definitions PD-5530 ([a3cb101](https://github.com/pie-framework/pie-lib/commit/a3cb101e5f326df14d0ae8454689ee18218744db))
|
|
27
|
+
|
|
6
28
|
# [7.2.0-next.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@7.2.0-next.8...@pie-lib/math-input@7.2.0-next.9) (2026-03-18)
|
|
7
29
|
|
|
8
30
|
### Bug Fixes
|
package/lib/index.js
CHANGED
|
@@ -11,14 +11,28 @@ Object.defineProperty(exports, "HorizontalKeypad", {
|
|
|
11
11
|
return _horizontalKeypad["default"];
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
-
exports.
|
|
14
|
+
exports.addBrackets = void 0;
|
|
15
|
+
Object.defineProperty(exports, "applyStaticMath", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function get() {
|
|
18
|
+
return _mathquillInstance.applyStaticMath;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
exports.keys = void 0;
|
|
15
22
|
Object.defineProperty(exports, "keysForGrade", {
|
|
16
23
|
enumerable: true,
|
|
17
24
|
get: function get() {
|
|
18
25
|
return _grades.keysForGrade;
|
|
19
26
|
}
|
|
20
27
|
});
|
|
21
|
-
exports.
|
|
28
|
+
exports.mq = void 0;
|
|
29
|
+
Object.defineProperty(exports, "registerEmbed", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function get() {
|
|
32
|
+
return _mathquillInstance.registerEmbed;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
exports.removeBrackets = void 0;
|
|
22
36
|
Object.defineProperty(exports, "updateSpans", {
|
|
23
37
|
enumerable: true,
|
|
24
38
|
get: function get() {
|
|
@@ -32,6 +46,7 @@ exports.keys = keys;
|
|
|
32
46
|
var _horizontalKeypad = _interopRequireDefault(require("./horizontal-keypad"));
|
|
33
47
|
var mq = _interopRequireWildcard(require("./mq"));
|
|
34
48
|
exports.mq = mq;
|
|
49
|
+
var _mathquillInstance = require("./mq/mathquill-instance");
|
|
35
50
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
36
51
|
var addLeftBracket = function addLeftBracket(s) {
|
|
37
52
|
return s.indexOf('\\(') === 0 ? s : "\\(".concat(s);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_grades","require","_updateSpans","keys","_interopRequireWildcard","exports","_horizontalKeypad","_interopRequireDefault","mq","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","addLeftBracket","s","indexOf","concat","addRightBracket","length","rmLeftBracket","substring","rmRightBracket","addBrackets","removeBrackets"],"sources":["../src/index.jsx"],"sourcesContent":["import { keysForGrade } from './keys/grades';\nimport { updateSpans } from './updateSpans';\nimport * as keys from './keys';\n\nimport HorizontalKeypad from './horizontal-keypad';\n\nimport * as mq from './mq';\n\nconst addLeftBracket = (s) => (s.indexOf('\\\\(') === 0 ? s : `\\\\(${s}`);\nconst addRightBracket = (s) => (s.indexOf('\\\\)') === s.length - 2 ? s : `${s}\\\\)`);\nconst rmLeftBracket = (s) => (s.indexOf('\\\\(') === 0 ? s.substring(2) : s);\nconst rmRightBracket = (s) => (s.indexOf('\\\\)') === s.length - 2 ? s.substring(0, s.length - 2) : s);\n\nconst addBrackets = (s) => addRightBracket(addLeftBracket(s));\nconst removeBrackets = (s) => rmRightBracket(rmLeftBracket(s));\n\nexport {
|
|
1
|
+
{"version":3,"file":"index.js","names":["_grades","require","_updateSpans","keys","_interopRequireWildcard","exports","_horizontalKeypad","_interopRequireDefault","mq","_mathquillInstance","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","addLeftBracket","s","indexOf","concat","addRightBracket","length","rmLeftBracket","substring","rmRightBracket","addBrackets","removeBrackets"],"sources":["../src/index.jsx"],"sourcesContent":["import { keysForGrade } from './keys/grades';\nimport { updateSpans } from './updateSpans';\nimport * as keys from './keys';\n\nimport HorizontalKeypad from './horizontal-keypad';\n\nimport * as mq from './mq';\nimport { registerEmbed, applyStaticMath } from './mq/mathquill-instance';\n\nconst addLeftBracket = (s) => (s.indexOf('\\\\(') === 0 ? s : `\\\\(${s}`);\nconst addRightBracket = (s) => (s.indexOf('\\\\)') === s.length - 2 ? s : `${s}\\\\)`);\nconst rmLeftBracket = (s) => (s.indexOf('\\\\(') === 0 ? s.substring(2) : s);\nconst rmRightBracket = (s) => (s.indexOf('\\\\)') === s.length - 2 ? s.substring(0, s.length - 2) : s);\n\nconst addBrackets = (s) => addRightBracket(addLeftBracket(s));\nconst removeBrackets = (s) => rmRightBracket(rmLeftBracket(s));\n\nexport {\n keysForGrade,\n addBrackets,\n removeBrackets,\n keys,\n HorizontalKeypad,\n mq,\n updateSpans,\n registerEmbed,\n applyStaticMath,\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/keypad/index.js
CHANGED
|
@@ -208,7 +208,7 @@ var StyledButton = (0, _styles.styled)(_Button["default"])(function (_ref2) {
|
|
|
208
208
|
color: _renderUi.color.text(),
|
|
209
209
|
backgroundColor: category === 'operators' ? _renderUi.color.keypadButtonOperator() : _renderUi.color.keypadButton(),
|
|
210
210
|
'&:hover': {
|
|
211
|
-
backgroundColor: category === 'operators' ? _renderUi.color.
|
|
211
|
+
backgroundColor: category === 'operators' ? _renderUi.color.keypadButtonOperatorHover() : _renderUi.color.keypadButtonHover()
|
|
212
212
|
},
|
|
213
213
|
borderRadius: 0
|
|
214
214
|
}, isDelete && {
|
|
@@ -226,7 +226,7 @@ var StyledLatexButtonWrapper = (0, _styles.styled)(_Button["default"])(function
|
|
|
226
226
|
borderRadius: 0,
|
|
227
227
|
backgroundColor: category === 'operators' ? _renderUi.color.keypadButtonOperator() : _renderUi.color.keypadButton(),
|
|
228
228
|
'&:hover': {
|
|
229
|
-
backgroundColor: category === 'operators' ? _renderUi.color.
|
|
229
|
+
backgroundColor: category === 'operators' ? _renderUi.color.keypadButtonOperatorHover() : _renderUi.color.keypadButtonHover()
|
|
230
230
|
}
|
|
231
231
|
};
|
|
232
232
|
});
|
|
@@ -236,7 +236,7 @@ var StyledIconButton = (0, _styles.styled)(_IconButton["default"])(function (_re
|
|
|
236
236
|
minWidth: 'auto',
|
|
237
237
|
backgroundColor: category === 'operators' ? _renderUi.color.keypadButtonOperator() : _renderUi.color.keypadButton(),
|
|
238
238
|
'&:hover': {
|
|
239
|
-
backgroundColor: category === 'operators' ? _renderUi.color.
|
|
239
|
+
backgroundColor: category === 'operators' ? _renderUi.color.keypadButtonOperatorHover() : _renderUi.color.keypadButtonHover()
|
|
240
240
|
},
|
|
241
241
|
borderRadius: 0,
|
|
242
242
|
'& .icon': {
|
package/lib/keypad/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_Button","_IconButton","_styles","_debug","_lodashEs","_renderUi","mq","_interopRequireWildcard","_keys","_commonMqStyles","_keysLayout","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","LatexButtonContent","styled","Static","_ref","latex","baseStyles","pointerEvents","textTransform","color","text","transform","marginBottom","backgroundColor","concat","keypadEmptyPlaceholder","borderTop","width","marginTop","fontFamily","top","lineHeight","fontSize","left","right","minHeight","border","display","padding","paddingTop","fontStyle","position","propTypes","PropTypes","string","isRequired","createCustomLayout","layoutObj","gridTemplateColumns","columns","gridTemplateRows","rows","gridAutoFlow","KeyPadContainer","commonMqKeyboardStyles","gridRowGap","gridColumnGap","StyledButton","Button","_ref2","category","isDelete","isComma","isDot","minWidth","keypadButtonOperator","keypadButton","borderRadius","StyledLatexButtonWrapper","_ref3","margin","StyledIconButton","IconButton","_ref4","height","KeyPad","exports","_React$Component","props","_this","_classCallCheck2","setKeypadInteraction","key","onPress","base","extras","transposed","_toConsumableArray2","sortKeys","flatten","noDecimal","write","label","keypadRef","React","createRef","_inherits2","_createClass2","value","componentDidMount","_this$keypadRef","keyPadElement","current","mainContainer","closest","currentToolbar","controlledKeypadMode","mainContainerPosition","getBoundingClientRect","currentToolbarPosition","difference","totalHeight","style","addEventListener","handleKeypadInteraction","componentWillUnmount","_this$keypadRef2","removeEventListener","render","_this2","_this$props","className","baseSet","additionalKeys","layoutForKeyPad","onFocus","mode","noBaseSet","keysWithoutBaseSet","includes","allKeys","flowKeys","shift","Math","floor","createElement","ref","join","map","k","index","onClick","buttonClick","bind","common","disabled","keyIsNotAllowed","command","actions","extraProps","_extends2","undefined","ariaLabel","name","Icon","icon","tabIndex","size","Component","bool","array","object","func","oneOfType","number","_default"],"sources":["../../src/keypad/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\nimport debug from 'debug';\nimport { flatten } from 'lodash-es';\nimport { color } from '@pie-lib/render-ui';\n\nimport * as mq from '../mq';\nimport { baseSet } from '../keys';\nimport { commonMqKeyboardStyles } from '../mq/common-mq-styles';\nimport { sortKeys } from './keys-layout';\n\nconst log = debug('pie-lib:math-inline:keypad');\n\nconst LatexButtonContent = styled(mq.Static)(({ latex }) => {\n const baseStyles = {\n pointerEvents: 'none',\n textTransform: 'none !important',\n color: color.text(),\n '& .mq-scaled.mq-sqrt-prefix': {\n transform: 'scale(1, 0.9) !important',\n },\n '& .mq-sup-only .mq-sup': {\n marginBottom: '0.9px !important',\n },\n '& .mq-empty': {\n backgroundColor: `${color.keypadEmptyPlaceholder()} !important`,\n },\n '& .mq-overline .mq-overline-inner': {\n borderTop: '2px solid black',\n },\n '& .mq-non-leaf.mq-overline': {\n borderTop: 'none !important',\n },\n '& .mq-overarrow': {\n width: '30px',\n marginTop: '0 !important',\n borderTop: '2px solid black',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n '&.mq-arrow-both': {\n top: '0px !important',\n '& *': {\n lineHeight: '1 !important',\n borderTop: 'none !important',\n },\n '&:before': {\n fontSize: '80%',\n left: 'calc(-13%) !important',\n top: '-0.31em !important',\n },\n '&:after': {\n fontSize: '80% !important',\n right: 'calc(-13%) !important',\n top: '-1.5em',\n },\n '&.mq-empty:before': {\n fontSize: '80%',\n left: 'calc(-13%)',\n top: '-0.26em',\n },\n '&.mq-empty:after': {\n fontSize: '80%',\n right: 'calc(-13%)',\n top: '-0.26em',\n },\n '&.mq-empty': {\n minHeight: '1.4em',\n },\n },\n '&.mq-arrow-right:before': {\n fontSize: '80%',\n right: 'calc(-13%) !important',\n top: '-0.26em !important',\n },\n '& .mq-overarrow-inner': {\n border: 'none !important',\n },\n '& .mq-overarrow-inner .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n },\n '& .mq-root-block': {\n padding: '5px !important',\n },\n '& .mq-overarrow.mq-arrow-both.mq-empty:after': {\n right: '-6px',\n fontSize: '80% !important',\n top: '-3px',\n },\n '& .mq-overarrow.mq-arrow-right.mq-empty:before': {\n right: '-5px',\n fontSize: '80% !important',\n top: '-3px',\n },\n '& .mq-overarrow.mq-arrow-both.mq-empty:before': {\n left: '-6px',\n fontSize: '80% !important',\n top: '-3px',\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n '& .mq-overarc': {\n borderTop: '2px solid black !important',\n '& .mq-overline': {\n borderTop: 'none !important',\n },\n '& .mq-overline-inner': {\n borderTop: 'none !important',\n paddingTop: '0 !important',\n },\n },\n };\n\n // Add specific styles based on latex content\n if (latex === '\\\\parallel') {\n return {\n ...baseStyles,\n fontStyle: 'italic !important',\n };\n }\n\n if (latex === '\\\\overleftrightarrow{\\\\overline{}}') {\n return {\n ...baseStyles,\n '& .mq-overarrow.mq-arrow-both': {\n '& .mq-overline-inner': {\n borderTop: 'none !important',\n paddingTop: '0 !important',\n },\n '&:after': {\n position: 'absolute !important',\n top: '0px !important',\n },\n },\n };\n }\n\n return baseStyles;\n});\n\nLatexButtonContent.propTypes = {\n latex: PropTypes.string.isRequired,\n};\n\n// LatexButton component removed - LatexButtonContent is used directly instead\n\nconst createCustomLayout = (layoutObj) => {\n if (layoutObj) {\n return {\n gridTemplateColumns: `repeat(${layoutObj.columns}, minmax(min-content, 150px))`,\n gridTemplateRows: `repeat(${layoutObj.rows}, minmax(40px, 60px))`,\n gridAutoFlow: 'initial',\n };\n }\n\n return {};\n};\n\nconst KeyPadContainer = styled('div')(() => ({\n ...commonMqKeyboardStyles,\n width: '100%',\n display: 'grid',\n gridTemplateRows: 'repeat(5, minmax(40px, 60px))',\n gridRowGap: '0px',\n gridColumnGap: '0px',\n gridAutoFlow: 'column',\n '&.character': {\n textTransform: 'initial !important',\n gridTemplateRows: 'repeat(5, minmax(40px, 50px)) !important',\n },\n '&.language': {\n gridTemplateRows: 'repeat(4, minmax(40px, 50px)) !important',\n '& *': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n },\n}));\n\nconst StyledButton = styled(Button)(({ category, isDelete, isComma, isDot }) => ({\n minWidth: 'auto',\n textTransform: 'none',\n fontSize: isComma || isDot ? '200% !important' : '140% !important',\n lineHeight: isComma || isDot ? '100%' : 'normal',\n color: color.text(),\n\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperator()\n : color.keypadButton(),\n '&:hover': {\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperator()\n : color.keypadButton(),\n },\n borderRadius: 0,\n ...(isDelete && {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n }),\n}));\n\nconst StyledLatexButtonWrapper = styled(Button)(({ category }) => ({\n textTransform: 'none',\n padding: 0,\n margin: 0,\n fontSize: '110% !important',\n minWidth: 'auto',\n borderRadius: 0,\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperator()\n : color.keypadButton(),\n '&:hover': {\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperator()\n : color.keypadButton(),\n },\n}));\n\nconst StyledIconButton = styled(IconButton)(({ category }) => ({\n minWidth: 'auto',\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperator()\n : color.keypadButton(),\n '&:hover': {\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperator()\n : color.keypadButton(),\n },\n borderRadius: 0,\n '& .icon': {\n height: '30px',\n },\n}));\n\nexport class KeyPad extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n controlledKeypadMode: PropTypes.bool,\n baseSet: PropTypes.array,\n additionalKeys: PropTypes.array,\n layoutForKeyPad: PropTypes.object,\n onPress: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n noDecimal: PropTypes.bool,\n setKeypadInteraction: PropTypes.func,\n mode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n };\n static defaultProps = {\n baseSet: baseSet,\n noDecimal: false,\n };\n\n constructor(props) {\n super(props);\n this.keypadRef = React.createRef();\n }\n\n componentDidMount() {\n const keyPadElement = this.keypadRef?.current;\n const mainContainer = keyPadElement?.closest('.main-container');\n const currentToolbar = keyPadElement?.closest('.pie-toolbar');\n\n // need only for math keyboard so we need also controlledKeypadMode\n if (this.props.controlledKeypadMode && mainContainer && currentToolbar) {\n const mainContainerPosition = mainContainer.getBoundingClientRect();\n const currentToolbarPosition = currentToolbar.getBoundingClientRect();\n const difference =\n mainContainerPosition.top +\n mainContainerPosition.height -\n (currentToolbarPosition.top + currentToolbarPosition.height);\n if (difference < 0) {\n const totalHeight = mainContainerPosition.height + mainContainerPosition.top - difference;\n // increase the height of the main container if keyboard needs it\n if (mainContainer) {\n mainContainer.style.height = `${totalHeight}px`;\n }\n }\n }\n\n if (keyPadElement) {\n keyPadElement.addEventListener('touchstart', this.handleKeypadInteraction, true);\n keyPadElement.addEventListener('mousedown', this.handleKeypadInteraction, true);\n }\n }\n\n componentWillUnmount() {\n const keyPadElement = this.keypadRef?.current;\n // need only for math keyboard\n if (this.props.controlledKeypadMode && keyPadElement) {\n const mainContainer = keyPadElement.closest('.main-container');\n\n if (mainContainer) {\n mainContainer.style.height = 'unset';\n }\n }\n\n if (keyPadElement) {\n keyPadElement.removeEventListener('touchstart', this.handleKeypadInteraction, true);\n keyPadElement.removeEventListener('mousedown', this.handleKeypadInteraction, true);\n }\n }\n\n handleKeypadInteraction = () => {\n // Check if the setKeypadInteraction prop is available, which is used for both\n // the language keypad and the special characters keypad\n if (this.props.setKeypadInteraction) {\n this.props.setKeypadInteraction(true);\n }\n };\n\n buttonClick = (key) => {\n log('[buttonClick]', key);\n const { onPress } = this.props;\n\n onPress(key);\n };\n\n flowKeys = (base, extras) => {\n const transposed = [...sortKeys(base), ...sortKeys(extras)];\n return flatten(transposed);\n };\n\n keyIsNotAllowed = (key) => {\n const { noDecimal } = this.props;\n\n if (((key.write === '.' && key.label === '.') || (key.write === ',' && key.label === ',')) && noDecimal) {\n return true;\n }\n\n return false;\n };\n\n render() {\n const { className, baseSet, additionalKeys, layoutForKeyPad, onFocus, mode } = this.props;\n\n const noBaseSet = ['non-negative-integers', 'integers', 'decimals', 'fractions', 'item-authoring', 'language'];\n\n const keysWithoutBaseSet = noBaseSet.includes(mode);\n const allKeys = keysWithoutBaseSet\n ? this.flowKeys([], additionalKeys || [])\n : this.flowKeys(baseSet, additionalKeys || []);\n\n const shift = allKeys.length % 5 ? 1 : 0;\n const style = {\n gridTemplateColumns: `repeat(${Math.floor(allKeys.length / 5) + shift}, minmax(min-content, 150px))`,\n ...createCustomLayout(layoutForKeyPad),\n };\n\n return (\n <KeyPadContainer\n ref={this.keypadRef}\n className={[className, mode].filter(Boolean).join(' ')}\n style={style}\n onFocus={onFocus}\n >\n {allKeys.map((k, index) => {\n const onClick = this.buttonClick.bind(this, k);\n\n if (!k) {\n return <span key={`empty-${index}`} />;\n }\n\n const common = {\n onClick,\n disabled: this.keyIsNotAllowed(k),\n key: `${k.label || k.latex || k.command}-${index}`,\n ...(k.actions || {}),\n ...(k.extraProps || {}),\n };\n\n if (k.latex) {\n return (\n <StyledLatexButtonWrapper\n key={common.key}\n onClick={common.onClick}\n disabled={common.disabled}\n category={!keysWithoutBaseSet ? k.category : undefined}\n aria-label={k.ariaLabel ? k.ariaLabel : k.name || k.label}\n {...(k.actions || {})}\n {...(k.extraProps || {})}\n >\n <LatexButtonContent latex={k.latex} />\n </StyledLatexButtonWrapper>\n );\n }\n\n if (k.label) {\n return (\n <StyledButton\n key={common.key}\n onClick={common.onClick}\n disabled={common.disabled}\n category={!keysWithoutBaseSet ? k.category : undefined}\n isDelete={k.label === '⌫'}\n isComma={k.label === ','}\n isDot={k.label === '.'}\n aria-label={k.ariaLabel ? k.ariaLabel : k.name || k.label}\n {...(k.actions || {})}\n {...(k.extraProps || {})}\n >\n {k.label}\n </StyledButton>\n );\n } else {\n const Icon = k.icon ? k.icon : 'div';\n\n return (\n <StyledIconButton\n key={common.key}\n tabIndex={'-1'}\n onClick={common.onClick}\n disabled={common.disabled}\n category={!keysWithoutBaseSet ? k.category : undefined}\n size=\"large\"\n {...(k.actions || {})}\n {...(k.extraProps || {})}\n >\n <Icon className=\"icon\" />\n </StyledIconButton>\n );\n }\n })}\n </KeyPadContainer>\n );\n }\n}\n\nexport default KeyPad;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_Button","_IconButton","_styles","_debug","_lodashEs","_renderUi","mq","_interopRequireWildcard","_keys","_commonMqStyles","_keysLayout","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","LatexButtonContent","styled","Static","_ref","latex","baseStyles","pointerEvents","textTransform","color","text","transform","marginBottom","backgroundColor","concat","keypadEmptyPlaceholder","borderTop","width","marginTop","fontFamily","top","lineHeight","fontSize","left","right","minHeight","border","display","padding","paddingTop","fontStyle","position","propTypes","PropTypes","string","isRequired","createCustomLayout","layoutObj","gridTemplateColumns","columns","gridTemplateRows","rows","gridAutoFlow","KeyPadContainer","commonMqKeyboardStyles","gridRowGap","gridColumnGap","StyledButton","Button","_ref2","category","isDelete","isComma","isDot","minWidth","keypadButtonOperator","keypadButton","keypadButtonOperatorHover","keypadButtonHover","borderRadius","StyledLatexButtonWrapper","_ref3","margin","StyledIconButton","IconButton","_ref4","height","KeyPad","exports","_React$Component","props","_this","_classCallCheck2","setKeypadInteraction","key","onPress","base","extras","transposed","_toConsumableArray2","sortKeys","flatten","noDecimal","write","label","keypadRef","React","createRef","_inherits2","_createClass2","value","componentDidMount","_this$keypadRef","keyPadElement","current","mainContainer","closest","currentToolbar","controlledKeypadMode","mainContainerPosition","getBoundingClientRect","currentToolbarPosition","difference","totalHeight","style","addEventListener","handleKeypadInteraction","componentWillUnmount","_this$keypadRef2","removeEventListener","render","_this2","_this$props","className","baseSet","additionalKeys","layoutForKeyPad","onFocus","mode","noBaseSet","keysWithoutBaseSet","includes","allKeys","flowKeys","shift","Math","floor","createElement","ref","join","map","k","index","onClick","buttonClick","bind","common","disabled","keyIsNotAllowed","command","actions","extraProps","_extends2","undefined","ariaLabel","name","Icon","icon","tabIndex","size","Component","bool","array","object","func","oneOfType","number","_default"],"sources":["../../src/keypad/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\nimport debug from 'debug';\nimport { flatten } from 'lodash-es';\nimport { color } from '@pie-lib/render-ui';\n\nimport * as mq from '../mq';\nimport { baseSet } from '../keys';\nimport { commonMqKeyboardStyles } from '../mq/common-mq-styles';\nimport { sortKeys } from './keys-layout';\n\nconst log = debug('pie-lib:math-inline:keypad');\n\nconst LatexButtonContent = styled(mq.Static)(({ latex }) => {\n const baseStyles = {\n pointerEvents: 'none',\n textTransform: 'none !important',\n color: color.text(),\n '& .mq-scaled.mq-sqrt-prefix': {\n transform: 'scale(1, 0.9) !important',\n },\n '& .mq-sup-only .mq-sup': {\n marginBottom: '0.9px !important',\n },\n '& .mq-empty': {\n backgroundColor: `${color.keypadEmptyPlaceholder()} !important`,\n },\n '& .mq-overline .mq-overline-inner': {\n borderTop: '2px solid black',\n },\n '& .mq-non-leaf.mq-overline': {\n borderTop: 'none !important',\n },\n '& .mq-overarrow': {\n width: '30px',\n marginTop: '0 !important',\n borderTop: '2px solid black',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n '&.mq-arrow-both': {\n top: '0px !important',\n '& *': {\n lineHeight: '1 !important',\n borderTop: 'none !important',\n },\n '&:before': {\n fontSize: '80%',\n left: 'calc(-13%) !important',\n top: '-0.31em !important',\n },\n '&:after': {\n fontSize: '80% !important',\n right: 'calc(-13%) !important',\n top: '-1.5em',\n },\n '&.mq-empty:before': {\n fontSize: '80%',\n left: 'calc(-13%)',\n top: '-0.26em',\n },\n '&.mq-empty:after': {\n fontSize: '80%',\n right: 'calc(-13%)',\n top: '-0.26em',\n },\n '&.mq-empty': {\n minHeight: '1.4em',\n },\n },\n '&.mq-arrow-right:before': {\n fontSize: '80%',\n right: 'calc(-13%) !important',\n top: '-0.26em !important',\n },\n '& .mq-overarrow-inner': {\n border: 'none !important',\n },\n '& .mq-overarrow-inner .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n },\n '& .mq-root-block': {\n padding: '5px !important',\n },\n '& .mq-overarrow.mq-arrow-both.mq-empty:after': {\n right: '-6px',\n fontSize: '80% !important',\n top: '-3px',\n },\n '& .mq-overarrow.mq-arrow-right.mq-empty:before': {\n right: '-5px',\n fontSize: '80% !important',\n top: '-3px',\n },\n '& .mq-overarrow.mq-arrow-both.mq-empty:before': {\n left: '-6px',\n fontSize: '80% !important',\n top: '-3px',\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n '& .mq-overarc': {\n borderTop: '2px solid black !important',\n '& .mq-overline': {\n borderTop: 'none !important',\n },\n '& .mq-overline-inner': {\n borderTop: 'none !important',\n paddingTop: '0 !important',\n },\n },\n };\n\n // Add specific styles based on latex content\n if (latex === '\\\\parallel') {\n return {\n ...baseStyles,\n fontStyle: 'italic !important',\n };\n }\n\n if (latex === '\\\\overleftrightarrow{\\\\overline{}}') {\n return {\n ...baseStyles,\n '& .mq-overarrow.mq-arrow-both': {\n '& .mq-overline-inner': {\n borderTop: 'none !important',\n paddingTop: '0 !important',\n },\n '&:after': {\n position: 'absolute !important',\n top: '0px !important',\n },\n },\n };\n }\n\n return baseStyles;\n});\n\nLatexButtonContent.propTypes = {\n latex: PropTypes.string.isRequired,\n};\n\n// LatexButton component removed - LatexButtonContent is used directly instead\n\nconst createCustomLayout = (layoutObj) => {\n if (layoutObj) {\n return {\n gridTemplateColumns: `repeat(${layoutObj.columns}, minmax(min-content, 150px))`,\n gridTemplateRows: `repeat(${layoutObj.rows}, minmax(40px, 60px))`,\n gridAutoFlow: 'initial',\n };\n }\n\n return {};\n};\n\nconst KeyPadContainer = styled('div')(() => ({\n ...commonMqKeyboardStyles,\n width: '100%',\n display: 'grid',\n gridTemplateRows: 'repeat(5, minmax(40px, 60px))',\n gridRowGap: '0px',\n gridColumnGap: '0px',\n gridAutoFlow: 'column',\n '&.character': {\n textTransform: 'initial !important',\n gridTemplateRows: 'repeat(5, minmax(40px, 50px)) !important',\n },\n '&.language': {\n gridTemplateRows: 'repeat(4, minmax(40px, 50px)) !important',\n '& *': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n },\n },\n}));\n\nconst StyledButton = styled(Button)(({ category, isDelete, isComma, isDot }) => ({\n minWidth: 'auto',\n textTransform: 'none',\n fontSize: isComma || isDot ? '200% !important' : '140% !important',\n lineHeight: isComma || isDot ? '100%' : 'normal',\n color: color.text(),\n\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperator()\n : color.keypadButton(),\n '&:hover': {\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperatorHover()\n : color.keypadButtonHover()\n },\n borderRadius: 0,\n ...(isDelete && {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n }),\n}));\n\nconst StyledLatexButtonWrapper = styled(Button)(({ category }) => ({\n textTransform: 'none',\n padding: 0,\n margin: 0,\n fontSize: '110% !important',\n minWidth: 'auto',\n borderRadius: 0,\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperator()\n : color.keypadButton(),\n '&:hover': {\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperatorHover()\n : color.keypadButtonHover(),\n },\n}));\n\nconst StyledIconButton = styled(IconButton)(({ category }) => ({\n minWidth: 'auto',\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperator()\n : color.keypadButton(),\n '&:hover': {\n backgroundColor:\n category === 'operators'\n ? color.keypadButtonOperatorHover()\n : color.keypadButtonHover(),\n },\n borderRadius: 0,\n '& .icon': {\n height: '30px',\n },\n}));\n\nexport class KeyPad extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n controlledKeypadMode: PropTypes.bool,\n baseSet: PropTypes.array,\n additionalKeys: PropTypes.array,\n layoutForKeyPad: PropTypes.object,\n onPress: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n noDecimal: PropTypes.bool,\n setKeypadInteraction: PropTypes.func,\n mode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n };\n static defaultProps = {\n baseSet: baseSet,\n noDecimal: false,\n };\n\n constructor(props) {\n super(props);\n this.keypadRef = React.createRef();\n }\n\n componentDidMount() {\n const keyPadElement = this.keypadRef?.current;\n const mainContainer = keyPadElement?.closest('.main-container');\n const currentToolbar = keyPadElement?.closest('.pie-toolbar');\n\n // need only for math keyboard so we need also controlledKeypadMode\n if (this.props.controlledKeypadMode && mainContainer && currentToolbar) {\n const mainContainerPosition = mainContainer.getBoundingClientRect();\n const currentToolbarPosition = currentToolbar.getBoundingClientRect();\n const difference =\n mainContainerPosition.top +\n mainContainerPosition.height -\n (currentToolbarPosition.top + currentToolbarPosition.height);\n if (difference < 0) {\n const totalHeight = mainContainerPosition.height + mainContainerPosition.top - difference;\n // increase the height of the main container if keyboard needs it\n if (mainContainer) {\n mainContainer.style.height = `${totalHeight}px`;\n }\n }\n }\n\n if (keyPadElement) {\n keyPadElement.addEventListener('touchstart', this.handleKeypadInteraction, true);\n keyPadElement.addEventListener('mousedown', this.handleKeypadInteraction, true);\n }\n }\n\n componentWillUnmount() {\n const keyPadElement = this.keypadRef?.current;\n // need only for math keyboard\n if (this.props.controlledKeypadMode && keyPadElement) {\n const mainContainer = keyPadElement.closest('.main-container');\n\n if (mainContainer) {\n mainContainer.style.height = 'unset';\n }\n }\n\n if (keyPadElement) {\n keyPadElement.removeEventListener('touchstart', this.handleKeypadInteraction, true);\n keyPadElement.removeEventListener('mousedown', this.handleKeypadInteraction, true);\n }\n }\n\n handleKeypadInteraction = () => {\n // Check if the setKeypadInteraction prop is available, which is used for both\n // the language keypad and the special characters keypad\n if (this.props.setKeypadInteraction) {\n this.props.setKeypadInteraction(true);\n }\n };\n\n buttonClick = (key) => {\n log('[buttonClick]', key);\n const { onPress } = this.props;\n\n onPress(key);\n };\n\n flowKeys = (base, extras) => {\n const transposed = [...sortKeys(base), ...sortKeys(extras)];\n return flatten(transposed);\n };\n\n keyIsNotAllowed = (key) => {\n const { noDecimal } = this.props;\n\n if (((key.write === '.' && key.label === '.') || (key.write === ',' && key.label === ',')) && noDecimal) {\n return true;\n }\n\n return false;\n };\n\n render() {\n const { className, baseSet, additionalKeys, layoutForKeyPad, onFocus, mode } = this.props;\n\n const noBaseSet = ['non-negative-integers', 'integers', 'decimals', 'fractions', 'item-authoring', 'language'];\n\n const keysWithoutBaseSet = noBaseSet.includes(mode);\n const allKeys = keysWithoutBaseSet\n ? this.flowKeys([], additionalKeys || [])\n : this.flowKeys(baseSet, additionalKeys || []);\n\n const shift = allKeys.length % 5 ? 1 : 0;\n const style = {\n gridTemplateColumns: `repeat(${Math.floor(allKeys.length / 5) + shift}, minmax(min-content, 150px))`,\n ...createCustomLayout(layoutForKeyPad),\n };\n\n return (\n <KeyPadContainer\n ref={this.keypadRef}\n className={[className, mode].filter(Boolean).join(' ')}\n style={style}\n onFocus={onFocus}\n >\n {allKeys.map((k, index) => {\n const onClick = this.buttonClick.bind(this, k);\n\n if (!k) {\n return <span key={`empty-${index}`} />;\n }\n\n const common = {\n onClick,\n disabled: this.keyIsNotAllowed(k),\n key: `${k.label || k.latex || k.command}-${index}`,\n ...(k.actions || {}),\n ...(k.extraProps || {}),\n };\n\n if (k.latex) {\n return (\n <StyledLatexButtonWrapper\n key={common.key}\n onClick={common.onClick}\n disabled={common.disabled}\n category={!keysWithoutBaseSet ? k.category : undefined}\n aria-label={k.ariaLabel ? k.ariaLabel : k.name || k.label}\n {...(k.actions || {})}\n {...(k.extraProps || {})}\n >\n <LatexButtonContent latex={k.latex} />\n </StyledLatexButtonWrapper>\n );\n }\n\n if (k.label) {\n return (\n <StyledButton\n key={common.key}\n onClick={common.onClick}\n disabled={common.disabled}\n category={!keysWithoutBaseSet ? k.category : undefined}\n isDelete={k.label === '⌫'}\n isComma={k.label === ','}\n isDot={k.label === '.'}\n aria-label={k.ariaLabel ? k.ariaLabel : k.name || k.label}\n {...(k.actions || {})}\n {...(k.extraProps || {})}\n >\n {k.label}\n </StyledButton>\n );\n } else {\n const Icon = k.icon ? k.icon : 'div';\n\n return (\n <StyledIconButton\n key={common.key}\n tabIndex={'-1'}\n onClick={common.onClick}\n disabled={common.disabled}\n category={!keysWithoutBaseSet ? k.category : undefined}\n size=\"large\"\n {...(k.actions || {})}\n {...(k.extraProps || {})}\n >\n <Icon className=\"icon\" />\n </StyledIconButton>\n );\n }\n })}\n </KeyPadContainer>\n );\n }\n}\n\nexport default KeyPad;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/mq/input.js
CHANGED
|
@@ -15,18 +15,9 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
15
15
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
16
16
|
var _styles = require("@mui/material/styles");
|
|
17
17
|
var _debug = _interopRequireDefault(require("debug"));
|
|
18
|
-
var
|
|
19
|
-
var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
|
|
18
|
+
var _mathquillInstance = require("./mathquill-instance");
|
|
20
19
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
21
20
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
22
|
-
var MQ;
|
|
23
|
-
if (typeof window !== 'undefined') {
|
|
24
|
-
MQ = _mathquill["default"].getInterface(3);
|
|
25
|
-
console.log('MQ', MQ);
|
|
26
|
-
if (MQ && MQ.registerEmbed) {
|
|
27
|
-
(0, _customElements.registerLineBreak)(MQ);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
21
|
var log = (0, _debug["default"])('math-input:mq:input');
|
|
31
22
|
var StyledSpan = (0, _styles.styled)('span')({
|
|
32
23
|
// No specific styles needed, but component is available for future styling
|
|
@@ -81,10 +72,10 @@ var Input = exports.Input = /*#__PURE__*/function (_React$Component) {
|
|
|
81
72
|
return (0, _createClass2["default"])(Input, [{
|
|
82
73
|
key: "componentDidMount",
|
|
83
74
|
value: function componentDidMount() {
|
|
84
|
-
if (!MQ) {
|
|
75
|
+
if (!_mathquillInstance.MQ) {
|
|
85
76
|
throw new Error('MQ is not defined - but component has mounted?');
|
|
86
77
|
}
|
|
87
|
-
this.mathField = MQ.MathField(this.input, {
|
|
78
|
+
this.mathField = _mathquillInstance.MQ.MathField(this.input, {
|
|
88
79
|
handlers: {
|
|
89
80
|
edit: this.onInputEdit.bind(this)
|
|
90
81
|
}
|
package/lib/mq/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_debug","_customElements","_mathquill","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","MQ","window","MathQuill","getInterface","console","log","registerEmbed","registerLineBreak","debug","StyledSpan","styled","Input","exports","_React$Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","concat","_defineProperty2","onChange","props","mathField","latex","blur","focus","event","keys","Object","__controller","options","indexOf","refresh","charCode","preventDefault","onClick","_inherits2","_createClass2","key","value","componentDidMount","Error","MathField","input","handlers","edit","onInputEdit","bind","updateLatex","componentDidUpdate","undefined","clear","command","v","_this2","isArray","forEach","vv","cmd","keystroke","write","shouldComponentUpdate","nextProps","render","_this3","_this$props","onFocus","onBlur","className","createElement","onKeyDown","onKeyPress","ref","r","React","Component","PropTypes","string","func","_default"],"sources":["../../src/mq/input.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport debug from 'debug';\nimport { registerLineBreak } from './custom-elements';\nimport MathQuill from '@pie-framework/mathquill';\n\nlet MQ;\nif (typeof window !== 'undefined') {\n MQ = MathQuill.getInterface(3);\n\n console.log('MQ', MQ);\n\n if (MQ && MQ.registerEmbed) {\n registerLineBreak(MQ);\n }\n}\n\nconst log = debug('math-input:mq:input');\n\nconst StyledSpan = styled('span')({\n // No specific styles needed, but component is available for future styling\n});\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport class Input extends React.Component {\n static propTypes = {\n className: PropTypes.string,\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, className } = this.props;\n\n return (\n <StyledSpan\n className={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\nexport default Input;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"input.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_debug","_mathquillInstance","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","log","debug","StyledSpan","styled","Input","exports","_React$Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","concat","_defineProperty2","onChange","props","mathField","latex","blur","focus","event","keys","Object","__controller","options","indexOf","refresh","charCode","preventDefault","onClick","_inherits2","_createClass2","key","value","componentDidMount","MQ","Error","MathField","input","handlers","edit","onInputEdit","bind","updateLatex","componentDidUpdate","undefined","clear","command","v","_this2","isArray","forEach","vv","cmd","keystroke","write","shouldComponentUpdate","nextProps","render","_this3","_this$props","onFocus","onBlur","className","createElement","onKeyDown","onKeyPress","ref","r","React","Component","PropTypes","string","func","_default"],"sources":["../../src/mq/input.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport debug from 'debug';\nimport { MQ } from './mathquill-instance';\n\nconst log = debug('math-input:mq:input');\n\nconst StyledSpan = styled('span')({\n // No specific styles needed, but component is available for future styling\n});\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport class Input extends React.Component {\n static propTypes = {\n className: PropTypes.string,\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, className } = this.props;\n\n return (\n <StyledSpan\n className={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\nexport default Input;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.MQ = void 0;
|
|
8
|
+
exports.applyStaticMath = applyStaticMath;
|
|
9
|
+
exports.registerEmbed = registerEmbed;
|
|
10
|
+
var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
|
|
11
|
+
var _customElements = require("./custom-elements");
|
|
12
|
+
var MQ;
|
|
13
|
+
if (typeof window !== 'undefined') {
|
|
14
|
+
exports.MQ = MQ = _mathquill["default"].getInterface(3);
|
|
15
|
+
if (MQ && MQ.registerEmbed) {
|
|
16
|
+
(0, _customElements.registerLineBreak)(MQ);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Register a MathQuill embed (e.g. answer blocks in pie-elements).
|
|
22
|
+
* No-op in SSR or if the interface is unavailable.
|
|
23
|
+
*
|
|
24
|
+
* @param {string} name
|
|
25
|
+
* @param {Function} factory
|
|
26
|
+
*/
|
|
27
|
+
function registerEmbed(name, factory) {
|
|
28
|
+
if (!MQ || !MQ.registerEmbed) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
MQ.registerEmbed(name, factory);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Apply MathQuill static math to a DOM element.
|
|
36
|
+
* Optionally sets element text to `latex` before enhancing (typical pie-elements usage).
|
|
37
|
+
*
|
|
38
|
+
* @param {HTMLElement} element
|
|
39
|
+
* @param {string} [latex] If provided, assigned to element.textContent before StaticMath runs.
|
|
40
|
+
* @param {object} [options] Optional MathQuill StaticMath options (e.g. handlers).
|
|
41
|
+
* @returns {object|undefined} MathQuill static math instance, if any.
|
|
42
|
+
*/
|
|
43
|
+
function applyStaticMath(element, latex, options) {
|
|
44
|
+
if (!MQ || !element) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
if (latex !== undefined && latex !== null) {
|
|
48
|
+
element.textContent = latex;
|
|
49
|
+
}
|
|
50
|
+
return MQ.StaticMath(element, options);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=mathquill-instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mathquill-instance.js","names":["_mathquill","_interopRequireDefault","require","_customElements","MQ","window","exports","MathQuill","getInterface","registerEmbed","registerLineBreak","name","factory","applyStaticMath","element","latex","options","undefined","textContent","StaticMath"],"sources":["../../src/mq/mathquill-instance.js"],"sourcesContent":["import MathQuill from '@pie-framework/mathquill';\nimport { registerLineBreak } from './custom-elements';\n\nlet MQ;\nif (typeof window !== 'undefined') {\n MQ = MathQuill.getInterface(3);\n if (MQ && MQ.registerEmbed) {\n registerLineBreak(MQ);\n }\n}\n\n/**\n * Register a MathQuill embed (e.g. answer blocks in pie-elements).\n * No-op in SSR or if the interface is unavailable.\n *\n * @param {string} name\n * @param {Function} factory\n */\nexport function registerEmbed(name, factory) {\n if (!MQ || !MQ.registerEmbed) {\n return;\n }\n MQ.registerEmbed(name, factory);\n}\n\n/**\n * Apply MathQuill static math to a DOM element.\n * Optionally sets element text to `latex` before enhancing (typical pie-elements usage).\n *\n * @param {HTMLElement} element\n * @param {string} [latex] If provided, assigned to element.textContent before StaticMath runs.\n * @param {object} [options] Optional MathQuill StaticMath options (e.g. handlers).\n * @returns {object|undefined} MathQuill static math instance, if any.\n */\nexport function applyStaticMath(element, latex, options) {\n if (!MQ || !element) {\n return undefined;\n }\n if (latex !== undefined && latex !== null) {\n element.textContent = latex;\n }\n return MQ.StaticMath(element, options);\n}\n\nexport { MQ };\n"],"mappings":";;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAIE,EAAE;AACN,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;EACjCC,OAAA,CAAAF,EAAA,GAAAA,EAAE,GAAGG,qBAAS,CAACC,YAAY,CAAC,CAAC,CAAC;EAC9B,IAAIJ,EAAE,IAAIA,EAAE,CAACK,aAAa,EAAE;IAC1B,IAAAC,iCAAiB,EAACN,EAAE,CAAC;EACvB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,aAAaA,CAACE,IAAI,EAAEC,OAAO,EAAE;EAC3C,IAAI,CAACR,EAAE,IAAI,CAACA,EAAE,CAACK,aAAa,EAAE;IAC5B;EACF;EACAL,EAAE,CAACK,aAAa,CAACE,IAAI,EAAEC,OAAO,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAACC,OAAO,EAAEC,KAAK,EAAEC,OAAO,EAAE;EACvD,IAAI,CAACZ,EAAE,IAAI,CAACU,OAAO,EAAE;IACnB,OAAOG,SAAS;EAClB;EACA,IAAIF,KAAK,KAAKE,SAAS,IAAIF,KAAK,KAAK,IAAI,EAAE;IACzCD,OAAO,CAACI,WAAW,GAAGH,KAAK;EAC7B;EACA,OAAOX,EAAE,CAACe,UAAU,CAACL,OAAO,EAAEE,OAAO,CAAC;AACxC","ignoreList":[]}
|
package/lib/mq/static.js
CHANGED
|
@@ -14,14 +14,10 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
14
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
15
|
var _react = _interopRequireDefault(require("react"));
|
|
16
16
|
var _debug = _interopRequireDefault(require("debug"));
|
|
17
|
-
var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
|
|
18
17
|
var _updateSpans = require("../updateSpans");
|
|
18
|
+
var _mathquillInstance = require("./mathquill-instance");
|
|
19
19
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
20
20
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
21
|
-
var MQ;
|
|
22
|
-
if (typeof window !== 'undefined') {
|
|
23
|
-
MQ = _mathquill["default"].getInterface(3);
|
|
24
|
-
}
|
|
25
21
|
var log = (0, _debug["default"])('pie-lib:math-input:mq:static');
|
|
26
22
|
var REGEX = /\\MathQuillMathField\[r\d*\]\{(.*?)\}/g;
|
|
27
23
|
var WHITESPACE_REGEX = / /g;
|
|
@@ -173,12 +169,12 @@ var Static = exports["default"] = /*#__PURE__*/function (_React$Component) {
|
|
|
173
169
|
}
|
|
174
170
|
});
|
|
175
171
|
(0, _defineProperty2["default"])(_this, "update", function () {
|
|
176
|
-
if (!MQ) {
|
|
172
|
+
if (!_mathquillInstance.MQ) {
|
|
177
173
|
throw new Error('MQ is not defined - but component has mounted?');
|
|
178
174
|
}
|
|
179
175
|
if (!_this.mathField) {
|
|
180
176
|
var _this$inputRef2;
|
|
181
|
-
_this.mathField = MQ.StaticMath((_this$inputRef2 = _this.inputRef) === null || _this$inputRef2 === void 0 ? void 0 : _this$inputRef2.current, {
|
|
177
|
+
_this.mathField = _mathquillInstance.MQ.StaticMath((_this$inputRef2 = _this.inputRef) === null || _this$inputRef2 === void 0 ? void 0 : _this$inputRef2.current, {
|
|
182
178
|
handlers: {
|
|
183
179
|
edit: _this.onInputEdit.bind(_this)
|
|
184
180
|
}
|
package/lib/mq/static.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.js","names":["_propTypes","_interopRequireDefault","require","_react","_debug","_mathquill","_updateSpans","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","MQ","window","MathQuill","getInterface","log","debug","REGEX","WHITESPACE_REGEX","stripSpaces","string","arguments","length","undefined","replace","countBraces","latex","count","i","Static","exports","_React$Component","props","_this","_classCallCheck2","_defineProperty2","liveRegion","document","createElement","style","position","width","height","marginTop","clip","overflow","setAttribute","body","appendChild","input","inputRef","current","addEventListener","handleKeyDown","handleMathKeyboardClick","removeEventListener","removeChild","event","key","setState","isDeleteKeyPressed","inputSource","field","mathField","_isProgrammaticUpdate","name","getFieldName","innerFields","onSubFieldChange","_this$inputRef","regexMatch","match","__controller","cursor","insLeftOf","parent","el","dispatchEvent","KeyboardEvent","keyCode","console","error","toString","announceLatexConversion","newLatex","state","_this$state","previousLatex","announcement","newBraces","oldBraces","announceMessage","parseLatex","warn","message","textContent","setTimeout","Error","_this$inputRef2","StaticMath","handlers","edit","onInputEdit","bind","blur","focus","rootBlock","target","parentElement","nextSibling","id","parseInt","getAttribute","innerField","find","f","setInput","onSubFieldFocus","err","React","createRef","_inherits2","_createClass2","value","componentDidMount","update","updateSpans","createLiveRegion","addEventListeners","componentDidUpdate","componentWillUnmount","removeLiveRegion","removeEventListeners","shouldComponentUpdate","nextProps","parsedLatex","stripped","newFieldCount","out","trim","Object","keys","render","_this$props","onBlur","className","onFocus","ref","Component","PropTypes","isRequired","func"],"sources":["../../src/mq/static.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport MathQuill from '@pie-framework/mathquill';\nimport { updateSpans } from '../updateSpans';\n\nlet MQ;\nif (typeof window !== 'undefined') {\n MQ = MathQuill.getInterface(3);\n}\n\nconst log = debug('pie-lib:math-input:mq:static');\nconst REGEX = /\\\\MathQuillMathField\\[r\\d*\\]\\{(.*?)\\}/g;\nconst WHITESPACE_REGEX = / /g;\n\nfunction stripSpaces(string = '') {\n return string.replace(WHITESPACE_REGEX, '');\n}\n\nfunction countBraces(latex) {\n let count = 0;\n\n for (let i = 0; i < (latex || '').length; i++) {\n if (latex[i] === '{') {\n count++;\n }\n }\n\n return count;\n}\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport default class Static extends React.Component {\n static propTypes = {\n latex: PropTypes.string.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n className: PropTypes.string,\n getFieldName: PropTypes.func,\n onSubFieldChange: PropTypes.func,\n onSubFieldFocus: PropTypes.func,\n setInput: PropTypes.func,\n };\n\n static defaultProps = {\n getFieldName: () => {},\n };\n\n constructor(props) {\n super(props);\n this.state = {\n announcement: '',\n previousLatex: '',\n inputSource: null,\n isDeleteKeyPressed: false,\n };\n\n this.inputRef = React.createRef();\n }\n\n componentDidMount() {\n this.update();\n updateSpans();\n\n this.createLiveRegion();\n this.addEventListeners();\n }\n\n componentDidUpdate() {\n this.update();\n updateSpans();\n }\n\n componentWillUnmount() {\n this.removeLiveRegion();\n this.removeEventListeners();\n }\n\n createLiveRegion = () => {\n this.liveRegion = document.createElement('div');\n this.liveRegion.style.position = 'absolute';\n this.liveRegion.style.width = '1px';\n this.liveRegion.style.height = '1px';\n this.liveRegion.style.marginTop = '-1px';\n this.liveRegion.style.clip = 'rect(1px, 1px, 1px, 1px)';\n this.liveRegion.style.overflow = 'hidden';\n this.liveRegion.setAttribute('aria-live', 'polite');\n this.liveRegion.setAttribute('aria-atomic', 'true');\n\n document.body.appendChild(this.liveRegion);\n };\n\n addEventListeners = () => {\n const input = this.inputRef.current;\n\n if (input) {\n input.addEventListener('keydown', this.handleKeyDown);\n input.addEventListener('click', this.handleMathKeyboardClick);\n }\n };\n\n removeEventListeners = () => {\n const input = this.inputRef.current;\n\n if (input) {\n input.removeEventListener('keydown', this.handleKeyDown);\n input.removeEventListener('click', this.handleMathKeyboardClick);\n }\n };\n\n removeLiveRegion = () => {\n if (this.liveRegion) {\n document.body.removeChild(this.liveRegion);\n this.liveRegion = null;\n }\n };\n\n handleKeyDown = (event) => {\n if (event?.key === 'Backspace' || event?.key === 'Delete') {\n this.setState({ isDeleteKeyPressed: true });\n }\n this.setState({ inputSource: 'keyboard' });\n };\n\n handleMathKeyboardClick = () => {\n this.setState({ inputSource: 'mathKeyboard' });\n };\n\n onInputEdit = (field) => {\n if (!this.mathField || this._isProgrammaticUpdate) {\n return;\n }\n const name = this.props.getFieldName(field, this.mathField.innerFields);\n\n if (this.props.onSubFieldChange) {\n // eslint-disable-next-line no-useless-escape\n const regexMatch = field.latex().match(/[0-9]\\\\ \\\\frac\\{[^\\{]*\\}\\{ \\}/);\n\n if (this.inputRef?.current && regexMatch && regexMatch?.length) {\n try {\n field.__controller.cursor.insLeftOf(field.__controller.cursor.parent[-1].parent);\n field.el().dispatchEvent(new KeyboardEvent('keydown', { keyCode: 8 }));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n } else {\n this.props.onSubFieldChange(name, field.latex());\n }\n }\n\n this.announceLatexConversion(field.latex());\n };\n\n announceLatexConversion = (newLatex) => {\n if (!this.state) {\n // eslint-disable-next-line no-console\n console.error('State is not initialized');\n return;\n }\n\n const { previousLatex, inputSource, isDeleteKeyPressed } = this.state;\n const announcement = 'Converted to math symbol';\n\n if (inputSource === 'keyboard' && !isDeleteKeyPressed) {\n const newBraces = countBraces(newLatex);\n const oldBraces = countBraces(previousLatex);\n\n if (newBraces > oldBraces) {\n this.announceMessage(announcement);\n } else {\n try {\n this.mathField.parseLatex(previousLatex);\n this.mathField.parseLatex(newLatex);\n\n if (newLatex == previousLatex) {\n this.announceMessage(announcement);\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Error parsing latex:', e.message);\n // eslint-disable-next-line no-console\n console.warn(e);\n }\n }\n }\n\n // Only setState when values change to avoid \"Maximum update depth exceeded\"\n if (this.state.previousLatex !== newLatex || this.state.isDeleteKeyPressed) {\n this.setState({ previousLatex: newLatex, isDeleteKeyPressed: false });\n }\n };\n\n announceMessage = (message) => {\n this.setState({ previousLatex: '' });\n\n if (this.liveRegion) {\n this.liveRegion.textContent = message;\n\n // Clear the message after it is announced\n setTimeout(() => {\n this.liveRegion.textContent = '';\n }, 500);\n }\n };\n\n update = () => {\n if (!MQ) {\n throw new Error('MQ is not defined - but component has mounted?');\n }\n if (!this.mathField) {\n this.mathField = MQ.StaticMath(this.inputRef?.current, {\n handlers: {\n edit: this.onInputEdit.bind(this),\n },\n });\n }\n\n try {\n this._isProgrammaticUpdate = true;\n this.mathField.parseLatex(this.props.latex);\n this.mathField.latex(this.props.latex);\n } catch (e) {\n // default latex if received has errors\n this.mathField.latex('\\\\MathQuillMathField[r1]{}');\n } finally {\n this._isProgrammaticUpdate = false;\n }\n };\n\n\n blur = () => {\n log('blur mathfield');\n this.mathField.blur();\n };\n\n focus = () => {\n log('focus mathfield...');\n this.mathField.focus();\n };\n\n shouldComponentUpdate(nextProps) {\n try {\n const parsedLatex = this.mathField.parseLatex(nextProps.latex);\n const stripped = stripSpaces(parsedLatex);\n const newFieldCount = (nextProps.latex.match(REGEX) || []).length;\n\n const out =\n stripped !== stripSpaces(this.mathField.latex().trim()) ||\n newFieldCount !== Object.keys(this.mathField.innerFields).length / 2;\n\n log('[shouldComponentUpdate] ', out);\n return out;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Error parsing latex:', e.message, 'skip update');\n // eslint-disable-next-line no-console\n console.warn(e);\n return false;\n }\n }\n\n onFocus = (e) => {\n try {\n let rootBlock = e.target.parentElement.nextSibling;\n let id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);\n\n if (!id) {\n rootBlock = rootBlock.parentElement;\n id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);\n }\n\n const innerField = this.mathField.innerFields.find((f) => f.id === id);\n\n if (innerField) {\n const name = this.props.getFieldName(innerField, this.mathField.innerFields);\n if (this.props.setInput) {\n this.props.setInput(innerField);\n }\n this.props.onSubFieldFocus(name, innerField);\n }\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('error finding root block', err.message);\n }\n };\n\n render() {\n const { onBlur, className } = this.props;\n\n return <span className={className} onFocus={this.onFocus} onBlur={onBlur} ref={this.inputRef} />;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"static.js","names":["_propTypes","_interopRequireDefault","require","_react","_debug","_updateSpans","_mathquillInstance","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","log","debug","REGEX","WHITESPACE_REGEX","stripSpaces","string","arguments","length","undefined","replace","countBraces","latex","count","i","Static","exports","_React$Component","props","_this","_classCallCheck2","_defineProperty2","liveRegion","document","createElement","style","position","width","height","marginTop","clip","overflow","setAttribute","body","appendChild","input","inputRef","current","addEventListener","handleKeyDown","handleMathKeyboardClick","removeEventListener","removeChild","event","key","setState","isDeleteKeyPressed","inputSource","field","mathField","_isProgrammaticUpdate","name","getFieldName","innerFields","onSubFieldChange","_this$inputRef","regexMatch","match","__controller","cursor","insLeftOf","parent","el","dispatchEvent","KeyboardEvent","keyCode","console","error","toString","announceLatexConversion","newLatex","state","_this$state","previousLatex","announcement","newBraces","oldBraces","announceMessage","parseLatex","warn","message","textContent","setTimeout","MQ","Error","_this$inputRef2","StaticMath","handlers","edit","onInputEdit","bind","blur","focus","rootBlock","target","parentElement","nextSibling","id","parseInt","getAttribute","innerField","find","f","setInput","onSubFieldFocus","err","React","createRef","_inherits2","_createClass2","value","componentDidMount","update","updateSpans","createLiveRegion","addEventListeners","componentDidUpdate","componentWillUnmount","removeLiveRegion","removeEventListeners","shouldComponentUpdate","nextProps","parsedLatex","stripped","newFieldCount","out","trim","Object","keys","render","_this$props","onBlur","className","onFocus","ref","Component","PropTypes","isRequired","func"],"sources":["../../src/mq/static.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport { updateSpans } from '../updateSpans';\nimport { MQ } from './mathquill-instance';\n\nconst log = debug('pie-lib:math-input:mq:static');\nconst REGEX = /\\\\MathQuillMathField\\[r\\d*\\]\\{(.*?)\\}/g;\nconst WHITESPACE_REGEX = / /g;\n\nfunction stripSpaces(string = '') {\n return string.replace(WHITESPACE_REGEX, '');\n}\n\nfunction countBraces(latex) {\n let count = 0;\n\n for (let i = 0; i < (latex || '').length; i++) {\n if (latex[i] === '{') {\n count++;\n }\n }\n\n return count;\n}\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport default class Static extends React.Component {\n static propTypes = {\n latex: PropTypes.string.isRequired,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n className: PropTypes.string,\n getFieldName: PropTypes.func,\n onSubFieldChange: PropTypes.func,\n onSubFieldFocus: PropTypes.func,\n setInput: PropTypes.func,\n };\n\n static defaultProps = {\n getFieldName: () => {},\n };\n\n constructor(props) {\n super(props);\n this.state = {\n announcement: '',\n previousLatex: '',\n inputSource: null,\n isDeleteKeyPressed: false,\n };\n\n this.inputRef = React.createRef();\n }\n\n componentDidMount() {\n this.update();\n updateSpans();\n\n this.createLiveRegion();\n this.addEventListeners();\n }\n\n componentDidUpdate() {\n this.update();\n updateSpans();\n }\n\n componentWillUnmount() {\n this.removeLiveRegion();\n this.removeEventListeners();\n }\n\n createLiveRegion = () => {\n this.liveRegion = document.createElement('div');\n this.liveRegion.style.position = 'absolute';\n this.liveRegion.style.width = '1px';\n this.liveRegion.style.height = '1px';\n this.liveRegion.style.marginTop = '-1px';\n this.liveRegion.style.clip = 'rect(1px, 1px, 1px, 1px)';\n this.liveRegion.style.overflow = 'hidden';\n this.liveRegion.setAttribute('aria-live', 'polite');\n this.liveRegion.setAttribute('aria-atomic', 'true');\n\n document.body.appendChild(this.liveRegion);\n };\n\n addEventListeners = () => {\n const input = this.inputRef.current;\n\n if (input) {\n input.addEventListener('keydown', this.handleKeyDown);\n input.addEventListener('click', this.handleMathKeyboardClick);\n }\n };\n\n removeEventListeners = () => {\n const input = this.inputRef.current;\n\n if (input) {\n input.removeEventListener('keydown', this.handleKeyDown);\n input.removeEventListener('click', this.handleMathKeyboardClick);\n }\n };\n\n removeLiveRegion = () => {\n if (this.liveRegion) {\n document.body.removeChild(this.liveRegion);\n this.liveRegion = null;\n }\n };\n\n handleKeyDown = (event) => {\n if (event?.key === 'Backspace' || event?.key === 'Delete') {\n this.setState({ isDeleteKeyPressed: true });\n }\n this.setState({ inputSource: 'keyboard' });\n };\n\n handleMathKeyboardClick = () => {\n this.setState({ inputSource: 'mathKeyboard' });\n };\n\n onInputEdit = (field) => {\n if (!this.mathField || this._isProgrammaticUpdate) {\n return;\n }\n const name = this.props.getFieldName(field, this.mathField.innerFields);\n\n if (this.props.onSubFieldChange) {\n // eslint-disable-next-line no-useless-escape\n const regexMatch = field.latex().match(/[0-9]\\\\ \\\\frac\\{[^\\{]*\\}\\{ \\}/);\n\n if (this.inputRef?.current && regexMatch && regexMatch?.length) {\n try {\n field.__controller.cursor.insLeftOf(field.__controller.cursor.parent[-1].parent);\n field.el().dispatchEvent(new KeyboardEvent('keydown', { keyCode: 8 }));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n } else {\n this.props.onSubFieldChange(name, field.latex());\n }\n }\n\n this.announceLatexConversion(field.latex());\n };\n\n announceLatexConversion = (newLatex) => {\n if (!this.state) {\n // eslint-disable-next-line no-console\n console.error('State is not initialized');\n return;\n }\n\n const { previousLatex, inputSource, isDeleteKeyPressed } = this.state;\n const announcement = 'Converted to math symbol';\n\n if (inputSource === 'keyboard' && !isDeleteKeyPressed) {\n const newBraces = countBraces(newLatex);\n const oldBraces = countBraces(previousLatex);\n\n if (newBraces > oldBraces) {\n this.announceMessage(announcement);\n } else {\n try {\n this.mathField.parseLatex(previousLatex);\n this.mathField.parseLatex(newLatex);\n\n if (newLatex == previousLatex) {\n this.announceMessage(announcement);\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Error parsing latex:', e.message);\n // eslint-disable-next-line no-console\n console.warn(e);\n }\n }\n }\n\n // Only setState when values change to avoid \"Maximum update depth exceeded\"\n if (this.state.previousLatex !== newLatex || this.state.isDeleteKeyPressed) {\n this.setState({ previousLatex: newLatex, isDeleteKeyPressed: false });\n }\n };\n\n announceMessage = (message) => {\n this.setState({ previousLatex: '' });\n\n if (this.liveRegion) {\n this.liveRegion.textContent = message;\n\n // Clear the message after it is announced\n setTimeout(() => {\n this.liveRegion.textContent = '';\n }, 500);\n }\n };\n\n update = () => {\n if (!MQ) {\n throw new Error('MQ is not defined - but component has mounted?');\n }\n if (!this.mathField) {\n this.mathField = MQ.StaticMath(this.inputRef?.current, {\n handlers: {\n edit: this.onInputEdit.bind(this),\n },\n });\n }\n\n try {\n this._isProgrammaticUpdate = true;\n this.mathField.parseLatex(this.props.latex);\n this.mathField.latex(this.props.latex);\n } catch (e) {\n // default latex if received has errors\n this.mathField.latex('\\\\MathQuillMathField[r1]{}');\n } finally {\n this._isProgrammaticUpdate = false;\n }\n };\n\n\n blur = () => {\n log('blur mathfield');\n this.mathField.blur();\n };\n\n focus = () => {\n log('focus mathfield...');\n this.mathField.focus();\n };\n\n shouldComponentUpdate(nextProps) {\n try {\n const parsedLatex = this.mathField.parseLatex(nextProps.latex);\n const stripped = stripSpaces(parsedLatex);\n const newFieldCount = (nextProps.latex.match(REGEX) || []).length;\n\n const out =\n stripped !== stripSpaces(this.mathField.latex().trim()) ||\n newFieldCount !== Object.keys(this.mathField.innerFields).length / 2;\n\n log('[shouldComponentUpdate] ', out);\n return out;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Error parsing latex:', e.message, 'skip update');\n // eslint-disable-next-line no-console\n console.warn(e);\n return false;\n }\n }\n\n onFocus = (e) => {\n try {\n let rootBlock = e.target.parentElement.nextSibling;\n let id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);\n\n if (!id) {\n rootBlock = rootBlock.parentElement;\n id = parseInt(rootBlock.getAttribute('mathquill-block-id'), 10);\n }\n\n const innerField = this.mathField.innerFields.find((f) => f.id === id);\n\n if (innerField) {\n const name = this.props.getFieldName(innerField, this.mathField.innerFields);\n if (this.props.setInput) {\n this.props.setInput(innerField);\n }\n this.props.onSubFieldFocus(name, innerField);\n }\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('error finding root block', err.message);\n }\n };\n\n render() {\n const { onBlur, className } = this.props;\n\n return <span className={className} onFocus={this.onFocus} onBlur={onBlur} ref={this.inputRef} />;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AAA0C,SAAAK,WAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,WAAAD,CAAA,OAAAE,gBAAA,aAAAF,CAAA,OAAAG,2BAAA,aAAAJ,CAAA,EAAAK,yBAAA,KAAAC,OAAA,CAAAC,SAAA,CAAAN,CAAA,EAAAC,CAAA,YAAAC,gBAAA,aAAAH,CAAA,EAAAQ,WAAA,IAAAP,CAAA,CAAAQ,KAAA,CAAAT,CAAA,EAAAE,CAAA;AAAA,SAAAG,0BAAA,cAAAL,CAAA,IAAAU,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAP,OAAA,CAAAC,SAAA,CAAAG,OAAA,iCAAAV,CAAA,aAAAK,yBAAA,YAAAA,0BAAA,aAAAL,CAAA;AAE1C,IAAMc,GAAG,GAAG,IAAAC,iBAAK,EAAC,8BAA8B,CAAC;AACjD,IAAMC,KAAK,GAAG,wCAAwC;AACtD,IAAMC,gBAAgB,GAAG,IAAI;AAE7B,SAASC,WAAWA,CAAA,EAAc;EAAA,IAAbC,MAAM,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAC9B,OAAOD,MAAM,CAACI,OAAO,CAACN,gBAAgB,EAAE,EAAE,CAAC;AAC7C;AAEA,SAASO,WAAWA,CAACC,KAAK,EAAE;EAC1B,IAAIC,KAAK,GAAG,CAAC;EAEb,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAACF,KAAK,IAAI,EAAE,EAAEJ,MAAM,EAAEM,CAAC,EAAE,EAAE;IAC7C,IAAIF,KAAK,CAACE,CAAC,CAAC,KAAK,GAAG,EAAE;MACpBD,KAAK,EAAE;IACT;EACF;EAEA,OAAOA,KAAK;AACd;;AAEA;AACA;AACA;AAFA,IAGqBE,MAAM,GAAAC,OAAA,qCAAAC,gBAAA;EAgBzB,SAAAF,OAAYG,KAAK,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,mBAAAL,MAAA;IACjBI,KAAA,GAAAjC,UAAA,OAAA6B,MAAA,GAAMG,KAAK;IAAE,IAAAG,gBAAA,aAAAF,KAAA,sBA6BI,YAAM;MACvBA,KAAA,CAAKG,UAAU,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MAC/CL,KAAA,CAAKG,UAAU,CAACG,KAAK,CAACC,QAAQ,GAAG,UAAU;MAC3CP,KAAA,CAAKG,UAAU,CAACG,KAAK,CAACE,KAAK,GAAG,KAAK;MACnCR,KAAA,CAAKG,UAAU,CAACG,KAAK,CAACG,MAAM,GAAG,KAAK;MACpCT,KAAA,CAAKG,UAAU,CAACG,KAAK,CAACI,SAAS,GAAG,MAAM;MACxCV,KAAA,CAAKG,UAAU,CAACG,KAAK,CAACK,IAAI,GAAG,0BAA0B;MACvDX,KAAA,CAAKG,UAAU,CAACG,KAAK,CAACM,QAAQ,GAAG,QAAQ;MACzCZ,KAAA,CAAKG,UAAU,CAACU,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC;MACnDb,KAAA,CAAKG,UAAU,CAACU,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;MAEnDT,QAAQ,CAACU,IAAI,CAACC,WAAW,CAACf,KAAA,CAAKG,UAAU,CAAC;IAC5C,CAAC;IAAA,IAAAD,gBAAA,aAAAF,KAAA,uBAEmB,YAAM;MACxB,IAAMgB,KAAK,GAAGhB,KAAA,CAAKiB,QAAQ,CAACC,OAAO;MAEnC,IAAIF,KAAK,EAAE;QACTA,KAAK,CAACG,gBAAgB,CAAC,SAAS,EAAEnB,KAAA,CAAKoB,aAAa,CAAC;QACrDJ,KAAK,CAACG,gBAAgB,CAAC,OAAO,EAAEnB,KAAA,CAAKqB,uBAAuB,CAAC;MAC/D;IACF,CAAC;IAAA,IAAAnB,gBAAA,aAAAF,KAAA,0BAEsB,YAAM;MAC3B,IAAMgB,KAAK,GAAGhB,KAAA,CAAKiB,QAAQ,CAACC,OAAO;MAEnC,IAAIF,KAAK,EAAE;QACTA,KAAK,CAACM,mBAAmB,CAAC,SAAS,EAAEtB,KAAA,CAAKoB,aAAa,CAAC;QACxDJ,KAAK,CAACM,mBAAmB,CAAC,OAAO,EAAEtB,KAAA,CAAKqB,uBAAuB,CAAC;MAClE;IACF,CAAC;IAAA,IAAAnB,gBAAA,aAAAF,KAAA,sBAEkB,YAAM;MACvB,IAAIA,KAAA,CAAKG,UAAU,EAAE;QACnBC,QAAQ,CAACU,IAAI,CAACS,WAAW,CAACvB,KAAA,CAAKG,UAAU,CAAC;QAC1CH,KAAA,CAAKG,UAAU,GAAG,IAAI;MACxB;IACF,CAAC;IAAA,IAAAD,gBAAA,aAAAF,KAAA,mBAEe,UAACwB,KAAK,EAAK;MACzB,IAAI,CAAAA,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,GAAG,MAAK,WAAW,IAAI,CAAAD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,GAAG,MAAK,QAAQ,EAAE;QACzDzB,KAAA,CAAK0B,QAAQ,CAAC;UAAEC,kBAAkB,EAAE;QAAK,CAAC,CAAC;MAC7C;MACA3B,KAAA,CAAK0B,QAAQ,CAAC;QAAEE,WAAW,EAAE;MAAW,CAAC,CAAC;IAC5C,CAAC;IAAA,IAAA1B,gBAAA,aAAAF,KAAA,6BAEyB,YAAM;MAC9BA,KAAA,CAAK0B,QAAQ,CAAC;QAAEE,WAAW,EAAE;MAAe,CAAC,CAAC;IAChD,CAAC;IAAA,IAAA1B,gBAAA,aAAAF,KAAA,iBAEa,UAAC6B,KAAK,EAAK;MACvB,IAAI,CAAC7B,KAAA,CAAK8B,SAAS,IAAI9B,KAAA,CAAK+B,qBAAqB,EAAE;QACjD;MACF;MACA,IAAMC,IAAI,GAAGhC,KAAA,CAAKD,KAAK,CAACkC,YAAY,CAACJ,KAAK,EAAE7B,KAAA,CAAK8B,SAAS,CAACI,WAAW,CAAC;MAEvE,IAAIlC,KAAA,CAAKD,KAAK,CAACoC,gBAAgB,EAAE;QAAA,IAAAC,cAAA;QAC/B;QACA,IAAMC,UAAU,GAAGR,KAAK,CAACpC,KAAK,CAAC,CAAC,CAAC6C,KAAK,CAAC,+BAA+B,CAAC;QAEvE,IAAI,CAAAF,cAAA,GAAApC,KAAA,CAAKiB,QAAQ,cAAAmB,cAAA,eAAbA,cAAA,CAAelB,OAAO,IAAImB,UAAU,IAAIA,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEhD,MAAM,EAAE;UAC9D,IAAI;YACFwC,KAAK,CAACU,YAAY,CAACC,MAAM,CAACC,SAAS,CAACZ,KAAK,CAACU,YAAY,CAACC,MAAM,CAACE,MAAM,CAAC,CAAC,CAAC,CAAC,CAACA,MAAM,CAAC;YAChFb,KAAK,CAACc,EAAE,CAAC,CAAC,CAACC,aAAa,CAAC,IAAIC,aAAa,CAAC,SAAS,EAAE;cAAEC,OAAO,EAAE;YAAE,CAAC,CAAC,CAAC;UACxE,CAAC,CAAC,OAAO5E,CAAC,EAAE;YACV;YACA6E,OAAO,CAACC,KAAK,CAAC9E,CAAC,CAAC+E,QAAQ,CAAC,CAAC,CAAC;UAC7B;QACF,CAAC,MAAM;UACLjD,KAAA,CAAKD,KAAK,CAACoC,gBAAgB,CAACH,IAAI,EAAEH,KAAK,CAACpC,KAAK,CAAC,CAAC,CAAC;QAClD;MACF;MAEAO,KAAA,CAAKkD,uBAAuB,CAACrB,KAAK,CAACpC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAA,IAAAS,gBAAA,aAAAF,KAAA,6BAEyB,UAACmD,QAAQ,EAAK;MACtC,IAAI,CAACnD,KAAA,CAAKoD,KAAK,EAAE;QACf;QACAL,OAAO,CAACC,KAAK,CAAC,0BAA0B,CAAC;QACzC;MACF;MAEA,IAAAK,WAAA,GAA2DrD,KAAA,CAAKoD,KAAK;QAA7DE,aAAa,GAAAD,WAAA,CAAbC,aAAa;QAAE1B,WAAW,GAAAyB,WAAA,CAAXzB,WAAW;QAAED,kBAAkB,GAAA0B,WAAA,CAAlB1B,kBAAkB;MACtD,IAAM4B,YAAY,GAAG,0BAA0B;MAE/C,IAAI3B,WAAW,KAAK,UAAU,IAAI,CAACD,kBAAkB,EAAE;QACrD,IAAM6B,SAAS,GAAGhE,WAAW,CAAC2D,QAAQ,CAAC;QACvC,IAAMM,SAAS,GAAGjE,WAAW,CAAC8D,aAAa,CAAC;QAE5C,IAAIE,SAAS,GAAGC,SAAS,EAAE;UACzBzD,KAAA,CAAK0D,eAAe,CAACH,YAAY,CAAC;QACpC,CAAC,MAAM;UACL,IAAI;YACFvD,KAAA,CAAK8B,SAAS,CAAC6B,UAAU,CAACL,aAAa,CAAC;YACxCtD,KAAA,CAAK8B,SAAS,CAAC6B,UAAU,CAACR,QAAQ,CAAC;YAEnC,IAAIA,QAAQ,IAAIG,aAAa,EAAE;cAC7BtD,KAAA,CAAK0D,eAAe,CAACH,YAAY,CAAC;YACpC;UACF,CAAC,CAAC,OAAOrF,CAAC,EAAE;YACV;YACA6E,OAAO,CAACa,IAAI,CAAC,sBAAsB,EAAE1F,CAAC,CAAC2F,OAAO,CAAC;YAC/C;YACAd,OAAO,CAACa,IAAI,CAAC1F,CAAC,CAAC;UACjB;QACF;MACF;;MAEA;MACA,IAAI8B,KAAA,CAAKoD,KAAK,CAACE,aAAa,KAAKH,QAAQ,IAAInD,KAAA,CAAKoD,KAAK,CAACzB,kBAAkB,EAAE;QAC1E3B,KAAA,CAAK0B,QAAQ,CAAC;UAAE4B,aAAa,EAAEH,QAAQ;UAAExB,kBAAkB,EAAE;QAAM,CAAC,CAAC;MACvE;IACF,CAAC;IAAA,IAAAzB,gBAAA,aAAAF,KAAA,qBAEiB,UAAC6D,OAAO,EAAK;MAC7B7D,KAAA,CAAK0B,QAAQ,CAAC;QAAE4B,aAAa,EAAE;MAAG,CAAC,CAAC;MAEpC,IAAItD,KAAA,CAAKG,UAAU,EAAE;QACnBH,KAAA,CAAKG,UAAU,CAAC2D,WAAW,GAAGD,OAAO;;QAErC;QACAE,UAAU,CAAC,YAAM;UACf/D,KAAA,CAAKG,UAAU,CAAC2D,WAAW,GAAG,EAAE;QAClC,CAAC,EAAE,GAAG,CAAC;MACT;IACF,CAAC;IAAA,IAAA5D,gBAAA,aAAAF,KAAA,YAEQ,YAAM;MACb,IAAI,CAACgE,qBAAE,EAAE;QACP,MAAM,IAAIC,KAAK,CAAC,gDAAgD,CAAC;MACnE;MACA,IAAI,CAACjE,KAAA,CAAK8B,SAAS,EAAE;QAAA,IAAAoC,eAAA;QACnBlE,KAAA,CAAK8B,SAAS,GAAGkC,qBAAE,CAACG,UAAU,EAAAD,eAAA,GAAClE,KAAA,CAAKiB,QAAQ,cAAAiD,eAAA,uBAAbA,eAAA,CAAehD,OAAO,EAAE;UACrDkD,QAAQ,EAAE;YACRC,IAAI,EAAErE,KAAA,CAAKsE,WAAW,CAACC,IAAI,CAAAvE,KAAK;UAClC;QACF,CAAC,CAAC;MACJ;MAEA,IAAI;QACFA,KAAA,CAAK+B,qBAAqB,GAAG,IAAI;QACjC/B,KAAA,CAAK8B,SAAS,CAAC6B,UAAU,CAAC3D,KAAA,CAAKD,KAAK,CAACN,KAAK,CAAC;QAC3CO,KAAA,CAAK8B,SAAS,CAACrC,KAAK,CAACO,KAAA,CAAKD,KAAK,CAACN,KAAK,CAAC;MACxC,CAAC,CAAC,OAAOvB,CAAC,EAAE;QACV;QACA8B,KAAA,CAAK8B,SAAS,CAACrC,KAAK,CAAC,4BAA4B,CAAC;MACpD,CAAC,SAAS;QACRO,KAAA,CAAK+B,qBAAqB,GAAG,KAAK;MACpC;IACF,CAAC;IAAA,IAAA7B,gBAAA,aAAAF,KAAA,UAGM,YAAM;MACXlB,GAAG,CAAC,gBAAgB,CAAC;MACrBkB,KAAA,CAAK8B,SAAS,CAAC0C,IAAI,CAAC,CAAC;IACvB,CAAC;IAAA,IAAAtE,gBAAA,aAAAF,KAAA,WAEO,YAAM;MACZlB,GAAG,CAAC,oBAAoB,CAAC;MACzBkB,KAAA,CAAK8B,SAAS,CAAC2C,KAAK,CAAC,CAAC;IACxB,CAAC;IAAA,IAAAvE,gBAAA,aAAAF,KAAA,aAuBS,UAAC9B,CAAC,EAAK;MACf,IAAI;QACF,IAAIwG,SAAS,GAAGxG,CAAC,CAACyG,MAAM,CAACC,aAAa,CAACC,WAAW;QAClD,IAAIC,EAAE,GAAGC,QAAQ,CAACL,SAAS,CAACM,YAAY,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC;QAEnE,IAAI,CAACF,EAAE,EAAE;UACPJ,SAAS,GAAGA,SAAS,CAACE,aAAa;UACnCE,EAAE,GAAGC,QAAQ,CAACL,SAAS,CAACM,YAAY,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC;QACjE;QAEA,IAAMC,UAAU,GAAGjF,KAAA,CAAK8B,SAAS,CAACI,WAAW,CAACgD,IAAI,CAAC,UAACC,CAAC;UAAA,OAAKA,CAAC,CAACL,EAAE,KAAKA,EAAE;QAAA,EAAC;QAEtE,IAAIG,UAAU,EAAE;UACd,IAAMjD,IAAI,GAAGhC,KAAA,CAAKD,KAAK,CAACkC,YAAY,CAACgD,UAAU,EAAEjF,KAAA,CAAK8B,SAAS,CAACI,WAAW,CAAC;UAC5E,IAAIlC,KAAA,CAAKD,KAAK,CAACqF,QAAQ,EAAE;YACvBpF,KAAA,CAAKD,KAAK,CAACqF,QAAQ,CAACH,UAAU,CAAC;UACjC;UACAjF,KAAA,CAAKD,KAAK,CAACsF,eAAe,CAACrD,IAAI,EAAEiD,UAAU,CAAC;QAC9C;MACF,CAAC,CAAC,OAAOK,GAAG,EAAE;QACZ;QACAvC,OAAO,CAACC,KAAK,CAAC,0BAA0B,EAAEsC,GAAG,CAACzB,OAAO,CAAC;MACxD;IACF,CAAC;IA3OC7D,KAAA,CAAKoD,KAAK,GAAG;MACXG,YAAY,EAAE,EAAE;MAChBD,aAAa,EAAE,EAAE;MACjB1B,WAAW,EAAE,IAAI;MACjBD,kBAAkB,EAAE;IACtB,CAAC;IAED3B,KAAA,CAAKiB,QAAQ,gBAAGsE,iBAAK,CAACC,SAAS,CAAC,CAAC;IAAC,OAAAxF,KAAA;EACpC;EAAC,IAAAyF,UAAA,aAAA7F,MAAA,EAAAE,gBAAA;EAAA,WAAA4F,aAAA,aAAA9F,MAAA;IAAA6B,GAAA;IAAAkE,KAAA,EAED,SAAAC,iBAAiBA,CAAA,EAAG;MAClB,IAAI,CAACC,MAAM,CAAC,CAAC;MACb,IAAAC,wBAAW,EAAC,CAAC;MAEb,IAAI,CAACC,gBAAgB,CAAC,CAAC;MACvB,IAAI,CAACC,iBAAiB,CAAC,CAAC;IAC1B;EAAC;IAAAvE,GAAA;IAAAkE,KAAA,EAED,SAAAM,kBAAkBA,CAAA,EAAG;MACnB,IAAI,CAACJ,MAAM,CAAC,CAAC;MACb,IAAAC,wBAAW,EAAC,CAAC;IACf;EAAC;IAAArE,GAAA;IAAAkE,KAAA,EAED,SAAAO,oBAAoBA,CAAA,EAAG;MACrB,IAAI,CAACC,gBAAgB,CAAC,CAAC;MACvB,IAAI,CAACC,oBAAoB,CAAC,CAAC;IAC7B;EAAC;IAAA3E,GAAA;IAAAkE,KAAA,EAqKD,SAAAU,qBAAqBA,CAACC,SAAS,EAAE;MAC/B,IAAI;QACF,IAAMC,WAAW,GAAG,IAAI,CAACzE,SAAS,CAAC6B,UAAU,CAAC2C,SAAS,CAAC7G,KAAK,CAAC;QAC9D,IAAM+G,QAAQ,GAAGtH,WAAW,CAACqH,WAAW,CAAC;QACzC,IAAME,aAAa,GAAG,CAACH,SAAS,CAAC7G,KAAK,CAAC6C,KAAK,CAACtD,KAAK,CAAC,IAAI,EAAE,EAAEK,MAAM;QAEjE,IAAMqH,GAAG,GACPF,QAAQ,KAAKtH,WAAW,CAAC,IAAI,CAAC4C,SAAS,CAACrC,KAAK,CAAC,CAAC,CAACkH,IAAI,CAAC,CAAC,CAAC,IACvDF,aAAa,KAAKG,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC/E,SAAS,CAACI,WAAW,CAAC,CAAC7C,MAAM,GAAG,CAAC;QAEtEP,GAAG,CAAC,0BAA0B,EAAE4H,GAAG,CAAC;QACpC,OAAOA,GAAG;MACZ,CAAC,CAAC,OAAOxI,CAAC,EAAE;QACV;QACA6E,OAAO,CAACa,IAAI,CAAC,sBAAsB,EAAE1F,CAAC,CAAC2F,OAAO,EAAE,aAAa,CAAC;QAC9D;QACAd,OAAO,CAACa,IAAI,CAAC1F,CAAC,CAAC;QACf,OAAO,KAAK;MACd;IACF;EAAC;IAAAuD,GAAA;IAAAkE,KAAA,EA2BD,SAAAmB,MAAMA,CAAA,EAAG;MACP,IAAAC,WAAA,GAA8B,IAAI,CAAChH,KAAK;QAAhCiH,MAAM,GAAAD,WAAA,CAANC,MAAM;QAAEC,SAAS,GAAAF,WAAA,CAATE,SAAS;MAEzB,oBAAOtJ,MAAA,YAAA0C,aAAA;QAAM4G,SAAS,EAAEA,SAAU;QAACC,OAAO,EAAE,IAAI,CAACA,OAAQ;QAACF,MAAM,EAAEA,MAAO;QAACG,GAAG,EAAE,IAAI,CAAClG;MAAS,CAAE,CAAC;IAClG;EAAC;AAAA,EAnQiCsE,iBAAK,CAAC6B,SAAS;AAAA,IAAAlH,gBAAA,aAA9BN,MAAM,eACN;EACjBH,KAAK,EAAE4H,qBAAS,CAAClI,MAAM,CAACmI,UAAU;EAClCJ,OAAO,EAAEG,qBAAS,CAACE,IAAI;EACvBP,MAAM,EAAEK,qBAAS,CAACE,IAAI;EACtBN,SAAS,EAAEI,qBAAS,CAAClI,MAAM;EAC3B8C,YAAY,EAAEoF,qBAAS,CAACE,IAAI;EAC5BpF,gBAAgB,EAAEkF,qBAAS,CAACE,IAAI;EAChClC,eAAe,EAAEgC,qBAAS,CAACE,IAAI;EAC/BnC,QAAQ,EAAEiC,qBAAS,CAACE;AACtB,CAAC;AAAA,IAAArH,gBAAA,aAVkBN,MAAM,kBAYH;EACpBqC,YAAY,EAAE,SAAdA,YAAYA,CAAA,EAAQ,CAAC;AACvB,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "
|
|
6
|
+
"version": "8.0.1",
|
|
7
7
|
"main": "lib/index.js",
|
|
8
8
|
"module": "src/index.jsx",
|
|
9
9
|
"repository": "pie-framework/pie-lib",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@emotion/style": "^0.8.0",
|
|
13
13
|
"@mui/icons-material": "^7.3.4",
|
|
14
14
|
"@mui/material": "^7.3.4",
|
|
15
|
-
"@pie-framework/mathquill": "1.2.1-beta.
|
|
15
|
+
"@pie-framework/mathquill": "1.2.1-beta.1",
|
|
16
16
|
"debug": "^4.1.1",
|
|
17
17
|
"lodash-es": "^4.17.23",
|
|
18
18
|
"prop-types": "^15.7.2"
|
|
@@ -25,5 +25,5 @@
|
|
|
25
25
|
"react-dom": "^18.2.0"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "1ba46aa3e68b7d108e609220db271d518ab20f11"
|
|
29
29
|
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import { addBrackets, removeBrackets } from '../index';
|
|
1
|
+
import { addBrackets, removeBrackets, registerEmbed, applyStaticMath } from '../index';
|
|
2
2
|
|
|
3
3
|
describe('math-input index', () => {
|
|
4
|
+
it('exports registerEmbed and applyStaticMath', () => {
|
|
5
|
+
expect(typeof registerEmbed).toBe('function');
|
|
6
|
+
expect(typeof applyStaticMath).toBe('function');
|
|
7
|
+
});
|
|
8
|
+
|
|
4
9
|
describe('addBrackets', () => {
|
|
5
10
|
it('should add both brackets to a plain string', () => {
|
|
6
11
|
expect(addBrackets('x^2')).toBe('\\(x^2\\)');
|
package/src/index.jsx
CHANGED
|
@@ -5,6 +5,7 @@ import * as keys from './keys';
|
|
|
5
5
|
import HorizontalKeypad from './horizontal-keypad';
|
|
6
6
|
|
|
7
7
|
import * as mq from './mq';
|
|
8
|
+
import { registerEmbed, applyStaticMath } from './mq/mathquill-instance';
|
|
8
9
|
|
|
9
10
|
const addLeftBracket = (s) => (s.indexOf('\\(') === 0 ? s : `\\(${s}`);
|
|
10
11
|
const addRightBracket = (s) => (s.indexOf('\\)') === s.length - 2 ? s : `${s}\\)`);
|
|
@@ -14,4 +15,14 @@ const rmRightBracket = (s) => (s.indexOf('\\)') === s.length - 2 ? s.substring(0
|
|
|
14
15
|
const addBrackets = (s) => addRightBracket(addLeftBracket(s));
|
|
15
16
|
const removeBrackets = (s) => rmRightBracket(rmLeftBracket(s));
|
|
16
17
|
|
|
17
|
-
export {
|
|
18
|
+
export {
|
|
19
|
+
keysForGrade,
|
|
20
|
+
addBrackets,
|
|
21
|
+
removeBrackets,
|
|
22
|
+
keys,
|
|
23
|
+
HorizontalKeypad,
|
|
24
|
+
mq,
|
|
25
|
+
updateSpans,
|
|
26
|
+
registerEmbed,
|
|
27
|
+
applyStaticMath,
|
|
28
|
+
};
|
package/src/keypad/index.jsx
CHANGED
|
@@ -195,10 +195,10 @@ const StyledButton = styled(Button)(({ category, isDelete, isComma, isDot }) =>
|
|
|
195
195
|
? color.keypadButtonOperator()
|
|
196
196
|
: color.keypadButton(),
|
|
197
197
|
'&:hover': {
|
|
198
|
-
|
|
198
|
+
backgroundColor:
|
|
199
199
|
category === 'operators'
|
|
200
|
-
? color.
|
|
201
|
-
: color.
|
|
200
|
+
? color.keypadButtonOperatorHover()
|
|
201
|
+
: color.keypadButtonHover()
|
|
202
202
|
},
|
|
203
203
|
borderRadius: 0,
|
|
204
204
|
...(isDelete && {
|
|
@@ -218,10 +218,10 @@ const StyledLatexButtonWrapper = styled(Button)(({ category }) => ({
|
|
|
218
218
|
? color.keypadButtonOperator()
|
|
219
219
|
: color.keypadButton(),
|
|
220
220
|
'&:hover': {
|
|
221
|
-
|
|
221
|
+
backgroundColor:
|
|
222
222
|
category === 'operators'
|
|
223
|
-
? color.
|
|
224
|
-
: color.
|
|
223
|
+
? color.keypadButtonOperatorHover()
|
|
224
|
+
: color.keypadButtonHover(),
|
|
225
225
|
},
|
|
226
226
|
}));
|
|
227
227
|
|
|
@@ -234,8 +234,8 @@ const StyledIconButton = styled(IconButton)(({ category }) => ({
|
|
|
234
234
|
'&:hover': {
|
|
235
235
|
backgroundColor:
|
|
236
236
|
category === 'operators'
|
|
237
|
-
? color.
|
|
238
|
-
: color.
|
|
237
|
+
? color.keypadButtonOperatorHover()
|
|
238
|
+
: color.keypadButtonHover(),
|
|
239
239
|
},
|
|
240
240
|
borderRadius: 0,
|
|
241
241
|
'& .icon': {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const mockRegisterEmbed = jest.fn();
|
|
2
|
+
const mockStaticMath = jest.fn().mockReturnValue({ mockInstance: true });
|
|
3
|
+
|
|
4
|
+
jest.mock('@pie-framework/mathquill', () => ({
|
|
5
|
+
__esModule: true,
|
|
6
|
+
default: {
|
|
7
|
+
getInterface: jest.fn(() => ({
|
|
8
|
+
registerEmbed: mockRegisterEmbed,
|
|
9
|
+
StaticMath: mockStaticMath,
|
|
10
|
+
})),
|
|
11
|
+
},
|
|
12
|
+
}));
|
|
13
|
+
|
|
14
|
+
jest.mock('../custom-elements', () => ({
|
|
15
|
+
registerLineBreak: jest.fn(),
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
describe('mathquill-instance', () => {
|
|
19
|
+
let registerEmbed;
|
|
20
|
+
let applyStaticMath;
|
|
21
|
+
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
jest.resetModules();
|
|
24
|
+
mockRegisterEmbed.mockClear();
|
|
25
|
+
mockStaticMath.mockClear();
|
|
26
|
+
({ registerEmbed, applyStaticMath } = require('../mathquill-instance'));
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
describe('registerEmbed', () => {
|
|
30
|
+
it('delegates to MQ.registerEmbed when available', () => {
|
|
31
|
+
const factory = () => ({});
|
|
32
|
+
registerEmbed('answerBlock', factory);
|
|
33
|
+
|
|
34
|
+
expect(mockRegisterEmbed).toHaveBeenCalledTimes(1);
|
|
35
|
+
expect(mockRegisterEmbed).toHaveBeenCalledWith('answerBlock', factory);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
describe('applyStaticMath', () => {
|
|
40
|
+
it('returns undefined when element is missing', () => {
|
|
41
|
+
expect(applyStaticMath(null, 'x')).toBeUndefined();
|
|
42
|
+
expect(mockStaticMath).not.toHaveBeenCalled();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('sets textContent when latex is provided and calls StaticMath', () => {
|
|
46
|
+
const el = document.createElement('span');
|
|
47
|
+
const handlers = { edit: jest.fn() };
|
|
48
|
+
|
|
49
|
+
const result = applyStaticMath(el, '\\frac{1}{2}', { handlers });
|
|
50
|
+
|
|
51
|
+
expect(el.textContent).toBe('\\frac{1}{2}');
|
|
52
|
+
expect(mockStaticMath).toHaveBeenCalledTimes(1);
|
|
53
|
+
expect(mockStaticMath).toHaveBeenCalledWith(el, { handlers });
|
|
54
|
+
expect(result).toEqual({ mockInstance: true });
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('omits textContent when latex is undefined but still calls StaticMath', () => {
|
|
58
|
+
const el = document.createElement('span');
|
|
59
|
+
el.textContent = 'preset';
|
|
60
|
+
|
|
61
|
+
applyStaticMath(el, undefined);
|
|
62
|
+
|
|
63
|
+
expect(el.textContent).toBe('preset');
|
|
64
|
+
expect(mockStaticMath).toHaveBeenCalledWith(el, undefined);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
package/src/mq/input.jsx
CHANGED
|
@@ -2,19 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { styled } from '@mui/material/styles';
|
|
4
4
|
import debug from 'debug';
|
|
5
|
-
import {
|
|
6
|
-
import MathQuill from '@pie-framework/mathquill';
|
|
7
|
-
|
|
8
|
-
let MQ;
|
|
9
|
-
if (typeof window !== 'undefined') {
|
|
10
|
-
MQ = MathQuill.getInterface(3);
|
|
11
|
-
|
|
12
|
-
console.log('MQ', MQ);
|
|
13
|
-
|
|
14
|
-
if (MQ && MQ.registerEmbed) {
|
|
15
|
-
registerLineBreak(MQ);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
5
|
+
import { MQ } from './mathquill-instance';
|
|
18
6
|
|
|
19
7
|
const log = debug('math-input:mq:input');
|
|
20
8
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import MathQuill from '@pie-framework/mathquill';
|
|
2
|
+
import { registerLineBreak } from './custom-elements';
|
|
3
|
+
|
|
4
|
+
let MQ;
|
|
5
|
+
if (typeof window !== 'undefined') {
|
|
6
|
+
MQ = MathQuill.getInterface(3);
|
|
7
|
+
if (MQ && MQ.registerEmbed) {
|
|
8
|
+
registerLineBreak(MQ);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Register a MathQuill embed (e.g. answer blocks in pie-elements).
|
|
14
|
+
* No-op in SSR or if the interface is unavailable.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} name
|
|
17
|
+
* @param {Function} factory
|
|
18
|
+
*/
|
|
19
|
+
export function registerEmbed(name, factory) {
|
|
20
|
+
if (!MQ || !MQ.registerEmbed) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
MQ.registerEmbed(name, factory);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Apply MathQuill static math to a DOM element.
|
|
28
|
+
* Optionally sets element text to `latex` before enhancing (typical pie-elements usage).
|
|
29
|
+
*
|
|
30
|
+
* @param {HTMLElement} element
|
|
31
|
+
* @param {string} [latex] If provided, assigned to element.textContent before StaticMath runs.
|
|
32
|
+
* @param {object} [options] Optional MathQuill StaticMath options (e.g. handlers).
|
|
33
|
+
* @returns {object|undefined} MathQuill static math instance, if any.
|
|
34
|
+
*/
|
|
35
|
+
export function applyStaticMath(element, latex, options) {
|
|
36
|
+
if (!MQ || !element) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
if (latex !== undefined && latex !== null) {
|
|
40
|
+
element.textContent = latex;
|
|
41
|
+
}
|
|
42
|
+
return MQ.StaticMath(element, options);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { MQ };
|
package/src/mq/static.jsx
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import PropTypes from 'prop-types';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import debug from 'debug';
|
|
4
|
-
import MathQuill from '@pie-framework/mathquill';
|
|
5
4
|
import { updateSpans } from '../updateSpans';
|
|
6
|
-
|
|
7
|
-
let MQ;
|
|
8
|
-
if (typeof window !== 'undefined') {
|
|
9
|
-
MQ = MathQuill.getInterface(3);
|
|
10
|
-
}
|
|
5
|
+
import { MQ } from './mathquill-instance';
|
|
11
6
|
|
|
12
7
|
const log = debug('pie-lib:math-input:mq:static');
|
|
13
8
|
const REGEX = /\\MathQuillMathField\[r\d*\]\{(.*?)\}/g;
|