@pie-element/math-inline 8.0.2-next.26 → 8.0.2-next.29
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 +16 -12
- package/lib/main.js.map +1 -1
- package/module/configure.js +2 -2
- package/module/element.js +52 -48
- package/module/manifest.json +2 -2
- package/module/print.js +52 -48
- 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": "2.0.
|
|
14
|
+
"@pie-lib/pie-toolbox": "2.0.9",
|
|
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
|
@@ -236,16 +236,16 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
236
236
|
var isClickOrTouchEvent = event.type === 'click' || event.type === 'touchstart';
|
|
237
237
|
|
|
238
238
|
if (isAnswerInputFocused && (event.key === 'ArrowDown' || isClickOrTouchEvent)) {
|
|
239
|
-
_this.
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
}
|
|
239
|
+
if (_this.state.activeAnswerBlock !== id) {
|
|
240
|
+
_this.setState({
|
|
241
|
+
activeAnswerBlock: id
|
|
242
|
+
});
|
|
243
|
+
}
|
|
247
244
|
|
|
248
|
-
|
|
245
|
+
if (event.key === 'ArrowDown') {
|
|
246
|
+
_this.focusFirstKeypadElement();
|
|
247
|
+
}
|
|
248
|
+
} else if (event.key === 'Escape') {
|
|
249
249
|
_this.setState({
|
|
250
250
|
activeAnswerBlock: ''
|
|
251
251
|
});
|
|
@@ -256,14 +256,18 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
256
256
|
_this.handleKeyDown(event, id);
|
|
257
257
|
};
|
|
258
258
|
|
|
259
|
+
_this.handleEvent = handleEvent;
|
|
259
260
|
document.addEventListener('keydown', handleEvent);
|
|
260
261
|
document.addEventListener('click', handleEvent);
|
|
261
262
|
document.addEventListener('touchstart', handleEvent);
|
|
262
263
|
});
|
|
263
264
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "cleanupKeyDownListener", function () {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
265
|
+
if (_this.handleEvent) {
|
|
266
|
+
document.removeEventListener('keydown', _this.handleEvent);
|
|
267
|
+
document.removeEventListener('click', _this.handleEvent);
|
|
268
|
+
document.removeEventListener('touchstart', _this.handleEvent);
|
|
269
|
+
_this.handleEvent = null;
|
|
270
|
+
}
|
|
267
271
|
});
|
|
268
272
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDone", function () {});
|
|
269
273
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSimpleResponseChange", function (response) {
|
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","setTimeout","keypadElement","firstButton","focus","event","isAnswerInputFocused","activeElement","getAttribute","isClickOrTouchEvent","type","setState","activeAnswerBlock","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mqStatic","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","React","createRef","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","note","language","t","lng","env","mode","countResponseOccurrences","updateAria","newAnswers","nextState","sameModel","sameState","prevProps","prevState","prevResponseType","responseType","currentResponseType","cleanupKeyDownListener","ref","div","firstChild","correctness","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","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","container","current","undefined","placement","modifiers","preventOverflow","enabled","boundariesElement","flip","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","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","palette","grey","alignItems","justifyContent","borderRight","flexShrink","flexGrow","flexBasis","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 tooltipContainerRef: React.createRef(),\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 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(prevProps, prevState) {\n this.handleAnswerBlockDomUpdate();\n\n const prevResponseType = prevProps.model?.config?.responseType;\n const currentResponseType = this.props.model?.config?.responseType;\n\n if (prevResponseType !== currentResponseType) {\n this.updateAria();\n }\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 =\n 'This field supports both keypad and keyboard input. Use the keyboard to access and interact with the on-screen math keypad, which accepts LaTeX markup. Use the down arrow key to open the keypad and navigate its buttons. Use the escape key to close the keypad and return to the input field.';\n parent.insertBefore(instructionsElement, elem);\n }\n\n elem.setAttribute('aria-describedby', instructionsId);\n }\n });\n }\n };\n\n focusFirstKeypadElement = () => {\n setTimeout(() => {\n const keypadElement = document.querySelector('[data-keypad]');\n\n if (keypadElement) {\n const firstButton = keypadElement.querySelector(\"button, [role='button']\");\n\n if (firstButton) {\n firstButton.focus();\n }\n }\n }, 0);\n };\n\n handleKeyDown = (event, id) => {\n const isAnswerInputFocused = document.activeElement.getAttribute('aria-label') === 'Enter answer.';\n const isClickOrTouchEvent = event.type === 'click' || event.type === 'touchstart';\n\n if (isAnswerInputFocused && (event.key === 'ArrowDown' || isClickOrTouchEvent)) {\n this.setState({ activeAnswerBlock: id }, () => {\n if (event.key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n });\n }\n\n if ((!isAnswerInputFocused && isClickOrTouchEvent) || event.key === 'Escape') {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n onSubFieldFocus = (id) => {\n const handleEvent = (event) => {\n this.handleKeyDown(event, id);\n };\n\n document.addEventListener('keydown', handleEvent);\n document.addEventListener('click', handleEvent);\n document.addEventListener('touchstart', handleEvent);\n };\n\n cleanupKeyDownListener = () => {\n document.removeEventListener('keydown', this.handleEvent);\n document.removeEventListener('click', this.handleEvent);\n document.removeEventListener('touchstart', this.handleEvent);\n };\n\n componentWillUnmount() {\n if (this.cleanupKeyDownListener) {\n this.cleanupKeyDownListener();\n }\n }\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({ session: { ...state.session, response } }), this.callOnSessionChange);\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, tooltipContainerRef } = 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 onSubFieldFocus={this.onSubFieldFocus}\n showKeypad={!!activeAnswerBlock}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <div\n ref={tooltipContainerRef}\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 PopperProps={{\n container: tooltipContainerRef?.current || undefined,\n placement: 'bottom-start',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'body',\n },\n flip: {\n enabled: true,\n },\n },\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 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 flexShrink: 0,\n flexGrow: 0,\n flexBasis: 'auto', // take only the space needed for content + padding\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 flexGrow: 1, // take all the remaining space\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","index","instructionsId","parent","closest","instructionsElement","document","createElement","id","className","srOnly","insertBefore","setTimeout","keypadElement","firstButton","focus","event","isAnswerInputFocused","activeElement","getAttribute","isClickOrTouchEvent","type","activeAnswerBlock","setState","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mqStatic","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","React","createRef","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","note","language","t","lng","env","mode","countResponseOccurrences","updateAria","newAnswers","nextState","sameModel","sameState","prevProps","prevState","prevResponseType","responseType","currentResponseType","cleanupKeyDownListener","ref","div","firstChild","correctness","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","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","container","current","undefined","placement","modifiers","preventOverflow","enabled","boundariesElement","flip","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","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","palette","grey","alignItems","justifyContent","borderRight","flexShrink","flexGrow","flexBasis","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 tooltipContainerRef: React.createRef(),\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 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(prevProps, prevState) {\n this.handleAnswerBlockDomUpdate();\n\n const prevResponseType = prevProps.model?.config?.responseType;\n const currentResponseType = this.props.model?.config?.responseType;\n\n if (prevResponseType !== currentResponseType) {\n this.updateAria();\n }\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 =\n 'This field supports both keypad and keyboard input. Use the keyboard to access and interact with the on-screen math keypad, which accepts LaTeX markup. Use the down arrow key to open the keypad and navigate its buttons. Use the escape key to close the keypad and return to the input field.';\n parent.insertBefore(instructionsElement, elem);\n }\n\n elem.setAttribute('aria-describedby', instructionsId);\n }\n });\n }\n };\n\n focusFirstKeypadElement = () => {\n setTimeout(() => {\n const keypadElement = document.querySelector('[data-keypad]');\n\n if (keypadElement) {\n const firstButton = keypadElement.querySelector(\"button, [role='button']\");\n\n if (firstButton) {\n firstButton.focus();\n }\n }\n }, 0);\n };\n\n handleKeyDown = (event, id) => {\n const isAnswerInputFocused = document.activeElement.getAttribute('aria-label') === 'Enter answer.';\n const isClickOrTouchEvent = event.type === 'click' || event.type === 'touchstart';\n \n if (isAnswerInputFocused && (event.key === 'ArrowDown' || isClickOrTouchEvent)) {\n if (this.state.activeAnswerBlock !== id) {\n this.setState({ activeAnswerBlock: id });\n }\n \n if (event.key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n } else if ( event.key === 'Escape') {\n this.setState({ activeAnswerBlock: '' });\n }\n }; \n\n onSubFieldFocus = (id) => {\n const handleEvent = (event) => {\n this.handleKeyDown(event, id);\n };\n\n this.handleEvent = handleEvent;\n\n document.addEventListener('keydown', handleEvent);\n document.addEventListener('click', handleEvent);\n document.addEventListener('touchstart', handleEvent);\n };\n\n cleanupKeyDownListener = () => {\n if (this.handleEvent) {\n document.removeEventListener('keydown', this.handleEvent);\n document.removeEventListener('click', this.handleEvent);\n document.removeEventListener('touchstart', this.handleEvent);\n this.handleEvent = null;\n }\n };\n\n componentWillUnmount() {\n if (this.cleanupKeyDownListener) {\n this.cleanupKeyDownListener();\n }\n }\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({ session: { ...state.session, response } }), this.callOnSessionChange);\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, tooltipContainerRef } = 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 onSubFieldFocus={this.onSubFieldFocus}\n showKeypad={!!activeAnswerBlock}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <div\n ref={tooltipContainerRef}\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 PopperProps={{\n container: tooltipContainerRef?.current || undefined,\n placement: 'bottom-start',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'body',\n },\n flip: {\n enabled: true,\n },\n },\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 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 flexShrink: 0,\n flexGrow: 0,\n flexBasis: 'auto', // take only the space needed for content + padding\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 flexGrow: 1, // take all the remaining space\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/configure.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.
|
|
2
|
-
import {_dll_pie_lib__pie_toolbox_config_ui, _dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_editable_html} from "../../../@pie-lib/pie-toolbox-module@5.0.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.7/module/index.js";
|
|
2
|
+
import {_dll_pie_lib__pie_toolbox_config_ui, _dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_editable_html} from "../../../@pie-lib/pie-toolbox-module@5.0.6/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
5
5
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
package/module/element.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.
|
|
2
|
-
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.0.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.7/module/index.js";
|
|
2
|
+
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.0.6/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
5
5
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
@@ -12048,15 +12048,15 @@ class Main extends React$1.Component {
|
|
|
12048
12048
|
const isAnswerInputFocused = document.activeElement.getAttribute('aria-label') === 'Enter answer.';
|
|
12049
12049
|
const isClickOrTouchEvent = event.type === 'click' || event.type === 'touchstart';
|
|
12050
12050
|
if (isAnswerInputFocused && (event.key === 'ArrowDown' || isClickOrTouchEvent)) {
|
|
12051
|
-
this.
|
|
12052
|
-
|
|
12053
|
-
|
|
12054
|
-
|
|
12055
|
-
|
|
12056
|
-
|
|
12057
|
-
|
|
12058
|
-
|
|
12059
|
-
if (
|
|
12051
|
+
if (this.state.activeAnswerBlock !== id) {
|
|
12052
|
+
this.setState({
|
|
12053
|
+
activeAnswerBlock: id
|
|
12054
|
+
});
|
|
12055
|
+
}
|
|
12056
|
+
if (event.key === 'ArrowDown') {
|
|
12057
|
+
this.focusFirstKeypadElement();
|
|
12058
|
+
}
|
|
12059
|
+
} else if (event.key === 'Escape') {
|
|
12060
12060
|
this.setState({
|
|
12061
12061
|
activeAnswerBlock: ''
|
|
12062
12062
|
});
|
|
@@ -12068,6 +12068,7 @@ class Main extends React$1.Component {
|
|
|
12068
12068
|
const handleEvent = event => {
|
|
12069
12069
|
this.handleKeyDown(event, id);
|
|
12070
12070
|
};
|
|
12071
|
+
this.handleEvent = handleEvent;
|
|
12071
12072
|
document.addEventListener('keydown', handleEvent);
|
|
12072
12073
|
document.addEventListener('click', handleEvent);
|
|
12073
12074
|
document.addEventListener('touchstart', handleEvent);
|
|
@@ -12075,9 +12076,12 @@ class Main extends React$1.Component {
|
|
|
12075
12076
|
}
|
|
12076
12077
|
__init6() {
|
|
12077
12078
|
this.cleanupKeyDownListener = () => {
|
|
12078
|
-
|
|
12079
|
-
|
|
12080
|
-
|
|
12079
|
+
if (this.handleEvent) {
|
|
12080
|
+
document.removeEventListener('keydown', this.handleEvent);
|
|
12081
|
+
document.removeEventListener('click', this.handleEvent);
|
|
12082
|
+
document.removeEventListener('touchstart', this.handleEvent);
|
|
12083
|
+
this.handleEvent = null;
|
|
12084
|
+
}
|
|
12081
12085
|
};
|
|
12082
12086
|
}
|
|
12083
12087
|
componentWillUnmount() {
|
|
@@ -12258,7 +12262,7 @@ class Main extends React$1.Component {
|
|
|
12258
12262
|
__self: this,
|
|
12259
12263
|
__source: {
|
|
12260
12264
|
fileName: _jsxFileName,
|
|
12261
|
-
lineNumber:
|
|
12265
|
+
lineNumber: 574
|
|
12262
12266
|
}
|
|
12263
12267
|
}, React$1.createElement(mq.Static, {
|
|
12264
12268
|
className: classes.static,
|
|
@@ -12272,7 +12276,7 @@ class Main extends React$1.Component {
|
|
|
12272
12276
|
__self: this,
|
|
12273
12277
|
__source: {
|
|
12274
12278
|
fileName: _jsxFileName,
|
|
12275
|
-
lineNumber:
|
|
12279
|
+
lineNumber: 575
|
|
12276
12280
|
}
|
|
12277
12281
|
}));
|
|
12278
12282
|
const midContent = React$1.createElement('div', {
|
|
@@ -12280,14 +12284,14 @@ class Main extends React$1.Component {
|
|
|
12280
12284
|
__self: this,
|
|
12281
12285
|
__source: {
|
|
12282
12286
|
fileName: _jsxFileName,
|
|
12283
|
-
lineNumber:
|
|
12287
|
+
lineNumber: 589
|
|
12284
12288
|
}
|
|
12285
12289
|
}, mode === 'gather' && React$1.createElement('h2', {
|
|
12286
12290
|
className: classes.srOnly,
|
|
12287
12291
|
__self: this,
|
|
12288
12292
|
__source: {
|
|
12289
12293
|
fileName: _jsxFileName,
|
|
12290
|
-
lineNumber:
|
|
12294
|
+
lineNumber: 590
|
|
12291
12295
|
}
|
|
12292
12296
|
}, "Math Equation Response Question"), viewMode && teacherInstructions && hasText(teacherInstructions) && (!animationsDisabled ? React$1.createElement(Collapsible, {
|
|
12293
12297
|
className: classes.collapsible,
|
|
@@ -12298,7 +12302,7 @@ class Main extends React$1.Component {
|
|
|
12298
12302
|
__self: this,
|
|
12299
12303
|
__source: {
|
|
12300
12304
|
fileName: _jsxFileName,
|
|
12301
|
-
lineNumber:
|
|
12305
|
+
lineNumber: 596
|
|
12302
12306
|
}
|
|
12303
12307
|
}, React$1.createElement('div', {
|
|
12304
12308
|
dangerouslySetInnerHTML: {
|
|
@@ -12307,7 +12311,7 @@ class Main extends React$1.Component {
|
|
|
12307
12311
|
__self: this,
|
|
12308
12312
|
__source: {
|
|
12309
12313
|
fileName: _jsxFileName,
|
|
12310
|
-
lineNumber:
|
|
12314
|
+
lineNumber: 600
|
|
12311
12315
|
}
|
|
12312
12316
|
})) : React$1.createElement('div', {
|
|
12313
12317
|
dangerouslySetInnerHTML: {
|
|
@@ -12316,28 +12320,28 @@ class Main extends React$1.Component {
|
|
|
12316
12320
|
__self: this,
|
|
12317
12321
|
__source: {
|
|
12318
12322
|
fileName: _jsxFileName,
|
|
12319
|
-
lineNumber:
|
|
12323
|
+
lineNumber: 603
|
|
12320
12324
|
}
|
|
12321
12325
|
})), prompt && React$1.createElement('div', {
|
|
12322
12326
|
className: classes.promptContainer,
|
|
12323
12327
|
__self: this,
|
|
12324
12328
|
__source: {
|
|
12325
12329
|
fileName: _jsxFileName,
|
|
12326
|
-
lineNumber:
|
|
12330
|
+
lineNumber: 607
|
|
12327
12331
|
}
|
|
12328
12332
|
}, React$1.createElement(PreviewPrompt, {
|
|
12329
12333
|
prompt: prompt,
|
|
12330
12334
|
__self: this,
|
|
12331
12335
|
__source: {
|
|
12332
12336
|
fileName: _jsxFileName,
|
|
12333
|
-
lineNumber:
|
|
12337
|
+
lineNumber: 608
|
|
12334
12338
|
}
|
|
12335
12339
|
})), studentPrintMode ? printView : React$1.createElement(Readable, {
|
|
12336
12340
|
false: true,
|
|
12337
12341
|
__self: this,
|
|
12338
12342
|
__source: {
|
|
12339
12343
|
fileName: _jsxFileName,
|
|
12340
|
-
lineNumber:
|
|
12344
|
+
lineNumber: 615
|
|
12341
12345
|
}
|
|
12342
12346
|
}, React$1.createElement('div', {
|
|
12343
12347
|
className: classes.inputAndKeypadContainer,
|
|
@@ -12345,7 +12349,7 @@ class Main extends React$1.Component {
|
|
|
12345
12349
|
__self: this,
|
|
12346
12350
|
__source: {
|
|
12347
12351
|
fileName: _jsxFileName,
|
|
12348
|
-
lineNumber:
|
|
12352
|
+
lineNumber: 616
|
|
12349
12353
|
}
|
|
12350
12354
|
}, responseType === ResponseTypes.simple && React$1.createElement(SimpleQuestionBlock, {
|
|
12351
12355
|
onSimpleResponseChange: this.onSimpleResponseChange,
|
|
@@ -12358,7 +12362,7 @@ class Main extends React$1.Component {
|
|
|
12358
12362
|
__self: this,
|
|
12359
12363
|
__source: {
|
|
12360
12364
|
fileName: _jsxFileName,
|
|
12361
|
-
lineNumber:
|
|
12365
|
+
lineNumber: 618
|
|
12362
12366
|
}
|
|
12363
12367
|
}), responseType === ResponseTypes.advanced && React$1.createElement('div', {
|
|
12364
12368
|
ref: tooltipContainerRef,
|
|
@@ -12372,7 +12376,7 @@ class Main extends React$1.Component {
|
|
|
12372
12376
|
__self: this,
|
|
12373
12377
|
__source: {
|
|
12374
12378
|
fileName: _jsxFileName,
|
|
12375
|
-
lineNumber:
|
|
12379
|
+
lineNumber: 630
|
|
12376
12380
|
}
|
|
12377
12381
|
}, React$1.createElement(Tooltip, {
|
|
12378
12382
|
ref: ref => this.setTooltipRef(ref),
|
|
@@ -12406,7 +12410,7 @@ class Main extends React$1.Component {
|
|
|
12406
12410
|
__self: this,
|
|
12407
12411
|
__source: {
|
|
12408
12412
|
fileName: _jsxFileName,
|
|
12409
|
-
lineNumber:
|
|
12413
|
+
lineNumber: 665
|
|
12410
12414
|
}
|
|
12411
12415
|
}, React$1.createElement(HorizontalKeypad, {
|
|
12412
12416
|
additionalKeys: additionalKeys,
|
|
@@ -12415,13 +12419,13 @@ class Main extends React$1.Component {
|
|
|
12415
12419
|
__self: this,
|
|
12416
12420
|
__source: {
|
|
12417
12421
|
fileName: _jsxFileName,
|
|
12418
|
-
lineNumber:
|
|
12422
|
+
lineNumber: 674
|
|
12419
12423
|
}
|
|
12420
12424
|
})) || null),
|
|
12421
12425
|
__self: this,
|
|
12422
12426
|
__source: {
|
|
12423
12427
|
fileName: _jsxFileName,
|
|
12424
|
-
lineNumber:
|
|
12428
|
+
lineNumber: 640
|
|
12425
12429
|
}
|
|
12426
12430
|
}, React$1.createElement(mq.Static, {
|
|
12427
12431
|
className: classes.static,
|
|
@@ -12435,7 +12439,7 @@ class Main extends React$1.Component {
|
|
|
12435
12439
|
__self: this,
|
|
12436
12440
|
__source: {
|
|
12437
12441
|
fileName: _jsxFileName,
|
|
12438
|
-
lineNumber:
|
|
12442
|
+
lineNumber: 684
|
|
12439
12443
|
}
|
|
12440
12444
|
}))))), viewMode && displayNote && React$1.createElement('div', {
|
|
12441
12445
|
className: classes.note,
|
|
@@ -12445,7 +12449,7 @@ class Main extends React$1.Component {
|
|
|
12445
12449
|
__self: this,
|
|
12446
12450
|
__source: {
|
|
12447
12451
|
fileName: _jsxFileName,
|
|
12448
|
-
lineNumber:
|
|
12452
|
+
lineNumber: 702
|
|
12449
12453
|
}
|
|
12450
12454
|
}), viewMode && rationale && hasText(rationale) && (!animationsDisabled ? React$1.createElement(Collapsible, {
|
|
12451
12455
|
labels: {
|
|
@@ -12455,7 +12459,7 @@ class Main extends React$1.Component {
|
|
|
12455
12459
|
__self: this,
|
|
12456
12460
|
__source: {
|
|
12457
12461
|
fileName: _jsxFileName,
|
|
12458
|
-
lineNumber:
|
|
12462
|
+
lineNumber: 709
|
|
12459
12463
|
}
|
|
12460
12464
|
}, React$1.createElement('div', {
|
|
12461
12465
|
dangerouslySetInnerHTML: {
|
|
@@ -12464,7 +12468,7 @@ class Main extends React$1.Component {
|
|
|
12464
12468
|
__self: this,
|
|
12465
12469
|
__source: {
|
|
12466
12470
|
fileName: _jsxFileName,
|
|
12467
|
-
lineNumber:
|
|
12471
|
+
lineNumber: 710
|
|
12468
12472
|
}
|
|
12469
12473
|
})) : React$1.createElement('div', {
|
|
12470
12474
|
dangerouslySetInnerHTML: {
|
|
@@ -12473,7 +12477,7 @@ class Main extends React$1.Component {
|
|
|
12473
12477
|
__self: this,
|
|
12474
12478
|
__source: {
|
|
12475
12479
|
fileName: _jsxFileName,
|
|
12476
|
-
lineNumber:
|
|
12480
|
+
lineNumber: 713
|
|
12477
12481
|
}
|
|
12478
12482
|
})));
|
|
12479
12483
|
if (tooltipModeEnabled && (showCorrectAnswerToggle || teacherInstructions && hasText(teacherInstructions) || rationale && hasText(rationale) || feedback)) {
|
|
@@ -12488,14 +12492,14 @@ class Main extends React$1.Component {
|
|
|
12488
12492
|
__self: this,
|
|
12489
12493
|
__source: {
|
|
12490
12494
|
fileName: _jsxFileName,
|
|
12491
|
-
lineNumber:
|
|
12495
|
+
lineNumber: 734
|
|
12492
12496
|
}
|
|
12493
12497
|
}, React$1.createElement('div', {
|
|
12494
12498
|
className: classes.main,
|
|
12495
12499
|
__self: this,
|
|
12496
12500
|
__source: {
|
|
12497
12501
|
fileName: _jsxFileName,
|
|
12498
|
-
lineNumber:
|
|
12502
|
+
lineNumber: 735
|
|
12499
12503
|
}
|
|
12500
12504
|
}, showCorrectAnswerToggle && React$1.createElement(CorrectAnswerToggle, {
|
|
12501
12505
|
language: language,
|
|
@@ -12506,7 +12510,7 @@ class Main extends React$1.Component {
|
|
|
12506
12510
|
__self: this,
|
|
12507
12511
|
__source: {
|
|
12508
12512
|
fileName: _jsxFileName,
|
|
12509
|
-
lineNumber:
|
|
12513
|
+
lineNumber: 737
|
|
12510
12514
|
}
|
|
12511
12515
|
})), teacherInstructions && hasText(teacherInstructions) && React$1.createElement(Collapsible, {
|
|
12512
12516
|
className: classes.collapsible,
|
|
@@ -12518,14 +12522,14 @@ class Main extends React$1.Component {
|
|
|
12518
12522
|
__self: this,
|
|
12519
12523
|
__source: {
|
|
12520
12524
|
fileName: _jsxFileName,
|
|
12521
|
-
lineNumber:
|
|
12525
|
+
lineNumber: 748
|
|
12522
12526
|
}
|
|
12523
12527
|
}, React$1.createElement(PreviewPrompt, {
|
|
12524
12528
|
prompt: teacherInstructions,
|
|
12525
12529
|
__self: this,
|
|
12526
12530
|
__source: {
|
|
12527
12531
|
fileName: _jsxFileName,
|
|
12528
|
-
lineNumber:
|
|
12532
|
+
lineNumber: 756
|
|
12529
12533
|
}
|
|
12530
12534
|
})), displayNote && hasText(note) && React$1.createElement(Collapsible, {
|
|
12531
12535
|
className: classes.collapsible,
|
|
@@ -12541,14 +12545,14 @@ class Main extends React$1.Component {
|
|
|
12541
12545
|
__self: this,
|
|
12542
12546
|
__source: {
|
|
12543
12547
|
fileName: _jsxFileName,
|
|
12544
|
-
lineNumber:
|
|
12548
|
+
lineNumber: 760
|
|
12545
12549
|
}
|
|
12546
12550
|
}, React$1.createElement(PreviewPrompt, {
|
|
12547
12551
|
prompt: note,
|
|
12548
12552
|
__self: this,
|
|
12549
12553
|
__source: {
|
|
12550
12554
|
fileName: _jsxFileName,
|
|
12551
|
-
lineNumber:
|
|
12555
|
+
lineNumber: 768
|
|
12552
12556
|
}
|
|
12553
12557
|
})), rationale && hasText(rationale) && React$1.createElement(Collapsible, {
|
|
12554
12558
|
className: classes.collapsible,
|
|
@@ -12560,14 +12564,14 @@ class Main extends React$1.Component {
|
|
|
12560
12564
|
__self: this,
|
|
12561
12565
|
__source: {
|
|
12562
12566
|
fileName: _jsxFileName,
|
|
12563
|
-
lineNumber:
|
|
12567
|
+
lineNumber: 773
|
|
12564
12568
|
}
|
|
12565
12569
|
}, React$1.createElement(PreviewPrompt, {
|
|
12566
12570
|
prompt: rationale,
|
|
12567
12571
|
__self: this,
|
|
12568
12572
|
__source: {
|
|
12569
12573
|
fileName: _jsxFileName,
|
|
12570
|
-
lineNumber:
|
|
12574
|
+
lineNumber: 781
|
|
12571
12575
|
}
|
|
12572
12576
|
})), feedback && React$1.createElement(Feedback, {
|
|
12573
12577
|
correctness: correctness.correctness,
|
|
@@ -12575,13 +12579,13 @@ class Main extends React$1.Component {
|
|
|
12575
12579
|
__self: this,
|
|
12576
12580
|
__source: {
|
|
12577
12581
|
fileName: _jsxFileName,
|
|
12578
|
-
lineNumber:
|
|
12582
|
+
lineNumber: 785
|
|
12579
12583
|
}
|
|
12580
12584
|
})),
|
|
12581
12585
|
__self: this,
|
|
12582
12586
|
__source: {
|
|
12583
12587
|
fileName: _jsxFileName,
|
|
12584
|
-
lineNumber:
|
|
12588
|
+
lineNumber: 726
|
|
12585
12589
|
}
|
|
12586
12590
|
}, React$1.createElement('div', {
|
|
12587
12591
|
className: classes.mainContainer,
|
|
@@ -12589,7 +12593,7 @@ class Main extends React$1.Component {
|
|
|
12589
12593
|
__self: this,
|
|
12590
12594
|
__source: {
|
|
12591
12595
|
fileName: _jsxFileName,
|
|
12592
|
-
lineNumber:
|
|
12596
|
+
lineNumber: 789
|
|
12593
12597
|
}
|
|
12594
12598
|
}, midContent));
|
|
12595
12599
|
}
|
|
@@ -12599,7 +12603,7 @@ class Main extends React$1.Component {
|
|
|
12599
12603
|
__self: this,
|
|
12600
12604
|
__source: {
|
|
12601
12605
|
fileName: _jsxFileName,
|
|
12602
|
-
lineNumber:
|
|
12606
|
+
lineNumber: 797
|
|
12603
12607
|
}
|
|
12604
12608
|
}, midContent);
|
|
12605
12609
|
}
|
package/module/manifest.json
CHANGED
package/module/print.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.
|
|
2
|
-
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.0.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering_accessible, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.7/module/index.js";
|
|
2
|
+
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.0.6/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
5
5
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
@@ -11788,15 +11788,15 @@ class Main extends React$1.Component {
|
|
|
11788
11788
|
const isAnswerInputFocused = document.activeElement.getAttribute('aria-label') === 'Enter answer.';
|
|
11789
11789
|
const isClickOrTouchEvent = event.type === 'click' || event.type === 'touchstart';
|
|
11790
11790
|
if (isAnswerInputFocused && (event.key === 'ArrowDown' || isClickOrTouchEvent)) {
|
|
11791
|
-
this.
|
|
11792
|
-
|
|
11793
|
-
|
|
11794
|
-
|
|
11795
|
-
|
|
11796
|
-
|
|
11797
|
-
|
|
11798
|
-
|
|
11799
|
-
if (
|
|
11791
|
+
if (this.state.activeAnswerBlock !== id) {
|
|
11792
|
+
this.setState({
|
|
11793
|
+
activeAnswerBlock: id
|
|
11794
|
+
});
|
|
11795
|
+
}
|
|
11796
|
+
if (event.key === 'ArrowDown') {
|
|
11797
|
+
this.focusFirstKeypadElement();
|
|
11798
|
+
}
|
|
11799
|
+
} else if (event.key === 'Escape') {
|
|
11800
11800
|
this.setState({
|
|
11801
11801
|
activeAnswerBlock: ''
|
|
11802
11802
|
});
|
|
@@ -11808,6 +11808,7 @@ class Main extends React$1.Component {
|
|
|
11808
11808
|
const handleEvent = event => {
|
|
11809
11809
|
this.handleKeyDown(event, id);
|
|
11810
11810
|
};
|
|
11811
|
+
this.handleEvent = handleEvent;
|
|
11811
11812
|
document.addEventListener('keydown', handleEvent);
|
|
11812
11813
|
document.addEventListener('click', handleEvent);
|
|
11813
11814
|
document.addEventListener('touchstart', handleEvent);
|
|
@@ -11815,9 +11816,12 @@ class Main extends React$1.Component {
|
|
|
11815
11816
|
}
|
|
11816
11817
|
__init6() {
|
|
11817
11818
|
this.cleanupKeyDownListener = () => {
|
|
11818
|
-
|
|
11819
|
-
|
|
11820
|
-
|
|
11819
|
+
if (this.handleEvent) {
|
|
11820
|
+
document.removeEventListener('keydown', this.handleEvent);
|
|
11821
|
+
document.removeEventListener('click', this.handleEvent);
|
|
11822
|
+
document.removeEventListener('touchstart', this.handleEvent);
|
|
11823
|
+
this.handleEvent = null;
|
|
11824
|
+
}
|
|
11821
11825
|
};
|
|
11822
11826
|
}
|
|
11823
11827
|
componentWillUnmount() {
|
|
@@ -11998,7 +12002,7 @@ class Main extends React$1.Component {
|
|
|
11998
12002
|
__self: this,
|
|
11999
12003
|
__source: {
|
|
12000
12004
|
fileName: _jsxFileName,
|
|
12001
|
-
lineNumber:
|
|
12005
|
+
lineNumber: 574
|
|
12002
12006
|
}
|
|
12003
12007
|
}, React$1.createElement(mq.Static, {
|
|
12004
12008
|
className: classes.static,
|
|
@@ -12012,7 +12016,7 @@ class Main extends React$1.Component {
|
|
|
12012
12016
|
__self: this,
|
|
12013
12017
|
__source: {
|
|
12014
12018
|
fileName: _jsxFileName,
|
|
12015
|
-
lineNumber:
|
|
12019
|
+
lineNumber: 575
|
|
12016
12020
|
}
|
|
12017
12021
|
}));
|
|
12018
12022
|
const midContent = React$1.createElement('div', {
|
|
@@ -12020,14 +12024,14 @@ class Main extends React$1.Component {
|
|
|
12020
12024
|
__self: this,
|
|
12021
12025
|
__source: {
|
|
12022
12026
|
fileName: _jsxFileName,
|
|
12023
|
-
lineNumber:
|
|
12027
|
+
lineNumber: 589
|
|
12024
12028
|
}
|
|
12025
12029
|
}, mode === 'gather' && React$1.createElement('h2', {
|
|
12026
12030
|
className: classes.srOnly,
|
|
12027
12031
|
__self: this,
|
|
12028
12032
|
__source: {
|
|
12029
12033
|
fileName: _jsxFileName,
|
|
12030
|
-
lineNumber:
|
|
12034
|
+
lineNumber: 590
|
|
12031
12035
|
}
|
|
12032
12036
|
}, "Math Equation Response Question"), viewMode && teacherInstructions && hasText(teacherInstructions) && (!animationsDisabled ? React$1.createElement(Collapsible, {
|
|
12033
12037
|
className: classes.collapsible,
|
|
@@ -12038,7 +12042,7 @@ class Main extends React$1.Component {
|
|
|
12038
12042
|
__self: this,
|
|
12039
12043
|
__source: {
|
|
12040
12044
|
fileName: _jsxFileName,
|
|
12041
|
-
lineNumber:
|
|
12045
|
+
lineNumber: 596
|
|
12042
12046
|
}
|
|
12043
12047
|
}, React$1.createElement('div', {
|
|
12044
12048
|
dangerouslySetInnerHTML: {
|
|
@@ -12047,7 +12051,7 @@ class Main extends React$1.Component {
|
|
|
12047
12051
|
__self: this,
|
|
12048
12052
|
__source: {
|
|
12049
12053
|
fileName: _jsxFileName,
|
|
12050
|
-
lineNumber:
|
|
12054
|
+
lineNumber: 600
|
|
12051
12055
|
}
|
|
12052
12056
|
})) : React$1.createElement('div', {
|
|
12053
12057
|
dangerouslySetInnerHTML: {
|
|
@@ -12056,28 +12060,28 @@ class Main extends React$1.Component {
|
|
|
12056
12060
|
__self: this,
|
|
12057
12061
|
__source: {
|
|
12058
12062
|
fileName: _jsxFileName,
|
|
12059
|
-
lineNumber:
|
|
12063
|
+
lineNumber: 603
|
|
12060
12064
|
}
|
|
12061
12065
|
})), prompt && React$1.createElement('div', {
|
|
12062
12066
|
className: classes.promptContainer,
|
|
12063
12067
|
__self: this,
|
|
12064
12068
|
__source: {
|
|
12065
12069
|
fileName: _jsxFileName,
|
|
12066
|
-
lineNumber:
|
|
12070
|
+
lineNumber: 607
|
|
12067
12071
|
}
|
|
12068
12072
|
}, React$1.createElement(PreviewPrompt, {
|
|
12069
12073
|
prompt: prompt,
|
|
12070
12074
|
__self: this,
|
|
12071
12075
|
__source: {
|
|
12072
12076
|
fileName: _jsxFileName,
|
|
12073
|
-
lineNumber:
|
|
12077
|
+
lineNumber: 608
|
|
12074
12078
|
}
|
|
12075
12079
|
})), studentPrintMode ? printView : React$1.createElement(Readable, {
|
|
12076
12080
|
false: true,
|
|
12077
12081
|
__self: this,
|
|
12078
12082
|
__source: {
|
|
12079
12083
|
fileName: _jsxFileName,
|
|
12080
|
-
lineNumber:
|
|
12084
|
+
lineNumber: 615
|
|
12081
12085
|
}
|
|
12082
12086
|
}, React$1.createElement('div', {
|
|
12083
12087
|
className: classes.inputAndKeypadContainer,
|
|
@@ -12085,7 +12089,7 @@ class Main extends React$1.Component {
|
|
|
12085
12089
|
__self: this,
|
|
12086
12090
|
__source: {
|
|
12087
12091
|
fileName: _jsxFileName,
|
|
12088
|
-
lineNumber:
|
|
12092
|
+
lineNumber: 616
|
|
12089
12093
|
}
|
|
12090
12094
|
}, responseType === ResponseTypes.simple && React$1.createElement(SimpleQuestionBlock, {
|
|
12091
12095
|
onSimpleResponseChange: this.onSimpleResponseChange,
|
|
@@ -12098,7 +12102,7 @@ class Main extends React$1.Component {
|
|
|
12098
12102
|
__self: this,
|
|
12099
12103
|
__source: {
|
|
12100
12104
|
fileName: _jsxFileName,
|
|
12101
|
-
lineNumber:
|
|
12105
|
+
lineNumber: 618
|
|
12102
12106
|
}
|
|
12103
12107
|
}), responseType === ResponseTypes.advanced && React$1.createElement('div', {
|
|
12104
12108
|
ref: tooltipContainerRef,
|
|
@@ -12112,7 +12116,7 @@ class Main extends React$1.Component {
|
|
|
12112
12116
|
__self: this,
|
|
12113
12117
|
__source: {
|
|
12114
12118
|
fileName: _jsxFileName,
|
|
12115
|
-
lineNumber:
|
|
12119
|
+
lineNumber: 630
|
|
12116
12120
|
}
|
|
12117
12121
|
}, React$1.createElement(Tooltip, {
|
|
12118
12122
|
ref: ref => this.setTooltipRef(ref),
|
|
@@ -12146,7 +12150,7 @@ class Main extends React$1.Component {
|
|
|
12146
12150
|
__self: this,
|
|
12147
12151
|
__source: {
|
|
12148
12152
|
fileName: _jsxFileName,
|
|
12149
|
-
lineNumber:
|
|
12153
|
+
lineNumber: 665
|
|
12150
12154
|
}
|
|
12151
12155
|
}, React$1.createElement(HorizontalKeypad, {
|
|
12152
12156
|
additionalKeys: additionalKeys,
|
|
@@ -12155,13 +12159,13 @@ class Main extends React$1.Component {
|
|
|
12155
12159
|
__self: this,
|
|
12156
12160
|
__source: {
|
|
12157
12161
|
fileName: _jsxFileName,
|
|
12158
|
-
lineNumber:
|
|
12162
|
+
lineNumber: 674
|
|
12159
12163
|
}
|
|
12160
12164
|
})) || null),
|
|
12161
12165
|
__self: this,
|
|
12162
12166
|
__source: {
|
|
12163
12167
|
fileName: _jsxFileName,
|
|
12164
|
-
lineNumber:
|
|
12168
|
+
lineNumber: 640
|
|
12165
12169
|
}
|
|
12166
12170
|
}, React$1.createElement(mq.Static, {
|
|
12167
12171
|
className: classes.static,
|
|
@@ -12175,7 +12179,7 @@ class Main extends React$1.Component {
|
|
|
12175
12179
|
__self: this,
|
|
12176
12180
|
__source: {
|
|
12177
12181
|
fileName: _jsxFileName,
|
|
12178
|
-
lineNumber:
|
|
12182
|
+
lineNumber: 684
|
|
12179
12183
|
}
|
|
12180
12184
|
}))))), viewMode && displayNote && React$1.createElement('div', {
|
|
12181
12185
|
className: classes.note,
|
|
@@ -12185,7 +12189,7 @@ class Main extends React$1.Component {
|
|
|
12185
12189
|
__self: this,
|
|
12186
12190
|
__source: {
|
|
12187
12191
|
fileName: _jsxFileName,
|
|
12188
|
-
lineNumber:
|
|
12192
|
+
lineNumber: 702
|
|
12189
12193
|
}
|
|
12190
12194
|
}), viewMode && rationale && hasText(rationale) && (!animationsDisabled ? React$1.createElement(Collapsible, {
|
|
12191
12195
|
labels: {
|
|
@@ -12195,7 +12199,7 @@ class Main extends React$1.Component {
|
|
|
12195
12199
|
__self: this,
|
|
12196
12200
|
__source: {
|
|
12197
12201
|
fileName: _jsxFileName,
|
|
12198
|
-
lineNumber:
|
|
12202
|
+
lineNumber: 709
|
|
12199
12203
|
}
|
|
12200
12204
|
}, React$1.createElement('div', {
|
|
12201
12205
|
dangerouslySetInnerHTML: {
|
|
@@ -12204,7 +12208,7 @@ class Main extends React$1.Component {
|
|
|
12204
12208
|
__self: this,
|
|
12205
12209
|
__source: {
|
|
12206
12210
|
fileName: _jsxFileName,
|
|
12207
|
-
lineNumber:
|
|
12211
|
+
lineNumber: 710
|
|
12208
12212
|
}
|
|
12209
12213
|
})) : React$1.createElement('div', {
|
|
12210
12214
|
dangerouslySetInnerHTML: {
|
|
@@ -12213,7 +12217,7 @@ class Main extends React$1.Component {
|
|
|
12213
12217
|
__self: this,
|
|
12214
12218
|
__source: {
|
|
12215
12219
|
fileName: _jsxFileName,
|
|
12216
|
-
lineNumber:
|
|
12220
|
+
lineNumber: 713
|
|
12217
12221
|
}
|
|
12218
12222
|
})));
|
|
12219
12223
|
if (tooltipModeEnabled && (showCorrectAnswerToggle || teacherInstructions && hasText(teacherInstructions) || rationale && hasText(rationale) || feedback)) {
|
|
@@ -12228,14 +12232,14 @@ class Main extends React$1.Component {
|
|
|
12228
12232
|
__self: this,
|
|
12229
12233
|
__source: {
|
|
12230
12234
|
fileName: _jsxFileName,
|
|
12231
|
-
lineNumber:
|
|
12235
|
+
lineNumber: 734
|
|
12232
12236
|
}
|
|
12233
12237
|
}, React$1.createElement('div', {
|
|
12234
12238
|
className: classes.main,
|
|
12235
12239
|
__self: this,
|
|
12236
12240
|
__source: {
|
|
12237
12241
|
fileName: _jsxFileName,
|
|
12238
|
-
lineNumber:
|
|
12242
|
+
lineNumber: 735
|
|
12239
12243
|
}
|
|
12240
12244
|
}, showCorrectAnswerToggle && React$1.createElement(CorrectAnswerToggle, {
|
|
12241
12245
|
language: language,
|
|
@@ -12246,7 +12250,7 @@ class Main extends React$1.Component {
|
|
|
12246
12250
|
__self: this,
|
|
12247
12251
|
__source: {
|
|
12248
12252
|
fileName: _jsxFileName,
|
|
12249
|
-
lineNumber:
|
|
12253
|
+
lineNumber: 737
|
|
12250
12254
|
}
|
|
12251
12255
|
})), teacherInstructions && hasText(teacherInstructions) && React$1.createElement(Collapsible, {
|
|
12252
12256
|
className: classes.collapsible,
|
|
@@ -12258,14 +12262,14 @@ class Main extends React$1.Component {
|
|
|
12258
12262
|
__self: this,
|
|
12259
12263
|
__source: {
|
|
12260
12264
|
fileName: _jsxFileName,
|
|
12261
|
-
lineNumber:
|
|
12265
|
+
lineNumber: 748
|
|
12262
12266
|
}
|
|
12263
12267
|
}, React$1.createElement(PreviewPrompt, {
|
|
12264
12268
|
prompt: teacherInstructions,
|
|
12265
12269
|
__self: this,
|
|
12266
12270
|
__source: {
|
|
12267
12271
|
fileName: _jsxFileName,
|
|
12268
|
-
lineNumber:
|
|
12272
|
+
lineNumber: 756
|
|
12269
12273
|
}
|
|
12270
12274
|
})), displayNote && hasText(note) && React$1.createElement(Collapsible, {
|
|
12271
12275
|
className: classes.collapsible,
|
|
@@ -12281,14 +12285,14 @@ class Main extends React$1.Component {
|
|
|
12281
12285
|
__self: this,
|
|
12282
12286
|
__source: {
|
|
12283
12287
|
fileName: _jsxFileName,
|
|
12284
|
-
lineNumber:
|
|
12288
|
+
lineNumber: 760
|
|
12285
12289
|
}
|
|
12286
12290
|
}, React$1.createElement(PreviewPrompt, {
|
|
12287
12291
|
prompt: note,
|
|
12288
12292
|
__self: this,
|
|
12289
12293
|
__source: {
|
|
12290
12294
|
fileName: _jsxFileName,
|
|
12291
|
-
lineNumber:
|
|
12295
|
+
lineNumber: 768
|
|
12292
12296
|
}
|
|
12293
12297
|
})), rationale && hasText(rationale) && React$1.createElement(Collapsible, {
|
|
12294
12298
|
className: classes.collapsible,
|
|
@@ -12300,14 +12304,14 @@ class Main extends React$1.Component {
|
|
|
12300
12304
|
__self: this,
|
|
12301
12305
|
__source: {
|
|
12302
12306
|
fileName: _jsxFileName,
|
|
12303
|
-
lineNumber:
|
|
12307
|
+
lineNumber: 773
|
|
12304
12308
|
}
|
|
12305
12309
|
}, React$1.createElement(PreviewPrompt, {
|
|
12306
12310
|
prompt: rationale,
|
|
12307
12311
|
__self: this,
|
|
12308
12312
|
__source: {
|
|
12309
12313
|
fileName: _jsxFileName,
|
|
12310
|
-
lineNumber:
|
|
12314
|
+
lineNumber: 781
|
|
12311
12315
|
}
|
|
12312
12316
|
})), feedback && React$1.createElement(Feedback, {
|
|
12313
12317
|
correctness: correctness.correctness,
|
|
@@ -12315,13 +12319,13 @@ class Main extends React$1.Component {
|
|
|
12315
12319
|
__self: this,
|
|
12316
12320
|
__source: {
|
|
12317
12321
|
fileName: _jsxFileName,
|
|
12318
|
-
lineNumber:
|
|
12322
|
+
lineNumber: 785
|
|
12319
12323
|
}
|
|
12320
12324
|
})),
|
|
12321
12325
|
__self: this,
|
|
12322
12326
|
__source: {
|
|
12323
12327
|
fileName: _jsxFileName,
|
|
12324
|
-
lineNumber:
|
|
12328
|
+
lineNumber: 726
|
|
12325
12329
|
}
|
|
12326
12330
|
}, React$1.createElement('div', {
|
|
12327
12331
|
className: classes.mainContainer,
|
|
@@ -12329,7 +12333,7 @@ class Main extends React$1.Component {
|
|
|
12329
12333
|
__self: this,
|
|
12330
12334
|
__source: {
|
|
12331
12335
|
fileName: _jsxFileName,
|
|
12332
|
-
lineNumber:
|
|
12336
|
+
lineNumber: 789
|
|
12333
12337
|
}
|
|
12334
12338
|
}, midContent));
|
|
12335
12339
|
}
|
|
@@ -12339,7 +12343,7 @@ class Main extends React$1.Component {
|
|
|
12339
12343
|
__self: this,
|
|
12340
12344
|
__source: {
|
|
12341
12345
|
fileName: _jsxFileName,
|
|
12342
|
-
lineNumber:
|
|
12346
|
+
lineNumber: 797
|
|
12343
12347
|
}
|
|
12344
12348
|
}, midContent);
|
|
12345
12349
|
}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "8.0.2-next.
|
|
7
|
+
"version": "8.0.2-next.29+ddb9d4442",
|
|
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": "2.0.
|
|
17
|
+
"@pie-lib/pie-toolbox": "2.0.9",
|
|
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": "ddb9d444243b881b3a468ecfb5bab551511a2495",
|
|
28
28
|
"module": "src/index.js",
|
|
29
29
|
"exports": {
|
|
30
30
|
".": "./src/index.js",
|