@pie-element/math-templated 6.2.0-next.8 → 7.0.0
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 +24 -0
- package/configure/CHANGELOG.md +18 -0
- package/configure/package.json +5 -5
- package/controller/CHANGELOG.md +6 -0
- package/controller/package.json +3 -3
- package/lib/main.js +131 -12
- package/lib/main.js.map +1 -1
- package/module/configure.js +1 -1
- package/module/element.js +1 -1
- package/module/index.html +1 -1
- package/module/manifest.json +5 -5
- package/module/print.html +1 -1
- package/module/print.js +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
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.2.0-next.12](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@6.2.0-next.11...@pie-element/math-templated@6.2.0-next.12) (2026-04-27)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- bump major libs and shared modules ([acb4bf3](https://github.com/pie-framework/pie-elements/commit/acb4bf32dafd5cd47cd1c673791b7af3c66b2938))
|
|
11
|
+
|
|
12
|
+
# [6.2.0-next.11](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@6.2.0-next.10...@pie-element/math-templated@6.2.0-next.11) (2026-04-24)
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
- bump dLl modules and libs PIE-171, PIE-133, PIE-151, PIE-130, PIE-147, PIE-168, PIE-425 ([6b02d2a](https://github.com/pie-framework/pie-elements/commit/6b02d2abfd4027569150d347ea9f7701ce634270))
|
|
17
|
+
|
|
18
|
+
# [6.2.0-next.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@6.2.0-next.9...@pie-element/math-templated@6.2.0-next.10) (2026-04-23)
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
- **math-templated:** handle math keypad possition according to req, avoid kekpad move by adding content in input PIE-23 ([9769816](https://github.com/pie-framework/pie-elements/commit/9769816260a2961d20a2a9c258c784796f5bbc5f))
|
|
23
|
+
|
|
24
|
+
# [6.2.0-next.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@6.2.0-next.8...@pie-element/math-templated@6.2.0-next.9) (2026-04-17)
|
|
25
|
+
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
- bump libs PIE-129 ([cee3e10](https://github.com/pie-framework/pie-elements/commit/cee3e109a9c1d9a68ab592781c968f6b27209846))
|
|
29
|
+
|
|
6
30
|
# [6.2.0-next.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@6.2.0-next.7...@pie-element/math-templated@6.2.0-next.8) (2026-04-16)
|
|
7
31
|
|
|
8
32
|
### Bug Fixes
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
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
|
+
# [4.2.0-next.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-configure@4.2.0-next.9...@pie-element/math-templated-configure@4.2.0-next.10) (2026-04-27)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- bump major libs and shared modules ([acb4bf3](https://github.com/pie-framework/pie-elements/commit/acb4bf32dafd5cd47cd1c673791b7af3c66b2938))
|
|
11
|
+
|
|
12
|
+
# [4.2.0-next.9](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-configure@4.2.0-next.8...@pie-element/math-templated-configure@4.2.0-next.9) (2026-04-24)
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
- bump dLl modules and libs PIE-171, PIE-133, PIE-151, PIE-130, PIE-147, PIE-168, PIE-425 ([6b02d2a](https://github.com/pie-framework/pie-elements/commit/6b02d2abfd4027569150d347ea9f7701ce634270))
|
|
17
|
+
|
|
18
|
+
# [4.2.0-next.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-configure@4.2.0-next.7...@pie-element/math-templated-configure@4.2.0-next.8) (2026-04-17)
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
- bump libs PIE-129 ([cee3e10](https://github.com/pie-framework/pie-elements/commit/cee3e109a9c1d9a68ab592781c968f6b27209846))
|
|
23
|
+
|
|
6
24
|
# [4.2.0-next.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-configure@4.2.0-next.6...@pie-element/math-templated-configure@4.2.0-next.7) (2026-04-16)
|
|
7
25
|
|
|
8
26
|
### Bug Fixes
|
package/configure/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/math-templated-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "5.0.0",
|
|
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": "
|
|
15
|
-
"@pie-lib/editable-html-tip-tap": "
|
|
16
|
-
"@pie-lib/math-toolbar": "
|
|
17
|
-
"@pie-lib/render-ui": "
|
|
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",
|
|
18
18
|
"debug": "^4.1.1",
|
|
19
19
|
"lodash-es": "^4.17.23",
|
|
20
20
|
"prop-types": "^15.8.1",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -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.2.0-next.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-controller@5.2.0-next.1...@pie-element/math-templated-controller@5.2.0-next.2) (2026-04-27)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- bump major libs and shared modules ([acb4bf3](https://github.com/pie-framework/pie-elements/commit/acb4bf32dafd5cd47cd1c673791b7af3c66b2938))
|
|
11
|
+
|
|
6
12
|
# [5.2.0-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-controller@5.2.0-next.0...@pie-element/math-templated-controller@5.2.0-next.1) (2026-04-03)
|
|
7
13
|
|
|
8
14
|
**Note:** Version bump only for package @pie-element/math-templated-controller
|
package/controller/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/math-templated-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "6.0.0",
|
|
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": "
|
|
11
|
-
"@pie-lib/translator": "
|
|
10
|
+
"@pie-lib/controller-utils": "2.0.0",
|
|
11
|
+
"@pie-lib/translator": "4.0.0",
|
|
12
12
|
"debug": "^4.1.1",
|
|
13
13
|
"lodash-es": "^4.17.23"
|
|
14
14
|
},
|
package/lib/main.js
CHANGED
|
@@ -213,6 +213,7 @@ let registered = false;
|
|
|
213
213
|
// Define a regex pattern to match {{number}}
|
|
214
214
|
const REGEX = /(\{\{\d+\}\})/gm;
|
|
215
215
|
const DEFAULT_KEYPAD_VARIANT = 6;
|
|
216
|
+
const KEYPAD_VIEWPORT_PADDING = 8;
|
|
216
217
|
|
|
217
218
|
// !!! If you're using Chrome but have selected the "iPad" device in Chrome Developer Tools, the navigator.userAgent string may still report as
|
|
218
219
|
// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.
|
|
@@ -280,6 +281,59 @@ function prepareForStatic(model, state) {
|
|
|
280
281
|
}, {});
|
|
281
282
|
}
|
|
282
283
|
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Popper.js v2 modifier that implements precise horizontal placement:
|
|
287
|
+
*
|
|
288
|
+
* 1. Default: left-align the keypad with the left edge of the response area.
|
|
289
|
+
*
|
|
290
|
+
* 2. Overflow: if left-aligning would push the right edge of the keypad past
|
|
291
|
+
* the viewport's right edge, right-align the keypad so that its right edge
|
|
292
|
+
* sits exactly at the left edge of the response area.
|
|
293
|
+
*
|
|
294
|
+
* In both cases we compute offsets.x from first principles (rather than
|
|
295
|
+
* adjusting whatever Popper already set) to avoid any upstream skew.
|
|
296
|
+
*
|
|
297
|
+
* Coordinate note:
|
|
298
|
+
* state.rects.reference.x — reference's left edge in offset-parent coords.
|
|
299
|
+
* getBoundingClientRect() — viewport-relative coords.
|
|
300
|
+
* Both describe the same physical point, so the difference between them is
|
|
301
|
+
* the constant offset needed to convert viewport ↔ offset-parent coords.
|
|
302
|
+
*/
|
|
303
|
+
const smartHorizontalPlacementModifier = {
|
|
304
|
+
name: 'smartHorizontalPlacement',
|
|
305
|
+
enabled: true,
|
|
306
|
+
phase: 'main',
|
|
307
|
+
requires: ['popperOffsets'],
|
|
308
|
+
fn: ({
|
|
309
|
+
state
|
|
310
|
+
}) => {
|
|
311
|
+
const offsets = state.modifiersData.popperOffsets;
|
|
312
|
+
if (!offsets) return;
|
|
313
|
+
const viewportWidth = window.innerWidth || document.documentElement.clientWidth;
|
|
314
|
+
const popperWidth = state.rects.popper.width;
|
|
315
|
+
const referenceViewportLeft = state.elements.reference.getBoundingClientRect().left;
|
|
316
|
+
const offsetParentEl = state.elements.popper?.offsetParent;
|
|
317
|
+
const offsetParentRect = offsetParentEl?.getBoundingClientRect?.() || {
|
|
318
|
+
left: 0
|
|
319
|
+
};
|
|
320
|
+
const offsetParentScrollLeft = offsetParentEl?.scrollLeft || 0;
|
|
321
|
+
const referenceOffsetParentX = referenceViewportLeft - offsetParentRect.left + offsetParentScrollLeft;
|
|
322
|
+
const viewportLeftInOffsetParent = referenceOffsetParentX - referenceViewportLeft;
|
|
323
|
+
const minX = viewportLeftInOffsetParent + KEYPAD_VIEWPORT_PADDING;
|
|
324
|
+
const maxX = viewportLeftInOffsetParent + viewportWidth - popperWidth - KEYPAD_VIEWPORT_PADDING;
|
|
325
|
+
if (referenceViewportLeft + popperWidth <= viewportWidth) {
|
|
326
|
+
offsets.x = referenceOffsetParentX;
|
|
327
|
+
} else {
|
|
328
|
+
offsets.x = referenceOffsetParentX - popperWidth;
|
|
329
|
+
}
|
|
330
|
+
if (maxX < minX) {
|
|
331
|
+
offsets.x = minX;
|
|
332
|
+
} else {
|
|
333
|
+
offsets.x = Math.min(Math.max(offsets.x, minX), maxX);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
};
|
|
283
337
|
class Main extends _react.default.Component {
|
|
284
338
|
constructor(props) {
|
|
285
339
|
super(props);
|
|
@@ -312,8 +366,28 @@ class Main extends _react.default.Component {
|
|
|
312
366
|
(0, _mathRendering.renderMath)(this.root);
|
|
313
367
|
});
|
|
314
368
|
(0, _defineProperty2.default)(this, "onSubFieldFocus", id => {
|
|
369
|
+
const editableFields = Array.from(this.root?.querySelectorAll('.mq-editable-field') || []);
|
|
370
|
+
const savedScroll = editableFields.map(el => ({
|
|
371
|
+
el,
|
|
372
|
+
left: el.scrollLeft,
|
|
373
|
+
top: el.scrollTop
|
|
374
|
+
}));
|
|
375
|
+
const restoreEditableScroll = () => {
|
|
376
|
+
savedScroll.forEach(({
|
|
377
|
+
el,
|
|
378
|
+
left,
|
|
379
|
+
top
|
|
380
|
+
}) => {
|
|
381
|
+
el.scrollLeft = left;
|
|
382
|
+
el.scrollTop = top;
|
|
383
|
+
});
|
|
384
|
+
};
|
|
315
385
|
this.setState({
|
|
316
386
|
activeAnswerBlock: id
|
|
387
|
+
}, () => {
|
|
388
|
+
restoreEditableScroll();
|
|
389
|
+
requestAnimationFrame(restoreEditableScroll);
|
|
390
|
+
setTimeout(restoreEditableScroll, 0);
|
|
317
391
|
});
|
|
318
392
|
});
|
|
319
393
|
(0, _defineProperty2.default)(this, "toNodeData", data => {
|
|
@@ -357,7 +431,46 @@ class Main extends _react.default.Component {
|
|
|
357
431
|
} else {
|
|
358
432
|
this.input.write(c.value);
|
|
359
433
|
}
|
|
434
|
+
|
|
435
|
+
// Keep all relevant scroll containers stable when refocusing after keypad
|
|
436
|
+
// click. Browser "focus into view" can scroll horizontally back to start.
|
|
437
|
+
const fieldElement = this.input?.el?.() || this.root;
|
|
438
|
+
const scrollTargets = [];
|
|
439
|
+
let node = fieldElement;
|
|
440
|
+
while (node && node !== document.body && node !== document.documentElement) {
|
|
441
|
+
const isScrollable = node.scrollWidth > node.clientWidth || node.scrollHeight > node.clientHeight;
|
|
442
|
+
if (isScrollable) {
|
|
443
|
+
scrollTargets.push(node);
|
|
444
|
+
}
|
|
445
|
+
node = node.parentElement;
|
|
446
|
+
}
|
|
447
|
+
if (document.scrollingElement) {
|
|
448
|
+
scrollTargets.push(document.scrollingElement);
|
|
449
|
+
}
|
|
450
|
+
const savedScroll = scrollTargets.map(el => ({
|
|
451
|
+
el,
|
|
452
|
+
left: el.scrollLeft,
|
|
453
|
+
top: el.scrollTop
|
|
454
|
+
}));
|
|
455
|
+
const windowScroll = {
|
|
456
|
+
x: window.scrollX,
|
|
457
|
+
y: window.scrollY
|
|
458
|
+
};
|
|
459
|
+
const restoreScroll = () => {
|
|
460
|
+
savedScroll.forEach(({
|
|
461
|
+
el,
|
|
462
|
+
left,
|
|
463
|
+
top
|
|
464
|
+
}) => {
|
|
465
|
+
el.scrollLeft = left;
|
|
466
|
+
el.scrollTop = top;
|
|
467
|
+
});
|
|
468
|
+
window.scrollTo(windowScroll.x, windowScroll.y);
|
|
469
|
+
};
|
|
360
470
|
this.input.focus();
|
|
471
|
+
restoreScroll();
|
|
472
|
+
requestAnimationFrame(restoreScroll);
|
|
473
|
+
setTimeout(restoreScroll, 0);
|
|
361
474
|
});
|
|
362
475
|
(0, _defineProperty2.default)(this, "callOnSessionChange", () => {
|
|
363
476
|
const {
|
|
@@ -533,30 +646,37 @@ class Main extends _react.default.Component {
|
|
|
533
646
|
slotProps: {
|
|
534
647
|
popper: {
|
|
535
648
|
container: tooltipContainerRef?.current || undefined,
|
|
536
|
-
|
|
649
|
+
// 'bottom-start' left-aligns the keypad with the left edge of the
|
|
650
|
+
// response area by default. The smartHorizontalPlacement modifier
|
|
651
|
+
// below overrides this when the keypad would overflow the viewport.
|
|
652
|
+
placement: 'bottom-start',
|
|
537
653
|
sx: {
|
|
538
654
|
backgroundColor: 'transparent',
|
|
539
|
-
width: '
|
|
655
|
+
width: 'auto',
|
|
540
656
|
opacity: 1,
|
|
541
657
|
'& .MuiTooltip-arrow': {
|
|
542
658
|
display: 'none'
|
|
543
659
|
}
|
|
544
660
|
},
|
|
545
|
-
modifiers: {
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
661
|
+
modifiers: [{
|
|
662
|
+
name: 'preventOverflow',
|
|
663
|
+
enabled: true,
|
|
664
|
+
options: {
|
|
665
|
+
boundary: 'viewport',
|
|
666
|
+
mainAxis: false,
|
|
667
|
+
altAxis: true
|
|
552
668
|
}
|
|
553
|
-
}
|
|
669
|
+
}, {
|
|
670
|
+
name: 'flip',
|
|
671
|
+
enabled: false
|
|
672
|
+
}, smartHorizontalPlacementModifier]
|
|
554
673
|
},
|
|
555
674
|
tooltip: {
|
|
556
675
|
sx: {
|
|
557
676
|
fontSize: 'initial',
|
|
558
677
|
backgroundColor: 'transparent',
|
|
559
|
-
width: '
|
|
678
|
+
width: 'auto',
|
|
679
|
+
maxWidth: 'none',
|
|
560
680
|
marginTop: 0,
|
|
561
681
|
paddingTop: 0,
|
|
562
682
|
boxShadow: 'none'
|
|
@@ -591,7 +711,6 @@ class Main extends _react.default.Component {
|
|
|
591
711
|
answers: sessionAnswers
|
|
592
712
|
} = _session || {};
|
|
593
713
|
if (markup) {
|
|
594
|
-
// build out local state model using responses declared in markup
|
|
595
714
|
(markup || '').replace(REGEX, response => {
|
|
596
715
|
const responseKey = Main.getResponseKey(response);
|
|
597
716
|
const sessionAnswerForResponse = sessionAnswers && sessionAnswers[`r${responseKey}`];
|
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","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","React","Component","constructor","props","_defineProperty2","default","root","forEach","answerId","el","querySelector","indexEl","MQ","MathQuill","getInterface","view","parentElement","classList","remove","StaticMath","renderMath","setState","activeAnswerBlock","data","type","input","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","focus","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","updateSpans","callOnSessionChange","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","getParentWithRoleTooltip","element","depth","parent","offsetParent","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","popper","container","current","undefined","placement","sx","opacity","modifiers","preventOverflow","enabled","boundariesElement","flip","tooltip","fontSize","boxShadow","title","HorizontalKeypad","onClick","sessionAnswers","replace","response","sessionAnswerForResponse","createRef","UNSAFE_componentWillMount","window","registerEmbed","htmlString","UNSAFE_componentWillReceiveProps","nextProps","nextModel","nextMarkup","nextEnv","nextAlwaysShowCorrect","isEvaluateMode","prevState","matches","nextMatches","isEqual","newAnswers","nextMatch","shouldComponentUpdate","nextState","sameModel","sameState","componentDidMount","setTimeout","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;\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\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 // build out local state model using responses declared in 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 this.setState({ activeAnswerBlock: id });\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') 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 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 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 placement: 'bottom-end',\n sx: {\n backgroundColor: 'transparent',\n width: '650px',\n opacity: 1,\n '& .MuiTooltip-arrow': {\n display: 'none',\n },\n },\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'body',\n },\n flip: {\n enabled: false,\n },\n },\n },\n tooltip: {\n sx: {\n fontSize: 'initial',\n backgroundColor: 'transparent',\n width: '600px',\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","_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":[]}
|