@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.
@@ -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.8",
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",
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@pie-framework/math-validation": "^1.2.2",
13
- "@pie-lib/pie-toolbox": "2.0.8",
13
+ "@pie-lib/pie-toolbox": "2.0.9",
14
14
  "debug": "^3.1.0",
15
15
  "lodash": "^4.17.15"
16
16
  },
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.setState({
240
- activeAnswerBlock: id
241
- }, function () {
242
- if (event.key === 'ArrowDown') {
243
- _this.focusFirstKeypadElement();
244
- }
245
- });
246
- }
239
+ if (_this.state.activeAnswerBlock !== id) {
240
+ _this.setState({
241
+ activeAnswerBlock: id
242
+ });
243
+ }
247
244
 
248
- if (!isAnswerInputFocused && isClickOrTouchEvent || event.key === 'Escape') {
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
- document.removeEventListener('keydown', _this.handleEvent);
265
- document.removeEventListener('click', _this.handleEvent);
266
- document.removeEventListener('touchstart', _this.handleEvent);
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"}
@@ -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.6/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.5/module/index.js";
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.6/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.5/module/index.js";
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.setState({
12052
- activeAnswerBlock: id
12053
- }, () => {
12054
- if (event.key === 'ArrowDown') {
12055
- this.focusFirstKeypadElement();
12056
- }
12057
- });
12058
- }
12059
- if (!isAnswerInputFocused && isClickOrTouchEvent || event.key === 'Escape') {
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
- document.removeEventListener('keydown', this.handleEvent);
12079
- document.removeEventListener('click', this.handleEvent);
12080
- document.removeEventListener('touchstart', this.handleEvent);
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: 569
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: 570
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: 584
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: 585
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: 591
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: 595
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: 598
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: 602
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: 603
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: 610
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: 611
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: 613
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: 625
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: 660
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: 669
12422
+ lineNumber: 674
12419
12423
  }
12420
12424
  })) || null),
12421
12425
  __self: this,
12422
12426
  __source: {
12423
12427
  fileName: _jsxFileName,
12424
- lineNumber: 635
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: 679
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: 697
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: 704
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: 705
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: 708
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: 729
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: 730
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: 732
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: 743
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: 751
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: 755
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: 763
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: 768
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: 776
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: 780
12582
+ lineNumber: 785
12579
12583
  }
12580
12584
  })),
12581
12585
  __self: this,
12582
12586
  __source: {
12583
12587
  fileName: _jsxFileName,
12584
- lineNumber: 721
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: 784
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: 792
12606
+ lineNumber: 797
12603
12607
  }
12604
12608
  }, midContent);
12605
12609
  }
@@ -4,11 +4,11 @@
4
4
  "modules": [
5
5
  {
6
6
  "name": "@pie-lib/pie-toolbox-math-rendering-module",
7
- "version": "2.0.6"
7
+ "version": "2.0.7"
8
8
  },
9
9
  {
10
10
  "name": "@pie-lib/pie-toolbox-module",
11
- "version": "5.0.5"
11
+ "version": "5.0.6"
12
12
  }
13
13
  ]
14
14
  }
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.6/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.5/module/index.js";
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.setState({
11792
- activeAnswerBlock: id
11793
- }, () => {
11794
- if (event.key === 'ArrowDown') {
11795
- this.focusFirstKeypadElement();
11796
- }
11797
- });
11798
- }
11799
- if (!isAnswerInputFocused && isClickOrTouchEvent || event.key === 'Escape') {
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
- document.removeEventListener('keydown', this.handleEvent);
11819
- document.removeEventListener('click', this.handleEvent);
11820
- document.removeEventListener('touchstart', this.handleEvent);
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: 569
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: 570
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: 584
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: 585
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: 591
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: 595
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: 598
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: 602
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: 603
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: 610
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: 611
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: 613
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: 625
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: 660
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: 669
12162
+ lineNumber: 674
12159
12163
  }
12160
12164
  })) || null),
12161
12165
  __self: this,
12162
12166
  __source: {
12163
12167
  fileName: _jsxFileName,
12164
- lineNumber: 635
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: 679
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: 697
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: 704
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: 705
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: 708
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: 729
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: 730
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: 732
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: 743
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: 751
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: 755
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: 763
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: 768
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: 776
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: 780
12322
+ lineNumber: 785
12319
12323
  }
12320
12324
  })),
12321
12325
  __self: this,
12322
12326
  __source: {
12323
12327
  fileName: _jsxFileName,
12324
- lineNumber: 721
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: 784
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: 792
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.26+41ed50dd6",
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.8",
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": "41ed50dd698741ffe4a7fafc1d5171c6a664a7e2",
27
+ "gitHead": "ddb9d444243b881b3a468ecfb5bab551511a2495",
28
28
  "module": "src/index.js",
29
29
  "exports": {
30
30
  ".": "./src/index.js",