@pie-element/math-inline 7.18.3-next.15 → 7.18.3-next.2
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/configure/package.json +1 -1
- package/controller/package.json +1 -1
- package/lib/main.js +4 -26
- package/lib/main.js.map +1 -1
- package/module/element.js +36 -51
- package/module/print.js +36 -51
- package/package.json +3 -3
package/configure/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@material-ui/icons": "^3.0.1",
|
|
12
12
|
"@pie-framework/mathquill": "^1.1.3",
|
|
13
13
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
14
|
-
"@pie-lib/pie-toolbox": "1.
|
|
14
|
+
"@pie-lib/pie-toolbox": "1.21.3",
|
|
15
15
|
"classnames": "^2.2.5",
|
|
16
16
|
"debug": "^3.1.0",
|
|
17
17
|
"prop-types": "^15.6.2",
|
package/controller/package.json
CHANGED
package/lib/main.js
CHANGED
|
@@ -182,39 +182,18 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
182
182
|
(0, _mathRenderingAccessible.renderMath)(_this.root);
|
|
183
183
|
});
|
|
184
184
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateAria", function () {
|
|
185
|
-
var classes = _this.props.classes;
|
|
186
|
-
|
|
187
185
|
if (_this.root) {
|
|
188
186
|
// Update aria-hidden for .mq-selectable elements
|
|
189
187
|
var selectableElements = _this.root.querySelectorAll('.mq-selectable');
|
|
190
188
|
|
|
191
189
|
selectableElements.forEach(function (elem) {
|
|
192
190
|
return elem.setAttribute('aria-hidden', 'true');
|
|
193
|
-
}); // Update aria-label for textarea elements
|
|
191
|
+
}); // Update aria-label for textarea elements
|
|
194
192
|
|
|
195
193
|
var textareaElements = _this.root.querySelectorAll('textarea');
|
|
196
194
|
|
|
197
|
-
textareaElements.forEach(function (elem
|
|
198
|
-
elem.setAttribute('aria-label', 'Enter answer
|
|
199
|
-
|
|
200
|
-
var instructionsId = "instructions-".concat(index); // Find the parent element that contains the textarea
|
|
201
|
-
|
|
202
|
-
var parent = elem.closest('.mq-textarea');
|
|
203
|
-
|
|
204
|
-
if (parent) {
|
|
205
|
-
// Create or find the instructions element within the parent
|
|
206
|
-
var instructionsElement = parent.querySelector("#".concat(instructionsId));
|
|
207
|
-
|
|
208
|
-
if (!instructionsElement) {
|
|
209
|
-
instructionsElement = document.createElement('span');
|
|
210
|
-
instructionsElement.id = instructionsId;
|
|
211
|
-
instructionsElement.className = classes.srOnly;
|
|
212
|
-
instructionsElement.textContent = 'This field automatically displays a math keypad. Both keypad and keyboard input are accepted, and keyboard entry accepts LaTeX markup.';
|
|
213
|
-
parent.insertBefore(instructionsElement, elem);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
elem.setAttribute('aria-describedby', instructionsId);
|
|
217
|
-
}
|
|
195
|
+
textareaElements.forEach(function (elem) {
|
|
196
|
+
elem.setAttribute('aria-label', 'Enter answer using math editor buttons or keyboard.');
|
|
218
197
|
});
|
|
219
198
|
}
|
|
220
199
|
});
|
|
@@ -626,8 +605,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
626
605
|
})), studentPrintMode ? printView : /*#__PURE__*/_react["default"].createElement(_renderUi.Readable, {
|
|
627
606
|
"false": true
|
|
628
607
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
629
|
-
className: classes.inputAndKeypadContainer
|
|
630
|
-
tabIndex: 0
|
|
608
|
+
className: classes.inputAndKeypadContainer
|
|
631
609
|
}, responseType === _utils.ResponseTypes.simple && /*#__PURE__*/_react["default"].createElement(_simpleQuestionBlock["default"], {
|
|
632
610
|
onSimpleResponseChange: this.onSimpleResponseChange,
|
|
633
611
|
showCorrect: showCorrect,
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","Main","props","classes","root","Object","keys","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","textContent","view","parentElement","classList","remove","correct","incorrect","StaticMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","index","instructionsId","parent","closest","instructionsElement","document","createElement","id","className","srOnly","insertBefore","response","setState","callOnSessionChange","activeAnswerBlock","data","type","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","focus","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mqStatic","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","getParentWithRoleTooltip","element","depth","offsetParent","getAttribute","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","note","language","t","lng","env","mode","countResponseOccurrences","setTimeout","updateAria","newAnswers","nextState","sameModel","sameState","ref","div","firstChild","correctness","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","responseType","customKeys","role","displayNote","emptyResponse","showCorrectAnswerToggle","tooltipModeEnabled","staticLatex","viewMode","studentPrintMode","printView","printContainer","subFieldChanged","getFieldName","setInput","onSubFieldFocus","onBlur","midContent","main","collapsible","hidden","visible","__html","promptContainer","inputAndKeypadContainer","ResponseTypes","simple","onSimpleResponseChange","advanced","showCorrectness","correctAnswerShown","printCorrect","setTooltipRef","tooltip","keypadTooltip","popper","keypadTooltipPopper","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","React","Component","PropTypes","object","isRequired","func","styles","theme","color","backgroundColor","background","display","primaryLight","padding","spacing","unit","border","secondary","fontSize","opacity","marginTop","paddingTop","marginBottom","position","title","paddingBottom","zIndex","minWidth","maxWidth","margin","top","borderColor","lineHeight","left","right","borderTop","letterSpacing","flex","palette","grey","alignItems","justifyContent","borderRight","pointerEvents","height","overflow"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {CorrectAnswerToggle} from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport {mq, HorizontalKeypad, updateSpans} from '@pie-lib/pie-toolbox/math-input';\nimport {Feedback, Collapsible, Readable, hasText, PreviewPrompt} from '@pie-lib/pie-toolbox/render-ui';\nimport {renderMath} from '@pie-lib/pie-toolbox/math-rendering-accessible';\nimport {withStyles} from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {ResponseTypes} from './utils';\nimport isEqual from 'lodash/isEqual';\nimport cx from 'classnames';\nimport SimpleQuestionBlock from './simple-question-block';\nimport MathQuill from '@pie-framework/mathquill';\nimport {color} from '@pie-lib/pie-toolbox/render-ui';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nconst {translator} = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const {config, disabled} = model || {};\n const {expression, responses, printMode, alwaysShowCorrect} = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n const answers = {};\n\n if (props.model.config && props.model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (props.model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (props.session &&\n props.session.answers &&\n props.session.answers[`r${answerBlocks}`] &&\n props.session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n\n this.state = {\n session: {...props.session, answers},\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n };\n }\n\n UNSAFE_componentWillMount() {\n const {classes} = this.props;\n\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n return {\n htmlString: `<div class=\"${classes.blockContainer}\">\n <div class=\"${classes.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classes.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const {model, classes} = this.props;\n const {session, showCorrect} = this.state;\n const answers = session.answers;\n\n if (this.root && model.disabled && !showCorrect) {\n Object.keys(answers).forEach((answerId) => {\n const el = this.root.querySelector(`#${answerId}`);\n const indexEl = this.root.querySelector(`#${answerId}Index`);\n // const correct = model.correctness && model.correctness.correct;\n\n if (el) {\n let MQ = MathQuill.getInterface(2);\n const answer = answers[answerId];\n\n el.textContent = (answer && answer.value) || '';\n\n if (!model.view) {\n // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? classes.correct : classes.incorrect\n // );\n } else {\n el.parentElement.parentElement.classList.remove(classes.correct);\n el.parentElement.parentElement.classList.remove(classes.incorrect);\n }\n\n MQ.StaticMath(el);\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression?.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {config} = this.props.model;\n const {config: nextConfig = {}} = nextProps.model || {};\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', {lng: config.language})\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', {lng: nextConfig.language});\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({...this.state.session, showCorrect: false});\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({showCorrect: true});\n }\n\n if (this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\n );\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const sameModel = isEqual(this.props.model, nextProps.model);\n const sameState = isEqual(this.state, nextState);\n\n return !sameModel || !sameState;\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n updateAria = () => {\n const {classes} = this.props;\n \n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach(elem => elem.setAttribute('aria-hidden', 'true'));\n \n // Update aria-label for textarea elements and add aria-describedby\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach((elem, index) => {\n elem.setAttribute('aria-label', 'Enter answer.');\n \n // Create a unique id for each instructions element\n const instructionsId = `instructions-${index}`;\n \n // Find the parent element that contains the textarea\n const parent = elem.closest('.mq-textarea');\n \n if (parent) {\n // Create or find the instructions element within the parent\n let instructionsElement = parent.querySelector(`#${instructionsId}`);\n \n if (!instructionsElement) {\n instructionsElement = document.createElement('span');\n instructionsElement.id = instructionsId;\n instructionsElement.className = classes.srOnly;\n instructionsElement.textContent = 'This field automatically displays a math keypad. Both keypad and keyboard input are accepted, and keyboard entry accepts LaTeX markup.';\n parent.insertBefore(instructionsElement, elem);\n }\n \n elem.setAttribute('aria-describedby', instructionsId);\n }\n });\n }\n };\n \n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({session: {...state.session, response}}), this.callOnSessionChange);\n };\n\n onSubFieldFocus = (id) => {\n this.setState({activeAnswerBlock: id});\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const {type, value} = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return {type: 'answer', ...data};\n } else if (value === 'clear') {\n return {type: 'clear'};\n } else {\n return {type: 'write', value};\n }\n };\n\n setInput = (input) => {\n this.input = input;\n };\n\n onClick = (data) => {\n const c = this.toNodeData(data);\n\n if (c.type === 'clear') {\n this.input.clear();\n } else if (c.type === 'command') {\n if (Array.isArray(c.value)) {\n c.value.forEach((vv) => {\n this.input.cmd(vv);\n });\n } else {\n this.input.cmd(c.value);\n }\n } else if (c.type === 'cursor') {\n this.input.keystroke(c.value);\n } else {\n this.input.write(c.value);\n }\n\n this.input.focus();\n };\n\n callOnSessionChange = () => {\n const {onSessionChange} = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({showCorrect: show}, this.handleAnswerBlockDomUpdate);\n };\n\n subFieldChanged = (name, subfieldValue) => {\n updateSpans();\n\n if (name) {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: {\n ...state.session.answers,\n [name]: {value: subfieldValue},\n },\n },\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const {answers} = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const {relatedTarget, currentTarget} = e || {};\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n this.setState({activeAnswerBlock: ''});\n }\n // else {\n // // Just for debugging purpose:\n // console.log('\\n\\nNew childWithDataKeypad', childWithDataKeypad);\n //\n // if (IS_SAFARI) {\n // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);\n // } else {\n // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);\n // }\n // }\n };\n\n setTooltipRef(ref) {\n // Safari Hack: https://stackoverflow.com/a/42764495/5757635\n setTimeout(() => {\n if (ref && IS_SAFARI) {\n const div = document.querySelector(\"[role='tooltip']\");\n\n if (div) {\n const el = div.firstChild;\n el.setAttribute('tabindex', '-1');\n }\n }\n }, 1);\n }\n\n render() {\n const {model, classes} = this.props;\n const {activeAnswerBlock, showCorrect, session} = this.state;\n const {\n config,\n correctness,\n disabled,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n env: {mode, role} = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n\n const printView = (\n <div className={classes.printContainer}>\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => (this.mqStatic = mqStatic || this.mqStatic)}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n );\n\n const midContent = (\n <div className={classes.main}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Math Equation Response Question</h2>}\n\n {viewMode &&\n teacherInstructions &&\n hasText(teacherInstructions) &&\n (!animationsDisabled ? (\n <Collapsible\n className={classes.collapsible}\n labels={{hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions'}}\n >\n <div dangerouslySetInnerHTML={{__html: teacherInstructions}}/>\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{__html: teacherInstructions}}/>\n ))}\n\n {prompt && (\n <div className={classes.promptContainer}>\n <PreviewPrompt prompt={prompt}/>\n </div>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <div className={classes.inputAndKeypadContainer} tabIndex={0}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <div\n className={cx(classes.expression, {\n [classes.incorrect]: !emptyResponse && !correct && !showCorrect,\n [classes.correct]: !emptyResponse && (correct || showCorrect),\n [classes.showCorrectness]: !emptyResponse && disabled && correctness && !view,\n [classes.correctAnswerShown]: showCorrect,\n [classes.printCorrect]: printMode && alwaysShowCorrect,\n })}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={!!activeAnswerBlock}\n classes={{\n tooltip: classes.keypadTooltip,\n popper: classes.keypadTooltipPopper,\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <div\n data-keypad={true}\n key={answerId}\n className={classes.responseContainer}\n style={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </div>\n )) ||\n null,\n )}\n >\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => (this.mqStatic = mqStatic || this.mqStatic)}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </Tooltip>\n </div>\n )}\n </div>\n </Readable>\n )}\n\n {viewMode && displayNote && (\n <div className={classes.note} dangerouslySetInnerHTML={{__html: `<strong>Note:</strong> ${note}`}}/>\n )}\n\n {viewMode &&\n rationale &&\n hasText(rationale) &&\n (!animationsDisabled ? (\n <Collapsible labels={{hidden: 'Show Rationale', visible: 'Hide Rationale'}}>\n <div dangerouslySetInnerHTML={{__html: rationale}}/>\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{__html: rationale}}/>\n ))}\n </div>\n );\n\n if (\n tooltipModeEnabled &&\n (showCorrectAnswerToggle ||\n (teacherInstructions && hasText(teacherInstructions)) ||\n (rationale && hasText(rationale)) ||\n feedback)\n ) {\n return (\n <Tooltip\n interactive\n enterTouchDelay={0}\n classes={{\n tooltip: classes.tooltip,\n popper: classes.tooltipPopper,\n }}\n title={\n <div>\n <div className={classes.main}>\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n language={language}\n className={classes.toggle}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </div>\n\n {teacherInstructions && hasText(teacherInstructions) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions}/>\n </Collapsible>\n )}\n {displayNote && hasText(note) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', {lng: language}),\n visible: translator.t('common:hideNote', {lng: language}),\n }}\n >\n <PreviewPrompt prompt={note}/>\n </Collapsible>\n )}\n\n {rationale && hasText(rationale) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale}/>\n </Collapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback}/>}\n </div>\n }\n >\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n </Tooltip>\n );\n }\n\n return (\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n },\n tooltip: {\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing.unit * 2,\n border: `1px solid ${color.secondary()}`,\n fontSize: '16px',\n '& :not(.MathJax) > table tr': {\n '&:nth-child(2n)': {\n backgroundColor: 'unset !important',\n },\n },\n },\n tooltipPopper: {\n opacity: 1,\n },\n keypadTooltip: {\n fontSize: 'initial',\n background: 'transparent',\n width: '600px',\n marginTop: 0,\n paddingTop: 0,\n },\n keypadTooltipPopper: {\n background: 'transparent',\n width: '650px',\n opacity: 1,\n },\n promptContainer: {\n marginBottom: theme.spacing.unit * 2,\n },\n main: {\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n },\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n note: {\n paddingBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n responseContainer: {\n zIndex: 10,\n // position: 'absolute',\n // right: 0,\n minWidth: '400px',\n marginTop: theme.spacing.unit * 2,\n },\n expression: {\n maxWidth: 'fit-content',\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n minWidth: '10px',\n margin: (theme.spacing.unit * 2) / 3,\n padding: theme.spacing.unit / 4,\n },\n },\n '& sup': {\n top: 0,\n },\n },\n },\n static: {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n },\n inputAndKeypadContainer: {\n position: 'relative',\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n },\n showCorrectness: {\n border: '2px solid',\n },\n correctAnswerShown: {\n padding: theme.spacing.unit,\n letterSpacing: '0.5px',\n },\n printCorrect: {\n border: `2px solid ${color.correct()} !important`,\n },\n correct: {\n borderColor: `${color.correct()} !important`,\n },\n incorrect: {\n borderColor: `${color.incorrect()} !important`,\n },\n blockContainer: {\n margin: `${theme.spacing.unit}px !important`,\n display: 'inline-flex',\n border: '2px solid grey !important',\n },\n blockResponse: {\n flex: 2,\n color: 'grey',\n background: theme.palette.grey['A100'],\n fontSize: '0.8rem !important',\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: `2px solid ${color.disabled()} !important`,\n },\n toggle: {\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n },\n blockMath: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 8,\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n printContainer: {\n marginBottom: theme.spacing.unit,\n pointerEvents: 'none',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","Main","props","classes","root","Object","keys","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","textContent","view","parentElement","classList","remove","correct","incorrect","StaticMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","response","setState","callOnSessionChange","id","activeAnswerBlock","data","type","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","focus","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mqStatic","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","getParentWithRoleTooltip","element","depth","parent","offsetParent","getAttribute","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","note","language","t","lng","env","mode","countResponseOccurrences","setTimeout","updateAria","newAnswers","nextState","sameModel","sameState","ref","div","document","firstChild","correctness","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","responseType","customKeys","role","displayNote","emptyResponse","showCorrectAnswerToggle","tooltipModeEnabled","staticLatex","viewMode","studentPrintMode","printView","printContainer","subFieldChanged","getFieldName","setInput","onSubFieldFocus","onBlur","midContent","main","srOnly","collapsible","hidden","visible","__html","promptContainer","inputAndKeypadContainer","ResponseTypes","simple","onSimpleResponseChange","advanced","showCorrectness","correctAnswerShown","printCorrect","setTooltipRef","tooltip","keypadTooltip","popper","keypadTooltipPopper","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","React","Component","PropTypes","object","isRequired","func","styles","theme","color","backgroundColor","background","display","primaryLight","padding","spacing","unit","border","secondary","fontSize","opacity","marginTop","paddingTop","marginBottom","position","title","paddingBottom","zIndex","minWidth","maxWidth","margin","top","borderColor","lineHeight","left","right","borderTop","letterSpacing","flex","palette","grey","alignItems","justifyContent","borderRight","pointerEvents","height","overflow"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {CorrectAnswerToggle} from '@pie-lib/pie-toolbox/correct-answer-toggle';\nimport {mq, HorizontalKeypad, updateSpans} from '@pie-lib/pie-toolbox/math-input';\nimport {Feedback, Collapsible, Readable, hasText, PreviewPrompt} from '@pie-lib/pie-toolbox/render-ui';\nimport {renderMath} from '@pie-lib/pie-toolbox/math-rendering-accessible';\nimport {withStyles} from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {ResponseTypes} from './utils';\nimport isEqual from 'lodash/isEqual';\nimport cx from 'classnames';\nimport SimpleQuestionBlock from './simple-question-block';\nimport MathQuill from '@pie-framework/mathquill';\nimport {color} from '@pie-lib/pie-toolbox/render-ui';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nconst {translator} = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const {config, disabled} = model || {};\n const {expression, responses, printMode, alwaysShowCorrect} = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n const answers = {};\n\n if (props.model.config && props.model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (props.model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (props.session &&\n props.session.answers &&\n props.session.answers[`r${answerBlocks}`] &&\n props.session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n\n this.state = {\n session: {...props.session, answers},\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n };\n }\n\n UNSAFE_componentWillMount() {\n const {classes} = this.props;\n\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n return {\n htmlString: `<div class=\"${classes.blockContainer}\">\n <div class=\"${classes.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classes.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const {model, classes} = this.props;\n const {session, showCorrect} = this.state;\n const answers = session.answers;\n\n if (this.root && model.disabled && !showCorrect) {\n Object.keys(answers).forEach((answerId) => {\n const el = this.root.querySelector(`#${answerId}`);\n const indexEl = this.root.querySelector(`#${answerId}Index`);\n // const correct = model.correctness && model.correctness.correct;\n\n if (el) {\n let MQ = MathQuill.getInterface(2);\n const answer = answers[answerId];\n\n el.textContent = (answer && answer.value) || '';\n\n if (!model.view) {\n // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? classes.correct : classes.incorrect\n // );\n } else {\n el.parentElement.parentElement.classList.remove(classes.correct);\n el.parentElement.parentElement.classList.remove(classes.incorrect);\n }\n\n MQ.StaticMath(el);\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression?.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const {config} = this.props.model;\n const {config: nextConfig = {}} = nextProps.model || {};\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', {lng: config.language})\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', {lng: nextConfig.language});\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({...this.state.session, showCorrect: false});\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({showCorrect: true});\n }\n\n if (this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\n );\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const sameModel = isEqual(this.props.model, nextProps.model);\n const sameState = isEqual(this.state, nextState);\n\n return !sameModel || !sameState;\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n updateAria = () => {\n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach(elem => elem.setAttribute('aria-hidden', 'true'));\n\n // Update aria-label for textarea elements\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach(elem => {\n elem.setAttribute('aria-label', 'Enter answer using math editor buttons or keyboard.');\n });\n }\n };\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({session: {...state.session, response}}), this.callOnSessionChange);\n };\n\n onSubFieldFocus = (id) => {\n this.setState({activeAnswerBlock: id});\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const {type, value} = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return {type: 'answer', ...data};\n } else if (value === 'clear') {\n return {type: 'clear'};\n } else {\n return {type: 'write', value};\n }\n };\n\n setInput = (input) => {\n this.input = input;\n };\n\n onClick = (data) => {\n const c = this.toNodeData(data);\n\n if (c.type === 'clear') {\n this.input.clear();\n } else if (c.type === 'command') {\n if (Array.isArray(c.value)) {\n c.value.forEach((vv) => {\n this.input.cmd(vv);\n });\n } else {\n this.input.cmd(c.value);\n }\n } else if (c.type === 'cursor') {\n this.input.keystroke(c.value);\n } else {\n this.input.write(c.value);\n }\n\n this.input.focus();\n };\n\n callOnSessionChange = () => {\n const {onSessionChange} = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({showCorrect: show}, this.handleAnswerBlockDomUpdate);\n };\n\n subFieldChanged = (name, subfieldValue) => {\n updateSpans();\n\n if (name) {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: {\n ...state.session.answers,\n [name]: {value: subfieldValue},\n },\n },\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const {answers} = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const {relatedTarget, currentTarget} = e || {};\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n this.setState({activeAnswerBlock: ''});\n }\n // else {\n // // Just for debugging purpose:\n // console.log('\\n\\nNew childWithDataKeypad', childWithDataKeypad);\n //\n // if (IS_SAFARI) {\n // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);\n // } else {\n // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);\n // }\n // }\n };\n\n setTooltipRef(ref) {\n // Safari Hack: https://stackoverflow.com/a/42764495/5757635\n setTimeout(() => {\n if (ref && IS_SAFARI) {\n const div = document.querySelector(\"[role='tooltip']\");\n\n if (div) {\n const el = div.firstChild;\n el.setAttribute('tabindex', '-1');\n }\n }\n }, 1);\n }\n\n render() {\n const {model, classes} = this.props;\n const {activeAnswerBlock, showCorrect, session} = this.state;\n const {\n config,\n correctness,\n disabled,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n env: {mode, role} = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n\n const printView = (\n <div className={classes.printContainer}>\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => (this.mqStatic = mqStatic || this.mqStatic)}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n );\n\n const midContent = (\n <div className={classes.main}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Math Equation Response Question</h2>}\n\n {viewMode &&\n teacherInstructions &&\n hasText(teacherInstructions) &&\n (!animationsDisabled ? (\n <Collapsible\n className={classes.collapsible}\n labels={{hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions'}}\n >\n <div dangerouslySetInnerHTML={{__html: teacherInstructions}}/>\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{__html: teacherInstructions}}/>\n ))}\n\n {prompt && (\n <div className={classes.promptContainer}>\n <PreviewPrompt prompt={prompt}/>\n </div>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <div className={classes.inputAndKeypadContainer}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <div\n className={cx(classes.expression, {\n [classes.incorrect]: !emptyResponse && !correct && !showCorrect,\n [classes.correct]: !emptyResponse && (correct || showCorrect),\n [classes.showCorrectness]: !emptyResponse && disabled && correctness && !view,\n [classes.correctAnswerShown]: showCorrect,\n [classes.printCorrect]: printMode && alwaysShowCorrect,\n })}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={!!activeAnswerBlock}\n classes={{\n tooltip: classes.keypadTooltip,\n popper: classes.keypadTooltipPopper,\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <div\n data-keypad={true}\n key={answerId}\n className={classes.responseContainer}\n style={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </div>\n )) ||\n null,\n )}\n >\n <mq.Static\n className={classes.static}\n ref={(mqStatic) => (this.mqStatic = mqStatic || this.mqStatic)}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </Tooltip>\n </div>\n )}\n </div>\n </Readable>\n )}\n\n {viewMode && displayNote && (\n <div className={classes.note} dangerouslySetInnerHTML={{__html: `<strong>Note:</strong> ${note}`}}/>\n )}\n\n {viewMode &&\n rationale &&\n hasText(rationale) &&\n (!animationsDisabled ? (\n <Collapsible labels={{hidden: 'Show Rationale', visible: 'Hide Rationale'}}>\n <div dangerouslySetInnerHTML={{__html: rationale}}/>\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{__html: rationale}}/>\n ))}\n </div>\n );\n\n if (\n tooltipModeEnabled &&\n (showCorrectAnswerToggle ||\n (teacherInstructions && hasText(teacherInstructions)) ||\n (rationale && hasText(rationale)) ||\n feedback)\n ) {\n return (\n <Tooltip\n interactive\n enterTouchDelay={0}\n classes={{\n tooltip: classes.tooltip,\n popper: classes.tooltipPopper,\n }}\n title={\n <div>\n <div className={classes.main}>\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n language={language}\n className={classes.toggle}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </div>\n\n {teacherInstructions && hasText(teacherInstructions) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions}/>\n </Collapsible>\n )}\n {displayNote && hasText(note) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', {lng: language}),\n visible: translator.t('common:hideNote', {lng: language}),\n }}\n >\n <PreviewPrompt prompt={note}/>\n </Collapsible>\n )}\n\n {rationale && hasText(rationale) && (\n <Collapsible\n className={classes.collapsible}\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale}/>\n </Collapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback}/>}\n </div>\n }\n >\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n </Tooltip>\n );\n }\n\n return (\n <div className={classes.mainContainer} ref={(r) => (this.root = r || this.root)}>\n {midContent}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n },\n tooltip: {\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing.unit * 2,\n border: `1px solid ${color.secondary()}`,\n fontSize: '16px',\n '& :not(.MathJax) > table tr': {\n '&:nth-child(2n)': {\n backgroundColor: 'unset !important',\n },\n },\n },\n tooltipPopper: {\n opacity: 1,\n },\n keypadTooltip: {\n fontSize: 'initial',\n background: 'transparent',\n width: '600px',\n marginTop: 0,\n paddingTop: 0,\n },\n keypadTooltipPopper: {\n background: 'transparent',\n width: '650px',\n opacity: 1,\n },\n promptContainer: {\n marginBottom: theme.spacing.unit * 2,\n },\n main: {\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n },\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n note: {\n paddingBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n responseContainer: {\n zIndex: 10,\n // position: 'absolute',\n // right: 0,\n minWidth: '400px',\n marginTop: theme.spacing.unit * 2,\n },\n expression: {\n maxWidth: 'fit-content',\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n minWidth: '10px',\n margin: (theme.spacing.unit * 2) / 3,\n padding: theme.spacing.unit / 4,\n },\n },\n '& sup': {\n top: 0,\n },\n },\n },\n static: {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n },\n inputAndKeypadContainer: {\n position: 'relative',\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n },\n showCorrectness: {\n border: '2px solid',\n },\n correctAnswerShown: {\n padding: theme.spacing.unit,\n letterSpacing: '0.5px',\n },\n printCorrect: {\n border: `2px solid ${color.correct()} !important`,\n },\n correct: {\n borderColor: `${color.correct()} !important`,\n },\n incorrect: {\n borderColor: `${color.incorrect()} !important`,\n },\n blockContainer: {\n margin: `${theme.spacing.unit}px !important`,\n display: 'inline-flex',\n border: '2px solid grey !important',\n },\n blockResponse: {\n flex: 2,\n color: 'grey',\n background: theme.palette.grey['A100'],\n fontSize: '0.8rem !important',\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: `2px solid ${color.disabled()} !important`,\n },\n toggle: {\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n },\n blockMath: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 8,\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n printContainer: {\n marginBottom: theme.spacing.unit,\n pointerEvents: 'none',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|
package/module/element.js
CHANGED
|
@@ -11740,26 +11740,12 @@ class Main extends React$1.Component {
|
|
|
11740
11740
|
}
|
|
11741
11741
|
__init2() {
|
|
11742
11742
|
this.updateAria = () => {
|
|
11743
|
-
const {classes} = this.props;
|
|
11744
11743
|
if (this.root) {
|
|
11745
11744
|
const selectableElements = this.root.querySelectorAll('.mq-selectable');
|
|
11746
11745
|
selectableElements.forEach(elem => elem.setAttribute('aria-hidden', 'true'));
|
|
11747
11746
|
const textareaElements = this.root.querySelectorAll('textarea');
|
|
11748
|
-
textareaElements.forEach(
|
|
11749
|
-
elem.setAttribute('aria-label', 'Enter answer.');
|
|
11750
|
-
const instructionsId = `instructions-${index}`;
|
|
11751
|
-
const parent = elem.closest('.mq-textarea');
|
|
11752
|
-
if (parent) {
|
|
11753
|
-
let instructionsElement = parent.querySelector(`#${instructionsId}`);
|
|
11754
|
-
if (!instructionsElement) {
|
|
11755
|
-
instructionsElement = document.createElement('span');
|
|
11756
|
-
instructionsElement.id = instructionsId;
|
|
11757
|
-
instructionsElement.className = classes.srOnly;
|
|
11758
|
-
instructionsElement.textContent = 'This field automatically displays a math keypad. Both keypad and keyboard input are accepted, and keyboard entry accepts LaTeX markup.';
|
|
11759
|
-
parent.insertBefore(instructionsElement, elem);
|
|
11760
|
-
}
|
|
11761
|
-
elem.setAttribute('aria-describedby', instructionsId);
|
|
11762
|
-
}
|
|
11747
|
+
textareaElements.forEach(elem => {
|
|
11748
|
+
elem.setAttribute('aria-label', 'Enter answer using math editor buttons or keyboard.');
|
|
11763
11749
|
});
|
|
11764
11750
|
}
|
|
11765
11751
|
};
|
|
@@ -11944,7 +11930,7 @@ class Main extends React$1.Component {
|
|
|
11944
11930
|
__self: this,
|
|
11945
11931
|
__source: {
|
|
11946
11932
|
fileName: _jsxFileName,
|
|
11947
|
-
lineNumber:
|
|
11933
|
+
lineNumber: 489
|
|
11948
11934
|
}
|
|
11949
11935
|
}, React$1.createElement(mq.Static, {
|
|
11950
11936
|
className: classes.static,
|
|
@@ -11958,7 +11944,7 @@ class Main extends React$1.Component {
|
|
|
11958
11944
|
__self: this,
|
|
11959
11945
|
__source: {
|
|
11960
11946
|
fileName: _jsxFileName,
|
|
11961
|
-
lineNumber:
|
|
11947
|
+
lineNumber: 490
|
|
11962
11948
|
}
|
|
11963
11949
|
}));
|
|
11964
11950
|
const midContent = React$1.createElement('div', {
|
|
@@ -11966,14 +11952,14 @@ class Main extends React$1.Component {
|
|
|
11966
11952
|
__self: this,
|
|
11967
11953
|
__source: {
|
|
11968
11954
|
fileName: _jsxFileName,
|
|
11969
|
-
lineNumber:
|
|
11955
|
+
lineNumber: 504
|
|
11970
11956
|
}
|
|
11971
11957
|
}, mode === 'gather' && React$1.createElement('h2', {
|
|
11972
11958
|
className: classes.srOnly,
|
|
11973
11959
|
__self: this,
|
|
11974
11960
|
__source: {
|
|
11975
11961
|
fileName: _jsxFileName,
|
|
11976
|
-
lineNumber:
|
|
11962
|
+
lineNumber: 505
|
|
11977
11963
|
}
|
|
11978
11964
|
}, "Math Equation Response Question"), viewMode && teacherInstructions && hasText(teacherInstructions) && (!animationsDisabled ? React$1.createElement(Collapsible, {
|
|
11979
11965
|
className: classes.collapsible,
|
|
@@ -11984,7 +11970,7 @@ class Main extends React$1.Component {
|
|
|
11984
11970
|
__self: this,
|
|
11985
11971
|
__source: {
|
|
11986
11972
|
fileName: _jsxFileName,
|
|
11987
|
-
lineNumber:
|
|
11973
|
+
lineNumber: 511
|
|
11988
11974
|
}
|
|
11989
11975
|
}, React$1.createElement('div', {
|
|
11990
11976
|
dangerouslySetInnerHTML: {
|
|
@@ -11993,7 +11979,7 @@ class Main extends React$1.Component {
|
|
|
11993
11979
|
__self: this,
|
|
11994
11980
|
__source: {
|
|
11995
11981
|
fileName: _jsxFileName,
|
|
11996
|
-
lineNumber:
|
|
11982
|
+
lineNumber: 515
|
|
11997
11983
|
}
|
|
11998
11984
|
})) : React$1.createElement('div', {
|
|
11999
11985
|
dangerouslySetInnerHTML: {
|
|
@@ -12002,36 +11988,35 @@ class Main extends React$1.Component {
|
|
|
12002
11988
|
__self: this,
|
|
12003
11989
|
__source: {
|
|
12004
11990
|
fileName: _jsxFileName,
|
|
12005
|
-
lineNumber:
|
|
11991
|
+
lineNumber: 518
|
|
12006
11992
|
}
|
|
12007
11993
|
})), prompt && React$1.createElement('div', {
|
|
12008
11994
|
className: classes.promptContainer,
|
|
12009
11995
|
__self: this,
|
|
12010
11996
|
__source: {
|
|
12011
11997
|
fileName: _jsxFileName,
|
|
12012
|
-
lineNumber:
|
|
11998
|
+
lineNumber: 522
|
|
12013
11999
|
}
|
|
12014
12000
|
}, React$1.createElement(PreviewPrompt, {
|
|
12015
12001
|
prompt: prompt,
|
|
12016
12002
|
__self: this,
|
|
12017
12003
|
__source: {
|
|
12018
12004
|
fileName: _jsxFileName,
|
|
12019
|
-
lineNumber:
|
|
12005
|
+
lineNumber: 523
|
|
12020
12006
|
}
|
|
12021
12007
|
})), studentPrintMode ? printView : React$1.createElement(Readable, {
|
|
12022
12008
|
false: true,
|
|
12023
12009
|
__self: this,
|
|
12024
12010
|
__source: {
|
|
12025
12011
|
fileName: _jsxFileName,
|
|
12026
|
-
lineNumber:
|
|
12012
|
+
lineNumber: 530
|
|
12027
12013
|
}
|
|
12028
12014
|
}, React$1.createElement('div', {
|
|
12029
12015
|
className: classes.inputAndKeypadContainer,
|
|
12030
|
-
tabIndex: 0,
|
|
12031
12016
|
__self: this,
|
|
12032
12017
|
__source: {
|
|
12033
12018
|
fileName: _jsxFileName,
|
|
12034
|
-
lineNumber:
|
|
12019
|
+
lineNumber: 531
|
|
12035
12020
|
}
|
|
12036
12021
|
}, responseType === ResponseTypes$1.simple && React$1.createElement(SimpleQuestionBlock, {
|
|
12037
12022
|
onSimpleResponseChange: this.onSimpleResponseChange,
|
|
@@ -12042,7 +12027,7 @@ class Main extends React$1.Component {
|
|
|
12042
12027
|
__self: this,
|
|
12043
12028
|
__source: {
|
|
12044
12029
|
fileName: _jsxFileName,
|
|
12045
|
-
lineNumber:
|
|
12030
|
+
lineNumber: 533
|
|
12046
12031
|
}
|
|
12047
12032
|
}), responseType === ResponseTypes$1.advanced && React$1.createElement('div', {
|
|
12048
12033
|
className: cx(classes.expression, {
|
|
@@ -12055,7 +12040,7 @@ class Main extends React$1.Component {
|
|
|
12055
12040
|
__self: this,
|
|
12056
12041
|
__source: {
|
|
12057
12042
|
fileName: _jsxFileName,
|
|
12058
|
-
lineNumber:
|
|
12043
|
+
lineNumber: 543
|
|
12059
12044
|
}
|
|
12060
12045
|
}, React$1.createElement(Tooltip, {
|
|
12061
12046
|
ref: ref => this.setTooltipRef(ref),
|
|
@@ -12076,7 +12061,7 @@ class Main extends React$1.Component {
|
|
|
12076
12061
|
__self: this,
|
|
12077
12062
|
__source: {
|
|
12078
12063
|
fileName: _jsxFileName,
|
|
12079
|
-
lineNumber:
|
|
12064
|
+
lineNumber: 564
|
|
12080
12065
|
}
|
|
12081
12066
|
}, React$1.createElement(HorizontalKeypad, {
|
|
12082
12067
|
additionalKeys: additionalKeys,
|
|
@@ -12085,13 +12070,13 @@ class Main extends React$1.Component {
|
|
|
12085
12070
|
__self: this,
|
|
12086
12071
|
__source: {
|
|
12087
12072
|
fileName: _jsxFileName,
|
|
12088
|
-
lineNumber:
|
|
12073
|
+
lineNumber: 573
|
|
12089
12074
|
}
|
|
12090
12075
|
})) || null),
|
|
12091
12076
|
__self: this,
|
|
12092
12077
|
__source: {
|
|
12093
12078
|
fileName: _jsxFileName,
|
|
12094
|
-
lineNumber:
|
|
12079
|
+
lineNumber: 552
|
|
12095
12080
|
}
|
|
12096
12081
|
}, React$1.createElement(mq.Static, {
|
|
12097
12082
|
className: classes.static,
|
|
@@ -12105,7 +12090,7 @@ class Main extends React$1.Component {
|
|
|
12105
12090
|
__self: this,
|
|
12106
12091
|
__source: {
|
|
12107
12092
|
fileName: _jsxFileName,
|
|
12108
|
-
lineNumber:
|
|
12093
|
+
lineNumber: 583
|
|
12109
12094
|
}
|
|
12110
12095
|
}))))), viewMode && displayNote && React$1.createElement('div', {
|
|
12111
12096
|
className: classes.note,
|
|
@@ -12115,7 +12100,7 @@ class Main extends React$1.Component {
|
|
|
12115
12100
|
__self: this,
|
|
12116
12101
|
__source: {
|
|
12117
12102
|
fileName: _jsxFileName,
|
|
12118
|
-
lineNumber:
|
|
12103
|
+
lineNumber: 601
|
|
12119
12104
|
}
|
|
12120
12105
|
}), viewMode && rationale && hasText(rationale) && (!animationsDisabled ? React$1.createElement(Collapsible, {
|
|
12121
12106
|
labels: {
|
|
@@ -12125,7 +12110,7 @@ class Main extends React$1.Component {
|
|
|
12125
12110
|
__self: this,
|
|
12126
12111
|
__source: {
|
|
12127
12112
|
fileName: _jsxFileName,
|
|
12128
|
-
lineNumber:
|
|
12113
|
+
lineNumber: 608
|
|
12129
12114
|
}
|
|
12130
12115
|
}, React$1.createElement('div', {
|
|
12131
12116
|
dangerouslySetInnerHTML: {
|
|
@@ -12134,7 +12119,7 @@ class Main extends React$1.Component {
|
|
|
12134
12119
|
__self: this,
|
|
12135
12120
|
__source: {
|
|
12136
12121
|
fileName: _jsxFileName,
|
|
12137
|
-
lineNumber:
|
|
12122
|
+
lineNumber: 609
|
|
12138
12123
|
}
|
|
12139
12124
|
})) : React$1.createElement('div', {
|
|
12140
12125
|
dangerouslySetInnerHTML: {
|
|
@@ -12143,7 +12128,7 @@ class Main extends React$1.Component {
|
|
|
12143
12128
|
__self: this,
|
|
12144
12129
|
__source: {
|
|
12145
12130
|
fileName: _jsxFileName,
|
|
12146
|
-
lineNumber:
|
|
12131
|
+
lineNumber: 612
|
|
12147
12132
|
}
|
|
12148
12133
|
})));
|
|
12149
12134
|
if (tooltipModeEnabled && (showCorrectAnswerToggle || teacherInstructions && hasText(teacherInstructions) || rationale && hasText(rationale) || feedback)) {
|
|
@@ -12158,14 +12143,14 @@ class Main extends React$1.Component {
|
|
|
12158
12143
|
__self: this,
|
|
12159
12144
|
__source: {
|
|
12160
12145
|
fileName: _jsxFileName,
|
|
12161
|
-
lineNumber:
|
|
12146
|
+
lineNumber: 633
|
|
12162
12147
|
}
|
|
12163
12148
|
}, React$1.createElement('div', {
|
|
12164
12149
|
className: classes.main,
|
|
12165
12150
|
__self: this,
|
|
12166
12151
|
__source: {
|
|
12167
12152
|
fileName: _jsxFileName,
|
|
12168
|
-
lineNumber:
|
|
12153
|
+
lineNumber: 634
|
|
12169
12154
|
}
|
|
12170
12155
|
}, showCorrectAnswerToggle && React$1.createElement(CorrectAnswerToggle, {
|
|
12171
12156
|
language: language,
|
|
@@ -12176,7 +12161,7 @@ class Main extends React$1.Component {
|
|
|
12176
12161
|
__self: this,
|
|
12177
12162
|
__source: {
|
|
12178
12163
|
fileName: _jsxFileName,
|
|
12179
|
-
lineNumber:
|
|
12164
|
+
lineNumber: 636
|
|
12180
12165
|
}
|
|
12181
12166
|
})), teacherInstructions && hasText(teacherInstructions) && React$1.createElement(Collapsible, {
|
|
12182
12167
|
className: classes.collapsible,
|
|
@@ -12188,14 +12173,14 @@ class Main extends React$1.Component {
|
|
|
12188
12173
|
__self: this,
|
|
12189
12174
|
__source: {
|
|
12190
12175
|
fileName: _jsxFileName,
|
|
12191
|
-
lineNumber:
|
|
12176
|
+
lineNumber: 647
|
|
12192
12177
|
}
|
|
12193
12178
|
}, React$1.createElement(PreviewPrompt, {
|
|
12194
12179
|
prompt: teacherInstructions,
|
|
12195
12180
|
__self: this,
|
|
12196
12181
|
__source: {
|
|
12197
12182
|
fileName: _jsxFileName,
|
|
12198
|
-
lineNumber:
|
|
12183
|
+
lineNumber: 655
|
|
12199
12184
|
}
|
|
12200
12185
|
})), displayNote && hasText(note) && React$1.createElement(Collapsible, {
|
|
12201
12186
|
className: classes.collapsible,
|
|
@@ -12211,14 +12196,14 @@ class Main extends React$1.Component {
|
|
|
12211
12196
|
__self: this,
|
|
12212
12197
|
__source: {
|
|
12213
12198
|
fileName: _jsxFileName,
|
|
12214
|
-
lineNumber:
|
|
12199
|
+
lineNumber: 659
|
|
12215
12200
|
}
|
|
12216
12201
|
}, React$1.createElement(PreviewPrompt, {
|
|
12217
12202
|
prompt: note,
|
|
12218
12203
|
__self: this,
|
|
12219
12204
|
__source: {
|
|
12220
12205
|
fileName: _jsxFileName,
|
|
12221
|
-
lineNumber:
|
|
12206
|
+
lineNumber: 667
|
|
12222
12207
|
}
|
|
12223
12208
|
})), rationale && hasText(rationale) && React$1.createElement(Collapsible, {
|
|
12224
12209
|
className: classes.collapsible,
|
|
@@ -12230,14 +12215,14 @@ class Main extends React$1.Component {
|
|
|
12230
12215
|
__self: this,
|
|
12231
12216
|
__source: {
|
|
12232
12217
|
fileName: _jsxFileName,
|
|
12233
|
-
lineNumber:
|
|
12218
|
+
lineNumber: 672
|
|
12234
12219
|
}
|
|
12235
12220
|
}, React$1.createElement(PreviewPrompt, {
|
|
12236
12221
|
prompt: rationale,
|
|
12237
12222
|
__self: this,
|
|
12238
12223
|
__source: {
|
|
12239
12224
|
fileName: _jsxFileName,
|
|
12240
|
-
lineNumber:
|
|
12225
|
+
lineNumber: 680
|
|
12241
12226
|
}
|
|
12242
12227
|
})), feedback && React$1.createElement(Feedback, {
|
|
12243
12228
|
correctness: correctness.correctness,
|
|
@@ -12245,13 +12230,13 @@ class Main extends React$1.Component {
|
|
|
12245
12230
|
__self: this,
|
|
12246
12231
|
__source: {
|
|
12247
12232
|
fileName: _jsxFileName,
|
|
12248
|
-
lineNumber:
|
|
12233
|
+
lineNumber: 684
|
|
12249
12234
|
}
|
|
12250
12235
|
})),
|
|
12251
12236
|
__self: this,
|
|
12252
12237
|
__source: {
|
|
12253
12238
|
fileName: _jsxFileName,
|
|
12254
|
-
lineNumber:
|
|
12239
|
+
lineNumber: 625
|
|
12255
12240
|
}
|
|
12256
12241
|
}, React$1.createElement('div', {
|
|
12257
12242
|
className: classes.mainContainer,
|
|
@@ -12259,7 +12244,7 @@ class Main extends React$1.Component {
|
|
|
12259
12244
|
__self: this,
|
|
12260
12245
|
__source: {
|
|
12261
12246
|
fileName: _jsxFileName,
|
|
12262
|
-
lineNumber:
|
|
12247
|
+
lineNumber: 688
|
|
12263
12248
|
}
|
|
12264
12249
|
}, midContent));
|
|
12265
12250
|
}
|
|
@@ -12269,7 +12254,7 @@ class Main extends React$1.Component {
|
|
|
12269
12254
|
__self: this,
|
|
12270
12255
|
__source: {
|
|
12271
12256
|
fileName: _jsxFileName,
|
|
12272
|
-
lineNumber:
|
|
12257
|
+
lineNumber: 696
|
|
12273
12258
|
}
|
|
12274
12259
|
}, midContent);
|
|
12275
12260
|
}
|
package/module/print.js
CHANGED
|
@@ -11740,26 +11740,12 @@ class Main extends React$1.Component {
|
|
|
11740
11740
|
}
|
|
11741
11741
|
__init2() {
|
|
11742
11742
|
this.updateAria = () => {
|
|
11743
|
-
const {classes} = this.props;
|
|
11744
11743
|
if (this.root) {
|
|
11745
11744
|
const selectableElements = this.root.querySelectorAll('.mq-selectable');
|
|
11746
11745
|
selectableElements.forEach(elem => elem.setAttribute('aria-hidden', 'true'));
|
|
11747
11746
|
const textareaElements = this.root.querySelectorAll('textarea');
|
|
11748
|
-
textareaElements.forEach(
|
|
11749
|
-
elem.setAttribute('aria-label', 'Enter answer.');
|
|
11750
|
-
const instructionsId = `instructions-${index}`;
|
|
11751
|
-
const parent = elem.closest('.mq-textarea');
|
|
11752
|
-
if (parent) {
|
|
11753
|
-
let instructionsElement = parent.querySelector(`#${instructionsId}`);
|
|
11754
|
-
if (!instructionsElement) {
|
|
11755
|
-
instructionsElement = document.createElement('span');
|
|
11756
|
-
instructionsElement.id = instructionsId;
|
|
11757
|
-
instructionsElement.className = classes.srOnly;
|
|
11758
|
-
instructionsElement.textContent = 'This field automatically displays a math keypad. Both keypad and keyboard input are accepted, and keyboard entry accepts LaTeX markup.';
|
|
11759
|
-
parent.insertBefore(instructionsElement, elem);
|
|
11760
|
-
}
|
|
11761
|
-
elem.setAttribute('aria-describedby', instructionsId);
|
|
11762
|
-
}
|
|
11747
|
+
textareaElements.forEach(elem => {
|
|
11748
|
+
elem.setAttribute('aria-label', 'Enter answer using math editor buttons or keyboard.');
|
|
11763
11749
|
});
|
|
11764
11750
|
}
|
|
11765
11751
|
};
|
|
@@ -11944,7 +11930,7 @@ class Main extends React$1.Component {
|
|
|
11944
11930
|
__self: this,
|
|
11945
11931
|
__source: {
|
|
11946
11932
|
fileName: _jsxFileName,
|
|
11947
|
-
lineNumber:
|
|
11933
|
+
lineNumber: 489
|
|
11948
11934
|
}
|
|
11949
11935
|
}, React$1.createElement(mq.Static, {
|
|
11950
11936
|
className: classes.static,
|
|
@@ -11958,7 +11944,7 @@ class Main extends React$1.Component {
|
|
|
11958
11944
|
__self: this,
|
|
11959
11945
|
__source: {
|
|
11960
11946
|
fileName: _jsxFileName,
|
|
11961
|
-
lineNumber:
|
|
11947
|
+
lineNumber: 490
|
|
11962
11948
|
}
|
|
11963
11949
|
}));
|
|
11964
11950
|
const midContent = React$1.createElement('div', {
|
|
@@ -11966,14 +11952,14 @@ class Main extends React$1.Component {
|
|
|
11966
11952
|
__self: this,
|
|
11967
11953
|
__source: {
|
|
11968
11954
|
fileName: _jsxFileName,
|
|
11969
|
-
lineNumber:
|
|
11955
|
+
lineNumber: 504
|
|
11970
11956
|
}
|
|
11971
11957
|
}, mode === 'gather' && React$1.createElement('h2', {
|
|
11972
11958
|
className: classes.srOnly,
|
|
11973
11959
|
__self: this,
|
|
11974
11960
|
__source: {
|
|
11975
11961
|
fileName: _jsxFileName,
|
|
11976
|
-
lineNumber:
|
|
11962
|
+
lineNumber: 505
|
|
11977
11963
|
}
|
|
11978
11964
|
}, "Math Equation Response Question"), viewMode && teacherInstructions && hasText(teacherInstructions) && (!animationsDisabled ? React$1.createElement(Collapsible, {
|
|
11979
11965
|
className: classes.collapsible,
|
|
@@ -11984,7 +11970,7 @@ class Main extends React$1.Component {
|
|
|
11984
11970
|
__self: this,
|
|
11985
11971
|
__source: {
|
|
11986
11972
|
fileName: _jsxFileName,
|
|
11987
|
-
lineNumber:
|
|
11973
|
+
lineNumber: 511
|
|
11988
11974
|
}
|
|
11989
11975
|
}, React$1.createElement('div', {
|
|
11990
11976
|
dangerouslySetInnerHTML: {
|
|
@@ -11993,7 +11979,7 @@ class Main extends React$1.Component {
|
|
|
11993
11979
|
__self: this,
|
|
11994
11980
|
__source: {
|
|
11995
11981
|
fileName: _jsxFileName,
|
|
11996
|
-
lineNumber:
|
|
11982
|
+
lineNumber: 515
|
|
11997
11983
|
}
|
|
11998
11984
|
})) : React$1.createElement('div', {
|
|
11999
11985
|
dangerouslySetInnerHTML: {
|
|
@@ -12002,36 +11988,35 @@ class Main extends React$1.Component {
|
|
|
12002
11988
|
__self: this,
|
|
12003
11989
|
__source: {
|
|
12004
11990
|
fileName: _jsxFileName,
|
|
12005
|
-
lineNumber:
|
|
11991
|
+
lineNumber: 518
|
|
12006
11992
|
}
|
|
12007
11993
|
})), prompt && React$1.createElement('div', {
|
|
12008
11994
|
className: classes.promptContainer,
|
|
12009
11995
|
__self: this,
|
|
12010
11996
|
__source: {
|
|
12011
11997
|
fileName: _jsxFileName,
|
|
12012
|
-
lineNumber:
|
|
11998
|
+
lineNumber: 522
|
|
12013
11999
|
}
|
|
12014
12000
|
}, React$1.createElement(PreviewPrompt, {
|
|
12015
12001
|
prompt: prompt,
|
|
12016
12002
|
__self: this,
|
|
12017
12003
|
__source: {
|
|
12018
12004
|
fileName: _jsxFileName,
|
|
12019
|
-
lineNumber:
|
|
12005
|
+
lineNumber: 523
|
|
12020
12006
|
}
|
|
12021
12007
|
})), studentPrintMode ? printView : React$1.createElement(Readable, {
|
|
12022
12008
|
false: true,
|
|
12023
12009
|
__self: this,
|
|
12024
12010
|
__source: {
|
|
12025
12011
|
fileName: _jsxFileName,
|
|
12026
|
-
lineNumber:
|
|
12012
|
+
lineNumber: 530
|
|
12027
12013
|
}
|
|
12028
12014
|
}, React$1.createElement('div', {
|
|
12029
12015
|
className: classes.inputAndKeypadContainer,
|
|
12030
|
-
tabIndex: 0,
|
|
12031
12016
|
__self: this,
|
|
12032
12017
|
__source: {
|
|
12033
12018
|
fileName: _jsxFileName,
|
|
12034
|
-
lineNumber:
|
|
12019
|
+
lineNumber: 531
|
|
12035
12020
|
}
|
|
12036
12021
|
}, responseType === ResponseTypes.simple && React$1.createElement(SimpleQuestionBlock, {
|
|
12037
12022
|
onSimpleResponseChange: this.onSimpleResponseChange,
|
|
@@ -12042,7 +12027,7 @@ class Main extends React$1.Component {
|
|
|
12042
12027
|
__self: this,
|
|
12043
12028
|
__source: {
|
|
12044
12029
|
fileName: _jsxFileName,
|
|
12045
|
-
lineNumber:
|
|
12030
|
+
lineNumber: 533
|
|
12046
12031
|
}
|
|
12047
12032
|
}), responseType === ResponseTypes.advanced && React$1.createElement('div', {
|
|
12048
12033
|
className: cx(classes.expression, {
|
|
@@ -12055,7 +12040,7 @@ class Main extends React$1.Component {
|
|
|
12055
12040
|
__self: this,
|
|
12056
12041
|
__source: {
|
|
12057
12042
|
fileName: _jsxFileName,
|
|
12058
|
-
lineNumber:
|
|
12043
|
+
lineNumber: 543
|
|
12059
12044
|
}
|
|
12060
12045
|
}, React$1.createElement(Tooltip, {
|
|
12061
12046
|
ref: ref => this.setTooltipRef(ref),
|
|
@@ -12076,7 +12061,7 @@ class Main extends React$1.Component {
|
|
|
12076
12061
|
__self: this,
|
|
12077
12062
|
__source: {
|
|
12078
12063
|
fileName: _jsxFileName,
|
|
12079
|
-
lineNumber:
|
|
12064
|
+
lineNumber: 564
|
|
12080
12065
|
}
|
|
12081
12066
|
}, React$1.createElement(HorizontalKeypad, {
|
|
12082
12067
|
additionalKeys: additionalKeys,
|
|
@@ -12085,13 +12070,13 @@ class Main extends React$1.Component {
|
|
|
12085
12070
|
__self: this,
|
|
12086
12071
|
__source: {
|
|
12087
12072
|
fileName: _jsxFileName,
|
|
12088
|
-
lineNumber:
|
|
12073
|
+
lineNumber: 573
|
|
12089
12074
|
}
|
|
12090
12075
|
})) || null),
|
|
12091
12076
|
__self: this,
|
|
12092
12077
|
__source: {
|
|
12093
12078
|
fileName: _jsxFileName,
|
|
12094
|
-
lineNumber:
|
|
12079
|
+
lineNumber: 552
|
|
12095
12080
|
}
|
|
12096
12081
|
}, React$1.createElement(mq.Static, {
|
|
12097
12082
|
className: classes.static,
|
|
@@ -12105,7 +12090,7 @@ class Main extends React$1.Component {
|
|
|
12105
12090
|
__self: this,
|
|
12106
12091
|
__source: {
|
|
12107
12092
|
fileName: _jsxFileName,
|
|
12108
|
-
lineNumber:
|
|
12093
|
+
lineNumber: 583
|
|
12109
12094
|
}
|
|
12110
12095
|
}))))), viewMode && displayNote && React$1.createElement('div', {
|
|
12111
12096
|
className: classes.note,
|
|
@@ -12115,7 +12100,7 @@ class Main extends React$1.Component {
|
|
|
12115
12100
|
__self: this,
|
|
12116
12101
|
__source: {
|
|
12117
12102
|
fileName: _jsxFileName,
|
|
12118
|
-
lineNumber:
|
|
12103
|
+
lineNumber: 601
|
|
12119
12104
|
}
|
|
12120
12105
|
}), viewMode && rationale && hasText(rationale) && (!animationsDisabled ? React$1.createElement(Collapsible, {
|
|
12121
12106
|
labels: {
|
|
@@ -12125,7 +12110,7 @@ class Main extends React$1.Component {
|
|
|
12125
12110
|
__self: this,
|
|
12126
12111
|
__source: {
|
|
12127
12112
|
fileName: _jsxFileName,
|
|
12128
|
-
lineNumber:
|
|
12113
|
+
lineNumber: 608
|
|
12129
12114
|
}
|
|
12130
12115
|
}, React$1.createElement('div', {
|
|
12131
12116
|
dangerouslySetInnerHTML: {
|
|
@@ -12134,7 +12119,7 @@ class Main extends React$1.Component {
|
|
|
12134
12119
|
__self: this,
|
|
12135
12120
|
__source: {
|
|
12136
12121
|
fileName: _jsxFileName,
|
|
12137
|
-
lineNumber:
|
|
12122
|
+
lineNumber: 609
|
|
12138
12123
|
}
|
|
12139
12124
|
})) : React$1.createElement('div', {
|
|
12140
12125
|
dangerouslySetInnerHTML: {
|
|
@@ -12143,7 +12128,7 @@ class Main extends React$1.Component {
|
|
|
12143
12128
|
__self: this,
|
|
12144
12129
|
__source: {
|
|
12145
12130
|
fileName: _jsxFileName,
|
|
12146
|
-
lineNumber:
|
|
12131
|
+
lineNumber: 612
|
|
12147
12132
|
}
|
|
12148
12133
|
})));
|
|
12149
12134
|
if (tooltipModeEnabled && (showCorrectAnswerToggle || teacherInstructions && hasText(teacherInstructions) || rationale && hasText(rationale) || feedback)) {
|
|
@@ -12158,14 +12143,14 @@ class Main extends React$1.Component {
|
|
|
12158
12143
|
__self: this,
|
|
12159
12144
|
__source: {
|
|
12160
12145
|
fileName: _jsxFileName,
|
|
12161
|
-
lineNumber:
|
|
12146
|
+
lineNumber: 633
|
|
12162
12147
|
}
|
|
12163
12148
|
}, React$1.createElement('div', {
|
|
12164
12149
|
className: classes.main,
|
|
12165
12150
|
__self: this,
|
|
12166
12151
|
__source: {
|
|
12167
12152
|
fileName: _jsxFileName,
|
|
12168
|
-
lineNumber:
|
|
12153
|
+
lineNumber: 634
|
|
12169
12154
|
}
|
|
12170
12155
|
}, showCorrectAnswerToggle && React$1.createElement(CorrectAnswerToggle, {
|
|
12171
12156
|
language: language,
|
|
@@ -12176,7 +12161,7 @@ class Main extends React$1.Component {
|
|
|
12176
12161
|
__self: this,
|
|
12177
12162
|
__source: {
|
|
12178
12163
|
fileName: _jsxFileName,
|
|
12179
|
-
lineNumber:
|
|
12164
|
+
lineNumber: 636
|
|
12180
12165
|
}
|
|
12181
12166
|
})), teacherInstructions && hasText(teacherInstructions) && React$1.createElement(Collapsible, {
|
|
12182
12167
|
className: classes.collapsible,
|
|
@@ -12188,14 +12173,14 @@ class Main extends React$1.Component {
|
|
|
12188
12173
|
__self: this,
|
|
12189
12174
|
__source: {
|
|
12190
12175
|
fileName: _jsxFileName,
|
|
12191
|
-
lineNumber:
|
|
12176
|
+
lineNumber: 647
|
|
12192
12177
|
}
|
|
12193
12178
|
}, React$1.createElement(PreviewPrompt, {
|
|
12194
12179
|
prompt: teacherInstructions,
|
|
12195
12180
|
__self: this,
|
|
12196
12181
|
__source: {
|
|
12197
12182
|
fileName: _jsxFileName,
|
|
12198
|
-
lineNumber:
|
|
12183
|
+
lineNumber: 655
|
|
12199
12184
|
}
|
|
12200
12185
|
})), displayNote && hasText(note) && React$1.createElement(Collapsible, {
|
|
12201
12186
|
className: classes.collapsible,
|
|
@@ -12211,14 +12196,14 @@ class Main extends React$1.Component {
|
|
|
12211
12196
|
__self: this,
|
|
12212
12197
|
__source: {
|
|
12213
12198
|
fileName: _jsxFileName,
|
|
12214
|
-
lineNumber:
|
|
12199
|
+
lineNumber: 659
|
|
12215
12200
|
}
|
|
12216
12201
|
}, React$1.createElement(PreviewPrompt, {
|
|
12217
12202
|
prompt: note,
|
|
12218
12203
|
__self: this,
|
|
12219
12204
|
__source: {
|
|
12220
12205
|
fileName: _jsxFileName,
|
|
12221
|
-
lineNumber:
|
|
12206
|
+
lineNumber: 667
|
|
12222
12207
|
}
|
|
12223
12208
|
})), rationale && hasText(rationale) && React$1.createElement(Collapsible, {
|
|
12224
12209
|
className: classes.collapsible,
|
|
@@ -12230,14 +12215,14 @@ class Main extends React$1.Component {
|
|
|
12230
12215
|
__self: this,
|
|
12231
12216
|
__source: {
|
|
12232
12217
|
fileName: _jsxFileName,
|
|
12233
|
-
lineNumber:
|
|
12218
|
+
lineNumber: 672
|
|
12234
12219
|
}
|
|
12235
12220
|
}, React$1.createElement(PreviewPrompt, {
|
|
12236
12221
|
prompt: rationale,
|
|
12237
12222
|
__self: this,
|
|
12238
12223
|
__source: {
|
|
12239
12224
|
fileName: _jsxFileName,
|
|
12240
|
-
lineNumber:
|
|
12225
|
+
lineNumber: 680
|
|
12241
12226
|
}
|
|
12242
12227
|
})), feedback && React$1.createElement(Feedback, {
|
|
12243
12228
|
correctness: correctness.correctness,
|
|
@@ -12245,13 +12230,13 @@ class Main extends React$1.Component {
|
|
|
12245
12230
|
__self: this,
|
|
12246
12231
|
__source: {
|
|
12247
12232
|
fileName: _jsxFileName,
|
|
12248
|
-
lineNumber:
|
|
12233
|
+
lineNumber: 684
|
|
12249
12234
|
}
|
|
12250
12235
|
})),
|
|
12251
12236
|
__self: this,
|
|
12252
12237
|
__source: {
|
|
12253
12238
|
fileName: _jsxFileName,
|
|
12254
|
-
lineNumber:
|
|
12239
|
+
lineNumber: 625
|
|
12255
12240
|
}
|
|
12256
12241
|
}, React$1.createElement('div', {
|
|
12257
12242
|
className: classes.mainContainer,
|
|
@@ -12259,7 +12244,7 @@ class Main extends React$1.Component {
|
|
|
12259
12244
|
__self: this,
|
|
12260
12245
|
__source: {
|
|
12261
12246
|
fileName: _jsxFileName,
|
|
12262
|
-
lineNumber:
|
|
12247
|
+
lineNumber: 688
|
|
12263
12248
|
}
|
|
12264
12249
|
}, midContent));
|
|
12265
12250
|
}
|
|
@@ -12269,7 +12254,7 @@ class Main extends React$1.Component {
|
|
|
12269
12254
|
__self: this,
|
|
12270
12255
|
__source: {
|
|
12271
12256
|
fileName: _jsxFileName,
|
|
12272
|
-
lineNumber:
|
|
12257
|
+
lineNumber: 696
|
|
12273
12258
|
}
|
|
12274
12259
|
}, midContent);
|
|
12275
12260
|
}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "7.18.3-next.
|
|
7
|
+
"version": "7.18.3-next.2+e11044b5b",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"description": "",
|
|
10
10
|
"scripts": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"@material-ui/core": "^3.9.2",
|
|
15
15
|
"@pie-framework/mathquill": "^1.1.3",
|
|
16
16
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
17
|
-
"@pie-lib/pie-toolbox": "1.
|
|
17
|
+
"@pie-lib/pie-toolbox": "1.21.3",
|
|
18
18
|
"classnames": "^2.2.5",
|
|
19
19
|
"debug": "^4.1.1",
|
|
20
20
|
"lodash": "^4.17.10",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"author": "",
|
|
26
26
|
"license": "ISC",
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "e11044b5b4f6471a77fbd53746240054d8c2ce5d",
|
|
28
28
|
"module": "src/index.js",
|
|
29
29
|
"exports": {
|
|
30
30
|
".": "./src/index.js",
|