@pie-element/math-inline 12.2.1 → 12.2.2-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -41
- package/configure/CHANGELOG.md +27 -41
- package/configure/lib/__tests__/configure.test.js +237 -0
- package/configure/lib/general-config-block.js +3 -3
- package/configure/lib/general-config-block.js.map +1 -1
- package/configure/lib/response.js +7 -7
- package/configure/lib/response.js.map +1 -1
- package/configure/package.json +6 -6
- package/controller/CHANGELOG.md +43 -3
- package/controller/lib/__tests__/index.test.js +1416 -0
- package/controller/package.json +1 -1
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/main.test.js +516 -0
- package/lib/__tests__/simple-question-block.test.js +129 -0
- package/lib/main.js +7 -7
- package/lib/main.js.map +1 -1
- package/lib/simple-question-block.js +2 -2
- package/lib/simple-question-block.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
5
|
+
var React = _interopRequireWildcard(require("react"));
|
|
6
|
+
var _react2 = require("@testing-library/react");
|
|
7
|
+
var _mathInputMathlive = require("@pie-lib/math-input-mathlive");
|
|
8
|
+
var _mathToolbar = require("@pie-lib/math-toolbar");
|
|
9
|
+
var _simpleQuestionBlock = _interopRequireDefault(require("../simple-question-block"));
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
|
+
jest.mock('@pie-lib/math-input-mathlive', () => ({
|
|
12
|
+
mq: {
|
|
13
|
+
Static: props => /*#__PURE__*/React.createElement("div", (0, _extends2.default)({
|
|
14
|
+
"data-testid": "mq-static"
|
|
15
|
+
}, props))
|
|
16
|
+
}
|
|
17
|
+
}));
|
|
18
|
+
jest.mock('@pie-lib/math-toolbar', () => ({
|
|
19
|
+
MathToolbar: props => /*#__PURE__*/React.createElement("div", (0, _extends2.default)({
|
|
20
|
+
"data-testid": "math-toolbar"
|
|
21
|
+
}, props))
|
|
22
|
+
}));
|
|
23
|
+
describe('SimpleQuestionBlock', () => {
|
|
24
|
+
const defaultProps = {
|
|
25
|
+
model: {
|
|
26
|
+
config: {
|
|
27
|
+
mode: 'advanced',
|
|
28
|
+
feedback: {
|
|
29
|
+
correct: {
|
|
30
|
+
default: 'Correct',
|
|
31
|
+
type: 'none'
|
|
32
|
+
},
|
|
33
|
+
incorrect: {
|
|
34
|
+
default: 'Incorrect',
|
|
35
|
+
type: 'none'
|
|
36
|
+
},
|
|
37
|
+
partial: {
|
|
38
|
+
default: 'Nearly',
|
|
39
|
+
type: 'none'
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
equationEditor: 'miscellaneous',
|
|
43
|
+
expression: 'n = {\\embed{answerBlock}[answerBlock1]}',
|
|
44
|
+
question: '<p>The binomial <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>x</mi><mo>−</mo><mn>2</mn> </math> is a factor of the polynomial below.</p><p><span class="equation-block"><math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>f</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><msup> <mi>x</mi> <mn>3</mn> </msup> <mo>+</mo><msup> <mi>x</mi> <mn>2</mn> </msup> <mo>+</mo><mi>n</mi><mi>x</mi><mo>+</mo><mn>10</mn> </math> </span></p><p>What is the value of <span class="variable">n</span>? Use the on-screen keyboard to type the correct answer in the box.</p>',
|
|
45
|
+
note: 'The answer shown above is the primary correct answer specified by the author for this item, but other answers may also be recognized as correct.',
|
|
46
|
+
responses: [{
|
|
47
|
+
answer: 'n=-11',
|
|
48
|
+
id: 'answerBlock1',
|
|
49
|
+
alternates: {},
|
|
50
|
+
validation: 'literal'
|
|
51
|
+
}],
|
|
52
|
+
response: {
|
|
53
|
+
answer: 'n=-11',
|
|
54
|
+
id: 'answerBlock1',
|
|
55
|
+
alternates: {},
|
|
56
|
+
validation: 'literal'
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
correctness: {},
|
|
61
|
+
showCorrect: false,
|
|
62
|
+
session: {
|
|
63
|
+
response: 'sessionResponse'
|
|
64
|
+
},
|
|
65
|
+
onSimpleResponseChange: jest.fn(),
|
|
66
|
+
onSubFieldFocus: jest.fn(),
|
|
67
|
+
showKeypad: true
|
|
68
|
+
};
|
|
69
|
+
const wrapper = (props = {}) => {
|
|
70
|
+
return (0, _react2.render)(/*#__PURE__*/React.createElement(_simpleQuestionBlock.default, (0, _extends2.default)({}, defaultProps, props)));
|
|
71
|
+
};
|
|
72
|
+
const createInstance = (props = {}) => {
|
|
73
|
+
const instanceProps = {
|
|
74
|
+
...defaultProps,
|
|
75
|
+
...props
|
|
76
|
+
};
|
|
77
|
+
const instance = new _simpleQuestionBlock.default(instanceProps);
|
|
78
|
+
instance.setState = jest.fn(state => {
|
|
79
|
+
Object.assign(instance.state, typeof state === 'function' ? state(instance.state) : state);
|
|
80
|
+
});
|
|
81
|
+
return instance;
|
|
82
|
+
};
|
|
83
|
+
it('renders correctly for not showing correct mode', () => {
|
|
84
|
+
const {
|
|
85
|
+
queryByTestId
|
|
86
|
+
} = wrapper();
|
|
87
|
+
expect(queryByTestId('mq-static')).not.toBeInTheDocument();
|
|
88
|
+
expect(queryByTestId('math-toolbar')).toBeInTheDocument();
|
|
89
|
+
});
|
|
90
|
+
it('renders correctly for showing correct mode', () => {
|
|
91
|
+
const {
|
|
92
|
+
queryByTestId
|
|
93
|
+
} = wrapper({
|
|
94
|
+
showCorrect: true
|
|
95
|
+
});
|
|
96
|
+
expect(queryByTestId('mq-static')).toBeInTheDocument();
|
|
97
|
+
expect(queryByTestId('math-toolbar')).not.toBeInTheDocument();
|
|
98
|
+
});
|
|
99
|
+
it('correctly keeps the keypad open', () => {
|
|
100
|
+
const instance = createInstance();
|
|
101
|
+
instance.onFocus();
|
|
102
|
+
expect(defaultProps.onSubFieldFocus).toHaveBeenCalledWith(instance.mathToolBarId);
|
|
103
|
+
expect(instance.props.showKeypad).toEqual(true);
|
|
104
|
+
instance.mathToolBarContainsTarget = () => true;
|
|
105
|
+
instance.handleClick();
|
|
106
|
+
expect(instance.props.showKeypad).toEqual(true);
|
|
107
|
+
});
|
|
108
|
+
it('correctly hides the keypad', () => {
|
|
109
|
+
const instance = createInstance();
|
|
110
|
+
instance.onFocus();
|
|
111
|
+
expect(defaultProps.onSubFieldFocus).toHaveBeenCalledWith(instance.mathToolBarId);
|
|
112
|
+
expect(instance.props.showKeypad).toEqual(true);
|
|
113
|
+
|
|
114
|
+
// Simulate clicking outside the toolbar (to hide the keypad)
|
|
115
|
+
instance.mathToolBarContainsTarget = () => false;
|
|
116
|
+
instance.handleClick();
|
|
117
|
+
|
|
118
|
+
// Create new instance with showKeypad: false to simulate parent component reaction
|
|
119
|
+
const newInstance = createInstance({
|
|
120
|
+
showKeypad: false
|
|
121
|
+
});
|
|
122
|
+
expect(newInstance.props.showKeypad).toEqual(false);
|
|
123
|
+
});
|
|
124
|
+
it('does not call session change on render', () => {
|
|
125
|
+
wrapper();
|
|
126
|
+
expect(defaultProps.onSimpleResponseChange).not.toHaveBeenCalled();
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfbWF0aElucHV0TWF0aGxpdmUiLCJfbWF0aFRvb2xiYXIiLCJfc2ltcGxlUXVlc3Rpb25CbG9jayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJqZXN0IiwibW9jayIsIm1xIiwiU3RhdGljIiwicHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwiTWF0aFRvb2xiYXIiLCJkZXNjcmliZSIsImRlZmF1bHRQcm9wcyIsIm1vZGVsIiwiY29uZmlnIiwibW9kZSIsImZlZWRiYWNrIiwiY29ycmVjdCIsInR5cGUiLCJpbmNvcnJlY3QiLCJwYXJ0aWFsIiwiZXF1YXRpb25FZGl0b3IiLCJleHByZXNzaW9uIiwicXVlc3Rpb24iLCJub3RlIiwicmVzcG9uc2VzIiwiYW5zd2VyIiwiaWQiLCJhbHRlcm5hdGVzIiwidmFsaWRhdGlvbiIsInJlc3BvbnNlIiwiY29ycmVjdG5lc3MiLCJzaG93Q29ycmVjdCIsInNlc3Npb24iLCJvblNpbXBsZVJlc3BvbnNlQ2hhbmdlIiwiZm4iLCJvblN1YkZpZWxkRm9jdXMiLCJzaG93S2V5cGFkIiwid3JhcHBlciIsInJlbmRlciIsImNyZWF0ZUluc3RhbmNlIiwiaW5zdGFuY2VQcm9wcyIsImluc3RhbmNlIiwiU2ltcGxlUXVlc3Rpb25CbG9jayIsInNldFN0YXRlIiwic3RhdGUiLCJhc3NpZ24iLCJpdCIsInF1ZXJ5QnlUZXN0SWQiLCJleHBlY3QiLCJub3QiLCJ0b0JlSW5UaGVEb2N1bWVudCIsIm9uRm9jdXMiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsIm1hdGhUb29sQmFySWQiLCJ0b0VxdWFsIiwibWF0aFRvb2xCYXJDb250YWluc1RhcmdldCIsImhhbmRsZUNsaWNrIiwibmV3SW5zdGFuY2UiLCJ0b0hhdmVCZWVuQ2FsbGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9zaW1wbGUtcXVlc3Rpb24tYmxvY2sudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IG1xIH0gZnJvbSAnQHBpZS1saWIvbWF0aC1pbnB1dC1tYXRobGl2ZSc7XG5pbXBvcnQgeyBNYXRoVG9vbGJhciB9IGZyb20gJ0BwaWUtbGliL21hdGgtdG9vbGJhcic7XG5pbXBvcnQgU2ltcGxlUXVlc3Rpb25CbG9jayBmcm9tICcuLi9zaW1wbGUtcXVlc3Rpb24tYmxvY2snO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL21hdGgtaW5wdXQtbWF0aGxpdmUnLCAoKSA9PiAoe1xuICBtcToge1xuICAgIFN0YXRpYzogKHByb3BzKSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwibXEtc3RhdGljXCIgey4uLnByb3BzfSAvPixcbiAgfSxcbn0pKTtcblxuamVzdC5tb2NrKCdAcGllLWxpYi9tYXRoLXRvb2xiYXInLCAoKSA9PiAoe1xuICBNYXRoVG9vbGJhcjogKHByb3BzKSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwibWF0aC10b29sYmFyXCIgey4uLnByb3BzfSAvPixcbn0pKTtcblxuZGVzY3JpYmUoJ1NpbXBsZVF1ZXN0aW9uQmxvY2snLCAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBtb2RlbDoge1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIG1vZGU6ICdhZHZhbmNlZCcsXG4gICAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgICAgY29ycmVjdDoge1xuICAgICAgICAgICAgZGVmYXVsdDogJ0NvcnJlY3QnLFxuICAgICAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5jb3JyZWN0OiB7XG4gICAgICAgICAgICBkZWZhdWx0OiAnSW5jb3JyZWN0JyxcbiAgICAgICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhcnRpYWw6IHtcbiAgICAgICAgICAgIGRlZmF1bHQ6ICdOZWFybHknLFxuICAgICAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGVxdWF0aW9uRWRpdG9yOiAnbWlzY2VsbGFuZW91cycsXG4gICAgICAgIGV4cHJlc3Npb246ICduID0ge1xcXFxlbWJlZHthbnN3ZXJCbG9ja31bYW5zd2VyQmxvY2sxXX0nLFxuICAgICAgICBxdWVzdGlvbjpcbiAgICAgICAgICAnPHA+VGhlIGJpbm9taWFsIDxtYXRoIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiPiA8bWk+eDwvbWk+PG1vPiYjODcyMjs8L21vPjxtbj4yPC9tbj4gPC9tYXRoPiBpcyBhIGZhY3RvciBvZiB0aGUgcG9seW5vbWlhbCBiZWxvdy48L3A+PHA+PHNwYW4gY2xhc3M9XCJlcXVhdGlvbi1ibG9ja1wiPjxtYXRoIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiPiA8bWk+ZjwvbWk+PG1vIHN0cmV0Y2h5PVwiZmFsc2VcIj4oPC9tbz48bWk+eDwvbWk+PG1vIHN0cmV0Y2h5PVwiZmFsc2VcIj4pPC9tbz48bW8+PTwvbW8+PG1zdXA+IDxtaT54PC9taT4gPG1uPjM8L21uPiA8L21zdXA+IDxtbz4rPC9tbz48bXN1cD4gPG1pPng8L21pPiA8bW4+MjwvbW4+IDwvbXN1cD4gPG1vPis8L21vPjxtaT5uPC9taT48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4xMDwvbW4+IDwvbWF0aD4gPC9zcGFuPjwvcD48cD5XaGF0IGlzIHRoZSB2YWx1ZSBvZiA8c3BhbiBjbGFzcz1cInZhcmlhYmxlXCI+bjwvc3Bhbj4/IFVzZSB0aGUgb24tc2NyZWVuIGtleWJvYXJkJiMxNjA7dG8gdHlwZSB0aGUgY29ycmVjdCBhbnN3ZXIgaW4gdGhlIGJveC48L3A+JyxcbiAgICAgICAgbm90ZTogJ1RoZSBhbnN3ZXIgc2hvd24gYWJvdmUgaXMgdGhlIHByaW1hcnkgY29ycmVjdCBhbnN3ZXIgc3BlY2lmaWVkIGJ5IHRoZSBhdXRob3IgZm9yIHRoaXMgaXRlbSwgYnV0IG90aGVyIGFuc3dlcnMgbWF5IGFsc28gYmUgcmVjb2duaXplZCBhcyBjb3JyZWN0LicsXG4gICAgICAgIHJlc3BvbnNlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFuc3dlcjogJ249LTExJyxcbiAgICAgICAgICAgIGlkOiAnYW5zd2VyQmxvY2sxJyxcbiAgICAgICAgICAgIGFsdGVybmF0ZXM6IHt9LFxuICAgICAgICAgICAgdmFsaWRhdGlvbjogJ2xpdGVyYWwnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgYW5zd2VyOiAnbj0tMTEnLFxuICAgICAgICAgIGlkOiAnYW5zd2VyQmxvY2sxJyxcbiAgICAgICAgICBhbHRlcm5hdGVzOiB7fSxcbiAgICAgICAgICB2YWxpZGF0aW9uOiAnbGl0ZXJhbCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgY29ycmVjdG5lc3M6IHt9LFxuICAgIHNob3dDb3JyZWN0OiBmYWxzZSxcbiAgICBzZXNzaW9uOiB7XG4gICAgICByZXNwb25zZTogJ3Nlc3Npb25SZXNwb25zZScsXG4gICAgfSxcbiAgICBvblNpbXBsZVJlc3BvbnNlQ2hhbmdlOiBqZXN0LmZuKCksXG4gICAgb25TdWJGaWVsZEZvY3VzOiBqZXN0LmZuKCksXG4gICAgc2hvd0tleXBhZDogdHJ1ZSxcbiAgfTtcblxuICBjb25zdCB3cmFwcGVyID0gKHByb3BzID0ge30pID0+IHtcbiAgICByZXR1cm4gcmVuZGVyKDxTaW1wbGVRdWVzdGlvbkJsb2NrIHsuLi5kZWZhdWx0UHJvcHN9IHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZUluc3RhbmNlID0gKHByb3BzID0ge30pID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZVByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBTaW1wbGVRdWVzdGlvbkJsb2NrKGluc3RhbmNlUHJvcHMpO1xuICAgIGluc3RhbmNlLnNldFN0YXRlID0gamVzdC5mbigoc3RhdGUpID0+IHtcbiAgICAgIE9iamVjdC5hc3NpZ24oaW5zdGFuY2Uuc3RhdGUsIHR5cGVvZiBzdGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IHN0YXRlKGluc3RhbmNlLnN0YXRlKSA6IHN0YXRlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG5cbiAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IGZvciBub3Qgc2hvd2luZyBjb3JyZWN0IG1vZGUnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBxdWVyeUJ5VGVzdElkIH0gPSB3cmFwcGVyKCk7XG5cbiAgICBleHBlY3QocXVlcnlCeVRlc3RJZCgnbXEtc3RhdGljJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChxdWVyeUJ5VGVzdElkKCdtYXRoLXRvb2xiYXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IGZvciBzaG93aW5nIGNvcnJlY3QgbW9kZScsICgpID0+IHtcbiAgICBjb25zdCB7IHF1ZXJ5QnlUZXN0SWQgfSA9IHdyYXBwZXIoeyBzaG93Q29ycmVjdDogdHJ1ZSB9KTtcblxuICAgIGV4cGVjdChxdWVyeUJ5VGVzdElkKCdtcS1zdGF0aWMnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3QocXVlcnlCeVRlc3RJZCgnbWF0aC10b29sYmFyJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnY29ycmVjdGx5IGtlZXBzIHRoZSBrZXlwYWQgb3BlbicsICgpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNyZWF0ZUluc3RhbmNlKCk7XG5cbiAgICBpbnN0YW5jZS5vbkZvY3VzKCk7XG4gICAgZXhwZWN0KGRlZmF1bHRQcm9wcy5vblN1YkZpZWxkRm9jdXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGluc3RhbmNlLm1hdGhUb29sQmFySWQpO1xuICAgIGV4cGVjdChpbnN0YW5jZS5wcm9wcy5zaG93S2V5cGFkKS50b0VxdWFsKHRydWUpO1xuXG4gICAgaW5zdGFuY2UubWF0aFRvb2xCYXJDb250YWluc1RhcmdldCA9ICgpID0+IHRydWU7XG4gICAgaW5zdGFuY2UuaGFuZGxlQ2xpY2soKTtcblxuICAgIGV4cGVjdChpbnN0YW5jZS5wcm9wcy5zaG93S2V5cGFkKS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnY29ycmVjdGx5IGhpZGVzIHRoZSBrZXlwYWQnLCAoKSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBjcmVhdGVJbnN0YW5jZSgpO1xuXG4gICAgaW5zdGFuY2Uub25Gb2N1cygpO1xuICAgIGV4cGVjdChkZWZhdWx0UHJvcHMub25TdWJGaWVsZEZvY3VzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChpbnN0YW5jZS5tYXRoVG9vbEJhcklkKTtcbiAgICBleHBlY3QoaW5zdGFuY2UucHJvcHMuc2hvd0tleXBhZCkudG9FcXVhbCh0cnVlKTtcblxuICAgIC8vIFNpbXVsYXRlIGNsaWNraW5nIG91dHNpZGUgdGhlIHRvb2xiYXIgKHRvIGhpZGUgdGhlIGtleXBhZClcbiAgICBpbnN0YW5jZS5tYXRoVG9vbEJhckNvbnRhaW5zVGFyZ2V0ID0gKCkgPT4gZmFsc2U7XG4gICAgaW5zdGFuY2UuaGFuZGxlQ2xpY2soKTtcblxuICAgIC8vIENyZWF0ZSBuZXcgaW5zdGFuY2Ugd2l0aCBzaG93S2V5cGFkOiBmYWxzZSB0byBzaW11bGF0ZSBwYXJlbnQgY29tcG9uZW50IHJlYWN0aW9uXG4gICAgY29uc3QgbmV3SW5zdGFuY2UgPSBjcmVhdGVJbnN0YW5jZSh7IHNob3dLZXlwYWQ6IGZhbHNlIH0pO1xuXG4gICAgZXhwZWN0KG5ld0luc3RhbmNlLnByb3BzLnNob3dLZXlwYWQpLnRvRXF1YWwoZmFsc2UpO1xuICB9KTtcblxuICBpdCgnZG9lcyBub3QgY2FsbCBzZXNzaW9uIGNoYW5nZSBvbiByZW5kZXInLCAoKSA9PiB7XG4gICAgd3JhcHBlcigpO1xuICAgIGV4cGVjdChkZWZhdWx0UHJvcHMub25TaW1wbGVSZXNwb25zZUNoYW5nZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGtCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBQTJELFNBQUFELHdCQUFBTyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBVCx1QkFBQSxZQUFBQSxDQUFBTyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFL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
|
package/lib/main.js
CHANGED
|
@@ -9,7 +9,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
9
9
|
var _react = _interopRequireDefault(require("react"));
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
12
|
-
var
|
|
12
|
+
var _mathInputMathlive = require("@pie-lib/math-input-mathlive");
|
|
13
13
|
var _renderUi = require("@pie-lib/render-ui");
|
|
14
14
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
15
15
|
var _styles = require("@mui/material/styles");
|
|
@@ -122,7 +122,7 @@ class Main extends _react.default.Component {
|
|
|
122
122
|
|
|
123
123
|
if (el) {
|
|
124
124
|
const answer = answers[answerId];
|
|
125
|
-
(0,
|
|
125
|
+
(0, _mathInputMathlive.applyStaticMath)(el, answer && answer.value || '');
|
|
126
126
|
if (!model.view) {
|
|
127
127
|
// for now, we're not going to be showing individual response correctness
|
|
128
128
|
// TODO re-attach the classes once we are
|
|
@@ -306,7 +306,7 @@ class Main extends _react.default.Component {
|
|
|
306
306
|
}, this.handleAnswerBlockDomUpdate);
|
|
307
307
|
});
|
|
308
308
|
(0, _defineProperty2.default)(this, "subFieldChanged", (name, subfieldValue) => {
|
|
309
|
-
(0,
|
|
309
|
+
(0, _mathInputMathlive.updateSpans)();
|
|
310
310
|
if (name) {
|
|
311
311
|
const scrollX = window.scrollX;
|
|
312
312
|
const scrollY = window.scrollY;
|
|
@@ -411,7 +411,7 @@ class Main extends _react.default.Component {
|
|
|
411
411
|
UNSAFE_componentWillMount() {
|
|
412
412
|
if (typeof window !== 'undefined') {
|
|
413
413
|
if (!registered) {
|
|
414
|
-
(0,
|
|
414
|
+
(0, _mathInputMathlive.registerEmbed)('answerBlock', data => {
|
|
415
415
|
const classNames = getBlockClassNames();
|
|
416
416
|
return {
|
|
417
417
|
htmlString: `<div class="${classNames.blockContainer}">
|
|
@@ -590,7 +590,7 @@ class Main extends _react.default.Component {
|
|
|
590
590
|
const studentPrintMode = printMode && !alwaysShowCorrect;
|
|
591
591
|
const showRationale = rationale && ((0, _renderUi.hasText)(rationale) || (0, _renderUi.hasMedia)(rationale));
|
|
592
592
|
const showTeacherInstructions = teacherInstructions && ((0, _renderUi.hasText)(teacherInstructions) || (0, _renderUi.hasMedia)(teacherInstructions));
|
|
593
|
-
const printView = /*#__PURE__*/_react.default.createElement(PrintContainer, null, /*#__PURE__*/_react.default.createElement(
|
|
593
|
+
const printView = /*#__PURE__*/_react.default.createElement(PrintContainer, null, /*#__PURE__*/_react.default.createElement(_mathInputMathlive.mq.Static, {
|
|
594
594
|
className: "static-math",
|
|
595
595
|
ref: mqStatic => {
|
|
596
596
|
if (mqStatic) this.mqStatic = mqStatic;
|
|
@@ -694,12 +694,12 @@ class Main extends _react.default.Component {
|
|
|
694
694
|
// marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,
|
|
695
695
|
width: getKeyPadWidth(additionalKeys, equationEditor)
|
|
696
696
|
}
|
|
697
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
697
|
+
}, /*#__PURE__*/_react.default.createElement(_mathInputMathlive.HorizontalKeypad, {
|
|
698
698
|
additionalKeys: additionalKeys,
|
|
699
699
|
mode: equationEditor || DEFAULT_KEYPAD_VARIANT,
|
|
700
700
|
onClick: this.onClick
|
|
701
701
|
})) || null)
|
|
702
|
-
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(
|
|
702
|
+
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_mathInputMathlive.mq.Static, {
|
|
703
703
|
className: "static-math",
|
|
704
704
|
ref: mqStatic => {
|
|
705
705
|
if (mqStatic) this.mqStatic = mqStatic;
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_correctAnswerToggle","_mathInput","_renderUi","_mathRendering","_styles","_Tooltip","_utils","_lodashEs","_simpleQuestionBlock","_translator","_reactDom","translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","isChildOfCurrentPieElement","child","parent","node","parentNode","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","parseAnswers","Main","React","Component","constructor","props","_defineProperty2","default","root","Object","keys","forEach","answerId","el","querySelector","indexEl","applyStaticMath","view","parentElement","classList","remove","textContent","renderMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","index","instructionsId","closest","instructionsElement","document","createElement","id","className","insertBefore","setTimeout","keypadElement","firstButton","focus","event","isTrigerredFromActualPieElement","target","isAnswerInputFocused","mqStatic","inputRef","current","contains","activeElement","getAttribute","type","isClickOrTouchEvent","activeAnswerBlock","cleanupKeyDownListener","setState","onSubFieldFocus","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","scrollX","window","scrollY","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","requestAnimationFrame","scrollTo","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","updateSpans","completeAnswer","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","isKeypadOpen","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","createRef","UNSAFE_componentWillMount","registerEmbed","classNames","getBlockClassNames","htmlString","blockContainer","blockResponse","blockMath","text","countResponseOccurrences","pattern","matches","match","UNSAFE_componentWillReceiveProps","nextProps","nextConfig","nextSession","isEqual","note","language","t","lng","env","mode","updateAria","newAnswers","shouldComponentUpdate","nextState","sameModel","sameState","componentDidMount","componentDidUpdate","prevProps","prevState","prevResponseType","responseType","currentResponseType","componentWillUnmount","setTooltipRef","ref","div","firstChild","render","correctness","extraCSSRules","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","customKeys","role","displayNote","emptyResponse","isEmpty","showCorrectAnswerToggle","tooltipModeEnabled","correct","staticLatex","viewMode","studentPrintMode","showRationale","hasText","hasMedia","showTeacherInstructions","printView","PrintContainer","mq","Static","onSubFieldChange","subFieldChanged","getFieldName","setInput","onBlur","midContent","MainContent","SrOnly","StyledCollapsible","labels","hidden","visible","dangerouslySetInnerHTML","__html","PromptContainer","PreviewPrompt","Readable","false","InputAndKeypadContainer","tabIndex","ResponseTypes","simple","onSimpleResponseChange","showKeypad","advanced","Expression","isIncorrect","isCorrect","showCorrectness","correctAnswerShown","printCorrect","enterTouchDelay","interactive","open","slotProps","popper","container","undefined","placement","sx","backgroundColor","width","opacity","display","modifiers","options","offset","enabled","boundary","padding","adaptive","gpuAcceleration","tooltip","fontSize","marginTop","paddingTop","boxShadow","title","ResponseContainer","style","HorizontalKeypad","onClick","Note","Collapsible","StyledUiLayout","r","domNode","ReactDOM","findDOMNode","StyledTooltip","theme","background","color","primaryLight","spacing","border","secondary","StyledCorrectAnswerToggle","toggled","onToggle","toggleShowCorrect","Feedback","exports","PropTypes","object","isRequired","func","styleId","getElementById","head","appendChild","styled","UiLayout","Tooltip","marginBottom","position","paddingBottom","zIndex","minWidth","shouldForwardProp","prop","includes","borderColor","incorrect","maxWidth","letterSpacing","paddingRight","paddingLeft","top","lineHeight","left","right","borderTop","pointerEvents","height","overflow","CorrectAnswerToggle","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { mq, HorizontalKeypad, updateSpans, registerEmbed, applyStaticMath } from '@pie-lib/math-input';\nimport { Feedback, Collapsible, Readable, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { styled } from '@mui/material/styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport { ResponseTypes } from './utils';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport SimpleQuestionBlock from './simple-question-block';\nimport { color } from '@pie-lib/render-ui';\nimport Translator from '@pie-lib/translator';\nimport ReactDOM from 'react-dom';\nconst { translator } = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction isChildOfCurrentPieElement(child, parent) {\n let node = child;\n while (node !== null) {\n if (parent && node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const { config, disabled } = model || {};\n const { expression, responses, printMode, alwaysShowCorrect } = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction parseAnswers(session, model) {\n const answers = {};\n\n if (model.config && model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (session &&\n session.answers &&\n session.answers[`r${answerBlocks}`] &&\n session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n return answers;\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n const { model, session } = props;\n const answers = parseAnswers(session, model);\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n tooltipContainerRef: React.createRef(),\n };\n }\n\n UNSAFE_componentWillMount() {\n if (typeof window !== 'undefined') {\n if (!registered) {\n registerEmbed('answerBlock', (data) => {\n const classNames = getBlockClassNames();\n return {\n htmlString: `<div class=\"${classNames.blockContainer}\">\n <div class=\"${classNames.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classNames.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = this.props;\n const { session, showCorrect } = this.state;\n const answers = session.answers;\n\n if (this.root && model.disabled && !showCorrect) {\n Object.keys(answers).forEach((answerId) => {\n const el = this.root.querySelector(`#${answerId}`);\n const indexEl = this.root.querySelector(`#${answerId}Index`);\n // const correct = model.correctness && model.correctness.correct;\n\n if (el) {\n const answer = answers[answerId];\n\n applyStaticMath(el, (answer && answer.value) || '');\n\n if (!model.view) {\n // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? 'correct' : 'incorrect'\n // );\n } else {\n el.parentElement.parentElement.classList.remove('correct');\n el.parentElement.parentElement.classList.remove('incorrect');\n }\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression?.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { config } = this.props.model;\n const { config: nextConfig = {} } = nextProps.model || {};\n\n const { session } = this.props;\n const { session: nextSession = {} } = nextProps || {};\n\n // in case session props changed in parent, we need to catch this and update local state\n // example: when env is changing in pieoneer\n if (session && nextSession && !isEqual(session.answers, nextSession.answers)) {\n this.setState({\n session: { ...nextSession, answers: parseAnswers(nextSession, this.props.model) },\n });\n }\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', { lng: config.language })\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: nextConfig.language });\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({ ...this.state.session, showCorrect: false });\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n\n if (this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\n );\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const sameModel = isEqual(this.props.model, nextProps.model);\n const sameState = isEqual(this.state, nextState);\n\n return !sameModel || !sameState;\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.handleAnswerBlockDomUpdate();\n\n const prevResponseType = prevProps.model?.config?.responseType;\n const currentResponseType = this.props.model?.config?.responseType;\n\n if (prevResponseType !== currentResponseType) {\n this.updateAria();\n }\n }\n\n updateAria = () => {\n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach((elem) => elem.setAttribute('aria-hidden', 'true'));\n\n // Update aria-label for textarea elements and add aria-describedby\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach((elem, index) => {\n elem.setAttribute('aria-label', 'Enter answer.');\n\n // Create a unique id for each instructions element\n const instructionsId = `instructions-${index}`;\n\n // Find the parent element that contains the textarea\n const parent = elem.closest('.mq-textarea');\n\n if (parent) {\n // Create or find the instructions element within the parent\n let instructionsElement = parent.querySelector(`#${instructionsId}`);\n\n if (!instructionsElement) {\n instructionsElement = document.createElement('span');\n instructionsElement.id = instructionsId;\n instructionsElement.className = 'sr-only';\n instructionsElement.textContent =\n 'This field supports both keypad and keyboard input. Use the keyboard to access and interact with the on-screen math keypad, which accepts LaTeX markup. Use the down arrow key to open the keypad and navigate its buttons. Use the escape key to close the keypad and return to the input field.';\n parent.insertBefore(instructionsElement, elem);\n }\n\n elem.setAttribute('aria-describedby', instructionsId);\n }\n });\n }\n };\n\n focusFirstKeypadElement = () => {\n setTimeout(() => {\n const keypadElement = document.querySelector('[data-keypad]');\n\n if (keypadElement) {\n const firstButton = keypadElement.querySelector(\"button, [role='button']\");\n\n if (firstButton) {\n firstButton.focus();\n }\n }\n }, 0);\n };\n\n handleKeyDown = (event, id) => {\n const isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);\n const isAnswerInputFocused =\n this.mqStatic && this.mqStatic.inputRef?.current\n ? this.mqStatic.inputRef?.current.contains(document.activeElement)\n : document.activeElement?.getAttribute('aria-label') === 'Enter answer.';\n const { key, type } = event;\n const isClickOrTouchEvent = type === 'click' || type === 'touchstart';\n\n if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {\n if (this.state.activeAnswerBlock !== id && isTrigerredFromActualPieElement) {\n this.cleanupKeyDownListener();\n this.setState({ activeAnswerBlock: id }, () => {\n this.onSubFieldFocus(id);\n if (key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n });\n }\n } else if (event.key === 'Escape') {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n onSubFieldFocus = (id) => {\n if (!this.handleEvent) {\n this.handleEvent = (event) => {\n this.handleKeyDown(event, id);\n };\n\n document.addEventListener('keydown', this.handleEvent);\n document.addEventListener('click', this.handleEvent);\n document.addEventListener('touchstart', this.handleEvent);\n }\n };\n\n cleanupKeyDownListener = () => {\n if (this.handleEvent) {\n document.removeEventListener('keydown', this.handleEvent);\n document.removeEventListener('click', this.handleEvent);\n document.removeEventListener('touchstart', this.handleEvent);\n this.handleEvent = null;\n }\n };\n\n componentWillUnmount() {\n if (this.cleanupKeyDownListener) {\n this.cleanupKeyDownListener();\n }\n }\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({ session: { ...state.session, response } }), this.callOnSessionChange);\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return { type: 'answer', ...data };\n } else if (value === 'clear') {\n return { type: 'clear' };\n } else {\n return { type: 'write', value };\n }\n };\n\n setInput = (input) => {\n this.input = input;\n };\n\n onClick = (data) => {\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\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 requestAnimationFrame(() => {\n window.scrollTo(scrollX, scrollY);\n requestAnimationFrame(() => window.scrollTo(scrollX, scrollY));\n });\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 const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: {\n ...state.session.answers,\n [name]: { value: subfieldValue },\n },\n },\n }),\n () => {\n this.callOnSessionChange();\n requestAnimationFrame(() => {\n window.scrollTo(scrollX, scrollY);\n });\n },\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const { answers } = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n // our keypad is in tooltip\n // in this way we see if event was triggered from the keypad\n const isKeypadOpen = currentTarget && currentTarget.closest('[role=tooltip]');\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n // if event was trigered from the keypad, avoid closing the keypad\n if (!isKeypadOpen) {\n this.setState({ activeAnswerBlock: '' });\n }\n }\n // else {\n // // Just for debugging purpose:\n // console.log('\\n\\nNew childWithDataKeypad', childWithDataKeypad);\n //\n // if (IS_SAFARI) {\n // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);\n // } else {\n // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);\n // }\n // }\n };\n\n setTooltipRef(ref) {\n // Safari Hack: https://stackoverflow.com/a/42764495/5757635\n setTimeout(() => {\n if (ref && IS_SAFARI) {\n const div = document.querySelector(\"[role='tooltip']\");\n\n if (div) {\n const el = div.firstChild;\n el.setAttribute('tabindex', '-1');\n }\n }\n }, 1);\n }\n\n render() {\n const { model } = this.props;\n const { activeAnswerBlock, showCorrect, session, tooltipContainerRef } = this.state;\n const {\n config,\n correctness,\n disabled,\n extraCSSRules,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n id,\n env: { mode, role } = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const printView = (\n <PrintContainer>\n <mq.Static\n className=\"static-math\"\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </PrintContainer>\n );\n\n const midContent = (\n <MainContent>\n {mode === 'gather' && <SrOnly>Math Equation Response Question</SrOnly>}\n\n {viewMode &&\n showTeacherInstructions &&\n (!animationsDisabled ? (\n <StyledCollapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n </StyledCollapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n ))}\n\n {prompt && (\n <PromptContainer>\n <PreviewPrompt prompt={prompt} />\n </PromptContainer>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <InputAndKeypadContainer tabIndex={0}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n onSubFieldFocus={this.onSubFieldFocus}\n showKeypad={!!activeAnswerBlock}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <Expression\n ref={tooltipContainerRef}\n isIncorrect={!emptyResponse && !correct && !showCorrect}\n isCorrect={!emptyResponse && (correct || showCorrect)}\n showCorrectness={!emptyResponse && disabled && correctness && !view}\n correctAnswerShown={showCorrect}\n printCorrect={printMode && alwaysShowCorrect}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={!!activeAnswerBlock}\n slotProps={{\n popper: {\n container: tooltipContainerRef?.current || undefined,\n placement: 'bottom-start',\n sx: {\n backgroundColor: 'transparent',\n width: '650px',\n opacity: 1,\n '& .MuiTooltip-arrow': {\n display: 'none',\n },\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'preventOverflow',\n enabled: true,\n options: {\n boundary: 'viewport',\n padding: 8,\n },\n },\n {\n name: 'computeStyles',\n options: {\n adaptive: true,\n gpuAcceleration: true,\n },\n },\n {\n name: '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={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </ResponseContainer>\n )) ||\n null,\n )}\n >\n <div>\n <mq.Static\n className=\"static-math\"\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n </Tooltip>\n </Expression>\n )}\n </InputAndKeypadContainer>\n </Readable>\n )}\n\n {viewMode && displayNote && <Note dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }} />}\n\n {viewMode &&\n showRationale &&\n (!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n ))}\n </MainContent>\n );\n\n if (tooltipModeEnabled && (showCorrectAnswerToggle || showTeacherInstructions || showRationale || feedback)) {\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 <StyledTooltip\n interactive\n enterTouchDelay={0}\n placement=\"bottom-start\"\n slotProps={{\n tooltip: {\n sx: (theme) => ({\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing(2),\n border: `1px solid ${color.secondary()}`,\n fontSize: '16px',\n '& :not(.MathJax) > table tr': {\n '&:nth-child(2n)': {\n backgroundColor: 'unset !important',\n },\n },\n }),\n },\n popper: {\n sx: {\n opacity: 1,\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 2],\n },\n },\n ],\n },\n }}\n title={\n <div>\n <MainContent>\n {showCorrectAnswerToggle && (\n <StyledCorrectAnswerToggle\n language={language}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </MainContent>\n\n {showTeacherInstructions && (\n <StyledCollapsible\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n {displayNote && hasText(note) && (\n <StyledCollapsible\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', { lng: language }),\n visible: translator.t('common:hideNote', { lng: language }),\n }}\n >\n <PreviewPrompt prompt={note} />\n </StyledCollapsible>\n )}\n\n {showRationale && (\n <StyledCollapsible\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale} />\n </StyledCollapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback} />}\n </div>\n }\n >\n {midContent}\n </StyledTooltip>\n </StyledUiLayout>\n );\n }\n\n return (\n <StyledUiLayout\n id={id}\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 {midContent}\n </StyledUiLayout>\n );\n }\n}\n\n// Helper function to get class names for HTML string generation\nconst getBlockClassNames = () => {\n return {\n blockContainer: 'block-container',\n blockResponse: 'block-response',\n blockMath: 'block-math',\n };\n};\n\n// CSS for block classes used in HTML string generation\nif (typeof document !== 'undefined') {\n const styleId = 'math-inline-block-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 color: grey;\n background: #f5f5f5;\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 flex-shrink: 0;\n flex-grow: 0;\n flex-basis: auto;\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-grow: 1;\n }\n .block-math > .mq-math-mode > .mq-hasCursor > .mq-cursor {\n display: none;\n }\n .sr-only {\n position: absolute;\n left: -10000px;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n }\n .static-math > .mq-root-block > .mq-editable-field {\n border-color: ${color.text()};\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nconst StyledUiLayout = styled(UiLayout)(() => ({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n}));\n\nconst StyledTooltip = styled(Tooltip)({\n // Styles applied via slotProps.sx below\n});\n\nconst PromptContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst MainContent = styled('div')({\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst Note = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst ResponseContainer = styled('div')(({ theme }) => ({\n zIndex: 10,\n minWidth: '400px',\n marginTop: theme.spacing(2),\n}));\n\nconst Expression = styled('div', {\n shouldForwardProp: (prop) =>\n !['isIncorrect', 'isCorrect', 'showCorrectness', 'correctAnswerShown', 'printCorrect'].includes(prop),\n})(({ theme, isIncorrect, isCorrect, showCorrectness, correctAnswerShown, printCorrect }) => {\n const borderColor = isIncorrect ? color.incorrect() : isCorrect ? color.correct() : undefined;\n\n return {\n maxWidth: 'fit-content',\n padding: theme.spacing(0.25),\n ...(showCorrectness && {\n border: borderColor ? `2px solid ${borderColor} !important` : '2px solid',\n }),\n ...(!showCorrectness &&\n borderColor && {\n borderColor: `${borderColor} !important`,\n }),\n ...(correctAnswerShown && {\n padding: theme.spacing(1),\n letterSpacing: '0.5px',\n }),\n ...(printCorrect && {\n border: `2px solid ${color.correct()} !important`,\n }),\n '& .mq-math-mode': {\n '& .mq-root-block': {\n paddingRight: '0 !important',\n paddingLeft: '0 !important',\n '& .mq-editable-field': {\n minWidth: '10px',\n padding: theme.spacing(0.4),\n },\n },\n '& sup': {\n top: 0,\n },\n },\n };\n});\n\nconst InputAndKeypadContainer = styled('div')({\n position: 'relative',\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n});\n\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 StyledCorrectAnswerToggle = styled(CorrectAnswerToggle)(({ theme }) => ({\n color: color.text(),\n marginBottom: theme.spacing(2),\n}));\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_correctAnswerToggle","_mathInputMathlive","_renderUi","_mathRendering","_styles","_Tooltip","_utils","_lodashEs","_simpleQuestionBlock","_translator","_reactDom","translator","Translator","registered","NEWLINE_LATEX","REGEX","DEFAULT_KEYPAD_VARIANT","IS_SAFARI","test","navigator","userAgent","generateAdditionalKeys","keyData","map","key","name","latex","write","label","isChildOfCurrentPieElement","child","parent","node","parentNode","getKeyPadWidth","additionalKeys","equationEditor","Math","floor","length","prepareForStatic","model","state","config","disabled","expression","responses","printMode","alwaysShowCorrect","modelExpression","showCorrect","answer","answerBlocks","replace","session","answers","blankSpace","repeat","value","parseAnswers","Main","React","Component","constructor","props","_defineProperty2","default","root","Object","keys","forEach","answerId","el","querySelector","indexEl","applyStaticMath","view","parentElement","classList","remove","textContent","renderMath","selectableElements","querySelectorAll","elem","setAttribute","textareaElements","index","instructionsId","closest","instructionsElement","document","createElement","id","className","insertBefore","setTimeout","keypadElement","firstButton","focus","event","isTrigerredFromActualPieElement","target","isAnswerInputFocused","mqStatic","inputRef","current","contains","activeElement","getAttribute","type","isClickOrTouchEvent","activeAnswerBlock","cleanupKeyDownListener","setState","onSubFieldFocus","focusFirstKeypadElement","handleEvent","handleKeyDown","addEventListener","removeEventListener","response","callOnSessionChange","data","input","scrollX","window","scrollY","c","toNodeData","clear","Array","isArray","vv","cmd","keystroke","requestAnimationFrame","scrollTo","onSessionChange","show","handleAnswerBlockDomUpdate","subfieldValue","updateSpans","completeAnswer","mathField","changeField","fields","find","k","tf","e","relatedTarget","currentTarget","isKeypadOpen","getParentWithRoleTooltip","element","depth","offsetParent","getDeepChildDataKeypad","children","attributes","parentWithTooltipRole","childWithDataKeypad","tooltipContainerRef","createRef","UNSAFE_componentWillMount","registerEmbed","classNames","getBlockClassNames","htmlString","blockContainer","blockResponse","blockMath","text","countResponseOccurrences","pattern","matches","match","UNSAFE_componentWillReceiveProps","nextProps","nextConfig","nextSession","isEqual","note","language","t","lng","env","mode","updateAria","newAnswers","shouldComponentUpdate","nextState","sameModel","sameState","componentDidMount","componentDidUpdate","prevProps","prevState","prevResponseType","responseType","currentResponseType","componentWillUnmount","setTooltipRef","ref","div","firstChild","render","correctness","extraCSSRules","teacherInstructions","rationale","feedback","animationsDisabled","showNote","prompt","customKeys","role","displayNote","emptyResponse","isEmpty","showCorrectAnswerToggle","tooltipModeEnabled","correct","staticLatex","viewMode","studentPrintMode","showRationale","hasText","hasMedia","showTeacherInstructions","printView","PrintContainer","mq","Static","onSubFieldChange","subFieldChanged","getFieldName","setInput","onBlur","midContent","MainContent","SrOnly","StyledCollapsible","labels","hidden","visible","dangerouslySetInnerHTML","__html","PromptContainer","PreviewPrompt","Readable","false","InputAndKeypadContainer","tabIndex","ResponseTypes","simple","onSimpleResponseChange","showKeypad","advanced","Expression","isIncorrect","isCorrect","showCorrectness","correctAnswerShown","printCorrect","enterTouchDelay","interactive","open","slotProps","popper","container","undefined","placement","sx","backgroundColor","width","opacity","display","modifiers","options","offset","enabled","boundary","padding","adaptive","gpuAcceleration","tooltip","fontSize","marginTop","paddingTop","boxShadow","title","ResponseContainer","style","HorizontalKeypad","onClick","Note","Collapsible","StyledUiLayout","r","domNode","ReactDOM","findDOMNode","StyledTooltip","theme","background","color","primaryLight","spacing","border","secondary","StyledCorrectAnswerToggle","toggled","onToggle","toggleShowCorrect","Feedback","exports","PropTypes","object","isRequired","func","styleId","getElementById","head","appendChild","styled","UiLayout","Tooltip","marginBottom","position","paddingBottom","zIndex","minWidth","shouldForwardProp","prop","includes","borderColor","incorrect","maxWidth","letterSpacing","paddingRight","paddingLeft","top","lineHeight","left","right","borderTop","pointerEvents","height","overflow","CorrectAnswerToggle","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { mq, HorizontalKeypad, updateSpans, registerEmbed, applyStaticMath } from '@pie-lib/math-input-mathlive';\nimport { Feedback, Collapsible, Readable, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { styled } from '@mui/material/styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport { ResponseTypes } from './utils';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport SimpleQuestionBlock from './simple-question-block';\nimport { color } from '@pie-lib/render-ui';\nimport Translator from '@pie-lib/translator';\nimport ReactDOM from 'react-dom';\nconst { translator } = Translator;\nlet registered = false;\n\nconst NEWLINE_LATEX = /\\\\newline/g;\nconst REGEX = /{{response}}/gm;\nconst DEFAULT_KEYPAD_VARIANT = 6;\n\n// !!! If you're using Chrome but have selected the \"iPad\" device in Chrome Developer Tools, the navigator.userAgent string may still report as\n// Safari because Chrome on iOS actually uses the Safari rendering engine under the hood due to Apple's restrictions on third-party browser engines.\n// When you select the \"iPad\" device in Chrome Developer Tools, you're essentially emulating the behavior of Safari on an iPad, including the user agent string.\n// Therefore, even though you're using Chrome, the user agent string will resemble that of Safari on an iPad.\n// Since the regular expression /^((?!chrome|android).)*safari/i checks for the presence of \"safari\" in the user agent string while excluding \"chrome\" and \"android\",\n// it will return true in this case because \"safari\" is present in the user agent string emulated by Chrome when in iPad mode.\nconst IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\nfunction isChildOfCurrentPieElement(child, parent) {\n let node = child;\n while (node !== null) {\n if (parent && node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\nfunction getKeyPadWidth(additionalKeys = [], equationEditor) {\n return Math.floor(additionalKeys.length / 5) * 30 + (equationEditor === 'miscellaneous' ? 600 : 500);\n}\n\nfunction prepareForStatic(model, state) {\n const { config, disabled } = model || {};\n const { expression, responses, printMode, alwaysShowCorrect } = config || {};\n\n if (config && expression) {\n const modelExpression = expression;\n\n if (state.showCorrect) {\n return responses && responses.length && responses[0].answer;\n }\n\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n return (modelExpression || '')\n .replace(REGEX, function () {\n const answer = state.session.answers[`r${answerBlocks}`];\n\n if (printMode && !alwaysShowCorrect) {\n const blankSpace = '\\\\ \\\\ '.repeat(30) + '\\\\newline ';\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${blankSpace.repeat(3)}}`;\n }\n\n if (disabled) {\n return `\\\\embed{answerBlock}[r${answerBlocks++}]`;\n }\n\n return `\\\\MathQuillMathField[r${answerBlocks++}]{${(answer && answer.value) || ''}}`;\n })\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction parseAnswers(session, model) {\n const answers = {};\n\n if (model.config && model.config.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n (model.config.expression || '').replace(REGEX, () => {\n answers[`r${answerBlocks}`] = {\n value:\n (session &&\n session.answers &&\n session.answers[`r${answerBlocks}`] &&\n session.answers[`r${answerBlocks}`].value) ||\n '',\n };\n\n answerBlocks += 1;\n });\n }\n return answers;\n}\n\nexport class Main extends React.Component {\n static propTypes = {\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n const { model, session } = props;\n const answers = parseAnswers(session, model);\n\n this.state = {\n session: { ...props.session, answers },\n activeAnswerBlock: '',\n showCorrect: this.props.model.config.alwaysShowCorrect || false,\n tooltipContainerRef: React.createRef(),\n };\n }\n\n UNSAFE_componentWillMount() {\n if (typeof window !== 'undefined') {\n if (!registered) {\n registerEmbed('answerBlock', (data) => {\n const classNames = getBlockClassNames();\n return {\n htmlString: `<div class=\"${classNames.blockContainer}\">\n <div class=\"${classNames.blockResponse}\" id=\"${data}Index\">R</div>\n <div class=\"${classNames.blockMath}\">\n <span id=\"${data}\"></span>\n </div>\n </div>`,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = this.props;\n const { session, showCorrect } = this.state;\n const answers = session.answers;\n\n if (this.root && model.disabled && !showCorrect) {\n Object.keys(answers).forEach((answerId) => {\n const el = this.root.querySelector(`#${answerId}`);\n const indexEl = this.root.querySelector(`#${answerId}Index`);\n // const correct = model.correctness && model.correctness.correct;\n\n if (el) {\n const answer = answers[answerId];\n\n applyStaticMath(el, (answer && answer.value) || '');\n\n if (!model.view) {\n // for now, we're not going to be showing individual response correctness\n // TODO re-attach the classes once we are\n // el.parentElement.parentElement.classList.add(\n // correct ? 'correct' : 'incorrect'\n // );\n } else {\n el.parentElement.parentElement.classList.remove('correct');\n el.parentElement.parentElement.classList.remove('incorrect');\n }\n\n // For now, we're not going to be indexing response blocks\n // TODO go back to indexing once we support individual response correctness\n // indexEl.textContent = `R${idx + 1}`;\n indexEl.textContent = 'R';\n }\n });\n }\n\n renderMath(this.root);\n };\n\n countResponseOccurrences(expression) {\n const pattern = /\\{\\{response\\}\\}/g;\n const matches = expression?.match(pattern);\n\n return matches ? matches.length : 0;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { config } = this.props.model;\n const { config: nextConfig = {} } = nextProps.model || {};\n\n const { session } = this.props;\n const { session: nextSession = {} } = nextProps || {};\n\n // in case session props changed in parent, we need to catch this and update local state\n // example: when env is changing in pieoneer\n if (session && nextSession && !isEqual(session.answers, nextSession.answers)) {\n this.setState({\n session: { ...nextSession, answers: parseAnswers(nextSession, this.props.model) },\n });\n }\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n config.note &&\n config.language &&\n config.language !== nextConfig.language &&\n config.note === translator.t('mathInline.primaryCorrectWithAlternates', { lng: config.language })\n ) {\n config.note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: nextConfig.language });\n }\n\n if ((config.env && config.env.mode !== 'evaluate') || (nextConfig.env && nextConfig.env.mode !== 'evaluate')) {\n this.setState({ ...this.state.session, showCorrect: false });\n }\n\n if (nextConfig.alwaysShowCorrect) {\n this.setState({ showCorrect: true });\n }\n\n if (this.countResponseOccurrences(config.expression) < this.countResponseOccurrences(nextConfig.expression)) {\n setTimeout(() => this.updateAria(), 100);\n }\n\n if (\n (config && config.responses && config.responses.length !== nextConfig.responses.length) ||\n (!config && nextConfig && nextConfig.responses) ||\n (config && nextConfig && config.expression !== nextConfig.expression)\n ) {\n const newAnswers = {};\n const answers = this.state.session.answers;\n\n let answerBlocks = 1; // assume one at least\n\n // build out local state model using responses declared in expression\n (nextConfig.expression || '').replace(REGEX, () => {\n newAnswers[`r${answerBlocks}`] = {\n value: (answers && answers[`r${answerBlocks}`] && answers[`r${answerBlocks}`].value) || '',\n };\n answerBlocks++;\n });\n\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: newAnswers,\n },\n }),\n this.handleAnswerBlockDomUpdate,\n );\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const sameModel = isEqual(this.props.model, nextProps.model);\n const sameState = isEqual(this.state, nextState);\n\n return !sameModel || !sameState;\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n this.updateAria();\n setTimeout(() => renderMath(this.root), 100);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.handleAnswerBlockDomUpdate();\n\n const prevResponseType = prevProps.model?.config?.responseType;\n const currentResponseType = this.props.model?.config?.responseType;\n\n if (prevResponseType !== currentResponseType) {\n this.updateAria();\n }\n }\n\n updateAria = () => {\n if (this.root) {\n // Update aria-hidden for .mq-selectable elements\n const selectableElements = this.root.querySelectorAll('.mq-selectable');\n selectableElements.forEach((elem) => elem.setAttribute('aria-hidden', 'true'));\n\n // Update aria-label for textarea elements and add aria-describedby\n const textareaElements = this.root.querySelectorAll('textarea');\n textareaElements.forEach((elem, index) => {\n elem.setAttribute('aria-label', 'Enter answer.');\n\n // Create a unique id for each instructions element\n const instructionsId = `instructions-${index}`;\n\n // Find the parent element that contains the textarea\n const parent = elem.closest('.mq-textarea');\n\n if (parent) {\n // Create or find the instructions element within the parent\n let instructionsElement = parent.querySelector(`#${instructionsId}`);\n\n if (!instructionsElement) {\n instructionsElement = document.createElement('span');\n instructionsElement.id = instructionsId;\n instructionsElement.className = 'sr-only';\n instructionsElement.textContent =\n 'This field supports both keypad and keyboard input. Use the keyboard to access and interact with the on-screen math keypad, which accepts LaTeX markup. Use the down arrow key to open the keypad and navigate its buttons. Use the escape key to close the keypad and return to the input field.';\n parent.insertBefore(instructionsElement, elem);\n }\n\n elem.setAttribute('aria-describedby', instructionsId);\n }\n });\n }\n };\n\n focusFirstKeypadElement = () => {\n setTimeout(() => {\n const keypadElement = document.querySelector('[data-keypad]');\n\n if (keypadElement) {\n const firstButton = keypadElement.querySelector(\"button, [role='button']\");\n\n if (firstButton) {\n firstButton.focus();\n }\n }\n }, 0);\n };\n\n handleKeyDown = (event, id) => {\n const isTrigerredFromActualPieElement = isChildOfCurrentPieElement(event.target, this.root);\n const isAnswerInputFocused =\n this.mqStatic && this.mqStatic.inputRef?.current\n ? this.mqStatic.inputRef?.current.contains(document.activeElement)\n : document.activeElement?.getAttribute('aria-label') === 'Enter answer.';\n const { key, type } = event;\n const isClickOrTouchEvent = type === 'click' || type === 'touchstart';\n\n if (isAnswerInputFocused && (key === 'ArrowDown' || isClickOrTouchEvent)) {\n if (this.state.activeAnswerBlock !== id && isTrigerredFromActualPieElement) {\n this.cleanupKeyDownListener();\n this.setState({ activeAnswerBlock: id }, () => {\n this.onSubFieldFocus(id);\n if (key === 'ArrowDown') {\n this.focusFirstKeypadElement();\n }\n });\n }\n } else if (event.key === 'Escape') {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n onSubFieldFocus = (id) => {\n if (!this.handleEvent) {\n this.handleEvent = (event) => {\n this.handleKeyDown(event, id);\n };\n\n document.addEventListener('keydown', this.handleEvent);\n document.addEventListener('click', this.handleEvent);\n document.addEventListener('touchstart', this.handleEvent);\n }\n };\n\n cleanupKeyDownListener = () => {\n if (this.handleEvent) {\n document.removeEventListener('keydown', this.handleEvent);\n document.removeEventListener('click', this.handleEvent);\n document.removeEventListener('touchstart', this.handleEvent);\n this.handleEvent = null;\n }\n };\n\n componentWillUnmount() {\n if (this.cleanupKeyDownListener) {\n this.cleanupKeyDownListener();\n }\n }\n\n onDone = () => {};\n\n onSimpleResponseChange = (response) => {\n this.setState((state) => ({ session: { ...state.session, response } }), this.callOnSessionChange);\n };\n\n toNodeData = (data) => {\n if (!data) {\n return;\n }\n\n const { type, value } = data;\n\n if (type === 'command' || type === 'cursor') {\n return data;\n } else if (type === 'answer') {\n return { type: 'answer', ...data };\n } else if (value === 'clear') {\n return { type: 'clear' };\n } else {\n return { type: 'write', value };\n }\n };\n\n setInput = (input) => {\n this.input = input;\n };\n\n onClick = (data) => {\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\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 requestAnimationFrame(() => {\n window.scrollTo(scrollX, scrollY);\n requestAnimationFrame(() => window.scrollTo(scrollX, scrollY));\n });\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 const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n completeAnswer: this.mqStatic && this.mqStatic.mathField.latex(),\n answers: {\n ...state.session.answers,\n [name]: { value: subfieldValue },\n },\n },\n }),\n () => {\n this.callOnSessionChange();\n requestAnimationFrame(() => {\n window.scrollTo(scrollX, scrollY);\n });\n },\n );\n }\n };\n\n getFieldName = (changeField, fields) => {\n const { answers } = this.state.session;\n\n if (Object.keys(answers || {}).length) {\n const keys = Object.keys(answers);\n\n return keys.find((k) => {\n const tf = fields[k];\n\n return tf && tf.id == changeField.id;\n });\n }\n };\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n // our keypad is in tooltip\n // in this way we see if event was triggered from the keypad\n const isKeypadOpen = currentTarget && currentTarget.closest('[role=tooltip]');\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n // if event was trigered from the keypad, avoid closing the keypad\n if (!isKeypadOpen) {\n this.setState({ activeAnswerBlock: '' });\n }\n }\n // else {\n // // Just for debugging purpose:\n // console.log('\\n\\nNew childWithDataKeypad', childWithDataKeypad);\n //\n // if (IS_SAFARI) {\n // // (IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.children[0]?.attributes?.['data-keypad'])\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]?.children[0]);\n // } else {\n // // (!IS_SAFARI && !relatedTarget?.offsetParent?.children[0]?.attributes?.['data-keypad']) ||\n // console.log('What was being used', relatedTarget?.offsetParent?.children[0]);\n // }\n // }\n };\n\n setTooltipRef(ref) {\n // Safari Hack: https://stackoverflow.com/a/42764495/5757635\n setTimeout(() => {\n if (ref && IS_SAFARI) {\n const div = document.querySelector(\"[role='tooltip']\");\n\n if (div) {\n const el = div.firstChild;\n el.setAttribute('tabindex', '-1');\n }\n }\n }, 1);\n }\n\n render() {\n const { model } = this.props;\n const { activeAnswerBlock, showCorrect, session, tooltipContainerRef } = this.state;\n const {\n config,\n correctness,\n disabled,\n extraCSSRules,\n view,\n teacherInstructions,\n rationale,\n feedback,\n animationsDisabled,\n printMode,\n alwaysShowCorrect,\n language,\n } = model || {};\n\n if (!config) {\n return null;\n }\n\n const {\n showNote,\n note,\n prompt,\n responses,\n responseType,\n equationEditor,\n customKeys,\n id,\n env: { mode, role } = {},\n } = config || {};\n const displayNote = (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note;\n const emptyResponse = isEmpty(responses);\n const showCorrectAnswerToggle = !emptyResponse && correctness && correctness.correctness !== 'correct';\n const tooltipModeEnabled = disabled && correctness;\n const additionalKeys = generateAdditionalKeys(customKeys);\n const correct = correctness && correctness.correct;\n const staticLatex = prepareForStatic(model, this.state) || '';\n const viewMode = disabled && !correctness;\n const studentPrintMode = printMode && !alwaysShowCorrect;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n const printView = (\n <PrintContainer>\n <mq.Static\n className=\"static-math\"\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </PrintContainer>\n );\n\n const midContent = (\n <MainContent>\n {mode === 'gather' && <SrOnly>Math Equation Response Question</SrOnly>}\n\n {viewMode &&\n showTeacherInstructions &&\n (!animationsDisabled ? (\n <StyledCollapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n </StyledCollapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }} />\n ))}\n\n {prompt && (\n <PromptContainer>\n <PreviewPrompt prompt={prompt} />\n </PromptContainer>\n )}\n\n {studentPrintMode ? (\n printView\n ) : (\n <Readable false>\n <InputAndKeypadContainer tabIndex={0}>\n {responseType === ResponseTypes.simple && (\n <SimpleQuestionBlock\n onSimpleResponseChange={this.onSimpleResponseChange}\n showCorrect={showCorrect}\n emptyResponse={emptyResponse}\n model={model}\n session={session}\n onSubFieldFocus={this.onSubFieldFocus}\n showKeypad={!!activeAnswerBlock}\n />\n )}\n\n {responseType === ResponseTypes.advanced && (\n <Expression\n ref={tooltipContainerRef}\n isIncorrect={!emptyResponse && !correct && !showCorrect}\n isCorrect={!emptyResponse && (correct || showCorrect)}\n showCorrectness={!emptyResponse && disabled && correctness && !view}\n correctAnswerShown={showCorrect}\n printCorrect={printMode && alwaysShowCorrect}\n >\n <Tooltip\n ref={(ref) => this.setTooltipRef(ref)}\n enterTouchDelay={0}\n interactive\n open={!!activeAnswerBlock}\n slotProps={{\n popper: {\n container: tooltipContainerRef?.current || undefined,\n placement: 'bottom-start',\n sx: {\n backgroundColor: 'transparent',\n width: '650px',\n opacity: 1,\n '& .MuiTooltip-arrow': {\n display: 'none',\n },\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'preventOverflow',\n enabled: true,\n options: {\n boundary: 'viewport',\n padding: 8,\n },\n },\n {\n name: 'computeStyles',\n options: {\n adaptive: true,\n gpuAcceleration: true,\n },\n },\n {\n name: '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={{\n // marginTop: this.mqStatic && this.mqStatic.input.offsetHeight - 20,\n width: getKeyPadWidth(additionalKeys, equationEditor),\n }}\n >\n <HorizontalKeypad\n additionalKeys={additionalKeys}\n mode={equationEditor || DEFAULT_KEYPAD_VARIANT}\n onClick={this.onClick}\n />\n </ResponseContainer>\n )) ||\n null,\n )}\n >\n <div>\n <mq.Static\n className=\"static-math\"\n ref={(mqStatic) => {\n if (mqStatic) this.mqStatic = mqStatic;\n }}\n latex={staticLatex}\n onSubFieldChange={this.subFieldChanged}\n getFieldName={this.getFieldName}\n setInput={this.setInput}\n onSubFieldFocus={this.onSubFieldFocus}\n onBlur={this.onBlur}\n />\n </div>\n </Tooltip>\n </Expression>\n )}\n </InputAndKeypadContainer>\n </Readable>\n )}\n\n {viewMode && displayNote && <Note dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }} />}\n\n {viewMode &&\n showRationale &&\n (!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n </Collapsible>\n ) : (\n <div dangerouslySetInnerHTML={{ __html: rationale }} />\n ))}\n </MainContent>\n );\n\n if (tooltipModeEnabled && (showCorrectAnswerToggle || showTeacherInstructions || showRationale || feedback)) {\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 <StyledTooltip\n interactive\n enterTouchDelay={0}\n placement=\"bottom-start\"\n slotProps={{\n tooltip: {\n sx: (theme) => ({\n background: `${color.primaryLight()} !important`,\n color: color.text(),\n padding: theme.spacing(2),\n border: `1px solid ${color.secondary()}`,\n fontSize: '16px',\n '& :not(.MathJax) > table tr': {\n '&:nth-child(2n)': {\n backgroundColor: 'unset !important',\n },\n },\n }),\n },\n popper: {\n sx: {\n opacity: 1,\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 2],\n },\n },\n ],\n },\n }}\n title={\n <div>\n <MainContent>\n {showCorrectAnswerToggle && (\n <StyledCorrectAnswerToggle\n language={language}\n show\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n )}\n </MainContent>\n\n {showTeacherInstructions && (\n <StyledCollapsible\n key=\"collapsible-teacher-instructions\"\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n {displayNote && hasText(note) && (\n <StyledCollapsible\n key=\"collapsible-note\"\n labels={{\n hidden: translator.t('common:showNote', { lng: language }),\n visible: translator.t('common:hideNote', { lng: language }),\n }}\n >\n <PreviewPrompt prompt={note} />\n </StyledCollapsible>\n )}\n\n {showRationale && (\n <StyledCollapsible\n key=\"collapsible-rationale\"\n labels={{\n hidden: 'Show Rationale',\n visible: 'Hide Rationale',\n }}\n >\n <PreviewPrompt prompt={rationale} />\n </StyledCollapsible>\n )}\n\n {feedback && <Feedback correctness={correctness.correctness} feedback={feedback} />}\n </div>\n }\n >\n {midContent}\n </StyledTooltip>\n </StyledUiLayout>\n );\n }\n\n return (\n <StyledUiLayout\n id={id}\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 {midContent}\n </StyledUiLayout>\n );\n }\n}\n\n// Helper function to get class names for HTML string generation\nconst getBlockClassNames = () => {\n return {\n blockContainer: 'block-container',\n blockResponse: 'block-response',\n blockMath: 'block-math',\n };\n};\n\n// CSS for block classes used in HTML string generation\nif (typeof document !== 'undefined') {\n const styleId = 'math-inline-block-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 color: grey;\n background: #f5f5f5;\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 flex-shrink: 0;\n flex-grow: 0;\n flex-basis: auto;\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-grow: 1;\n }\n .block-math > .mq-math-mode > .mq-hasCursor > .mq-cursor {\n display: none;\n }\n .sr-only {\n position: absolute;\n left: -10000px;\n top: auto;\n width: 1px;\n height: 1px;\n overflow: hidden;\n }\n .static-math > .mq-root-block > .mq-editable-field {\n border-color: ${color.text()};\n }\n `;\n document.head.appendChild(style);\n }\n}\n\nconst StyledUiLayout = styled(UiLayout)(() => ({\n color: color.text(),\n backgroundColor: color.background(),\n display: 'inline-block',\n}));\n\nconst StyledTooltip = styled(Tooltip)({\n // Styles applied via slotProps.sx below\n});\n\nconst PromptContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst MainContent = styled('div')({\n width: '100%',\n position: 'relative',\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst Note = styled('div')(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst ResponseContainer = styled('div')(({ theme }) => ({\n zIndex: 10,\n minWidth: '400px',\n marginTop: theme.spacing(2),\n}));\n\nconst Expression = styled('div', {\n shouldForwardProp: (prop) =>\n !['isIncorrect', 'isCorrect', 'showCorrectness', 'correctAnswerShown', 'printCorrect'].includes(prop),\n})(({ theme, isIncorrect, isCorrect, showCorrectness, correctAnswerShown, printCorrect }) => {\n const borderColor = isIncorrect ? color.incorrect() : isCorrect ? color.correct() : undefined;\n\n return {\n maxWidth: 'fit-content',\n padding: theme.spacing(0.25),\n ...(showCorrectness && {\n border: borderColor ? `2px solid ${borderColor} !important` : '2px solid',\n }),\n ...(!showCorrectness &&\n borderColor && {\n borderColor: `${borderColor} !important`,\n }),\n ...(correctAnswerShown && {\n padding: theme.spacing(1),\n letterSpacing: '0.5px',\n }),\n ...(printCorrect && {\n border: `2px solid ${color.correct()} !important`,\n }),\n '& .mq-math-mode': {\n '& .mq-root-block': {\n paddingRight: '0 !important',\n paddingLeft: '0 !important',\n '& .mq-editable-field': {\n minWidth: '10px',\n padding: theme.spacing(0.4),\n },\n },\n '& sup': {\n top: 0,\n },\n },\n };\n});\n\nconst InputAndKeypadContainer = styled('div')({\n position: 'relative',\n '& .mq-overarrow-inner': {\n border: 'none !important',\n padding: '0 !important',\n },\n '& .mq-overarrow-inner-right': {\n display: 'none !important',\n },\n '& .mq-overarrow-inner-left': {\n display: 'none !important',\n },\n '& .mq-overarrow.mq-arrow-both': {\n minWidth: '1.23em',\n '& *': {\n lineHeight: '1 !important',\n },\n '&:before': {\n top: '-0.4em',\n left: '-1px',\n },\n '&:after': {\n top: '-2.4em',\n right: '-1px',\n },\n '&.mq-empty:after': {\n top: '-0.45em',\n },\n },\n '& .mq-overarrow.mq-arrow-right': {\n '&:before': {\n top: '-0.4em',\n right: '-1px',\n },\n },\n '& .mq-longdiv-inner': {\n borderTop: '1px solid !important',\n paddingTop: '1.5px !important',\n },\n '& .mq-parallelogram': {\n lineHeight: 0.85,\n },\n});\n\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 StyledCorrectAnswerToggle = styled(CorrectAnswerToggle)(({ theme }) => ({\n color: color.text(),\n marginBottom: theme.spacing(2),\n}));\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ exports.default = exports.SimpleQuestionBlock = void 0;
|
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _react = _interopRequireDefault(require("react"));
|
|
10
10
|
var _mathToolbar = require("@pie-lib/math-toolbar");
|
|
11
|
-
var
|
|
11
|
+
var _mathInputMathlive = require("@pie-lib/math-input-mathlive");
|
|
12
12
|
var _styles = require("@mui/material/styles");
|
|
13
13
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
14
14
|
var _renderUi = require("@pie-lib/render-ui");
|
|
@@ -115,7 +115,7 @@ class SimpleQuestionBlock extends _react.default.Component {
|
|
|
115
115
|
}, showCorrect || disabled ? /*#__PURE__*/_react.default.createElement(Static, {
|
|
116
116
|
isIncorrect: !emptyResponse && !correct && !showCorrect,
|
|
117
117
|
isCorrect: !emptyResponse && (correct || showCorrect)
|
|
118
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
118
|
+
}, /*#__PURE__*/_react.default.createElement(_mathInputMathlive.mq.Static, {
|
|
119
119
|
latex: showCorrect ? responses && responses.length && responses[0].answer : session.response || ''
|
|
120
120
|
})) : /*#__PURE__*/_react.default.createElement("div", {
|
|
121
121
|
id: this.mathToolBarId
|