@pie-element/math-inline 8.4.9 → 8.4.10-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/main.js CHANGED
@@ -266,10 +266,10 @@ var Main = /*#__PURE__*/function (_React$Component) {
266
266
  }, 0);
267
267
  });
268
268
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleKeyDown", function (event, id) {
269
- var _this$mqStatic$inputR, _document$activeEleme;
269
+ var _this$mqStatic$inputR, _this$mqStatic$inputR2, _document$activeEleme;
270
270
 
271
271
  var isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, _this.root);
272
- var isAnswerInputFocused = _this.mqStatic ? (_this$mqStatic$inputR = _this.mqStatic.inputRef) === null || _this$mqStatic$inputR === void 0 ? void 0 : _this$mqStatic$inputR.current.contains(document.activeElement) : ((_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.getAttribute('aria-label')) === 'Enter answer.';
272
+ var isAnswerInputFocused = _this.mqStatic && (_this$mqStatic$inputR = _this.mqStatic.inputRef) !== null && _this$mqStatic$inputR !== void 0 && _this$mqStatic$inputR.current ? (_this$mqStatic$inputR2 = _this.mqStatic.inputRef) === null || _this$mqStatic$inputR2 === void 0 ? void 0 : _this$mqStatic$inputR2.current.contains(document.activeElement) : ((_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.getAttribute('aria-label')) === 'Enter answer.';
273
273
  var key = event.key,
274
274
  type = event.type;
275
275
  var isClickOrTouchEvent = type === 'click' || type === 'touchstart';
@@ -295,14 +295,15 @@ var Main = /*#__PURE__*/function (_React$Component) {
295
295
  }
296
296
  });
297
297
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSubFieldFocus", function (id) {
298
- var handleEvent = function handleEvent(event) {
299
- _this.handleKeyDown(event, id);
300
- };
298
+ if (!_this.handleEvent) {
299
+ _this.handleEvent = function (event) {
300
+ _this.handleKeyDown(event, id);
301
+ };
301
302
 
302
- _this.handleEvent = handleEvent;
303
- document.addEventListener('keydown', handleEvent);
304
- document.addEventListener('click', handleEvent);
305
- document.addEventListener('touchstart', handleEvent);
303
+ document.addEventListener('keydown', _this.handleEvent);
304
+ document.addEventListener('click', _this.handleEvent);
305
+ document.addEventListener('touchstart', _this.handleEvent);
306
+ }
306
307
  });
