@pie-element/math-templated 7.1.0-next.0 → 7.1.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [7.1.0-next.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@7.1.0-next.1...@pie-element/math-templated@7.1.0-next.2) (2026-05-06)
7
+
8
+ ### Bug Fixes
9
+
10
+ - bump libs and shared modules PIE-440, PIE-436, PIE-439, PIE-519, PIE-216 ([932fc12](https://github.com/pie-framework/pie-elements/commit/932fc12557ba56a737cee005be898d54d5e590ef))
11
+
12
+ # [7.1.0-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@7.1.0-next.0...@pie-element/math-templated@7.1.0-next.1) (2026-05-06)
13
+
14
+ ### Bug Fixes
15
+
16
+ - avoid keypad overlap the input when no below available space PIE-113 ([a58a01f](https://github.com/pie-framework/pie-elements/commit/a58a01fcebd903b05a1d34572680612e08c2e314))
17
+
6
18
  ## [7.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@7.0.0...@pie-element/math-templated@7.0.1) (2026-04-28)
7
19
 
8
20
  **Note:** Version bump only for package @pie-element/math-templated
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.1.0-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-configure@5.1.0-next.0...@pie-element/math-templated-configure@5.1.0-next.1) (2026-05-06)
7
+
8
+ ### Bug Fixes
9
+
10
+ - bump libs and shared modules PIE-440, PIE-436, PIE-439, PIE-519, PIE-216 ([932fc12](https://github.com/pie-framework/pie-elements/commit/932fc12557ba56a737cee005be898d54d5e590ef))
11
+
6
12
  ## [5.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-configure@5.0.0...@pie-element/math-templated-configure@5.0.1) (2026-04-28)
7
13
 
8
14
  **Note:** Version bump only for package @pie-element/math-templated-configure
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/math-templated-configure",
3
3
  "private": true,
4
- "version": "5.1.0-next.0",
4
+ "version": "5.1.0-next.1",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -11,10 +11,10 @@
11
11
  "@mui/icons-material": "^7.3.4",
12
12
  "@mui/material": "^7.3.4",
13
13
  "@pie-framework/pie-configure-events": "^1.3.0",
14
- "@pie-lib/config-ui": "13.0.0",
15
- "@pie-lib/editable-html-tip-tap": "2.0.0",
16
- "@pie-lib/math-toolbar": "3.0.0",
17
- "@pie-lib/render-ui": "6.0.0",
14
+ "@pie-lib/config-ui": "13.0.2-next.2",
15
+ "@pie-lib/editable-html-tip-tap": "2.1.0-next.2",
16
+ "@pie-lib/math-toolbar": "3.0.2-next.1",
17
+ "@pie-lib/render-ui": "6.1.0-next.1",
18
18
  "debug": "^4.1.1",
19
19
  "lodash-es": "^4.17.23",
20
20
  "prop-types": "^15.8.1",
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [6.1.0-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-controller@6.1.0-next.0...@pie-element/math-templated-controller@6.1.0-next.1) (2026-05-06)
7
+
8
+ ### Bug Fixes
9
+
10
+ - bump libs and shared modules PIE-440, PIE-436, PIE-439, PIE-519, PIE-216 ([932fc12](https://github.com/pie-framework/pie-elements/commit/932fc12557ba56a737cee005be898d54d5e590ef))
11
+
6
12
  ## [6.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-controller@6.0.0...@pie-element/math-templated-controller@6.0.1) (2026-04-28)
7
13
 
8
14
  **Note:** Version bump only for package @pie-element/math-templated-controller
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@pie-element/math-templated-controller",
3
3
  "private": true,
4
- "version": "6.1.0-next.0",
4
+ "version": "6.1.0-next.1",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "dependencies": {
9
9
  "@pie-framework/math-validation": "^1.4.2",
10
- "@pie-lib/controller-utils": "2.0.0",
11
- "@pie-lib/translator": "4.0.0",
10
+ "@pie-lib/controller-utils": "2.0.2-next.0",
11
+ "@pie-lib/translator": "4.0.2-next.0",
12
12
  "debug": "^4.1.1",
13
13
  "lodash-es": "^4.17.23"
14
14
  },
package/lib/main.js CHANGED
@@ -14,7 +14,6 @@ var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
14
14
  var _mathInput = require("@pie-lib/math-input");
15
15
  var _renderUi = require("@pie-lib/render-ui");
16
16
  var _mathRendering = require("@pie-lib/math-rendering");
17
- var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
18
17
  var _maskMarkup = require("@pie-lib/mask-markup");
19
18
  var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
20
19
  var _reactDom = _interopRequireDefault(require("react-dom"));
@@ -351,14 +350,12 @@ class Main extends _react.default.Component {
351
350
  const el = this.root.querySelector(`#${answerId}`);
352
351
  const indexEl = this.root.querySelector(`#${answerId}Index`);
353
352
  if (el) {
354
- let MQ = _mathquill.default.getInterface(3);
355
353
  const answer = answers[answerId];
356
- el.textContent = answer && answer.value || '';
354
+ (0, _mathInput.applyStaticMath)(el, answer && answer.value || '');
357
355
  if (model.view) {
358
356
  el.parentElement.parentElement.classList.remove('correct');
359
357
  el.parentElement.parentElement.classList.remove('incorrect');
360
358
  }
361
- MQ.StaticMath(el);
362
359
  indexEl.textContent = 'R';
363
360
  }
364
361
  });
@@ -660,12 +657,7 @@ class Main extends _react.default.Component {
660
657
  },
661
658
  modifiers: [{
662
659
  name: 'preventOverflow',
663
- enabled: true,
664
- options: {
665
- boundary: 'viewport',
666
- mainAxis: false,
667
- altAxis: true
668
- }
660
+ enabled: false
669
661
  }, {
670
662
  name: 'flip',
671
663
  enabled: false
@@ -731,9 +723,8 @@ class Main extends _react.default.Component {
731
723
  }
732
724
  UNSAFE_componentWillMount() {
733
725
  if (typeof window !== 'undefined') {
734
- let MQ = _mathquill.default.getInterface(3);
735
726
  if (!registered) {
736
- MQ.registerEmbed('answerBlock', data => ({
727
+ (0, _mathInput.registerEmbed)('answerBlock', data => ({
737
728
  htmlString: `<div class="block-container">
738
729
  <div class="block-response" id="${data}Index">R</div>
739
730
  <div class="block-math">
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_styles","_Tooltip","_mathInput","_renderUi","_mathRendering","_mathquill","_maskMarkup","_correctAnswerToggle","_reactDom","StyledUiLayout","styled","UiLayout","color","text","backgroundColor","background","display","MainContainer","width","position","PromptContainer","theme","marginBottom","spacing","CollapsibleContainer","InputAndKeypadContainer","alignItems","flexWrap","border","padding","minWidth","lineHeight","top","left","right","borderTop","paddingTop","Expression","$incorrect","$correct","$showCorrectness","$correctAnswerShown","maxWidth","borderColor","incorrect","correct","letterSpacing","StyledStatic","mq","Static","ResponseContainer","zIndex","marginTop","PrintContainer","pointerEvents","SrOnly","height","overflow","Note","StyledToggle","CorrectAnswerToggle","document","styleId","getElementById","style","createElement","id","textContent","head","appendChild","registered","REGEX","DEFAULT_KEYPAD_VARIANT","KEYPAD_VIEWPORT_PADDING","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","splitByParts","parts","split","filter","part","prepareForStatic","model","state","responses","disabled","markup","printMode","alwaysShowCorrect","showCorrect","Object","keys","reduce","acc","responseKey","answer","splitted","match","Main","getResponseKey","session","answers","blankSpace","repeat","value","smartHorizontalPlacementModifier","enabled","phase","requires","fn","offsets","modifiersData","popperOffsets","viewportWidth","window","innerWidth","documentElement","clientWidth","popperWidth","rects","popper","referenceViewportLeft","elements","reference","getBoundingClientRect","offsetParentEl","offsetParent","offsetParentRect","offsetParentScrollLeft","scrollLeft","referenceOffsetParentX","viewportLeftInOffsetParent","minX","maxX","x","min","max","React","Component","constructor","props","_defineProperty2","default","root","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","view","parentElement","classList","remove","StaticMath","renderMath","editableFields","Array","from","querySelectorAll","savedScroll","scrollTop","restoreEditableScroll","setState","activeAnswerBlock","requestAnimationFrame","setTimeout","data","type","input","c","toNodeData","clear","isArray","vv","cmd","keystroke","fieldElement","scrollTargets","node","body","isScrollable","scrollWidth","scrollHeight","clientHeight","push","scrollingElement","windowScroll","scrollX","y","scrollY","restoreScroll","scrollTo","focus","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","updateSpans","callOnSessionChange","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","getParentWithRoleTooltip","element","depth","parent","getAttribute","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","teacherInstructions","animationsDisabled","showTeacherInstructions","hasText","hasMedia","teacherInstructionsDiv","PreviewPrompt","defaultClassName","prompt","Collapsible","labels","hidden","visible","rationale","rationaleDiv","showRationale","tooltipContainerRef","correctness","customKeys","feedback","env","mode","emptyResponse","isEmpty","statics","studentPrintMode","Customizable","customMarkMarkupComponent","responseIsCorrect","MQStatic","ref","mqStatic","onSubFieldChange","subFieldChanged","getFieldName","setInput","onSubFieldFocus","onBlur","setTooltipRef","enterTouchDelay","interactive","open","slotProps","container","current","undefined","placement","sx","opacity","modifiers","options","boundary","mainAxis","altAxis","tooltip","fontSize","boxShadow","title","HorizontalKeypad","onClick","sessionAnswers","replace","response","sessionAnswerForResponse","createRef","UNSAFE_componentWillMount","registerEmbed","htmlString","UNSAFE_componentWillReceiveProps","nextProps","nextModel","nextMarkup","nextEnv","nextAlwaysShowCorrect","isEvaluateMode","prevState","matches","nextMatches","isEqual","newAnswers","nextMatch","shouldComponentUpdate","nextState","sameModel","sameState","componentDidMount","componentDidUpdate","div","firstChild","setAttribute","render","role","extraCSSRules","language","showNote","note","showCorrectAnswerToggle","displayNote","r","domNode","ReactDOM","findDOMNode","toggled","onToggle","toggleShowCorrect","renderTeacherInstructions","Readable","false","renderPlayerContent","className","dangerouslySetInnerHTML","__html","renderRationale","exports","replaceAll","PropTypes","object","isRequired","func","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport { styled } from '@mui/material/styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport { mq, HorizontalKeypad, updateSpans } from '@pie-lib/math-input';\nimport { color, Collapsible, Readable, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport MathQuill from '@pie-framework/mathquill';\nimport { Customizable } from '@pie-lib/mask-markup';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport ReactDOM from 'react-dom';\n\nconst StyledUiLayout = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n});\n\nconst MainContainer = styled('div')({\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst PromptContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst CollapsibleContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst InputAndKeypadContainer = styled('div')({\n position: 'relative',\n '& > div > div': {\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n },\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\nconst Expression = styled('div')(({ theme, $incorrect, $correct, $showCorrectness, $correctAnswerShown }) => ({\n maxWidth: 'fit-content',\n ...($incorrect && {\n borderColor: `${color.incorrect()} !important`,\n }),\n ...($correct && {\n borderColor: `${color.correct()} !important`,\n }),\n ...($showCorrectness && {\n border: '2px solid',\n }),\n ...($correctAnswerShown && {\n padding: theme.spacing(1),\n letterSpacing: '0.5px',\n }),\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n minWidth: '10px',\n padding: theme.spacing(0.25),\n },\n },\n '& sup': {\n top: 0,\n },\n },\n}));\n\nconst StyledStatic = styled(mq.Static)({\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n});\n\n// Tooltip styling is handled via slotProps, no need for styled component\n\nconst ResponseContainer = styled('div')(({ theme }) => ({\n zIndex: 10,\n minWidth: '400px',\n marginTop: theme.spacing(2),\n}));\n\nconst PrintContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(1),\n pointerEvents: 'none',\n}));\n\nconst SrOnly = styled('h2')({\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n});\n\nconst Note = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst StyledToggle = styled(CorrectAnswerToggle)(({ theme }) => ({\n color: color.text(),\n marginBottom: theme.spacing(2),\n}));\n\n// CSS for classes used in HTML strings and classList operations\nif (typeof document !== 'undefined') {\n const styleId = 'math-templated-main-styles';\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = `\n .block-container {\n margin: 8px !important;\n display: inline-flex;\n border: 2px solid grey !important;\n }\n .block-response {\n flex: 2;\n color: grey;\n background: rgba(0, 0, 0, 0.04);\n font-size: 0.8rem !important;\n padding: 4px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 2px solid #bdbdbd !important;\n }\n .block-math {\n color: ${color.text()};\n background-color: ${color.background()};\n padding: 4px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 8;\n }\n .block-math > .mq-math-mode > .mq-hasCursor > .mq-cursor {\n display: none;\n }\n .correct {\n border-color: ${color.correct()} !important;\n }\n .incorrect {\n border-color: ${color.incorrect()} !important;\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nlet registered = false;\n\n// Define a regex pattern to match {{number}}\nconst REGEX = /(\\{\\{\\d+\\}\\})/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\nconst KEYPAD_VIEWPORT_PADDING = 8;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction splitByParts(text) {\n // Use the regex pattern to split the text\n const parts = text.split(REGEX);\n // Filter out empty strings that might result from splitting\n return parts.filter((part) => part);\n}\n\nfunction prepareForStatic(model, state) {\n const { responses, disabled, markup, printMode, alwaysShowCorrect } = model || {};\n\n if (markup) {\n if (state.showCorrect) {\n return Object.keys(responses || {}).reduce((acc, responseKey) => {\n acc[responseKey] = responses?.[responseKey]?.answer;\n\n return acc;\n }, {});\n }\n\n const splitted = splitByParts(markup);\n\n return splitted.reduce((acc, split) => {\n if (split.match(REGEX)) {\n const responseKey = Main.getResponseKey(split);\n const answer = state.session.answers[`r${responseKey}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\embed{newLine}[] ';\n\n return {\n ...acc,\n [responseKey]: `\\\\MathQuillMathField[r${responseKey}]{${blankSpace.repeat(3)}}`,\n };\n }\n\n if (disabled) {\n return {\n ...acc,\n [responseKey]: `\\\\embed{answerBlock}[r${responseKey}]`,\n };\n }\n\n return {\n ...acc,\n [responseKey]: `\\\\MathQuillMathField[r${responseKey}]{${(answer && answer.value) || ''}}`,\n };\n }\n\n return acc;\n }, {});\n }\n}\n\n/**\n * Popper.js v2 modifier that implements precise horizontal placement:\n *\n * 1. Default: left-align the keypad with the left edge of the response area.\n *\n * 2. Overflow: if left-aligning would push the right edge of the keypad past\n * the viewport's right edge, right-align the keypad so that its right edge\n * sits exactly at the left edge of the response area.\n *\n * In both cases we compute offsets.x from first principles (rather than\n * adjusting whatever Popper already set) to avoid any upstream skew.\n *\n * Coordinate note:\n * state.rects.reference.x — reference's left edge in offset-parent coords.\n * getBoundingClientRect() — viewport-relative coords.\n * Both describe the same physical point, so the difference between them is\n * the constant offset needed to convert viewport ↔ offset-parent coords.\n */\nconst smartHorizontalPlacementModifier = {\n name: 'smartHorizontalPlacement',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: ({ state }) => {\n const offsets = state.modifiersData.popperOffsets;\n if (!offsets) return;\n\n const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n const popperWidth = state.rects.popper.width;\n\n const referenceViewportLeft = state.elements.reference.getBoundingClientRect().left;\n\n const offsetParentEl = state.elements.popper?.offsetParent;\n const offsetParentRect = offsetParentEl?.getBoundingClientRect?.() || { left: 0 };\n const offsetParentScrollLeft = offsetParentEl?.scrollLeft || 0;\n const referenceOffsetParentX = referenceViewportLeft - offsetParentRect.left + offsetParentScrollLeft;\n const viewportLeftInOffsetParent = referenceOffsetParentX - referenceViewportLeft;\n const minX = viewportLeftInOffsetParent + KEYPAD_VIEWPORT_PADDING;\n const maxX = viewportLeftInOffsetParent + viewportWidth - popperWidth - KEYPAD_VIEWPORT_PADDING;\n\n if (referenceViewportLeft + popperWidth <= viewportWidth) {\n offsets.x = referenceOffsetParentX;\n } else {\n offsets.x = referenceOffsetParentX - popperWidth;\n }\n\n if (maxX < minX) {\n offsets.x = minX;\n } else {\n offsets.x = Math.min(Math.max(offsets.x, minX), maxX);\n }\n },\n};\n\nexport class Main extends React.Component {\n // removes {{ and }} and returns only key response. Eg: {{0}} => 0\n static getResponseKey = (response) => (response || '').replaceAll('{{', '').replaceAll('}}', '');\n\n static propTypes = {\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n const answers = {};\n const { model, session } = props || {};\n const { markup, alwaysShowCorrect } = model || {};\n const { answers: sessionAnswers } = session || {};\n\n if (markup) {\n (markup || '').replace(REGEX, (response) => {\n const responseKey = Main.getResponseKey(response);\n const sessionAnswerForResponse = sessionAnswers && sessionAnswers[`r${responseKey}`];\n\n answers[`r${responseKey}`] = { value: sessionAnswerForResponse?.value || '' };\n });\n }\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: alwaysShowCorrect || false,\n tooltipContainerRef: React.createRef(),\n };\n }\n\n UNSAFE_componentWillMount() {\n if (typeof window !== 'undefined') {\n let MQ = MathQuill.getInterface(3);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => ({\n htmlString: `<div class=\"block-container\">\n <div class=\"block-response\" id=\"${data}Index\">R</div>\n <div class=\"block-math\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n }));\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = 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\n if (el) {\n let MQ = MathQuill.getInterface(3);\n const answer = answers[answerId];\n\n el.textContent = (answer && answer.value) || '';\n\n if (model.view) {\n el.parentElement.parentElement.classList.remove('correct');\n el.parentElement.parentElement.classList.remove('incorrect');\n }\n\n MQ.StaticMath(el);\n\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model } = this.props;\n const { model: nextModel = {} } = nextProps || {};\n const { markup = '', env = {} } = model || {};\n const { markup: nextMarkup = '', env: nextEnv = {}, alwaysShowCorrect: nextAlwaysShowCorrect = false } = nextModel;\n\n const isEvaluateMode = (env) => env && env.mode === 'evaluate';\n\n if (!isEvaluateMode(env) || !isEvaluateMode(nextEnv)) {\n this.setState((prevState) => ({ ...prevState.session, showCorrect: false }));\n }\n\n if (nextAlwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n\n const matches = markup.match(REGEX);\n const nextMatches = nextMarkup.match(REGEX);\n\n // If markup changed, and we no longer have the same response area, the session needs to be updated\n if (!isEqual(matches, nextMatches)) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n (nextMatches || []).forEach((nextMatch) => {\n const responseKey = Main.getResponseKey(nextMatch);\n const sessionAnswerForResponse = answers && answers[`r${responseKey}`];\n\n // build out local state model using responses declared in markup\n newAnswers[`r${responseKey}`] = { value: sessionAnswerForResponse?.value || '' };\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: newAnswers,\n },\n }),\n () => {\n this.props.onSessionChange(this.state.session);\n this.handleAnswerBlockDomUpdate();\n },\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 setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n onSubFieldFocus = (id) => {\n const editableFields = Array.from(this.root?.querySelectorAll('.mq-editable-field') || []);\n const savedScroll = editableFields.map((el) => ({\n el,\n left: el.scrollLeft,\n top: el.scrollTop,\n }));\n\n const restoreEditableScroll = () => {\n savedScroll.forEach(({ el, left, top }) => {\n el.scrollLeft = left;\n el.scrollTop = top;\n });\n };\n\n this.setState({ activeAnswerBlock: id }, () => {\n restoreEditableScroll();\n requestAnimationFrame(restoreEditableScroll);\n setTimeout(restoreEditableScroll, 0);\n });\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') return data;\n\n if (type === 'answer') return { type: 'answer', ...data };\n\n if (value === 'clear') return { type: 'clear' };\n\n return { type: 'write', value };\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 // Keep all relevant scroll containers stable when refocusing after keypad\n // click. Browser \"focus into view\" can scroll horizontally back to start.\n const fieldElement = this.input?.el?.() || this.root;\n const scrollTargets = [];\n let node = fieldElement;\n\n while (node && node !== document.body && node !== document.documentElement) {\n const isScrollable = node.scrollWidth > node.clientWidth || node.scrollHeight > node.clientHeight;\n if (isScrollable) {\n scrollTargets.push(node);\n }\n node = node.parentElement;\n }\n\n if (document.scrollingElement) {\n scrollTargets.push(document.scrollingElement);\n }\n\n const savedScroll = scrollTargets.map((el) => ({\n el,\n left: el.scrollLeft,\n top: el.scrollTop,\n }));\n const windowScroll = { x: window.scrollX, y: window.scrollY };\n\n const restoreScroll = () => {\n savedScroll.forEach(({ el, left, top }) => {\n el.scrollLeft = left;\n el.scrollTop = top;\n });\n window.scrollTo(windowScroll.x, windowScroll.y);\n };\n\n this.input.focus();\n restoreScroll();\n requestAnimationFrame(restoreScroll);\n setTimeout(restoreScroll, 0);\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 answers: {\n ...state.session.answers,\n [name]: { value: subfieldValue },\n },\n },\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const { answers } = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n // function for tooltip\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 renderTeacherInstructions = () => {\n const { model } = this.props;\n const { teacherInstructions, animationsDisabled } = model || {};\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n return (\n showTeacherInstructions && (\n <CollapsibleContainer>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </CollapsibleContainer>\n )\n );\n };\n\n renderRationale = () => {\n const { model } = this.props;\n const { rationale, animationsDisabled } = model || {};\n const rationaleDiv = <PreviewPrompt prompt={rationale} />;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n\n return (\n showRationale && (\n <CollapsibleContainer>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>{rationaleDiv}</Collapsible>\n ) : (\n rationaleDiv\n )}\n </CollapsibleContainer>\n )\n );\n };\n\n renderPlayerContent = () => {\n const { model } = this.props;\n const { activeAnswerBlock, showCorrect, session, tooltipContainerRef } = this.state;\n const {\n correctness,\n disabled,\n view,\n responses,\n equationEditor,\n customKeys,\n feedback,\n env: { mode } = {},\n printMode,\n alwaysShowCorrect,\n } = model || {};\n\n const emptyResponse = isEmpty(responses);\n const additionalKeys = generateAdditionalKeys(customKeys);\n const statics = prepareForStatic(model, this.state) || '';\n const studentPrintMode = printMode && !alwaysShowCorrect;\n\n return (\n <InputAndKeypadContainer>\n <Customizable\n disabled={disabled}\n markup={model.markup}\n // TODO remove the need of value?\n value={{}}\n customMarkMarkupComponent={(id) => {\n const responseIsCorrect = mode === 'evaluate' && feedback && feedback[id];\n\n const MQStatic = (\n <StyledStatic\n ref={(mqStatic) => {\n this.mqStatic = mqStatic || this.mqStatic;\n }}\n latex={statics[id]}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n );\n\n return (\n <Expression\n ref={tooltipContainerRef}\n $incorrect={!emptyResponse && !responseIsCorrect && !showCorrect}\n $correct={!emptyResponse && (responseIsCorrect || showCorrect)}\n $showCorrectness={!emptyResponse && disabled && correctness && !view}\n $correctAnswerShown={showCorrect}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={activeAnswerBlock === `r${id}`}\n slotProps={{\n popper: {\n container: tooltipContainerRef?.current || undefined,\n // 'bottom-start' left-aligns the keypad with the left edge of the\n // response area by default. The smartHorizontalPlacement modifier\n // below overrides this when the keypad would overflow the viewport.\n placement: 'bottom-start',\n sx: {\n backgroundColor: 'transparent',\n width: 'auto',\n opacity: 1,\n '& .MuiTooltip-arrow': {\n display: 'none',\n },\n },\n modifiers: [\n {\n name: 'preventOverflow',\n enabled: true,\n options: {\n boundary: 'viewport',\n mainAxis: false,\n altAxis: true,\n },\n },\n {\n name: 'flip',\n enabled: false,\n },\n\n smartHorizontalPlacementModifier,\n ],\n },\n tooltip: {\n sx: {\n fontSize: 'initial',\n backgroundColor: 'transparent',\n width: 'auto',\n maxWidth: 'none',\n marginTop: 0,\n paddingTop: 0,\n boxShadow: 'none',\n },\n },\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <ResponseContainer\n data-keypad={true}\n key={answerId}\n style={{ width: getKeyPadWidth(additionalKeys, equationEditor) }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </ResponseContainer>\n )) ||\n null,\n )}\n >\n {studentPrintMode ? <PrintContainer>{MQStatic}</PrintContainer> : <div>{MQStatic}</div>}\n </Tooltip>\n </Expression>\n );\n }}\n />\n </InputAndKeypadContainer>\n );\n };\n\n render() {\n const { model } = this.props;\n const { showCorrect } = this.state;\n const {\n prompt,\n env: { mode, role } = {},\n extraCSSRules,\n correctness,\n responses,\n language,\n showNote,\n note,\n } = model || {};\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n\n return (\n <StyledUiLayout\n extraCSSRules={extraCSSRules}\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 <MainContainer>\n {/* what is srOnly ? */}\n {mode === 'gather' && <SrOnly>Math Equation Response Question</SrOnly>}\n\n <MainContainer>\n {showCorrectAnswerToggle && (\n <StyledToggle language={language} show toggled={showCorrect} onToggle={this.toggleShowCorrect} />\n )}\n </MainContainer>\n\n {this.renderTeacherInstructions()}\n\n {prompt && (\n <PromptContainer>\n <PreviewPrompt prompt={prompt} />\n </PromptContainer>\n )}\n\n <Readable false>{this.renderPlayerContent()}</Readable>\n\n {displayNote && <Note className=\"note\" dangerouslySetInnerHTML={{ __html: note }} />}\n\n {this.renderRationale()}\n </MainContainer>\n </StyledUiLayout>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_styles","_Tooltip","_mathInput","_renderUi","_mathRendering","_maskMarkup","_correctAnswerToggle","_reactDom","StyledUiLayout","styled","UiLayout","color","text","backgroundColor","background","display","MainContainer","width","position","PromptContainer","theme","marginBottom","spacing","CollapsibleContainer","InputAndKeypadContainer","alignItems","flexWrap","border","padding","minWidth","lineHeight","top","left","right","borderTop","paddingTop","Expression","$incorrect","$correct","$showCorrectness","$correctAnswerShown","maxWidth","borderColor","incorrect","correct","letterSpacing","StyledStatic","mq","Static","ResponseContainer","zIndex","marginTop","PrintContainer","pointerEvents","SrOnly","height","overflow","Note","StyledToggle","CorrectAnswerToggle","document","styleId","getElementById","style","createElement","id","textContent","head","appendChild","registered","REGEX","DEFAULT_KEYPAD_VARIANT","KEYPAD_VIEWPORT_PADDING","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","splitByParts","parts","split","filter","part","prepareForStatic","model","state","responses","disabled","markup","printMode","alwaysShowCorrect","showCorrect","Object","keys","reduce","acc","responseKey","answer","splitted","match","Main","getResponseKey","session","answers","blankSpace","repeat","value","smartHorizontalPlacementModifier","enabled","phase","requires","fn","offsets","modifiersData","popperOffsets","viewportWidth","window","innerWidth","documentElement","clientWidth","popperWidth","rects","popper","referenceViewportLeft","elements","reference","getBoundingClientRect","offsetParentEl","offsetParent","offsetParentRect","offsetParentScrollLeft","scrollLeft","referenceOffsetParentX","viewportLeftInOffsetParent","minX","maxX","x","min","max","React","Component","constructor","props","_defineProperty2","default","root","forEach","answerId","el","querySelector","indexEl","applyStaticMath","view","parentElement","classList","remove","renderMath","editableFields","Array","from","querySelectorAll","savedScroll","scrollTop","restoreEditableScroll","setState","activeAnswerBlock","requestAnimationFrame","setTimeout","data","type","input","c","toNodeData","clear","isArray","vv","cmd","keystroke","fieldElement","scrollTargets","node","body","isScrollable","scrollWidth","scrollHeight","clientHeight","push","scrollingElement","windowScroll","scrollX","y","scrollY","restoreScroll","scrollTo","focus","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","updateSpans","callOnSessionChange","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","getParentWithRoleTooltip","element","depth","parent","getAttribute","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","teacherInstructions","animationsDisabled","showTeacherInstructions","hasText","hasMedia","teacherInstructionsDiv","PreviewPrompt","defaultClassName","prompt","Collapsible","labels","hidden","visible","rationale","rationaleDiv","showRationale","tooltipContainerRef","correctness","customKeys","feedback","env","mode","emptyResponse","isEmpty","statics","studentPrintMode","Customizable","customMarkMarkupComponent","responseIsCorrect","MQStatic","ref","mqStatic","onSubFieldChange","subFieldChanged","getFieldName","setInput","onSubFieldFocus","onBlur","setTooltipRef","enterTouchDelay","interactive","open","slotProps","container","current","undefined","placement","sx","opacity","modifiers","tooltip","fontSize","boxShadow","title","HorizontalKeypad","onClick","sessionAnswers","replace","response","sessionAnswerForResponse","createRef","UNSAFE_componentWillMount","registerEmbed","htmlString","UNSAFE_componentWillReceiveProps","nextProps","nextModel","nextMarkup","nextEnv","nextAlwaysShowCorrect","isEvaluateMode","prevState","matches","nextMatches","isEqual","newAnswers","nextMatch","shouldComponentUpdate","nextState","sameModel","sameState","componentDidMount","componentDidUpdate","div","firstChild","setAttribute","render","role","extraCSSRules","language","showNote","note","showCorrectAnswerToggle","displayNote","r","domNode","ReactDOM","findDOMNode","toggled","onToggle","toggleShowCorrect","renderTeacherInstructions","Readable","false","renderPlayerContent","className","dangerouslySetInnerHTML","__html","renderRationale","exports","replaceAll","PropTypes","object","isRequired","func","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport { styled } from '@mui/material/styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport { mq, HorizontalKeypad, updateSpans, registerEmbed, applyStaticMath } from '@pie-lib/math-input';\nimport { color, Collapsible, Readable, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { Customizable } from '@pie-lib/mask-markup';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport ReactDOM from 'react-dom';\n\nconst StyledUiLayout = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n});\n\nconst MainContainer = styled('div')({\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst PromptContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst CollapsibleContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst InputAndKeypadContainer = styled('div')({\n position: 'relative',\n '& > div > div': {\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n },\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\nconst Expression = styled('div')(({ theme, $incorrect, $correct, $showCorrectness, $correctAnswerShown }) => ({\n maxWidth: 'fit-content',\n ...($incorrect && {\n borderColor: `${color.incorrect()} !important`,\n }),\n ...($correct && {\n borderColor: `${color.correct()} !important`,\n }),\n ...($showCorrectness && {\n border: '2px solid',\n }),\n ...($correctAnswerShown && {\n padding: theme.spacing(1),\n letterSpacing: '0.5px',\n }),\n '& > .mq-math-mode': {\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n minWidth: '10px',\n padding: theme.spacing(0.25),\n },\n },\n '& sup': {\n top: 0,\n },\n },\n}));\n\nconst StyledStatic = styled(mq.Static)({\n '& > .mq-root-block': {\n '& > .mq-editable-field': {\n borderColor: color.text(),\n },\n },\n});\n\n// Tooltip styling is handled via slotProps, no need for styled component\n\nconst ResponseContainer = styled('div')(({ theme }) => ({\n zIndex: 10,\n minWidth: '400px',\n marginTop: theme.spacing(2),\n}));\n\nconst PrintContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(1),\n pointerEvents: 'none',\n}));\n\nconst SrOnly = styled('h2')({\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n});\n\nconst Note = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst StyledToggle = styled(CorrectAnswerToggle)(({ theme }) => ({\n color: color.text(),\n marginBottom: theme.spacing(2),\n}));\n\n// CSS for classes used in HTML strings and classList operations\nif (typeof document !== 'undefined') {\n const styleId = 'math-templated-main-styles';\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style');\n style.id = styleId;\n style.textContent = `\n .block-container {\n margin: 8px !important;\n display: inline-flex;\n border: 2px solid grey !important;\n }\n .block-response {\n flex: 2;\n color: grey;\n background: rgba(0, 0, 0, 0.04);\n font-size: 0.8rem !important;\n padding: 4px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n border-right: 2px solid #bdbdbd !important;\n }\n .block-math {\n color: ${color.text()};\n background-color: ${color.background()};\n padding: 4px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 8;\n }\n .block-math > .mq-math-mode > .mq-hasCursor > .mq-cursor {\n display: none;\n }\n .correct {\n border-color: ${color.correct()} !important;\n }\n .incorrect {\n border-color: ${color.incorrect()} !important;\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nlet registered = false;\n\n// Define a regex pattern to match {{number}}\nconst REGEX = /(\\{\\{\\d+\\}\\})/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\nconst KEYPAD_VIEWPORT_PADDING = 8;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction splitByParts(text) {\n // Use the regex pattern to split the text\n const parts = text.split(REGEX);\n // Filter out empty strings that might result from splitting\n return parts.filter((part) => part);\n}\n\nfunction prepareForStatic(model, state) {\n const { responses, disabled, markup, printMode, alwaysShowCorrect } = model || {};\n\n if (markup) {\n if (state.showCorrect) {\n return Object.keys(responses || {}).reduce((acc, responseKey) => {\n acc[responseKey] = responses?.[responseKey]?.answer;\n\n return acc;\n }, {});\n }\n\n const splitted = splitByParts(markup);\n\n return splitted.reduce((acc, split) => {\n if (split.match(REGEX)) {\n const responseKey = Main.getResponseKey(split);\n const answer = state.session.answers[`r${responseKey}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\embed{newLine}[] ';\n\n return {\n ...acc,\n [responseKey]: `\\\\MathQuillMathField[r${responseKey}]{${blankSpace.repeat(3)}}`,\n };\n }\n\n if (disabled) {\n return {\n ...acc,\n [responseKey]: `\\\\embed{answerBlock}[r${responseKey}]`,\n };\n }\n\n return {\n ...acc,\n [responseKey]: `\\\\MathQuillMathField[r${responseKey}]{${(answer && answer.value) || ''}}`,\n };\n }\n\n return acc;\n }, {});\n }\n}\n\n/**\n * Popper.js v2 modifier that implements precise horizontal placement:\n *\n * 1. Default: left-align the keypad with the left edge of the response area.\n *\n * 2. Overflow: if left-aligning would push the right edge of the keypad past\n * the viewport's right edge, right-align the keypad so that its right edge\n * sits exactly at the left edge of the response area.\n *\n * In both cases we compute offsets.x from first principles (rather than\n * adjusting whatever Popper already set) to avoid any upstream skew.\n *\n * Coordinate note:\n * state.rects.reference.x — reference's left edge in offset-parent coords.\n * getBoundingClientRect() — viewport-relative coords.\n * Both describe the same physical point, so the difference between them is\n * the constant offset needed to convert viewport ↔ offset-parent coords.\n */\nconst smartHorizontalPlacementModifier = {\n name: 'smartHorizontalPlacement',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: ({ state }) => {\n const offsets = state.modifiersData.popperOffsets;\n if (!offsets) return;\n\n const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n const popperWidth = state.rects.popper.width;\n\n const referenceViewportLeft = state.elements.reference.getBoundingClientRect().left;\n\n const offsetParentEl = state.elements.popper?.offsetParent;\n const offsetParentRect = offsetParentEl?.getBoundingClientRect?.() || { left: 0 };\n const offsetParentScrollLeft = offsetParentEl?.scrollLeft || 0;\n const referenceOffsetParentX = referenceViewportLeft - offsetParentRect.left + offsetParentScrollLeft;\n const viewportLeftInOffsetParent = referenceOffsetParentX - referenceViewportLeft;\n const minX = viewportLeftInOffsetParent + KEYPAD_VIEWPORT_PADDING;\n const maxX = viewportLeftInOffsetParent + viewportWidth - popperWidth - KEYPAD_VIEWPORT_PADDING;\n\n if (referenceViewportLeft + popperWidth <= viewportWidth) {\n offsets.x = referenceOffsetParentX;\n } else {\n offsets.x = referenceOffsetParentX - popperWidth;\n }\n\n if (maxX < minX) {\n offsets.x = minX;\n } else {\n offsets.x = Math.min(Math.max(offsets.x, minX), maxX);\n }\n },\n};\n\nexport class Main extends React.Component {\n // removes {{ and }} and returns only key response. Eg: {{0}} => 0\n static getResponseKey = (response) => (response || '').replaceAll('{{', '').replaceAll('}}', '');\n\n static propTypes = {\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n const answers = {};\n const { model, session } = props || {};\n const { markup, alwaysShowCorrect } = model || {};\n const { answers: sessionAnswers } = session || {};\n\n if (markup) {\n (markup || '').replace(REGEX, (response) => {\n const responseKey = Main.getResponseKey(response);\n const sessionAnswerForResponse = sessionAnswers && sessionAnswers[`r${responseKey}`];\n\n answers[`r${responseKey}`] = { value: sessionAnswerForResponse?.value || '' };\n });\n }\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: alwaysShowCorrect || false,\n tooltipContainerRef: React.createRef(),\n };\n }\n\n UNSAFE_componentWillMount() {\n if (typeof window !== 'undefined') {\n if (!registered) {\n registerEmbed('answerBlock', (data) => ({\n htmlString: `<div class=\"block-container\">\n <div class=\"block-response\" id=\"${data}Index\">R</div>\n <div class=\"block-math\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n }));\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = 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\n if (el) {\n const answer = answers[answerId];\n\n applyStaticMath(el, (answer && answer.value) || '');\n\n if (model.view) {\n el.parentElement.parentElement.classList.remove('correct');\n el.parentElement.parentElement.classList.remove('incorrect');\n }\n\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model } = this.props;\n const { model: nextModel = {} } = nextProps || {};\n const { markup = '', env = {} } = model || {};\n const { markup: nextMarkup = '', env: nextEnv = {}, alwaysShowCorrect: nextAlwaysShowCorrect = false } = nextModel;\n\n const isEvaluateMode = (env) => env && env.mode === 'evaluate';\n\n if (!isEvaluateMode(env) || !isEvaluateMode(nextEnv)) {\n this.setState((prevState) => ({ ...prevState.session, showCorrect: false }));\n }\n\n if (nextAlwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n\n const matches = markup.match(REGEX);\n const nextMatches = nextMarkup.match(REGEX);\n\n // If markup changed, and we no longer have the same response area, the session needs to be updated\n if (!isEqual(matches, nextMatches)) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n (nextMatches || []).forEach((nextMatch) => {\n const responseKey = Main.getResponseKey(nextMatch);\n const sessionAnswerForResponse = answers && answers[`r${responseKey}`];\n\n // build out local state model using responses declared in markup\n newAnswers[`r${responseKey}`] = { value: sessionAnswerForResponse?.value || '' };\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: newAnswers,\n },\n }),\n () => {\n this.props.onSessionChange(this.state.session);\n this.handleAnswerBlockDomUpdate();\n },\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 setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n onSubFieldFocus = (id) => {\n const editableFields = Array.from(this.root?.querySelectorAll('.mq-editable-field') || []);\n const savedScroll = editableFields.map((el) => ({\n el,\n left: el.scrollLeft,\n top: el.scrollTop,\n }));\n\n const restoreEditableScroll = () => {\n savedScroll.forEach(({ el, left, top }) => {\n el.scrollLeft = left;\n el.scrollTop = top;\n });\n };\n\n this.setState({ activeAnswerBlock: id }, () => {\n restoreEditableScroll();\n requestAnimationFrame(restoreEditableScroll);\n setTimeout(restoreEditableScroll, 0);\n });\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') return data;\n\n if (type === 'answer') return { type: 'answer', ...data };\n\n if (value === 'clear') return { type: 'clear' };\n\n return { type: 'write', value };\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 // Keep all relevant scroll containers stable when refocusing after keypad\n // click. Browser \"focus into view\" can scroll horizontally back to start.\n const fieldElement = this.input?.el?.() || this.root;\n const scrollTargets = [];\n let node = fieldElement;\n\n while (node && node !== document.body && node !== document.documentElement) {\n const isScrollable = node.scrollWidth > node.clientWidth || node.scrollHeight > node.clientHeight;\n if (isScrollable) {\n scrollTargets.push(node);\n }\n node = node.parentElement;\n }\n\n if (document.scrollingElement) {\n scrollTargets.push(document.scrollingElement);\n }\n\n const savedScroll = scrollTargets.map((el) => ({\n el,\n left: el.scrollLeft,\n top: el.scrollTop,\n }));\n const windowScroll = { x: window.scrollX, y: window.scrollY };\n\n const restoreScroll = () => {\n savedScroll.forEach(({ el, left, top }) => {\n el.scrollLeft = left;\n el.scrollTop = top;\n });\n window.scrollTo(windowScroll.x, windowScroll.y);\n };\n\n this.input.focus();\n restoreScroll();\n requestAnimationFrame(restoreScroll);\n setTimeout(restoreScroll, 0);\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 answers: {\n ...state.session.answers,\n [name]: { value: subfieldValue },\n },\n },\n }),\n this.callOnSessionChange,\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const { answers } = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n // function for tooltip\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 renderTeacherInstructions = () => {\n const { model } = this.props;\n const { teacherInstructions, animationsDisabled } = model || {};\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n return (\n showTeacherInstructions && (\n <CollapsibleContainer>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </CollapsibleContainer>\n )\n );\n };\n\n renderRationale = () => {\n const { model } = this.props;\n const { rationale, animationsDisabled } = model || {};\n const rationaleDiv = <PreviewPrompt prompt={rationale} />;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n\n return (\n showRationale && (\n <CollapsibleContainer>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>{rationaleDiv}</Collapsible>\n ) : (\n rationaleDiv\n )}\n </CollapsibleContainer>\n )\n );\n };\n\n renderPlayerContent = () => {\n const { model } = this.props;\n const { activeAnswerBlock, showCorrect, session, tooltipContainerRef } = this.state;\n const {\n correctness,\n disabled,\n view,\n responses,\n equationEditor,\n customKeys,\n feedback,\n env: { mode } = {},\n printMode,\n alwaysShowCorrect,\n } = model || {};\n\n const emptyResponse = isEmpty(responses);\n const additionalKeys = generateAdditionalKeys(customKeys);\n const statics = prepareForStatic(model, this.state) || '';\n const studentPrintMode = printMode && !alwaysShowCorrect;\n\n return (\n <InputAndKeypadContainer>\n <Customizable\n disabled={disabled}\n markup={model.markup}\n // TODO remove the need of value?\n value={{}}\n customMarkMarkupComponent={(id) => {\n const responseIsCorrect = mode === 'evaluate' && feedback && feedback[id];\n\n const MQStatic = (\n <StyledStatic\n ref={(mqStatic) => {\n this.mqStatic = mqStatic || this.mqStatic;\n }}\n latex={statics[id]}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n );\n\n return (\n <Expression\n ref={tooltipContainerRef}\n $incorrect={!emptyResponse && !responseIsCorrect && !showCorrect}\n $correct={!emptyResponse && (responseIsCorrect || showCorrect)}\n $showCorrectness={!emptyResponse && disabled && correctness && !view}\n $correctAnswerShown={showCorrect}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={activeAnswerBlock === `r${id}`}\n slotProps={{\n popper: {\n container: tooltipContainerRef?.current || undefined,\n // 'bottom-start' left-aligns the keypad with the left edge of the\n // response area by default. The smartHorizontalPlacement modifier\n // below overrides this when the keypad would overflow the viewport.\n placement: 'bottom-start',\n sx: {\n backgroundColor: 'transparent',\n width: 'auto',\n opacity: 1,\n '& .MuiTooltip-arrow': {\n display: 'none',\n },\n },\n modifiers: [\n {\n name: 'preventOverflow',\n enabled: false,\n },\n {\n name: 'flip',\n enabled: false,\n },\n smartHorizontalPlacementModifier,\n ],\n },\n tooltip: {\n sx: {\n fontSize: 'initial',\n backgroundColor: 'transparent',\n width: 'auto',\n maxWidth: 'none',\n marginTop: 0,\n paddingTop: 0,\n boxShadow: 'none',\n },\n },\n }}\n title={Object.keys(session.answers).map(\n (answerId) =>\n (answerId === activeAnswerBlock && !(showCorrect || disabled) && (\n <ResponseContainer\n data-keypad={true}\n key={answerId}\n style={{ width: getKeyPadWidth(additionalKeys, equationEditor) }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </ResponseContainer>\n )) ||\n null,\n )}\n >\n {studentPrintMode ? <PrintContainer>{MQStatic}</PrintContainer> : <div>{MQStatic}</div>}\n </Tooltip>\n </Expression>\n );\n }}\n />\n </InputAndKeypadContainer>\n );\n };\n\n render() {\n const { model } = this.props;\n const { showCorrect } = this.state;\n const {\n prompt,\n env: { mode, role } = {},\n extraCSSRules,\n correctness,\n responses,\n language,\n showNote,\n note,\n } = model || {};\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n\n return (\n <StyledUiLayout\n extraCSSRules={extraCSSRules}\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 <MainContainer>\n {/* what is srOnly ? */}\n {mode === 'gather' && <SrOnly>Math Equation Response Question</SrOnly>}\n\n <MainContainer>\n {showCorrectAnswerToggle && (\n <StyledToggle language={language} show toggled={showCorrect} onToggle={this.toggleShowCorrect} />\n )}\n </MainContainer>\n\n {this.renderTeacherInstructions()}\n\n {prompt && (\n <PromptContainer>\n <PreviewPrompt prompt={prompt} />\n </PromptContainer>\n )}\n\n <Readable false>{this.renderPlayerContent()}</Readable>\n\n {displayNote && <Note className=\"note\" dangerouslySetInnerHTML={{ __html: note }} />}\n\n {this.renderRationale()}\n </MainContainer>\n </StyledUiLayout>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}