@pie-lib/math-input 6.7.1 → 6.8.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 +33 -0
- package/lib/keypad/index.js +8 -5
- package/lib/keypad/index.js.map +1 -1
- package/lib/mq/input.js +37 -0
- package/lib/mq/input.js.map +1 -1
- package/package.json +3 -3
- package/src/keypad/index.jsx +9 -5
- package/src/mq/input.jsx +35 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,39 @@
|
|
|
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
|
+
## [6.8.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@6.8.0...@pie-lib/math-input@6.8.1) (2022-08-30)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-lib/math-input
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [6.8.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@6.7.2...@pie-lib/math-input@6.8.0) (2022-08-29)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* parse latex when there's an integer and a space before a fraction (remove white space) - wip - PD-1858 ([13995de](https://github.com/pie-framework/pie-lib/commit/13995de67283a3c800f41ee8221f6d2e3f10a7ad))
|
|
20
|
+
* parse latex when there's an integer and a space before a fraction (remove white space) PD-1858 ([85654e5](https://github.com/pie-framework/pie-lib/commit/85654e54b9feef656c0002e9d1b2bda2394f398e))
|
|
21
|
+
* **math-input:** feedback ([6b6ee68](https://github.com/pie-framework/pie-lib/commit/6b6ee6852c6226c446a498ad64c2b43e23f9c154))
|
|
22
|
+
* **math-input:** Make math-input style inline with mathjax's one ([e988f63](https://github.com/pie-framework/pie-lib/commit/e988f635f6f75cbe882b3bf7efb716de13fd893d))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [6.7.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@6.7.1...@pie-lib/math-input@6.7.2) (2022-07-19)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* bump mathquill to 1.1.3 ([48b84c5](https://github.com/pie-framework/pie-lib/commit/48b84c534cbf519e172a80d18a48b26eda3cf7e6))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
6
39
|
## [6.7.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-input@6.7.0...@pie-lib/math-input@6.7.1) (2022-07-18)
|
|
7
40
|
|
|
8
41
|
|
package/lib/keypad/index.js
CHANGED
|
@@ -93,14 +93,16 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
|
|
|
93
93
|
width: '30px',
|
|
94
94
|
marginTop: '0 !important',
|
|
95
95
|
borderTop: '2px solid black',
|
|
96
|
+
fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',
|
|
96
97
|
'&.mq-arrow-both': {
|
|
98
|
+
top: '0px !important',
|
|
97
99
|
'& *': {
|
|
98
100
|
lineHeight: '1 !important'
|
|
99
101
|
},
|
|
100
102
|
'&:before': {
|
|
101
103
|
fontSize: '80%',
|
|
102
104
|
left: 'calc(-13%)',
|
|
103
|
-
top: '-0.
|
|
105
|
+
top: '-0.31em'
|
|
104
106
|
},
|
|
105
107
|
'&:after': {
|
|
106
108
|
fontSize: '80% !important',
|
|
@@ -110,12 +112,12 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
|
|
|
110
112
|
'&.mq-empty:before': {
|
|
111
113
|
fontSize: '80%',
|
|
112
114
|
left: 'calc(-13%)',
|
|
113
|
-
top: '-0.
|
|
115
|
+
top: '-0.26em'
|
|
114
116
|
},
|
|
115
117
|
'&.mq-empty:after': {
|
|
116
118
|
fontSize: '80%',
|
|
117
119
|
right: 'calc(-13%)',
|
|
118
|
-
top: '-0.
|
|
120
|
+
top: '-0.26em'
|
|
119
121
|
},
|
|
120
122
|
'&.mq-empty': {
|
|
121
123
|
minHeight: '1.4em'
|
|
@@ -124,7 +126,7 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
|
|
|
124
126
|
'&.mq-arrow-right:before': {
|
|
125
127
|
fontSize: '80%',
|
|
126
128
|
right: 'calc(-13%)',
|
|
127
|
-
top: '-0.
|
|
129
|
+
top: '-0.26em'
|
|
128
130
|
},
|
|
129
131
|
'& .mq-overarrow-inner': {
|
|
130
132
|
border: 'none !important'
|
|
@@ -176,7 +178,8 @@ var LatexButton = (0, _styles.withStyles)(function (theme) {
|
|
|
176
178
|
paddingTop: '0 !important'
|
|
177
179
|
},
|
|
178
180
|
'&:after': {
|
|
179
|
-
|
|
181
|
+
position: 'absolute !important',
|
|
182
|
+
top: '0px !important'
|
|
180
183
|
}
|
|
181
184
|
}
|
|
182
185
|
}
|
package/lib/keypad/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/keypad/index.jsx"],"names":["log","LatexButton","theme","root","textTransform","padding","margin","fontSize","latexButton","pointerEvents","transform","marginBottom","backgroundColor","palette","secondary","main","borderTop","width","marginTop","lineHeight","left","top","right","minHeight","border","display","paddingTop","parallelButton","fontStyle","leftRightArrowButton","props","buttonClass","latex","classes","mqClassName","MQ","MathQuill","getInterface","span","document","createElement","innerHTML","mathField","StaticMath","parseLatex","e","className","onClick","createCustomLayout","layoutObj","gridTemplateColumns","columns","gridTemplateRows","rows","gridAutoFlow","KeyPad","key","onPress","base","extras","transposed","_","flatten","noDecimal","write","label","baseSet","additionalKeys","layoutForKeyPad","onFocus","mode","noBaseSet","keysWithoutBaseSet","includes","allKeys","flowKeys","shift","length","style","Math","floor","keys","map","k","index","buttonClick","bind","common","labelButton","category","extraClass","comma","dot","disabled","keyIsNotAllowed","command","actions","extraProps","Icon","icon","React","Component","PropTypes","object","isRequired","string","array","func","bool","styles","fontFamily","gridRowGap","gridColumnGap","character","holder","position","height","borderRadius","spacing","unit","minWidth","primary","light","operators","comparison","green"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { lighten, fade } from '@material-ui/core/styles/colorManipulator';\nimport green from '@material-ui/core/colors/green';\nimport { sortKeys } from './keys-layout';\nimport * as mq from '../mq';\nimport { baseSet } from '../keys';\nimport debug from 'debug';\nimport _ from 'lodash';\n\nconst log = debug('pie-lib:math-inline:keypad');\n\nconst LatexButton = withStyles(theme => ({\n root: {\n textTransform: 'none',\n padding: 0,\n margin: 0,\n fontSize: '110% !important'\n },\n latexButton: {\n pointerEvents: 'none',\n textTransform: 'none !important',\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: `${fade(theme.palette.secondary.main, 0.4)} !important`\n },\n '& .mq-overline .mq-overline-inner': {\n borderTop: '2px solid black'\n },\n '& .mq-overarrow': {\n width: '30px',\n marginTop: '0 !important',\n borderTop: '2px solid black',\n '&.mq-arrow-both': {\n '& *': {\n lineHeight: '1 !important'\n },\n '&:before': {\n fontSize: '80%',\n left: 'calc(-13%)',\n top: '-0.25em'\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.25em'\n },\n '&.mq-empty:after': {\n fontSize: '80%',\n right: 'calc(-13%)',\n top: '-0.25em'\n },\n '&.mq-empty': {\n minHeight: '1.4em'\n }\n },\n '&.mq-arrow-right:before': {\n fontSize: '80%',\n right: 'calc(-13%)',\n top: '-0.25em'\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'\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-inner': {\n borderTop: 'none !important',\n paddingTop: '0 !important'\n }\n }\n },\n parallelButton: {\n fontStyle: 'italic'\n },\n leftRightArrowButton: {\n '& .mq-overarrow.mq-arrow-both': {\n '& .mq-overline-inner': {\n borderTop: 'none !important',\n paddingTop: '0 !important'\n },\n '&:after': {\n top: '-1.64em !important'\n }\n }\n }\n}))(props => {\n let buttonClass;\n\n if (props.latex === '\\\\parallel') {\n buttonClass = classNames(\n props.classes.latexButton,\n props.mqClassName,\n props.classes.parallelButton\n );\n } else if (props.latex === '\\\\overleftrightarrow{\\\\overline{}}') {\n buttonClass = classNames(\n props.classes.latexButton,\n props.mqClassName,\n props.classes.leftRightArrowButton\n );\n } else {\n buttonClass = classNames(props.classes.latexButton, props.mqClassName);\n }\n\n try {\n const MQ = MathQuill.getInterface(2);\n const span = document.createElement('span');\n span.innerHTML = '';\n const mathField = MQ.StaticMath(span);\n\n mathField.parseLatex(props.latex);\n mathField.latex(props.latex);\n } catch (e) {\n // received latex has errors - do not create button\n return <></>;\n }\n\n return (\n <Button className={classNames(props.classes.root, props.className)} onClick={props.onClick}>\n <mq.Static className={buttonClass} latex={props.latex} />\n </Button>\n );\n});\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\nexport class KeyPad extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\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 mode: PropTypes.string\n };\n static defaultProps = {\n baseSet: baseSet,\n noDecimal: false\n };\n\n buttonClick = key => {\n log('[buttonClick]', key);\n const { onPress } = this.props;\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 (\n ((key.write === '.' && key.label === '.') || (key.write === ',' && key.label === ',')) &&\n noDecimal\n ) {\n return true;\n }\n\n return false;\n };\n\n render() {\n const {\n classes,\n className,\n baseSet,\n additionalKeys,\n layoutForKeyPad,\n onFocus,\n mode\n } = this.props;\n\n const noBaseSet = [\n 'non-negative-integers',\n 'integers',\n 'decimals',\n 'fractions',\n 'item-authoring',\n 'language'\n ];\n\n const keysWithoutBaseSet = noBaseSet.includes(mode);\n const allKeys = keysWithoutBaseSet\n ? this.flowKeys([], additionalKeys || [])\n : this.flowKeys(baseSet, additionalKeys || []); //, ...sortKeys(additionalKeys)];\n\n const shift = allKeys.length % 5 ? 1 : 0;\n const style = {\n gridTemplateColumns: `repeat(${Math.floor(allKeys.length / 5) +\n shift}, minmax(min-content, 150px))`,\n ...createCustomLayout(layoutForKeyPad)\n };\n return (\n <div\n className={classNames(classes.keys, className, classes[mode])}\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 className: classNames(\n classes.labelButton,\n !keysWithoutBaseSet && classes[k.category],\n classes[k.extraClass],\n k.label === ',' && classes.comma,\n k.label === '.' && classes.dot\n ),\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 <LatexButton latex={k.latex} {...common} className={classes.latexButton} />;\n }\n\n if (k.label) {\n return <Button {...common}>{k.label}</Button>;\n } else {\n const Icon = k.icon ? k.icon : 'div';\n\n return (\n <IconButton tabIndex={'-1'} {...common}>\n <Icon className={classes.icon} />\n </IconButton>\n );\n }\n })}\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n keys: {\n '& *': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'\n },\n width: '100%',\n display: 'grid',\n gridTemplateRows: 'repeat(5, minmax(40px, 60px))',\n gridRowGap: '0px',\n gridColumnGap: '0px',\n gridAutoFlow: 'column'\n },\n character: {\n textTransform: 'initial !important'\n },\n holder: {\n position: 'relative',\n width: '100%',\n height: '100%',\n backgroundColor: '#cef',\n borderRadius: 0,\n padding: `${theme.spacing.unit}px 0 ${theme.spacing.unit}px 0`\n },\n labelButton: {\n minWidth: 'auto',\n fontSize: '140% !important',\n backgroundColor: lighten(theme.palette.primary.light, 0.5),\n '&:hover': {\n backgroundColor: lighten(theme.palette.primary.light, 0.7)\n },\n borderRadius: 0\n },\n latexButton: {\n minWidth: 'auto',\n borderRadius: 0,\n backgroundColor: lighten(theme.palette.primary.light, 0.5),\n '&:hover': {\n backgroundColor: lighten(theme.palette.primary.light, 0.7)\n }\n },\n base: {},\n operators: {\n backgroundColor: lighten(theme.palette.secondary.light, 0.5),\n '&:hover': {\n backgroundColor: lighten(theme.palette.secondary.light, 0.7)\n }\n },\n comparison: {\n backgroundColor: lighten(green[500], 0.5),\n '&:hover': {\n backgroundColor: lighten(green[500], 0.7)\n }\n },\n comma: {\n fontSize: '200% !important',\n lineHeight: '100%'\n },\n dot: {\n fontSize: '200% !important',\n lineHeight: '100%'\n },\n icon: {\n height: '30px'\n }\n});\n\nexport default withStyles(styles)(KeyPad);\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/keypad/index.jsx"],"names":["log","LatexButton","theme","root","textTransform","padding","margin","fontSize","latexButton","pointerEvents","transform","marginBottom","backgroundColor","palette","secondary","main","borderTop","width","marginTop","fontFamily","top","lineHeight","left","right","minHeight","border","display","paddingTop","parallelButton","fontStyle","leftRightArrowButton","position","props","buttonClass","latex","classes","mqClassName","MQ","MathQuill","getInterface","span","document","createElement","innerHTML","mathField","StaticMath","parseLatex","e","className","onClick","createCustomLayout","layoutObj","gridTemplateColumns","columns","gridTemplateRows","rows","gridAutoFlow","KeyPad","key","onPress","base","extras","transposed","_","flatten","noDecimal","write","label","baseSet","additionalKeys","layoutForKeyPad","onFocus","mode","noBaseSet","keysWithoutBaseSet","includes","allKeys","flowKeys","shift","length","style","Math","floor","keys","map","k","index","buttonClick","bind","common","labelButton","category","extraClass","comma","dot","disabled","keyIsNotAllowed","command","actions","extraProps","Icon","icon","React","Component","PropTypes","object","isRequired","string","array","func","bool","styles","gridRowGap","gridColumnGap","character","holder","height","borderRadius","spacing","unit","minWidth","primary","light","operators","comparison","green"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { lighten, fade } from '@material-ui/core/styles/colorManipulator';\nimport green from '@material-ui/core/colors/green';\nimport { sortKeys } from './keys-layout';\nimport * as mq from '../mq';\nimport { baseSet } from '../keys';\nimport debug from 'debug';\nimport _ from 'lodash';\n\nconst log = debug('pie-lib:math-inline:keypad');\n\nconst LatexButton = withStyles(theme => ({\n root: {\n textTransform: 'none',\n padding: 0,\n margin: 0,\n fontSize: '110% !important'\n },\n latexButton: {\n pointerEvents: 'none',\n textTransform: 'none !important',\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: `${fade(theme.palette.secondary.main, 0.4)} !important`\n },\n '& .mq-overline .mq-overline-inner': {\n borderTop: '2px solid black'\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\n '&.mq-arrow-both': {\n top: '0px !important',\n '& *': {\n lineHeight: '1 !important'\n },\n '&:before': {\n fontSize: '80%',\n left: 'calc(-13%)',\n top: '-0.31em'\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%)',\n top: '-0.26em'\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'\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-inner': {\n borderTop: 'none !important',\n paddingTop: '0 !important'\n }\n }\n },\n parallelButton: {\n fontStyle: 'italic'\n },\n leftRightArrowButton: {\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}))(props => {\n let buttonClass;\n\n if (props.latex === '\\\\parallel') {\n buttonClass = classNames(\n props.classes.latexButton,\n props.mqClassName,\n props.classes.parallelButton\n );\n } else if (props.latex === '\\\\overleftrightarrow{\\\\overline{}}') {\n buttonClass = classNames(\n props.classes.latexButton,\n props.mqClassName,\n props.classes.leftRightArrowButton\n );\n } else {\n buttonClass = classNames(props.classes.latexButton, props.mqClassName);\n }\n\n try {\n const MQ = MathQuill.getInterface(2);\n const span = document.createElement('span');\n span.innerHTML = '';\n const mathField = MQ.StaticMath(span);\n\n mathField.parseLatex(props.latex);\n mathField.latex(props.latex);\n } catch (e) {\n // received latex has errors - do not create button\n return <></>;\n }\n\n return (\n <Button className={classNames(props.classes.root, props.className)} onClick={props.onClick}>\n <mq.Static className={buttonClass} latex={props.latex} />\n </Button>\n );\n});\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\nexport class KeyPad extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\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 mode: PropTypes.string\n };\n static defaultProps = {\n baseSet: baseSet,\n noDecimal: false\n };\n\n buttonClick = key => {\n log('[buttonClick]', key);\n const { onPress } = this.props;\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 (\n ((key.write === '.' && key.label === '.') || (key.write === ',' && key.label === ',')) &&\n noDecimal\n ) {\n return true;\n }\n\n return false;\n };\n\n render() {\n const {\n classes,\n className,\n baseSet,\n additionalKeys,\n layoutForKeyPad,\n onFocus,\n mode\n } = this.props;\n\n const noBaseSet = [\n 'non-negative-integers',\n 'integers',\n 'decimals',\n 'fractions',\n 'item-authoring',\n 'language'\n ];\n\n const keysWithoutBaseSet = noBaseSet.includes(mode);\n const allKeys = keysWithoutBaseSet\n ? this.flowKeys([], additionalKeys || [])\n : this.flowKeys(baseSet, additionalKeys || []); //, ...sortKeys(additionalKeys)];\n\n const shift = allKeys.length % 5 ? 1 : 0;\n const style = {\n gridTemplateColumns: `repeat(${Math.floor(allKeys.length / 5) +\n shift}, minmax(min-content, 150px))`,\n ...createCustomLayout(layoutForKeyPad)\n };\n return (\n <div\n className={classNames(classes.keys, className, classes[mode])}\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 className: classNames(\n classes.labelButton,\n !keysWithoutBaseSet && classes[k.category],\n classes[k.extraClass],\n k.label === ',' && classes.comma,\n k.label === '.' && classes.dot\n ),\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 <LatexButton latex={k.latex} {...common} className={classes.latexButton} />;\n }\n\n if (k.label) {\n return <Button {...common}>{k.label}</Button>;\n } else {\n const Icon = k.icon ? k.icon : 'div';\n\n return (\n <IconButton tabIndex={'-1'} {...common}>\n <Icon className={classes.icon} />\n </IconButton>\n );\n }\n })}\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n keys: {\n '& *': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important'\n },\n width: '100%',\n display: 'grid',\n gridTemplateRows: 'repeat(5, minmax(40px, 60px))',\n gridRowGap: '0px',\n gridColumnGap: '0px',\n gridAutoFlow: 'column'\n },\n character: {\n textTransform: 'initial !important'\n },\n holder: {\n position: 'relative',\n width: '100%',\n height: '100%',\n backgroundColor: '#cef',\n borderRadius: 0,\n padding: `${theme.spacing.unit}px 0 ${theme.spacing.unit}px 0`\n },\n labelButton: {\n minWidth: 'auto',\n fontSize: '140% !important',\n backgroundColor: lighten(theme.palette.primary.light, 0.5),\n '&:hover': {\n backgroundColor: lighten(theme.palette.primary.light, 0.7)\n },\n borderRadius: 0\n },\n latexButton: {\n minWidth: 'auto',\n borderRadius: 0,\n backgroundColor: lighten(theme.palette.primary.light, 0.5),\n '&:hover': {\n backgroundColor: lighten(theme.palette.primary.light, 0.7)\n }\n },\n base: {},\n operators: {\n backgroundColor: lighten(theme.palette.secondary.light, 0.5),\n '&:hover': {\n backgroundColor: lighten(theme.palette.secondary.light, 0.7)\n }\n },\n comparison: {\n backgroundColor: lighten(green[500], 0.5),\n '&:hover': {\n backgroundColor: lighten(green[500], 0.7)\n }\n },\n comma: {\n fontSize: '200% !important',\n lineHeight: '100%'\n },\n dot: {\n fontSize: '200% !important',\n lineHeight: '100%'\n },\n icon: {\n height: '30px'\n }\n});\n\nexport default withStyles(styles)(KeyPad);\n"],"file":"index.js"}
|
package/lib/mq/input.js
CHANGED
|
@@ -104,6 +104,43 @@ var Input = /*#__PURE__*/function (_React$Component) {
|
|
|
104
104
|
|
|
105
105
|
_this.onInputEdit();
|
|
106
106
|
}
|
|
107
|
+
|
|
108
|
+
if (event.charCode === 47) {
|
|
109
|
+
// Whenever the math editor cursor is positioned after an integer
|
|
110
|
+
// (i.e. a sequence of 1 or more digits) followed immediately by a space followed immediately by another integer,
|
|
111
|
+
// then a side effect of pressing the forward slash key or clicking the B fraction button should be to remove
|
|
112
|
+
// the space between the first integer and the second integer (which is now the numerator of a new fraction).
|
|
113
|
+
// E.g. if the user were trying to enter the mixed number one and two-thirds, and typed [1], [space], [2], [forward slash],
|
|
114
|
+
// producing the latex 1\ \frac{2}{|} (where | is not actually part of the representation, but rather
|
|
115
|
+
// represents the position of the cursor), this should be automatically transformed to 1\frac{2}{|}
|
|
116
|
+
// (with | again representing the position of the cursor).
|
|
117
|
+
// Similarly, if the user had typed [1], [2], [space], [3], [4], [forward slash], then the resulting representation should
|
|
118
|
+
// be transformed from 12\ \frac{34}{|} to 12\frac{34}{|}.
|
|
119
|
+
var latex = _this.mathField.latex();
|
|
120
|
+
|
|
121
|
+
if (latex.match(/([1-9])\\ /)) {
|
|
122
|
+
event.preventDefault();
|
|
123
|
+
event.stopPropagation();
|
|
124
|
+
|
|
125
|
+
_this.clear();
|
|
126
|
+
|
|
127
|
+
var indexOfSpace = latex.lastIndexOf('\\ '); // split the latex by the last space added
|
|
128
|
+
|
|
129
|
+
var firstPart = latex.slice(0, indexOfSpace);
|
|
130
|
+
var secondPart = latex.slice(indexOfSpace + 2); // reconstruct the latex without the extra space
|
|
131
|
+
|
|
132
|
+
var newLatex = firstPart + '\\frac{' + secondPart + '}{}';
|
|
133
|
+
|
|
134
|
+
_this.mathField.latex(newLatex); // trigger pressing keydown to move focus on the denominator
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
_this.mathField.el().dispatchEvent(new KeyboardEvent('keydown', {
|
|
138
|
+
keyCode: 37
|
|
139
|
+
}));
|
|
140
|
+
|
|
141
|
+
_this.onInputEdit();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
107
144
|
});
|
|
108
145
|
return _this;
|
|
109
146
|
}
|
package/lib/mq/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mq/input.jsx"],"names":["MQ","window","MathQuill","getInterface","registerEmbed","log","Input","onChange","props","mathField","latex","blur","focus","event","keys","Object","__controller","options","indexOf","refresh","charCode","write","onInputEdit","Error","MathField","input","handlers","edit","bind","updateLatex","v","Array","isArray","forEach","vv","cmd","keystroke","nextProps","onClick","onFocus","onBlur","classes","className","onKeyPress","r","React","Component","PropTypes","string","object","isRequired","func","styles"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport classNames from 'classnames';\nimport { registerLineBreak } from './custom-elements';\nimport MathQuill from '@pie-framework/mathquill';\n\nlet MQ;\nif (typeof window !== 'undefined') {\n MQ = MathQuill.getInterface(2);\n\n if (MQ && MQ.registerEmbed) {\n registerLineBreak(MQ);\n }\n}\n\nconst log = debug('math-input:mq:input');\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport class Input extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n onClick: PropTypes.func,\n onChange: PropTypes.func,\n latex: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n };\n\n componentDidMount() {\n if (!MQ) {\n throw new Error('MQ is not defined - but component has mounted?');\n }\n\n this.mathField = MQ.MathField(this.input, {\n handlers: {\n edit: this.onInputEdit.bind(this)\n }\n });\n\n this.updateLatex();\n }\n\n componentDidUpdate() {\n this.updateLatex();\n }\n\n updateLatex() {\n if (!this.mathField) {\n return;\n }\n const { latex } = this.props;\n if (latex) {\n this.mathField.latex(latex);\n }\n }\n\n clear() {\n this.mathField.latex('');\n return '';\n }\n\n blur() {\n log('blur mathfield');\n this.mathField.blur();\n }\n\n focus() {\n log('focus mathfield...');\n this.mathField.focus();\n }\n\n command(v) {\n log('command: ', v);\n if (Array.isArray(v)) {\n v.forEach(vv => {\n this.mathField.cmd(vv);\n });\n } else {\n this.mathField.cmd(v);\n }\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n keystroke(v) {\n this.mathField.keystroke(v);\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n write(v) {\n log('write: ', v);\n this.mathField.write(v);\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n onInputEdit = () => {\n log('[onInputEdit] ...');\n const { onChange } = this.props;\n if (!this.mathField) {\n return;\n }\n\n if (onChange) {\n onChange(this.mathField.latex());\n }\n };\n\n refresh = () => {\n this.blur();\n this.focus();\n };\n\n onKeyPress = event => {\n const keys = Object.keys(this.mathField.__controller.options);\n\n if (keys.indexOf('ignoreNextMousedown') < 0) {\n // It seems like the controller has the above handler as an option\n // when all the right events are set and everything works fine\n // this seems to work in all cases\n this.refresh();\n }\n\n if (event.charCode === 13) {\n // if enter's pressed, we're going for a custom embedded element that'll\n // have a block display (empty div) - for a hacked line break using ccs\n // all because mathquill doesn't support a line break\n this.write('\\\\embed{newLine}[]');\n this.onInputEdit();\n }\n };\n\n shouldComponentUpdate(nextProps) {\n log('next: ', nextProps.latex);\n log('current: ', this.mathField.latex());\n return nextProps.latex !== this.mathField.latex();\n }\n\n render() {\n const { onClick, onFocus, onBlur, classes, className } = this.props;\n\n return (\n <span\n className={classNames(classes.input, className)}\n onKeyPress={this.onKeyPress}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n ref={r => (this.input = r)}\n />\n );\n }\n}\n\nconst styles = () => ({});\n\nexport default withStyles(styles)(Input);\n"],"file":"input.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mq/input.jsx"],"names":["MQ","window","MathQuill","getInterface","registerEmbed","log","Input","onChange","props","mathField","latex","blur","focus","event","keys","Object","__controller","options","indexOf","refresh","charCode","write","onInputEdit","match","preventDefault","stopPropagation","clear","indexOfSpace","lastIndexOf","firstPart","slice","secondPart","newLatex","el","dispatchEvent","KeyboardEvent","keyCode","Error","MathField","input","handlers","edit","bind","updateLatex","v","Array","isArray","forEach","vv","cmd","keystroke","nextProps","onClick","onFocus","onBlur","classes","className","onKeyPress","r","React","Component","PropTypes","string","object","isRequired","func","styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAIA,EAAJ;;AACA,IAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;AACjCD,EAAAA,EAAE,GAAGE,sBAAUC,YAAV,CAAuB,CAAvB,CAAL;;AAEA,MAAIH,EAAE,IAAIA,EAAE,CAACI,aAAb,EAA4B;AAC1B,2CAAkBJ,EAAlB;AACD;AACF;;AAED,IAAMK,GAAG,GAAG,uBAAM,qBAAN,CAAZ;AAEA;AACA;AACA;;IACaC,K;;;;;;;;;;;;;;;oGAgFG,YAAM;AAClBD,MAAAA,GAAG,CAAC,mBAAD,CAAH;AACA,UAAQE,QAAR,GAAqB,MAAKC,KAA1B,CAAQD,QAAR;;AACA,UAAI,CAAC,MAAKE,SAAV,EAAqB;AACnB;AACD;;AAED,UAAIF,QAAJ,EAAc;AACZA,QAAAA,QAAQ,CAAC,MAAKE,SAAL,CAAeC,KAAf,EAAD,CAAR;AACD;AACF,K;gGAES,YAAM;AACd,YAAKC,IAAL;;AACA,YAAKC,KAAL;AACD,K;mGAEY,UAAAC,KAAK,EAAI;AACpB,UAAMC,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAY,MAAKL,SAAL,CAAeO,YAAf,CAA4BC,OAAxC,CAAb;;AAEA,UAAIH,IAAI,CAACI,OAAL,CAAa,qBAAb,IAAsC,CAA1C,EAA6C;AAC3C;AACA;AACA;AACA,cAAKC,OAAL;AACD;;AAED,UAAIN,KAAK,CAACO,QAAN,KAAmB,EAAvB,EAA2B;AACzB;AACA;AACA;AACA,cAAKC,KAAL,CAAW,oBAAX;;AACA,cAAKC,WAAL;AACD;;AAED,UAAIT,KAAK,CAACO,QAAN,KAAmB,EAAvB,EAA2B;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAMV,KAAK,GAAG,MAAKD,SAAL,CAAeC,KAAf,EAAd;;AAEA,YAAIA,KAAK,CAACa,KAAN,CAAY,YAAZ,CAAJ,EAA+B;AAC7BV,UAAAA,KAAK,CAACW,cAAN;AACAX,UAAAA,KAAK,CAACY,eAAN;;AAEA,gBAAKC,KAAL;;AAEA,cAAMC,YAAY,GAAGjB,KAAK,CAACkB,WAAN,CAAkB,KAAlB,CAArB,CAN6B,CAO7B;;AACA,cAAMC,SAAS,GAAGnB,KAAK,CAACoB,KAAN,CAAY,CAAZ,EAAeH,YAAf,CAAlB;AACA,cAAMI,UAAU,GAAGrB,KAAK,CAACoB,KAAN,CAAYH,YAAY,GAAG,CAA3B,CAAnB,CAT6B,CAW7B;;AACA,cAAMK,QAAQ,GAAGH,SAAS,GAAG,SAAZ,GAAwBE,UAAxB,GAAqC,KAAtD;;AAEA,gBAAKtB,SAAL,CAAeC,KAAf,CAAqBsB,QAArB,EAd6B,CAe7B;;;AACA,gBAAKvB,SAAL,CAAewB,EAAf,GAAoBC,aAApB,CAAkC,IAAIC,aAAJ,CAAkB,SAAlB,EAA6B;AAAEC,YAAAA,OAAO,EAAE;AAAX,WAA7B,CAAlC;;AAEA,gBAAKd,WAAL;AACD;AACF;AACF,K;;;;;;WA1ID,6BAAoB;AAClB,UAAI,CAACtB,EAAL,EAAS;AACP,cAAM,IAAIqC,KAAJ,CAAU,gDAAV,CAAN;AACD;;AAED,WAAK5B,SAAL,GAAiBT,EAAE,CAACsC,SAAH,CAAa,KAAKC,KAAlB,EAAyB;AACxCC,QAAAA,QAAQ,EAAE;AACRC,UAAAA,IAAI,EAAE,KAAKnB,WAAL,CAAiBoB,IAAjB,CAAsB,IAAtB;AADE;AAD8B,OAAzB,CAAjB;AAMA,WAAKC,WAAL;AACD;;;WAED,8BAAqB;AACnB,WAAKA,WAAL;AACD;;;WAED,uBAAc;AACZ,UAAI,CAAC,KAAKlC,SAAV,EAAqB;AACnB;AACD;;AACD,UAAQC,KAAR,GAAkB,KAAKF,KAAvB,CAAQE,KAAR;;AACA,UAAIA,KAAJ,EAAW;AACT,aAAKD,SAAL,CAAeC,KAAf,CAAqBA,KAArB;AACD;AACF;;;WAED,iBAAQ;AACN,WAAKD,SAAL,CAAeC,KAAf,CAAqB,EAArB;AACA,aAAO,EAAP;AACD;;;WAED,gBAAO;AACLL,MAAAA,GAAG,CAAC,gBAAD,CAAH;AACA,WAAKI,SAAL,CAAeE,IAAf;AACD;;;WAED,iBAAQ;AACNN,MAAAA,GAAG,CAAC,oBAAD,CAAH;AACA,WAAKI,SAAL,CAAeG,KAAf;AACD;;;WAED,iBAAQgC,CAAR,EAAW;AAAA;;AACTvC,MAAAA,GAAG,CAAC,WAAD,EAAcuC,CAAd,CAAH;;AACA,UAAIC,KAAK,CAACC,OAAN,CAAcF,CAAd,CAAJ,EAAsB;AACpBA,QAAAA,CAAC,CAACG,OAAF,CAAU,UAAAC,EAAE,EAAI;AACd,UAAA,MAAI,CAACvC,SAAL,CAAewC,GAAf,CAAmBD,EAAnB;AACD,SAFD;AAGD,OAJD,MAIO;AACL,aAAKvC,SAAL,CAAewC,GAAf,CAAmBL,CAAnB;AACD;;AACD,WAAKnC,SAAL,CAAeG,KAAf;AACA,aAAO,KAAKH,SAAL,CAAeC,KAAf,EAAP;AACD;;;WAED,mBAAUkC,CAAV,EAAa;AACX,WAAKnC,SAAL,CAAeyC,SAAf,CAAyBN,CAAzB;AACA,WAAKnC,SAAL,CAAeG,KAAf;AACA,aAAO,KAAKH,SAAL,CAAeC,KAAf,EAAP;AACD;;;WAED,eAAMkC,CAAN,EAAS;AACPvC,MAAAA,GAAG,CAAC,SAAD,EAAYuC,CAAZ,CAAH;AACA,WAAKnC,SAAL,CAAeY,KAAf,CAAqBuB,CAArB;AACA,WAAKnC,SAAL,CAAeG,KAAf;AACA,aAAO,KAAKH,SAAL,CAAeC,KAAf,EAAP;AACD;;;WAyED,+BAAsByC,SAAtB,EAAiC;AAC/B9C,MAAAA,GAAG,CAAC,QAAD,EAAW8C,SAAS,CAACzC,KAArB,CAAH;AACAL,MAAAA,GAAG,CAAC,WAAD,EAAc,KAAKI,SAAL,CAAeC,KAAf,EAAd,CAAH;AACA,aAAOyC,SAAS,CAACzC,KAAV,KAAoB,KAAKD,SAAL,CAAeC,KAAf,EAA3B;AACD;;;WAED,kBAAS;AAAA;;AACP,wBAAyD,KAAKF,KAA9D;AAAA,UAAQ4C,OAAR,eAAQA,OAAR;AAAA,UAAiBC,OAAjB,eAAiBA,OAAjB;AAAA,UAA0BC,MAA1B,eAA0BA,MAA1B;AAAA,UAAkCC,OAAlC,eAAkCA,OAAlC;AAAA,UAA2CC,SAA3C,eAA2CA,SAA3C;AAEA,0BACE;AACE,QAAA,SAAS,EAAE,4BAAWD,OAAO,CAAChB,KAAnB,EAA0BiB,SAA1B,CADb;AAEE,QAAA,UAAU,EAAE,KAAKC,UAFnB;AAGE,QAAA,OAAO,EAAEL,OAHX;AAIE,QAAA,OAAO,EAAEC,OAJX;AAKE,QAAA,MAAM,EAAEC,MALV;AAME,QAAA,GAAG,EAAE,aAAAI,CAAC;AAAA,iBAAK,MAAI,CAACnB,KAAL,GAAamB,CAAlB;AAAA;AANR,QADF;AAUD;;;EA1KwBC,kBAAMC,S;;;iCAApBtD,K,eACQ;AACjBkD,EAAAA,SAAS,EAAEK,sBAAUC,MADJ;AAEjBP,EAAAA,OAAO,EAAEM,sBAAUE,MAAV,CAAiBC,UAFT;AAGjBZ,EAAAA,OAAO,EAAES,sBAAUI,IAHF;AAIjB1D,EAAAA,QAAQ,EAAEsD,sBAAUI,IAJH;AAKjBvD,EAAAA,KAAK,EAAEmD,sBAAUC,MALA;AAMjBT,EAAAA,OAAO,EAAEQ,sBAAUI,IANF;AAOjBX,EAAAA,MAAM,EAAEO,sBAAUI;AAPD,C;;AA4KrB,IAAMC,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO,EAAP;AAAA,CAAf;;eAEe,wBAAWA,MAAX,EAAmB5D,KAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport classNames from 'classnames';\nimport { registerLineBreak } from './custom-elements';\nimport MathQuill from '@pie-framework/mathquill';\n\nlet MQ;\nif (typeof window !== 'undefined') {\n MQ = MathQuill.getInterface(2);\n\n if (MQ && MQ.registerEmbed) {\n registerLineBreak(MQ);\n }\n}\n\nconst log = debug('math-input:mq:input');\n\n/**\n * Wrapper for MathQuill MQ.MathField.\n */\nexport class Input extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n classes: PropTypes.object.isRequired,\n onClick: PropTypes.func,\n onChange: PropTypes.func,\n latex: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n };\n\n componentDidMount() {\n if (!MQ) {\n throw new Error('MQ is not defined - but component has mounted?');\n }\n\n this.mathField = MQ.MathField(this.input, {\n handlers: {\n edit: this.onInputEdit.bind(this)\n }\n });\n\n this.updateLatex();\n }\n\n componentDidUpdate() {\n this.updateLatex();\n }\n\n updateLatex() {\n if (!this.mathField) {\n return;\n }\n const { latex } = this.props;\n if (latex) {\n this.mathField.latex(latex);\n }\n }\n\n clear() {\n this.mathField.latex('');\n return '';\n }\n\n blur() {\n log('blur mathfield');\n this.mathField.blur();\n }\n\n focus() {\n log('focus mathfield...');\n this.mathField.focus();\n }\n\n command(v) {\n log('command: ', v);\n if (Array.isArray(v)) {\n v.forEach(vv => {\n this.mathField.cmd(vv);\n });\n } else {\n this.mathField.cmd(v);\n }\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n keystroke(v) {\n this.mathField.keystroke(v);\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n write(v) {\n log('write: ', v);\n this.mathField.write(v);\n this.mathField.focus();\n return this.mathField.latex();\n }\n\n onInputEdit = () => {\n log('[onInputEdit] ...');\n const { onChange } = this.props;\n if (!this.mathField) {\n return;\n }\n\n if (onChange) {\n onChange(this.mathField.latex());\n }\n };\n\n refresh = () => {\n this.blur();\n this.focus();\n };\n\n onKeyPress = event => {\n const keys = Object.keys(this.mathField.__controller.options);\n\n if (keys.indexOf('ignoreNextMousedown') < 0) {\n // It seems like the controller has the above handler as an option\n // when all the right events are set and everything works fine\n // this seems to work in all cases\n this.refresh();\n }\n\n if (event.charCode === 13) {\n // if enter's pressed, we're going for a custom embedded element that'll\n // have a block display (empty div) - for a hacked line break using ccs\n // all because mathquill doesn't support a line break\n this.write('\\\\embed{newLine}[]');\n this.onInputEdit();\n }\n\n if (event.charCode === 47) {\n // Whenever the math editor cursor is positioned after an integer\n // (i.e. a sequence of 1 or more digits) followed immediately by a space followed immediately by another integer,\n // then a side effect of pressing the forward slash key or clicking the B fraction button should be to remove\n // the space between the first integer and the second integer (which is now the numerator of a new fraction).\n // E.g. if the user were trying to enter the mixed number one and two-thirds, and typed [1], [space], [2], [forward slash],\n // producing the latex 1\\ \\frac{2}{|} (where | is not actually part of the representation, but rather\n // represents the position of the cursor), this should be automatically transformed to 1\\frac{2}{|}\n // (with | again representing the position of the cursor).\n // Similarly, if the user had typed [1], [2], [space], [3], [4], [forward slash], then the resulting representation should\n // be transformed from 12\\ \\frac{34}{|} to 12\\frac{34}{|}.\n const latex = this.mathField.latex();\n\n if (latex.match(/([1-9])\\\\ /)) {\n event.preventDefault();\n event.stopPropagation();\n\n this.clear();\n\n const indexOfSpace = latex.lastIndexOf('\\\\ ');\n // split the latex by the last space added\n const firstPart = latex.slice(0, indexOfSpace);\n const secondPart = latex.slice(indexOfSpace + 2);\n\n // reconstruct the latex without the extra space\n const newLatex = firstPart + '\\\\frac{' + secondPart + '}{}';\n\n this.mathField.latex(newLatex);\n // trigger pressing keydown to move focus on the denominator\n this.mathField.el().dispatchEvent(new KeyboardEvent('keydown', { keyCode: 37 }));\n\n this.onInputEdit();\n }\n }\n };\n\n shouldComponentUpdate(nextProps) {\n log('next: ', nextProps.latex);\n log('current: ', this.mathField.latex());\n return nextProps.latex !== this.mathField.latex();\n }\n\n render() {\n const { onClick, onFocus, onBlur, classes, className } = this.props;\n\n return (\n <span\n className={classNames(classes.input, className)}\n onKeyPress={this.onKeyPress}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n ref={r => (this.input = r)}\n />\n );\n }\n}\n\nconst styles = () => ({});\n\nexport default withStyles(styles)(Input);\n"],"file":"input.js"}
|
package/package.json
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "6.
|
|
6
|
+
"version": "6.8.1",
|
|
7
7
|
"main": "lib/index.js",
|
|
8
8
|
"module": "src/index.jsx",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.8.3",
|
|
11
11
|
"@material-ui/icons": "^3.0.2",
|
|
12
|
-
"@pie-framework/mathquill": "^1.1.
|
|
12
|
+
"@pie-framework/mathquill": "^1.1.3",
|
|
13
13
|
"debug": "^4.1.1",
|
|
14
14
|
"lodash": "^4.17.11",
|
|
15
15
|
"react-portal": "^4.2.0"
|
|
@@ -22,5 +22,5 @@
|
|
|
22
22
|
"react-dom": "^16.9.0"
|
|
23
23
|
},
|
|
24
24
|
"scripts": {},
|
|
25
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "be4de45884719616f63a3855ef4a422057e5170f"
|
|
26
26
|
}
|
package/src/keypad/index.jsx
CHANGED
|
@@ -40,14 +40,17 @@ const LatexButton = withStyles(theme => ({
|
|
|
40
40
|
width: '30px',
|
|
41
41
|
marginTop: '0 !important',
|
|
42
42
|
borderTop: '2px solid black',
|
|
43
|
+
fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',
|
|
44
|
+
|
|
43
45
|
'&.mq-arrow-both': {
|
|
46
|
+
top: '0px !important',
|
|
44
47
|
'& *': {
|
|
45
48
|
lineHeight: '1 !important'
|
|
46
49
|
},
|
|
47
50
|
'&:before': {
|
|
48
51
|
fontSize: '80%',
|
|
49
52
|
left: 'calc(-13%)',
|
|
50
|
-
top: '-0.
|
|
53
|
+
top: '-0.31em'
|
|
51
54
|
},
|
|
52
55
|
'&:after': {
|
|
53
56
|
fontSize: '80% !important',
|
|
@@ -57,12 +60,12 @@ const LatexButton = withStyles(theme => ({
|
|
|
57
60
|
'&.mq-empty:before': {
|
|
58
61
|
fontSize: '80%',
|
|
59
62
|
left: 'calc(-13%)',
|
|
60
|
-
top: '-0.
|
|
63
|
+
top: '-0.26em'
|
|
61
64
|
},
|
|
62
65
|
'&.mq-empty:after': {
|
|
63
66
|
fontSize: '80%',
|
|
64
67
|
right: 'calc(-13%)',
|
|
65
|
-
top: '-0.
|
|
68
|
+
top: '-0.26em'
|
|
66
69
|
},
|
|
67
70
|
'&.mq-empty': {
|
|
68
71
|
minHeight: '1.4em'
|
|
@@ -71,7 +74,7 @@ const LatexButton = withStyles(theme => ({
|
|
|
71
74
|
'&.mq-arrow-right:before': {
|
|
72
75
|
fontSize: '80%',
|
|
73
76
|
right: 'calc(-13%)',
|
|
74
|
-
top: '-0.
|
|
77
|
+
top: '-0.26em'
|
|
75
78
|
},
|
|
76
79
|
'& .mq-overarrow-inner': {
|
|
77
80
|
border: 'none !important'
|
|
@@ -123,7 +126,8 @@ const LatexButton = withStyles(theme => ({
|
|
|
123
126
|
paddingTop: '0 !important'
|
|
124
127
|
},
|
|
125
128
|
'&:after': {
|
|
126
|
-
|
|
129
|
+
position: 'absolute !important',
|
|
130
|
+
top: '0px !important'
|
|
127
131
|
}
|
|
128
132
|
}
|
|
129
133
|
}
|
package/src/mq/input.jsx
CHANGED
|
@@ -134,6 +134,41 @@ export class Input extends React.Component {
|
|
|
134
134
|
this.write('\\embed{newLine}[]');
|
|
135
135
|
this.onInputEdit();
|
|
136
136
|
}
|
|
137
|
+
|
|
138
|
+
if (event.charCode === 47) {
|
|
139
|
+
// Whenever the math editor cursor is positioned after an integer
|
|
140
|
+
// (i.e. a sequence of 1 or more digits) followed immediately by a space followed immediately by another integer,
|
|
141
|
+
// then a side effect of pressing the forward slash key or clicking the B fraction button should be to remove
|
|
142
|
+
// the space between the first integer and the second integer (which is now the numerator of a new fraction).
|
|
143
|
+
// E.g. if the user were trying to enter the mixed number one and two-thirds, and typed [1], [space], [2], [forward slash],
|
|
144
|
+
// producing the latex 1\ \frac{2}{|} (where | is not actually part of the representation, but rather
|
|
145
|
+
// represents the position of the cursor), this should be automatically transformed to 1\frac{2}{|}
|
|
146
|
+
// (with | again representing the position of the cursor).
|
|
147
|
+
// Similarly, if the user had typed [1], [2], [space], [3], [4], [forward slash], then the resulting representation should
|
|
148
|
+
// be transformed from 12\ \frac{34}{|} to 12\frac{34}{|}.
|
|
149
|
+
const latex = this.mathField.latex();
|
|
150
|
+
|
|
151
|
+
if (latex.match(/([1-9])\\ /)) {
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
event.stopPropagation();
|
|
154
|
+
|
|
155
|
+
this.clear();
|
|
156
|
+
|
|
157
|
+
const indexOfSpace = latex.lastIndexOf('\\ ');
|
|
158
|
+
// split the latex by the last space added
|
|
159
|
+
const firstPart = latex.slice(0, indexOfSpace);
|
|
160
|
+
const secondPart = latex.slice(indexOfSpace + 2);
|
|
161
|
+
|
|
162
|
+
// reconstruct the latex without the extra space
|
|
163
|
+
const newLatex = firstPart + '\\frac{' + secondPart + '}{}';
|
|
164
|
+
|
|
165
|
+
this.mathField.latex(newLatex);
|
|
166
|
+
// trigger pressing keydown to move focus on the denominator
|
|
167
|
+
this.mathField.el().dispatchEvent(new KeyboardEvent('keydown', { keyCode: 37 }));
|
|
168
|
+
|
|
169
|
+
this.onInputEdit();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
137
172
|
};
|
|
138
173
|
|
|
139
174
|
shouldComponentUpdate(nextProps) {
|