307
308
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "cleanupKeyDownListener", function () {
308
309
  if (_this.handleEvent) {
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","isChildOfCurrentPieElement","child","parent","node","parentNode","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","parseAnswers","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","closest","instructionsElement","document","createElement","id","className","srOnly","insertBefore","setTimeout","keypadElement","firstButton","focus","event","isTrigerredFromActualPieElement","target","isAnswerInputFocused","mqStatic","inputRef","current","contains","activeElement","getAttribute","type","isClickOrTouchEvent","activeAnswerBlock","cleanupKeyDownListener","setState","onSubFieldFocus","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","isKeypadOpen","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","React","createRef","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","nextSession","note","language","t","lng","env","mode","countResponseOccurrences","updateAria","newAnswers","nextState","sameModel","sameState","prevProps","prevState","prevResponseType","responseType","currentResponseType","ref","div","firstChild","correctness","extraCSSRules","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","customKeys","role","displayNote","emptyResponse","showCorrectAnswerToggle","tooltipModeEnabled","staticLatex","viewMode","studentPrintMode","printView","printContainer","subFieldChanged","getFieldName","setInput","onBlur","midContent","main","collapsible","hidden","visible","__html","promptContainer","inputAndKeypadContainer","ResponseTypes","simple","onSimpleResponseChange","advanced","showCorrectness","correctAnswerShown","printCorrect","setTooltipRef","tooltip","keypadTooltip","popper","keypadTooltipPopper","container","undefined","placement","modifiers","preventOverflow","enabled","boundariesElement","flip","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","domNode","ReactDOM","findDOMNode","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","paddingRight","paddingLeft","top","borderColor","lineHeight","left","right","borderTop","letterSpacing","margin","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, UiLayout } from '@pie-lib/pie-toolbox/render-ui';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\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';\nimport ReactDOM from 'react-dom';\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 isChildOfCurrentPieElement(child, parent) {\n let node = child;\n while (node !== null) {\n if (parent && node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\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\nfunction parseAnswers(session, model){\n const answers = {};\n\n if (model.config && model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (session &&\n session.answers &&\n session.answers[`r${answerBlocks}`] &&\n session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n return answers;\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 const {model, session} = props;\n const answers = parseAnswers(session, model);\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\n const { session } = this.props;\n const { session: nextSession = {} } = nextProps || {};\n\n // in case session props changed in parent, we need to catch this and update local state\n // example: when env is changing in pieoneer\n if (session && nextSession && !isEqual(session.answers, nextSession.answers)) {\n this.setState({\n session: {...nextSession, answers: parseAnswers(nextSession, this.props.model)},\n });\n }\n\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 isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);\n const isAnswerInputFocused = this.mqStatic ? this.mqStatic.inputRef?.current.contains(document.activeElement) : document.activeElement?.getAttribute('aria-label') === 'Enter answer.';\n const { key, type } = event;\n const isClickOrTouchEvent = type === 'click' || type === 'touchstart';\n\n if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {\n if (this.state.activeAnswerBlock !== id && isTrigerredFromActualPieElement) {\n this.cleanupKeyDownListener();\n this.setState({ activeAnswerBlock: id }, () => {\n this.onSubFieldFocus(id);\n if (key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n });\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 // our keypad is in tooltip\n // in this way we see if event was triggered from the keypad\n const isKeypadOpen = currentTarget && currentTarget.closest('[role=tooltip]');\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 // if event was trigered from the keypad, avoid closing the keypad\n if (!isKeypadOpen) {\n this.setState({ activeAnswerBlock: '' });\n }\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 extraCSSRules,\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 id,\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) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\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: false,\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) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\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 <UiLayout extraCSSRules={extraCSSRules}>\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 </UiLayout>\n );\n }\n\n return (\n <UiLayout\n id={id}\n extraCSSRules={extraCSSRules}\n className={classes.mainContainer}\n ref={(r) => {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(r);\n\n this.root = domNode || this.root;\n }}\n >\n {midContent}\n </UiLayout>\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 padding: theme.spacing.unit / 4,\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n // PD-4803 unset padding as events are not correctly propagated in the proximity of math input\n paddingRight: '0 !important',\n paddingLeft: '0 !important',\n '& > .mq-editable-field': {\n minWidth: '10px',\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","isChildOfCurrentPieElement","child","parent","node","parentNode","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","parseAnswers","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","closest","instructionsElement","document","createElement","id","className","srOnly","insertBefore","setTimeout","keypadElement","firstButton","focus","event","isTrigerredFromActualPieElement","target","isAnswerInputFocused","mqStatic","inputRef","current","contains","activeElement","getAttribute","type","isClickOrTouchEvent","activeAnswerBlock","cleanupKeyDownListener","setState","onSubFieldFocus","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","completeAnswer","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","isKeypadOpen","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","React","createRef","window","registerEmbed","htmlString","blockContainer","blockResponse","blockMath","text","pattern","matches","match","nextProps","nextConfig","nextSession","note","language","t","lng","env","mode","countResponseOccurrences","updateAria","newAnswers","nextState","sameModel","sameState","prevProps","prevState","prevResponseType","responseType","currentResponseType","ref","div","firstChild","correctness","extraCSSRules","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","customKeys","role","displayNote","emptyResponse","showCorrectAnswerToggle","tooltipModeEnabled","staticLatex","viewMode","studentPrintMode","printView","printContainer","subFieldChanged","getFieldName","setInput","onBlur","midContent","main","collapsible","hidden","visible","__html","promptContainer","inputAndKeypadContainer","ResponseTypes","simple","onSimpleResponseChange","advanced","showCorrectness","correctAnswerShown","printCorrect","setTooltipRef","tooltip","keypadTooltip","popper","keypadTooltipPopper","container","undefined","placement","modifiers","preventOverflow","enabled","boundariesElement","flip","responseContainer","width","onClick","tooltipPopper","toggle","toggleShowCorrect","mainContainer","r","domNode","ReactDOM","findDOMNode","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","paddingRight","paddingLeft","top","borderColor","lineHeight","left","right","borderTop","letterSpacing","margin","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, UiLayout } from '@pie-lib/pie-toolbox/render-ui';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering';\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';\nimport ReactDOM from 'react-dom';\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 isChildOfCurrentPieElement(child, parent) {\n let node = child;\n while (node !== null) {\n if (parent && node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\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\nfunction parseAnswers(session, model) {\n const answers = {};\n\n if (model.config && model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (session &&\n session.answers &&\n session.answers[`r${answerBlocks}`] &&\n session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n return answers;\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 const { model, session } = props;\n const answers = parseAnswers(session, model);\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\n const { session } = this.props;\n const { session: nextSession = {} } = nextProps || {};\n\n // in case session props changed in parent, we need to catch this and update local state\n // example: when env is changing in pieoneer\n if (session && nextSession && !isEqual(session.answers, nextSession.answers)) {\n this.setState({\n session: { ...nextSession, answers: parseAnswers(nextSession, this.props.model) },\n });\n }\n\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 isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);\n const isAnswerInputFocused =\n this.mqStatic && this.mqStatic.inputRef?.current\n ? this.mqStatic.inputRef?.current.contains(document.activeElement)\n : document.activeElement?.getAttribute('aria-label') === 'Enter answer.';\n const { key, type } = event;\n const isClickOrTouchEvent = type === 'click' || type === 'touchstart';\n\n if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {\n if (this.state.activeAnswerBlock !== id && isTrigerredFromActualPieElement) {\n this.cleanupKeyDownListener();\n this.setState({ activeAnswerBlock: id }, () => {\n this.onSubFieldFocus(id);\n if (key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n });\n }\n } else if (event.key === 'Escape') {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n onSubFieldFocus = (id) => {\n if (!this.handleEvent) {\n this.handleEvent = (event) => {\n this.handleKeyDown(event, id);\n };\n\n document.addEventListener('keydown', this.handleEvent);\n document.addEventListener('click', this.handleEvent);\n document.addEventListener('touchstart', this.handleEvent);\n }\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 // our keypad is in tooltip\n // in this way we see if event was triggered from the keypad\n const isKeypadOpen = currentTarget && currentTarget.closest('[role=tooltip]');\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 // if event was trigered from the keypad, avoid closing the keypad\n if (!isKeypadOpen) {\n this.setState({ activeAnswerBlock: '' });\n }\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 extraCSSRules,\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 id,\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) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\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: false,\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) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\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 <UiLayout extraCSSRules={extraCSSRules}>\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 </UiLayout>\n );\n }\n\n return (\n <UiLayout\n id={id}\n extraCSSRules={extraCSSRules}\n className={classes.mainContainer}\n ref={(r) => {\n // eslint-disable-next-line react/no-find-dom-node\n const domNode = ReactDOM.findDOMNode(r);\n\n this.root = domNode || this.root;\n }}\n >\n {midContent}\n </UiLayout>\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 padding: theme.spacing.unit / 4,\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n // PD-4803 unset padding as events are not correctly propagated in the proximity of math input\n paddingRight: '0 !important',\n paddingLeft: '0 !important',\n '& > .mq-editable-field': {\n minWidth: '10px',\n padding: theme.spacing.unit / 4,\n },\n },\n '& sup': {\n top: 0,\n },\n },\n },\n static: {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n },\n inputAndKeypadContainer: {\n position: 'relative',\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n },\n showCorrectness: {\n border: '2px solid',\n },\n correctAnswerShown: {\n padding: theme.spacing.unit,\n letterSpacing: '0.5px',\n },\n printCorrect: {\n border: `2px solid ${color.correct()} !important`,\n },\n correct: {\n borderColor: `${color.correct()} !important`,\n },\n incorrect: {\n borderColor: `${color.incorrect()} !important`,\n },\n blockContainer: {\n margin: `${theme.spacing.unit}px !important`,\n display: 'inline-flex',\n border: '2px solid grey !important',\n },\n blockResponse: {\n color: 'grey',\n background: theme.palette.grey['A100'],\n fontSize: '0.8rem !important',\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: `2px solid ${color.disabled()} !important`,\n flexShrink: 0,\n flexGrow: 0,\n flexBasis: 'auto', // take only the space needed for content + padding\n },\n toggle: {\n color: color.text(),\n marginBottom: theme.spacing.unit * 2,\n },\n blockMath: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: `${theme.spacing.unit / 2}px !important`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexGrow: 1, // take all the remaining space\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n printContainer: {\n marginBottom: theme.spacing.unit,\n pointerEvents: 'none',\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
package/module/element.js CHANGED
@@ -11974,7 +11974,7 @@ class Main extends React$1.Component {
11974
11974
  }
11975
11975
  countResponseOccurrences(expression) {
11976
11976
  const pattern = /\{\{response\}\}/g;
11977
- const matches = _optionalChain([expression, 'optionalAccess', _13 => _13.match, 'call', _14 => _14(pattern)]);
11977
+ const matches = _optionalChain([expression, 'optionalAccess', _16 => _16.match, 'call', _17 => _17(pattern)]);
11978
11978
  return matches ? matches.length : 0;
11979
11979
  }
11980
11980
  UNSAFE_componentWillReceiveProps(nextProps) {
@@ -12042,8 +12042,8 @@ class Main extends React$1.Component {
12042
12042
  }
12043
12043
  componentDidUpdate(prevProps, prevState) {
12044
12044
  this.handleAnswerBlockDomUpdate();
12045
- const prevResponseType = _optionalChain([prevProps, 'access', _15 => _15.model, 'optionalAccess', _16 => _16.config, 'optionalAccess', _17 => _17.responseType]);
12046
- const currentResponseType = _optionalChain([this, 'access', _18 => _18.props, 'access', _19 => _19.model, 'optionalAccess', _20 => _20.config, 'optionalAccess', _21 => _21.responseType]);
12045
+ const prevResponseType = _optionalChain([prevProps, 'access', _18 => _18.model, 'optionalAccess', _19 => _19.config, 'optionalAccess', _20 => _20.responseType]);
12046
+ const currentResponseType = _optionalChain([this, 'access', _21 => _21.props, 'access', _22 => _22.model, 'optionalAccess', _23 => _23.config, 'optionalAccess', _24 => _24.responseType]);
12047
12047
  if (prevResponseType !== currentResponseType) {
12048
12048
  this.updateAria();
12049
12049
  }
@@ -12090,7 +12090,7 @@ class Main extends React$1.Component {
12090
12090
  __init4() {
12091
12091
  this.handleKeyDown = (event, id) => {
12092
12092
  const isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);
12093
- const isAnswerInputFocused = this.mqStatic ? _optionalChain([this, 'access', _22 => _22.mqStatic, 'access', _23 => _23.inputRef, 'optionalAccess', _24 => _24.current, 'access', _25 => _25.contains, 'call', _26 => _26(document.activeElement)]) : _optionalChain([document, 'access', _27 => _27.activeElement, 'optionalAccess', _28 => _28.getAttribute, 'call', _29 => _29('aria-label')]) === 'Enter answer.';
12093
+ const isAnswerInputFocused = this.mqStatic && _optionalChain([this, 'access', _25 => _25.mqStatic, 'access', _26 => _26.inputRef, 'optionalAccess', _27 => _27.current]) ? _optionalChain([this, 'access', _28 => _28.mqStatic, 'access', _29 => _29.inputRef, 'optionalAccess', _30 => _30.current, 'access', _31 => _31.contains, 'call', _32 => _32(document.activeElement)]) : _optionalChain([document, 'access', _33 => _33.activeElement, 'optionalAccess', _34 => _34.getAttribute, 'call', _35 => _35('aria-label')]) === 'Enter answer.';
12094
12094
  const {key, type} = event;
12095
12095
  const isClickOrTouchEvent = type === 'click' || type === 'touchstart';
12096
12096
  if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {
@@ -12114,13 +12114,14 @@ class Main extends React$1.Component {
12114
12114
  }
12115
12115
  __init5() {
12116
12116
  this.onSubFieldFocus = id => {
12117
- const handleEvent = event => {
12118
- this.handleKeyDown(event, id);
12119
- };
12120
- this.handleEvent = handleEvent;
12121
- document.addEventListener('keydown', handleEvent);
12122
- document.addEventListener('click', handleEvent);
12123
- document.addEventListener('touchstart', handleEvent);
12117
+ if (!this.handleEvent) {
12118
+ this.handleEvent = event => {
12119
+ this.handleKeyDown(event, id);
12120
+ };
12121
+ document.addEventListener('keydown', this.handleEvent);
12122
+ document.addEventListener('click', this.handleEvent);
12123
+ document.addEventListener('touchstart', this.handleEvent);
12124
+ }
12124
12125
  };
12125
12126
  }
12126
12127
  __init6() {
@@ -12263,7 +12264,7 @@ class Main extends React$1.Component {
12263
12264
  }
12264
12265
  function getDeepChildDataKeypad(element, depth = 0) {
12265
12266
  if (!element || depth >= 4) return null;
12266
- const child = _optionalChain([element, 'optionalAccess', _30 => _30.children, 'optionalAccess', _31 => _31[0]]);
12267
+ const child = _optionalChain([element, 'optionalAccess', _36 => _36.children, 'optionalAccess', _37 => _37[0]]);
12267
12268
  if (!child) return null;
12268
12269
  if (child.attributes && child.attributes['data-keypad']) {
12269
12270
  return child;
@@ -12272,7 +12273,7 @@ class Main extends React$1.Component {
12272
12273
  }
12273
12274
  const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);
12274
12275
  const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;
12275
- if (!relatedTarget || !currentTarget || !_optionalChain([childWithDataKeypad, 'optionalAccess', _32 => _32.attributes, 'access', _33 => _33['data-keypad']])) {
12276
+ if (!relatedTarget || !currentTarget || !_optionalChain([childWithDataKeypad, 'optionalAccess', _38 => _38.attributes, 'access', _39 => _39['data-keypad']])) {
12276
12277
  if (!isKeypadOpen) {
12277
12278
  this.setState({
12278
12279
  activeAnswerBlock: ''
@@ -12314,7 +12315,7 @@ class Main extends React$1.Component {
12314
12315
  __self: this,
12315
12316
  __source: {
12316
12317
  fileName: _jsxFileName,
12317
- lineNumber: 616
12318
+ lineNumber: 619
12318
12319
  }
12319
12320
  }, React$1.createElement(mq.Static, {
12320
12321
  className: classes.static,
@@ -12330,7 +12331,7 @@ class Main extends React$1.Component {
12330
12331
  __self: this,
12331
12332
  __source: {
12332
12333
  fileName: _jsxFileName,
12333
- lineNumber: 617
12334
+ lineNumber: 620
12334
12335
  }
12335
12336
  }));
12336
12337
  const midContent = React$1.createElement('div', {
@@ -12338,14 +12339,14 @@ class Main extends React$1.Component {
12338
12339
  __self: this,
12339
12340
  __source: {
12340
12341
  fileName: _jsxFileName,
12341
- lineNumber: 633
12342
+ lineNumber: 636
12342
12343
  }
12343
12344
  }, mode === 'gather' && React$1.createElement('h2', {
12344
12345
  className: classes.srOnly,
12345
12346
  __self: this,
12346
12347
  __source: {
12347
12348
  fileName: _jsxFileName,
12348
- lineNumber: 634
12349
+ lineNumber: 637
12349
12350
  }
12350
12351
  }, "Math Equation Response Question"), viewMode && teacherInstructions && hasText(teacherInstructions) && (!animationsDisabled ? React$1.createElement(Collapsible, {
12351
12352
  className: classes.collapsible,
@@ -12356,7 +12357,7 @@ class Main extends React$1.Component {
12356
12357
  __self: this,
12357
12358
  __source: {
12358
12359
  fileName: _jsxFileName,
12359
- lineNumber: 640
12360
+ lineNumber: 643
12360
12361
  }
12361
12362
  }, React$1.createElement('div', {
12362
12363
  dangerouslySetInnerHTML: {
@@ -12365,7 +12366,7 @@ class Main extends React$1.Component {
12365
12366
  __self: this,
12366
12367
  __source: {
12367
12368
  fileName: _jsxFileName,
12368
- lineNumber: 644
12369
+ lineNumber: 647
12369
12370
  }
12370
12371
  })) : React$1.createElement('div', {
12371
12372
  dangerouslySetInnerHTML: {
@@ -12374,28 +12375,28 @@ class Main extends React$1.Component {
12374
12375
  __self: this,
12375
12376
  __source: {
12376
12377
  fileName: _jsxFileName,
12377
- lineNumber: 647
12378
+ lineNumber: 650
12378
12379
  }
12379
12380
  })), prompt && React$1.createElement('div', {
12380
12381
  className: classes.promptContainer,
12381
12382
  __self: this,
12382
12383
  __source: {
12383
12384
  fileName: _jsxFileName,
12384
- lineNumber: 651
12385
+ lineNumber: 654
12385
12386
  }
12386
12387
  }, React$1.createElement(PreviewPrompt, {
12387
12388
  prompt: prompt,
12388
12389
  __self: this,
12389
12390
  __source: {
12390
12391
  fileName: _jsxFileName,
12391
- lineNumber: 652
12392
+ lineNumber: 655
12392
12393
  }
12393
12394
  })), studentPrintMode ? printView : React$1.createElement(Readable, {
12394
12395
  false: true,
12395
12396
  __self: this,
12396
12397
  __source: {
12397
12398
  fileName: _jsxFileName,
12398
- lineNumber: 659
12399
+ lineNumber: 662
12399
12400
  }
12400
12401
  }, React$1.createElement('div', {
12401
12402
  className: classes.inputAndKeypadContainer,
@@ -12403,7 +12404,7 @@ class Main extends React$1.Component {
12403
12404
  __self: this,
12404
12405
  __source: {
12405
12406
  fileName: _jsxFileName,
12406
- lineNumber: 660
12407
+ lineNumber: 663
12407
12408
  }
12408
12409
  }, responseType === ResponseTypes.simple && React$1.createElement(SimpleQuestionBlock, {
12409
12410
  onSimpleResponseChange: this.onSimpleResponseChange,
@@ -12416,7 +12417,7 @@ class Main extends React$1.Component {
12416
12417
  __self: this,
12417
12418
  __source: {
12418
12419
  fileName: _jsxFileName,
12419
- lineNumber: 662
12420
+ lineNumber: 665
12420
12421
  }
12421
12422
  }), responseType === ResponseTypes.advanced && React$1.createElement('div', {
12422
12423
  ref: tooltipContainerRef,
@@ -12430,7 +12431,7 @@ class Main extends React$1.Component {
12430
12431
  __self: this,
12431
12432
  __source: {
12432
12433
  fileName: _jsxFileName,
12433
- lineNumber: 674
12434
+ lineNumber: 677
12434
12435
  }
12435
12436
  }, React$1.createElement(Tooltip, {
12436
12437
  ref: ref => this.setTooltipRef(ref),
@@ -12442,7 +12443,7 @@ class Main extends React$1.Component {
12442
12443
  popper: classes.keypadTooltipPopper
12443
12444
  },
12444
12445
  PopperProps: {
12445
- container: _optionalChain([tooltipContainerRef, 'optionalAccess', _34 => _34.current]) || undefined,
12446
+ container: _optionalChain([tooltipContainerRef, 'optionalAccess', _40 => _40.current]) || undefined,
12446
12447
  placement: 'bottom-start',
12447
12448
  modifiers: {
12448
12449
  preventOverflow: {
@@ -12464,7 +12465,7 @@ class Main extends React$1.Component {
12464
12465
  __self: this,
12465
12466
  __source: {
12466
12467
  fileName: _jsxFileName,
12467
- lineNumber: 709
12468
+ lineNumber: 712
12468
12469
  }
12469
12470
  }, React$1.createElement(HorizontalKeypad, {
12470
12471
  additionalKeys: additionalKeys,
@@ -12473,13 +12474,13 @@ class Main extends React$1.Component {
12473
12474
  __self: this,
12474
12475
  __source: {
12475
12476
  fileName: _jsxFileName,
12476
- lineNumber: 718
12477
+ lineNumber: 721
12477
12478
  }
12478
12479
  })) || null),
12479
12480
  __self: this,
12480
12481
  __source: {
12481
12482
  fileName: _jsxFileName,
12482
- lineNumber: 684
12483
+ lineNumber: 687
12483
12484
  }
12484
12485
  }, React$1.createElement(mq.Static, {
12485
12486
  className: classes.static,
@@ -12495,7 +12496,7 @@ class Main extends React$1.Component {
12495
12496
  __self: this,
12496
12497
  __source: {
12497
12498
  fileName: _jsxFileName,
12498
- lineNumber: 728
12499
+ lineNumber: 731
12499
12500
  }
12500
12501
  }))))), viewMode && displayNote && React$1.createElement('div', {
12501
12502
  className: classes.note,
@@ -12505,7 +12506,7 @@ class Main extends React$1.Component {
12505
12506
  __self: this,
12506
12507
  __source: {
12507
12508
  fileName: _jsxFileName,
12508
- lineNumber: 748
12509
+ lineNumber: 751
12509
12510
  }
12510
12511
  }), viewMode && rationale && hasText(rationale) && (!animationsDisabled ? React$1.createElement(Collapsible, {
12511
12512
  labels: {
@@ -12515,7 +12516,7 @@ class Main extends React$1.Component {
12515
12516
  __self: this,
12516
12517
  __source: {
12517
12518
  fileName: _jsxFileName,
12518
- lineNumber: 755
12519
+ lineNumber: 758
12519
12520
  }
12520
12521
  }, React$1.createElement('div', {
12521
12522
  dangerouslySetInnerHTML: {
@@ -12524,7 +12525,7 @@ class Main extends React$1.Component {
12524
12525
  __self: this,
12525
12526
  __source: {
12526
12527
  fileName: _jsxFileName,
12527
- lineNumber: 756
12528
+ lineNumber: 759
12528
12529
  }
12529
12530
  })) : React$1.createElement('div', {
12530
12531
  dangerouslySetInnerHTML: {
@@ -12533,7 +12534,7 @@ class Main extends React$1.Component {
12533
12534
  __self: this,
12534
12535
  __source: {
12535
12536
  fileName: _jsxFileName,
12536
- lineNumber: 759
12537
+ lineNumber: 762
12537
12538
  }
12538
12539
  })));
12539
12540
  if (tooltipModeEnabled && (showCorrectAnswerToggle || teacherInstructions && hasText(teacherInstructions) || rationale && hasText(rationale) || feedback)) {
@@ -12542,7 +12543,7 @@ class Main extends React$1.Component {
12542
12543
  __self: this,
12543
12544
  __source: {
12544
12545
  fileName: _jsxFileName,
12545
- lineNumber: 772
12546
+ lineNumber: 775
12546
12547
  }
12547
12548
  }, React$1.createElement(Tooltip, {
12548
12549
  interactive: true,
@@ -12555,14 +12556,14 @@ class Main extends React$1.Component {
12555
12556
  __self: this,
12556
12557
  __source: {
12557
12558
  fileName: _jsxFileName,
12558
- lineNumber: 781
12559
+ lineNumber: 784
12559
12560
  }
12560
12561
  }, React$1.createElement('div', {
12561
12562
  className: classes.main,
12562
12563
  __self: this,
12563
12564
  __source: {
12564
12565
  fileName: _jsxFileName,
12565
- lineNumber: 782
12566
+ lineNumber: 785
12566
12567
  }
12567
12568
  }, showCorrectAnswerToggle && React$1.createElement(CorrectAnswerToggle, {
12568
12569
  language: language,
@@ -12573,7 +12574,7 @@ class Main extends React$1.Component {
12573
12574
  __self: this,
12574
12575
  __source: {
12575
12576
  fileName: _jsxFileName,
12576
- lineNumber: 784
12577
+ lineNumber: 787
12577
12578
  }
12578
12579
  })), teacherInstructions && hasText(teacherInstructions) && React$1.createElement(Collapsible, {
12579
12580
  className: classes.collapsible,
@@ -12585,14 +12586,14 @@ class Main extends React$1.Component {
12585
12586
  __self: this,
12586
12587
  __source: {
12587
12588
  fileName: _jsxFileName,
12588
- lineNumber: 795
12589
+ lineNumber: 798
12589
12590
  }
12590
12591
  }, React$1.createElement(PreviewPrompt, {
12591
12592
  prompt: teacherInstructions,
12592
12593
  __self: this,
12593
12594
  __source: {
12594
12595
  fileName: _jsxFileName,
12595
- lineNumber: 803
12596
+ lineNumber: 806
12596
12597
  }
12597
12598
  })), displayNote && hasText(note) && React$1.createElement(Collapsible, {
12598
12599
  className: classes.collapsible,
@@ -12608,14 +12609,14 @@ class Main extends React$1.Component {
12608
12609
  __self: this,
12609
12610
  __source: {
12610
12611
  fileName: _jsxFileName,
12611
- lineNumber: 807
12612
+ lineNumber: 810
12612
12613
  }
12613
12614
  }, React$1.createElement(PreviewPrompt, {
12614
12615
  prompt: note,
12615
12616
  __self: this,
12616
12617
  __source: {
12617
12618
  fileName: _jsxFileName,
12618
- lineNumber: 815
12619
+ lineNumber: 818
12619
12620
  }
12620
12621
  })), rationale && hasText(rationale) && React$1.createElement(Collapsible, {
12621
12622
  className: classes.collapsible,
@@ -12627,14 +12628,14 @@ class Main extends React$1.Component {
12627
12628
  __self: this,
12628
12629
  __source: {
12629
12630
  fileName: _jsxFileName,
12630
- lineNumber: 820
12631
+ lineNumber: 823
12631
12632
  }
12632
12633
  }, React$1.createElement(PreviewPrompt, {
12633
12634
  prompt: rationale,
12634
12635
  __self: this,
12635
12636
  __source: {
12636
12637
  fileName: _jsxFileName,
12637
- lineNumber: 828
12638
+ lineNumber: 831
12638
12639
  }
12639
12640
  })), feedback && React$1.createElement(Feedback, {
12640
12641
  correctness: correctness.correctness,
@@ -12642,13 +12643,13 @@ class Main extends React$1.Component {
12642
12643
  __self: this,
12643
12644
  __source: {
12644
12645
  fileName: _jsxFileName,
12645
- lineNumber: 832
12646
+ lineNumber: 835
12646
12647
  }
12647
12648
  })),
12648
12649
  __self: this,
12649
12650
  __source: {
12650
12651
  fileName: _jsxFileName,
12651
- lineNumber: 773
12652
+ lineNumber: 776
12652
12653
  }
12653
12654
  }, React$1.createElement('div', {
12654
12655
  className: classes.mainContainer,
@@ -12656,7 +12657,7 @@ class Main extends React$1.Component {
12656
12657
  __self: this,
12657
12658
  __source: {
12658
12659
  fileName: _jsxFileName,
12659
- lineNumber: 836
12660
+ lineNumber: 839
12660
12661
  }
12661
12662
  }, midContent)));
12662
12663
  }
@@ -12671,7 +12672,7 @@ class Main extends React$1.Component {
12671
12672
  __self: this,
12672
12673
  __source: {
12673
12674
  fileName: _jsxFileName,
12674
- lineNumber: 845
12675
+ lineNumber: 848
12675
12676
  }
12676
12677
  }, midContent);
12677
12678
  }
package/module/index.html CHANGED
@@ -2,7 +2,7 @@
2
2
  <!doctype html>
3
3
  <html>
4
4
  <head>
5
- <title>@pie-element/math-inline@8.4.8</title>
5
+ <title>@pie-element/math-inline@8.4.9</title>
6
6
  <script
7
7
  type="module"
8
8
  src="https://cdn.jsdelivr.net/npm/@pslb/demo-el@^1.0.0/dist/demo-el/demo-el.esm.js"></script>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/math-inline",
3
- "version": "8.4.8",
3
+ "version": "8.4.9",
4
4
  "modules": [
5
5
  {
6
6
  "name": "@pie-lib/pie-toolbox-math-rendering-module",
package/module/print.html CHANGED
@@ -2,7 +2,7 @@
2
2
  <!doctype html>
3
3
  <html>
4
4
  <head>
5
- <title>@pie-element/math-inline@8.4.8</title>
5
+ <title>@pie-element/math-inline@8.4.9</title>
6
6
  <link
7
7
  href="https://fonts.googleapis.com/css?family=Roboto&display=swap"
8
8
  rel="stylesheet"
package/module/print.js CHANGED
@@ -11711,7 +11711,7 @@ class Main extends React$1.Component {
11711
11711
  }
11712
11712
  countResponseOccurrences(expression) {
11713
11713
  const pattern = /\{\{response\}\}/g;
11714
- const matches = _optionalChain([expression, 'optionalAccess', _13 => _13.match, 'call', _14 => _14(pattern)]);
11714
+ const matches = _optionalChain([expression, 'optionalAccess', _16 => _16.match, 'call', _17 => _17(pattern)]);
11715
11715
  return matches ? matches.length : 0;
11716
11716
  }
11717
11717
  UNSAFE_componentWillReceiveProps(nextProps) {
@@ -11779,8 +11779,8 @@ class Main extends React$1.Component {
11779
11779
  }
11780
11780
  componentDidUpdate(prevProps, prevState) {
11781
11781
  this.handleAnswerBlockDomUpdate();
11782
- const prevResponseType = _optionalChain([prevProps, 'access', _15 => _15.model, 'optionalAccess', _16 => _16.config, 'optionalAccess', _17 => _17.responseType]);
11783
- const currentResponseType = _optionalChain([this, 'access', _18 => _18.props, 'access', _19 => _19.model, 'optionalAccess', _20 => _20.config, 'optionalAccess', _21 => _21.responseType]);
11782
+ const prevResponseType = _optionalChain([prevProps, 'access', _18 => _18.model, 'optionalAccess', _19 => _19.config, 'optionalAccess', _20 => _20.responseType]);
11783
+ const currentResponseType = _optionalChain([this, 'access', _21 => _21.props, 'access', _22 => _22.model, 'optionalAccess', _23 => _23.config, 'optionalAccess', _24 => _24.responseType]);
11784
11784
  if (prevResponseType !== currentResponseType) {
11785
11785
  this.updateAria();
11786
11786
  }
@@ -11827,7 +11827,7 @@ class Main extends React$1.Component {
11827
11827
  __init4() {
11828
11828
  this.handleKeyDown = (event, id) => {
11829
11829
  const isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);
11830
- const isAnswerInputFocused = this.mqStatic ? _optionalChain([this, 'access', _22 => _22.mqStatic, 'access', _23 => _23.inputRef, 'optionalAccess', _24 => _24.current, 'access', _25 => _25.contains, 'call', _26 => _26(document.activeElement)]) : _optionalChain([document, 'access', _27 => _27.activeElement, 'optionalAccess', _28 => _28.getAttribute, 'call', _29 => _29('aria-label')]) === 'Enter answer.';
11830
+ const isAnswerInputFocused = this.mqStatic && _optionalChain([this, 'access', _25 => _25.mqStatic, 'access', _26 => _26.inputRef, 'optionalAccess', _27 => _27.current]) ? _optionalChain([this, 'access', _28 => _28.mqStatic, 'access', _29 => _29.inputRef, 'optionalAccess', _30 => _30.current, 'access', _31 => _31.contains, 'call', _32 => _32(document.activeElement)]) : _optionalChain([document, 'access', _33 => _33.activeElement, 'optionalAccess', _34 => _34.getAttribute, 'call', _35 => _35('aria-label')]) === 'Enter answer.';
11831
11831
  const {key, type} = event;
11832
11832
  const isClickOrTouchEvent = type === 'click' || type === 'touchstart';
11833
11833
  if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {
@@ -11851,13 +11851,14 @@ class Main extends React$1.Component {
11851
11851
  }
11852
11852
  __init5() {
11853
11853
  this.onSubFieldFocus = id => {
11854
- const handleEvent = event => {
11855
- this.handleKeyDown(event, id);
11856
- };
11857
- this.handleEvent = handleEvent;
11858
- document.addEventListener('keydown', handleEvent);
11859
- document.addEventListener('click', handleEvent);
11860
- document.addEventListener('touchstart', handleEvent);
11854
+ if (!this.handleEvent) {
11855
+ this.handleEvent = event => {
11856
+ this.handleKeyDown(event, id);
11857
+ };
11858
+ document.addEventListener('keydown', this.handleEvent);
11859
+ document.addEventListener('click', this.handleEvent);
11860
+ document.addEventListener('touchstart', this.handleEvent);
11861
+ }
11861
11862
  };
11862
11863
  }
11863
11864
  __init6() {
@@ -12000,7 +12001,7 @@ class Main extends React$1.Component {
12000
12001
  }
12001
12002
  function getDeepChildDataKeypad(element, depth = 0) {
12002
12003
  if (!element || depth >= 4) return null;
12003
- const child = _optionalChain([element, 'optionalAccess', _30 => _30.children, 'optionalAccess', _31 => _31[0]]);
12004
+ const child = _optionalChain([element, 'optionalAccess', _36 => _36.children, 'optionalAccess', _37 => _37[0]]);
12004
12005
  if (!child) return null;
12005
12006
  if (child.attributes && child.attributes['data-keypad']) {
12006
12007
  return child;
@@ -12009,7 +12010,7 @@ class Main extends React$1.Component {
12009
12010
  }
12010
12011
  const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);
12011
12012
  const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;
12012
- if (!relatedTarget || !currentTarget || !_optionalChain([childWithDataKeypad, 'optionalAccess', _32 => _32.attributes, 'access', _33 => _33['data-keypad']])) {
12013
+ if (!relatedTarget || !currentTarget || !_optionalChain([childWithDataKeypad, 'optionalAccess', _38 => _38.attributes, 'access', _39 => _39['data-keypad']])) {
12013
12014
  if (!isKeypadOpen) {
12014
12015
  this.setState({
12015
12016
  activeAnswerBlock: ''
@@ -12051,7 +12052,7 @@ class Main extends React$1.Component {
12051
12052
  __self: this,
12052
12053
  __source: {
12053
12054
  fileName: _jsxFileName,
12054
- lineNumber: 616
12055
+ lineNumber: 619
12055
12056
  }
12056
12057
  }, React$1.createElement(mq.Static, {
12057
12058
  className: classes.static,
@@ -12067,7 +12068,7 @@ class Main extends React$1.Component {
12067
12068
  __self: this,
12068
12069
  __source: {
12069
12070
  fileName: _jsxFileName,
12070
- lineNumber: 617
12071
+ lineNumber: 620
12071
12072
  }
12072
12073
  }));
12073
12074
  const midContent = React$1.createElement('div', {
@@ -12075,14 +12076,14 @@ class Main extends React$1.Component {
12075
12076
  __self: this,
12076
12077
  __source: {
12077
12078
  fileName: _jsxFileName,
12078
- lineNumber: 633
12079
+ lineNumber: 636
12079
12080
  }
12080
12081
  }, mode === 'gather' && React$1.createElement('h2', {
12081
12082
  className: classes.srOnly,
12082
12083
  __self: this,
12083
12084
  __source: {
12084
12085
  fileName: _jsxFileName,
12085
- lineNumber: 634
12086
+ lineNumber: 637
12086
12087
  }
12087
12088
  }, "Math Equation Response Question"), viewMode && teacherInstructions && hasText(teacherInstructions) && (!animationsDisabled ? React$1.createElement(Collapsible, {
12088
12089
  className: classes.collapsible,
@@ -12093,7 +12094,7 @@ class Main extends React$1.Component {
12093
12094
  __self: this,
12094
12095
  __source: {
12095
12096
  fileName: _jsxFileName,
12096
- lineNumber: 640
12097
+ lineNumber: 643
12097
12098
  }
12098
12099
  }, React$1.createElement('div', {
12099
12100
  dangerouslySetInnerHTML: {
@@ -12102,7 +12103,7 @@ class Main extends React$1.Component {
12102
12103
  __self: this,
12103
12104
  __source: {
12104
12105
  fileName: _jsxFileName,
12105
- lineNumber: 644
12106
+ lineNumber: 647
12106
12107
  }
12107
12108
  })) : React$1.createElement('div', {
12108
12109
  dangerouslySetInnerHTML: {
@@ -12111,28 +12112,28 @@ class Main extends React$1.Component {
12111
12112
  __self: this,
12112
12113
  __source: {
12113
12114
  fileName: _jsxFileName,
12114
- lineNumber: 647
12115
+ lineNumber: 650
12115
12116
  }
12116
12117
  })), prompt && React$1.createElement('div', {
12117
12118
  className: classes.promptContainer,
12118
12119
  __self: this,
12119
12120
  __source: {
12120
12121
  fileName: _jsxFileName,
12121
- lineNumber: 651
12122
+ lineNumber: 654
12122
12123
  }
12123
12124
  }, React$1.createElement(PreviewPrompt, {
12124
12125
  prompt: prompt,
12125
12126
  __self: this,
12126
12127
  __source: {
12127
12128
  fileName: _jsxFileName,
12128
- lineNumber: 652
12129
+ lineNumber: 655
12129
12130
  }
12130
12131
  })), studentPrintMode ? printView : React$1.createElement(Readable, {
12131
12132
  false: true,
12132
12133
  __self: this,
12133
12134
  __source: {
12134
12135
  fileName: _jsxFileName,
12135
- lineNumber: 659
12136
+ lineNumber: 662
12136
12137
  }
12137
12138
  }, React$1.createElement('div', {
12138
12139
  className: classes.inputAndKeypadContainer,
@@ -12140,7 +12141,7 @@ class Main extends React$1.Component {
12140
12141
  __self: this,
12141
12142
  __source: {
12142
12143
  fileName: _jsxFileName,
12143
- lineNumber: 660
12144
+ lineNumber: 663
12144
12145
  }
12145
12146
  }, responseType === ResponseTypes.simple && React$1.createElement(SimpleQuestionBlock, {
12146
12147
  onSimpleResponseChange: this.onSimpleResponseChange,
@@ -12153,7 +12154,7 @@ class Main extends React$1.Component {
12153
12154
  __self: this,
12154
12155
  __source: {
12155
12156
  fileName: _jsxFileName,
12156
- lineNumber: 662
12157
+ lineNumber: 665
12157
12158
  }
12158
12159
  }), responseType === ResponseTypes.advanced && React$1.createElement('div', {
12159
12160
  ref: tooltipContainerRef,
@@ -12167,7 +12168,7 @@ class Main extends React$1.Component {
12167
12168
  __self: this,
12168
12169
  __source: {
12169
12170
  fileName: _jsxFileName,
12170
- lineNumber: 674
12171
+ lineNumber: 677
12171
12172
  }
12172
12173
  }, React$1.createElement(Tooltip, {
12173
12174
  ref: ref => this.setTooltipRef(ref),
@@ -12179,7 +12180,7 @@ class Main extends React$1.Component {
12179
12180
  popper: classes.keypadTooltipPopper
12180
12181
  },
12181
12182
  PopperProps: {
12182
- container: _optionalChain([tooltipContainerRef, 'optionalAccess', _34 => _34.current]) || undefined,
12183
+ container: _optionalChain([tooltipContainerRef, 'optionalAccess', _40 => _40.current]) || undefined,
12183
12184
  placement: 'bottom-start',
12184
12185
  modifiers: {
12185
12186
  preventOverflow: {
@@ -12201,7 +12202,7 @@ class Main extends React$1.Component {
12201
12202
  __self: this,
12202
12203
  __source: {
12203
12204
  fileName: _jsxFileName,
12204
- lineNumber: 709
12205
+ lineNumber: 712
12205
12206
  }
12206
12207
  }, React$1.createElement(HorizontalKeypad, {
12207
12208
  additionalKeys: additionalKeys,
@@ -12210,13 +12211,13 @@ class Main extends React$1.Component {
12210
12211
  __self: this,
12211
12212
  __source: {
12212
12213
  fileName: _jsxFileName,
12213
- lineNumber: 718
12214
+ lineNumber: 721
12214
12215
  }
12215
12216
  })) || null),
12216
12217
  __self: this,
12217
12218
  __source: {
12218
12219
  fileName: _jsxFileName,
12219
- lineNumber: 684
12220
+ lineNumber: 687
12220
12221
  }
12221
12222
  }, React$1.createElement(mq.Static, {
12222
12223
  className: classes.static,
@@ -12232,7 +12233,7 @@ class Main extends React$1.Component {
12232
12233
  __self: this,
12233
12234
  __source: {
12234
12235
  fileName: _jsxFileName,
12235
- lineNumber: 728
12236
+ lineNumber: 731
12236
12237
  }
12237
12238
  }))))), viewMode && displayNote && React$1.createElement('div', {
12238
12239
  className: classes.note,
@@ -12242,7 +12243,7 @@ class Main extends React$1.Component {
12242
12243
  __self: this,
12243
12244
  __source: {
12244
12245
  fileName: _jsxFileName,
12245
- lineNumber: 748
12246
+ lineNumber: 751
12246
12247
  }
12247
12248
  }), viewMode && rationale && hasText(rationale) && (!animationsDisabled ? React$1.createElement(Collapsible, {
12248
12249
  labels: {
@@ -12252,7 +12253,7 @@ class Main extends React$1.Component {
12252
12253
  __self: this,
12253
12254
  __source: {
12254
12255
  fileName: _jsxFileName,
12255
- lineNumber: 755
12256
+ lineNumber: 758
12256
12257
  }
12257
12258
  }, React$1.createElement('div', {
12258
12259
  dangerouslySetInnerHTML: {
@@ -12261,7 +12262,7 @@ class Main extends React$1.Component {
12261
12262
  __self: this,
12262
12263
  __source: {
12263
12264
  fileName: _jsxFileName,
12264
- lineNumber: 756
12265
+ lineNumber: 759
12265
12266
  }
12266
12267
  })) : React$1.createElement('div', {
12267
12268
  dangerouslySetInnerHTML: {
@@ -12270,7 +12271,7 @@ class Main extends React$1.Component {
12270
12271
  __self: this,
12271
12272
  __source: {
12272
12273
  fileName: _jsxFileName,
12273
- lineNumber: 759
12274
+ lineNumber: 762
12274
12275
  }
12275
12276
  })));
12276
12277
  if (tooltipModeEnabled && (showCorrectAnswerToggle || teacherInstructions && hasText(teacherInstructions) || rationale && hasText(rationale) || feedback)) {
@@ -12279,7 +12280,7 @@ class Main extends React$1.Component {
12279
12280
  __self: this,
12280
12281
  __source: {
12281
12282
  fileName: _jsxFileName,
12282
- lineNumber: 772
12283
+ lineNumber: 775
12283
12284
  }
12284
12285
  }, React$1.createElement(Tooltip, {
12285
12286
  interactive: true,
@@ -12292,14 +12293,14 @@ class Main extends React$1.Component {
12292
12293
  __self: this,
12293
12294
  __source: {
12294
12295
  fileName: _jsxFileName,
12295
- lineNumber: 781
12296
+ lineNumber: 784
12296
12297
  }
12297
12298
  }, React$1.createElement('div', {
12298
12299
  className: classes.main,
12299
12300
  __self: this,
12300
12301
  __source: {
12301
12302
  fileName: _jsxFileName,
12302
- lineNumber: 782
12303
+ lineNumber: 785
12303
12304
  }
12304
12305
  }, showCorrectAnswerToggle && React$1.createElement(CorrectAnswerToggle, {
12305
12306
  language: language,
@@ -12310,7 +12311,7 @@ class Main extends React$1.Component {
12310
12311
  __self: this,
12311
12312
  __source: {
12312
12313
  fileName: _jsxFileName,
12313
- lineNumber: 784
12314
+ lineNumber: 787
12314
12315
  }
12315
12316
  })), teacherInstructions && hasText(teacherInstructions) && React$1.createElement(Collapsible, {
12316
12317
  className: classes.collapsible,
@@ -12322,14 +12323,14 @@ class Main extends React$1.Component {
12322
12323
  __self: this,
12323
12324
  __source: {
12324
12325
  fileName: _jsxFileName,
12325
- lineNumber: 795
12326
+ lineNumber: 798
12326
12327
  }
12327
12328
  }, React$1.createElement(PreviewPrompt, {
12328
12329
  prompt: teacherInstructions,
12329
12330
  __self: this,
12330
12331
  __source: {
12331
12332
  fileName: _jsxFileName,
12332
- lineNumber: 803
12333
+ lineNumber: 806
12333
12334
  }
12334
12335
  })), displayNote && hasText(note) && React$1.createElement(Collapsible, {
12335
12336
  className: classes.collapsible,
@@ -12345,14 +12346,14 @@ class Main extends React$1.Component {
12345
12346
  __self: this,
12346
12347
  __source: {
12347
12348
  fileName: _jsxFileName,
12348
- lineNumber: 807
12349
+ lineNumber: 810
12349
12350
  }
12350
12351
  }, React$1.createElement(PreviewPrompt, {
12351
12352
  prompt: note,
12352
12353
  __self: this,
12353
12354
  __source: {
12354
12355
  fileName: _jsxFileName,
12355
- lineNumber: 815
12356
+ lineNumber: 818
12356
12357
  }
12357
12358
  })), rationale && hasText(rationale) && React$1.createElement(Collapsible, {
12358
12359
  className: classes.collapsible,
@@ -12364,14 +12365,14 @@ class Main extends React$1.Component {
12364
12365
  __self: this,
12365
12366
  __source: {
12366
12367
  fileName: _jsxFileName,
12367
- lineNumber: 820
12368
+ lineNumber: 823
12368
12369
  }
12369
12370
  }, React$1.createElement(PreviewPrompt, {
12370
12371
  prompt: rationale,
12371
12372
  __self: this,
12372
12373
  __source: {
12373
12374
  fileName: _jsxFileName,
12374
- lineNumber: 828
12375
+ lineNumber: 831
12375
12376
  }
12376
12377
  })), feedback && React$1.createElement(Feedback, {
12377
12378
  correctness: correctness.correctness,
@@ -12379,13 +12380,13 @@ class Main extends React$1.Component {
12379
12380
  __self: this,
12380
12381
  __source: {
12381
12382
  fileName: _jsxFileName,
12382
- lineNumber: 832
12383
+ lineNumber: 835
12383
12384
  }
12384
12385
  })),
12385
12386
  __self: this,
12386
12387
  __source: {
12387
12388
  fileName: _jsxFileName,
12388
- lineNumber: 773
12389
+ lineNumber: 776
12389
12390
  }
12390
12391
  }, React$1.createElement('div', {
12391
12392
  className: classes.mainContainer,
@@ -12393,7 +12394,7 @@ class Main extends React$1.Component {
12393
12394
  __self: this,
12394
12395
  __source: {
12395
12396
  fileName: _jsxFileName,
12396
- lineNumber: 836
12397
+ lineNumber: 839
12397
12398
  }
12398
12399
  }, midContent)));
12399
12400
  }
@@ -12408,7 +12409,7 @@ class Main extends React$1.Component {
12408
12409
  __self: this,
12409
12410
  __source: {
12410
12411
  fileName: _jsxFileName,
12411
- lineNumber: 845
12412
+ lineNumber: 848
12412
12413
  }
12413
12414
  }, midContent);
12414
12415
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "8.4.9",
7
+ "version": "8.4.10-next.3+cf94a058c",
8
8
  "main": "lib/index.js",
9
9
  "description": "",
10
10
  "scripts": {
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "author": "",
26
26
  "license": "ISC",
27
- "gitHead": "eec07beb711684a6697fd47f032c100cdf33d1fc",
27
+ "gitHead": "cf94a058c96857d5e29a232ab90fccd0493b4067",
28
28
  "module": "src/index.js",
29
29
  "exports": {
30
30
  ".": "./src/index.js",