@pie-element/math-templated 6.1.1-next.4 → 6.2.0-next.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 +16 -0
- package/configure/CHANGELOG.md +6 -0
- package/configure/package.json +4 -4
- package/controller/CHANGELOG.md +10 -0
- package/controller/lib/index.js +75 -4
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/lib/main.js +2 -2
- package/lib/main.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
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.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@6.1.1-next.5...@pie-element/math-templated@6.2.0-next.0) (2026-03-18)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- remove extra space ([55be82c](https://github.com/pie-framework/pie-elements/commit/55be82c9ecc2cd00881fcaad732ae8403637486f))
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **math-templated:** add scoring trace in outcome function PD-5468 ([8e80d77](https://github.com/pie-framework/pie-elements/commit/8e80d77babf46784d62a5b11b1575d6a8d433691))
|
|
15
|
+
|
|
16
|
+
## [6.1.1-next.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@6.1.1-next.4...@pie-element/math-templated@6.1.1-next.5) (2026-03-12)
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- bump libs, update mathquill, switch interface PD-5791 ([686a7c0](https://github.com/pie-framework/pie-elements/commit/686a7c0d41ff82f5ddad7cecd93cc0c18324a81b))
|
|
21
|
+
|
|
6
22
|
## [6.1.1-next.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated@6.1.1-next.3...@pie-element/math-templated@6.1.1-next.4) (2026-03-09)
|
|
7
23
|
|
|
8
24
|
**Note:** Version bump only for package @pie-element/math-templated
|
package/configure/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
|
+
## [4.1.1-next.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-configure@4.1.1-next.3...@pie-element/math-templated-configure@4.1.1-next.4) (2026-03-12)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- bump libs, update mathquill, switch interface PD-5791 ([686a7c0](https://github.com/pie-framework/pie-elements/commit/686a7c0d41ff82f5ddad7cecd93cc0c18324a81b))
|
|
11
|
+
|
|
6
12
|
## [4.1.1-next.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-configure@4.1.1-next.2...@pie-element/math-templated-configure@4.1.1-next.3) (2026-03-06)
|
|
7
13
|
|
|
8
14
|
**Note:** Version bump only for package @pie-element/math-templated-configure
|
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.1.1-next.
|
|
4
|
+
"version": "4.1.1-next.4",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -11,9 +11,9 @@
|
|
|
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": "12.2.0-next.
|
|
15
|
-
"@pie-lib/editable-html-tip-tap": "1.2.0-next.
|
|
16
|
-
"@pie-lib/math-toolbar": "2.2.0-next.
|
|
14
|
+
"@pie-lib/config-ui": "12.2.0-next.17",
|
|
15
|
+
"@pie-lib/editable-html-tip-tap": "1.2.0-next.16",
|
|
16
|
+
"@pie-lib/math-toolbar": "2.2.0-next.9",
|
|
17
17
|
"@pie-lib/render-ui": "5.2.0-next.4",
|
|
18
18
|
"debug": "^4.1.1",
|
|
19
19
|
"lodash-es": "^4.17.23",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
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.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-controller@5.1.1-next.1...@pie-element/math-templated-controller@5.2.0-next.0) (2026-03-18)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- remove extra space ([55be82c](https://github.com/pie-framework/pie-elements/commit/55be82c9ecc2cd00881fcaad732ae8403637486f))
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **math-templated:** add scoring trace in outcome function PD-5468 ([8e80d77](https://github.com/pie-framework/pie-elements/commit/8e80d77babf46784d62a5b11b1575d6a8d433691))
|
|
15
|
+
|
|
6
16
|
## [5.1.1-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-templated-controller@5.1.0-next.2...@pie-element/math-templated-controller@5.1.1-next.1) (2026-02-26)
|
|
7
17
|
|
|
8
18
|
**Note:** Version bump only for package @pie-element/math-templated-controller
|
package/controller/lib/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.validate = exports.prepareVal = exports.outcome = exports.normalizeSession = exports.model = exports.getPartialScore = exports.getCorrectness = exports.createDefaultModel = exports.createCorrectResponseSession = void 0;
|
|
7
|
+
exports.validate = exports.prepareVal = exports.outcome = exports.normalizeSession = exports.model = exports.getPartialScore = exports.getLogTrace = exports.getCorrectness = exports.createDefaultModel = exports.createCorrectResponseSession = void 0;
|
|
8
8
|
var _debug = _interopRequireDefault(require("debug"));
|
|
9
9
|
var _lodashEs = require("lodash-es");
|
|
10
10
|
var _translator = _interopRequireDefault(require("@pie-lib/translator"));
|
|
@@ -87,26 +87,97 @@ const getPartialScore = (question, session) => {
|
|
|
87
87
|
}
|
|
88
88
|
return 1;
|
|
89
89
|
};
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Generates detailed trace log for math-templated scoring evaluation
|
|
93
|
+
* @param {Object} question
|
|
94
|
+
* @param {Object} session
|
|
95
|
+
* @param {Object} env
|
|
96
|
+
* @returns {Array<string>} traceLog
|
|
97
|
+
*/
|
|
90
98
|
exports.getPartialScore = getPartialScore;
|
|
99
|
+
const getLogTrace = (question, session, env) => {
|
|
100
|
+
const traceLog = [];
|
|
101
|
+
if (!session || !session.answers || Object.keys(session.answers).length === 0) {
|
|
102
|
+
traceLog.push('Student did not enter a response.');
|
|
103
|
+
return traceLog;
|
|
104
|
+
}
|
|
105
|
+
const answers = session.answers;
|
|
106
|
+
const responseIds = Object.keys(question.responses || {});
|
|
107
|
+
const totalAreas = responseIds.length;
|
|
108
|
+
traceLog.push(`${totalAreas} response area(s) defined in this question.`);
|
|
109
|
+
let answeredCount = 0;
|
|
110
|
+
let correctCount = 0;
|
|
111
|
+
responseIds.forEach((responseId, index) => {
|
|
112
|
+
const answerItem = answers[`r${responseId}`];
|
|
113
|
+
const studentValue = answerItem?.value?.trim();
|
|
114
|
+
const correctResponse = question.responses[responseId] || {};
|
|
115
|
+
const cleanStudentAnswer = studentValue ? studentValue.replace(/\\/g, '') : '';
|
|
116
|
+
if (studentValue) {
|
|
117
|
+
answeredCount++;
|
|
118
|
+
traceLog.push(`Response area ${index + 1}: student entered ${cleanStudentAnswer}.`);
|
|
119
|
+
} else {
|
|
120
|
+
traceLog.push(`Response area ${index + 1}: no response entered.`);
|
|
121
|
+
}
|
|
122
|
+
const validation = correctResponse.validation || question.validationDefault;
|
|
123
|
+
traceLog.push(`Validation mode: ${validation}.`);
|
|
124
|
+
if (validation === 'literal') {
|
|
125
|
+
const allowTrailingZeros = correctResponse.allowTrailingZeros || false;
|
|
126
|
+
const ignoreOrder = correctResponse.ignoreOrder || false;
|
|
127
|
+
traceLog.push(`Allow trailing zeros: ${allowTrailingZeros ? 'enabled' : 'disabled'}.`);
|
|
128
|
+
traceLog.push(`Ignore order: ${ignoreOrder ? 'enabled' : 'disabled'}.`);
|
|
129
|
+
}
|
|
130
|
+
const acceptedValues = [correctResponse.answer].concat(Object.values(correctResponse.alternates || {}));
|
|
131
|
+
if (acceptedValues.length > 1) {
|
|
132
|
+
traceLog.push(`Accepted answers: ${acceptedValues.length} (including alternates).`);
|
|
133
|
+
}
|
|
134
|
+
if (studentValue) {
|
|
135
|
+
const isCorrect = getIsAnswerCorrect(correctResponse, answerItem);
|
|
136
|
+
if (isCorrect) {
|
|
137
|
+
correctCount++;
|
|
138
|
+
traceLog.push(`Response area ${index + 1} is correct.`);
|
|
139
|
+
} else {
|
|
140
|
+
traceLog.push(`Response area ${index + 1} is incorrect.`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
traceLog.push(`${correctCount} out of ${totalAreas} response area(s) are correct.`);
|
|
145
|
+
const partialScoringEnabled = _controllerUtils.partialScoring.enabled(question, env);
|
|
146
|
+
traceLog.push(`Scoring method: ${partialScoringEnabled ? 'partial scoring' : 'all-or-nothing scoring'}.`);
|
|
147
|
+
if (partialScoringEnabled) {
|
|
148
|
+
traceLog.push('Each correct response area contributes to the score.');
|
|
149
|
+
} else {
|
|
150
|
+
traceLog.push('Student must answer all response areas correctly to receive full credit.');
|
|
151
|
+
}
|
|
152
|
+
const correctness = getCorrectness(question, env, session);
|
|
153
|
+
traceLog.push(`Overall correctness: ${correctness.correctness}.`);
|
|
154
|
+
traceLog.push(`Final score: ${correctness.score}.`);
|
|
155
|
+
return traceLog;
|
|
156
|
+
};
|
|
157
|
+
exports.getLogTrace = getLogTrace;
|
|
91
158
|
const outcome = (question, session, env) => new Promise(resolve => {
|
|
92
159
|
if (!session || (0, _lodashEs.isEmpty)(session)) {
|
|
93
160
|
resolve({
|
|
94
161
|
score: 0,
|
|
95
|
-
empty: true
|
|
162
|
+
empty: true,
|
|
163
|
+
logTrace: ['Student did not enter a response.']
|
|
96
164
|
});
|
|
165
|
+
return;
|
|
97
166
|
}
|
|
98
167
|
const partialScoringEnabled = _controllerUtils.partialScoring.enabled(question, env);
|
|
99
168
|
session = normalizeSession(session);
|
|
100
169
|
if (env.mode !== 'evaluate') {
|
|
101
170
|
resolve({
|
|
102
171
|
score: undefined,
|
|
103
|
-
completed: undefined
|
|
172
|
+
completed: undefined,
|
|
173
|
+
logTrace: []
|
|
104
174
|
});
|
|
105
175
|
} else {
|
|
106
176
|
const correctness = getCorrectness(question, env, session, true);
|
|
107
177
|
const score = correctness.score;
|
|
108
178
|
resolve({
|
|
109
|
-
score: partialScoringEnabled ? score : score === 1 ? 1 : 0
|
|
179
|
+
score: partialScoringEnabled ? score : score === 1 ? 1 : 0,
|
|
180
|
+
logTrace: getLogTrace(question, session, env)
|
|
110
181
|
});
|
|
111
182
|
}
|
|
112
183
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_translator","mv","_interopRequireWildcard","_defaults","_controllerUtils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","translator","Translator","log","debug","getFeedback","value","getContent","html","replace","getIsAnswerCorrect","correctResponse","answerItem","answerCorrect","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","values","alternates","latexEqual","getResponseCorrectness","question","sessionResponse","correctResponses","responses","correctness","score","correct","correctAnswers","correctResponsesCount","keys","length","forEach","responseId","fullyCorrect","Number","toFixed","getCorrectness","env","session","answers","exports","getPartialScore","isEmpty","outcome","Promise","resolve","empty","partialScoringEnabled","partialScoring","enabled","normalizeSession","undefined","completed","createDefaultModel","model","allowTrailingZerosDefault","ignoreOrderDefault","updatedResponses","reduce","acc","s","getTextFromHTML","prepareVal","trim","normalizedQuestion","language","note","showNote","lng","out","prompt","promptEnabled","markup","equationEditor","customKeys","disabled","view","extraCSSRules","feedback","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","createCorrectResponseSession","id","validate","config","maxResponseAreas","responsesErrors","errors","field","required","entries","key","response","index","reversedAlternates","reverse","alternatesErrors","responseError","identicalAnswer","slice","some","val","nbOfResponseAreas","match","responseAreas"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { isEmpty } from 'lodash-es';\nimport Translator from '@pie-lib/translator';\nimport * as mv from '@pie-framework/math-validation';\n\nimport defaults from './defaults';\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nconst { translator } = Translator;\nconst log = debug('@pie-element:math-templated:controller');\n\nconst getFeedback = (value) => (value ? 'correct' : 'incorrect');\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nconst getIsAnswerCorrect = (correctResponse, answerItem) => {\n let answerCorrect = false;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n ...(correctResponse.validation === 'literal' && {\n literal: {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n },\n }),\n };\n\n if (!answerCorrect) {\n const acceptedValues = [correctResponse.answer, ...Object.values(correctResponse.alternates || {})];\n\n try {\n for (const value of acceptedValues) {\n answerCorrect = mv.latexEqual(answerItem.value, value, opts);\n if (answerCorrect) break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', e, correctResponse, answerItem);\n answerCorrect = false;\n }\n }\n\n return answerCorrect;\n};\n\nconst getResponseCorrectness = (question, sessionResponse) => {\n const correctResponses = question.responses;\n\n if (!sessionResponse) {\n return {\n correctness: 'unanswered',\n score: 0,\n correct: false,\n };\n } else {\n let correctAnswers = 0;\n let score = 0;\n const correctResponsesCount = Object.keys(correctResponses || {}).length;\n\n Object.keys(correctResponses).forEach((responseId) => {\n const answerItem = sessionResponse['r' + responseId];\n const correctResponse = correctResponses[responseId] || {};\n\n const answerCorrect = getIsAnswerCorrect(correctResponse, answerItem);\n if (answerCorrect) {\n correctAnswers++;\n }\n });\n\n const fullyCorrect = correctAnswers === correctResponsesCount;\n\n // partial credit scoring: each correct answer is worth 1 / total answers point\n // dichotomous scoring: for credit to be awarded, a correct answer must be entered for every response area\n score = Number((correctAnswers / Object.keys(correctResponses).length).toFixed(2));\n\n return {\n correctness: getFeedback(fullyCorrect),\n score: correctAnswers > 0 ? score : 0,\n correct: fullyCorrect,\n };\n }\n};\n\nexport const getCorrectness = (question, env, session) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, session && session.answers);\n }\n};\n\nexport const getPartialScore = (question, session) => {\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n return 1;\n};\n\nexport const outcome = (question, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n const partialScoringEnabled = partialScoring.enabled(question, env);\n session = normalizeSession(session);\n\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n const score = correctness.score;\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0 });\n }\n });\n\nexport const createDefaultModel = (model = {}) => {\n const { validationDefault, allowTrailingZerosDefault, ignoreOrderDefault, responses = {} } = model;\n\n const updatedResponses = Object.keys(responses).reduce((acc, responseId) => {\n const correctResponse = responses[responseId];\n\n acc[responseId] = {\n ...correctResponse,\n validation: correctResponse.validation || validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || ignoreOrderDefault,\n };\n\n return acc;\n }, {});\n\n return {\n ...defaults.model,\n ...model,\n responses: updatedResponses,\n };\n};\n\nexport const normalizeSession = (s) => ({ ...s });\n\nconst getTextFromHTML = (html) => (html || '').replace(/<\\/?[^>]+(>|$)/g, '');\n\nexport const prepareVal = (html) => getTextFromHTML(html).trim();\n\nexport const model = (question, session, env) => {\n return new Promise((resolve) => {\n session = session || {};\n const normalizedQuestion = createDefaultModel(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { responses, language } = normalizedQuestion;\n let { note } = normalizedQuestion;\n let showNote = false;\n\n // check if there is at least one alternate response or if the validation for at least one response is not literal\n Object.keys(responses).forEach((responseId) => {\n const correctResponse = responses[responseId] || {};\n if (correctResponse.alternates && Object.keys(correctResponse.alternates).length > 0) {\n showNote = true;\n } else if (correctResponse.validation !== 'literal') {\n showNote = true;\n }\n });\n\n if (!note) {\n note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n }\n\n const out = {\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n markup: normalizedQuestion.markup,\n responses: env.mode === 'gather' ? null : normalizedQuestion.responses,\n language: normalizedQuestion.language,\n equationEditor: normalizedQuestion.equationEditor,\n customKeys: normalizedQuestion.customKeys,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n correctness,\n env,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n const { answers = {} } = session || {};\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n Object.keys(responses).forEach((responseId) => {\n const answerItem = answers['r' + responseId];\n const correctResponse = responses[responseId];\n feedback[responseId] = getIsAnswerCorrect(correctResponse, answerItem);\n });\n }\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.showNote = showNote;\n out.note = note;\n out.feedback = feedback;\n } else {\n out.responses = {};\n out.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n log('out: ', out);\n resolve(out);\n });\n};\n\nexport const createCorrectResponseSession = (question, env) =>\n new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const correctResponse = Object.keys(question.responses).reduce((acc, responseId) => {\n acc['r' + responseId] = { value: question.responses[responseId].answer };\n return acc;\n }, {});\n\n resolve({ id: '1', answers: correctResponse });\n } else {\n resolve(null);\n }\n });\n\nexport const validate = (model = {}, config = {}) => {\n const { responses, markup } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(responses || {}).forEach(([key, response], index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreas = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreas = 'There should be at least 1 response area defined.';\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responses = responsesErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_lodashEs","_translator","mv","_interopRequireWildcard","_defaults","_controllerUtils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","translator","Translator","log","debug","getFeedback","value","getContent","html","replace","getIsAnswerCorrect","correctResponse","answerItem","answerCorrect","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","values","alternates","latexEqual","getResponseCorrectness","question","sessionResponse","correctResponses","responses","correctness","score","correct","correctAnswers","correctResponsesCount","keys","length","forEach","responseId","fullyCorrect","Number","toFixed","getCorrectness","env","session","answers","exports","getPartialScore","isEmpty","getLogTrace","traceLog","push","responseIds","totalAreas","answeredCount","correctCount","index","studentValue","trim","cleanStudentAnswer","concat","isCorrect","partialScoringEnabled","partialScoring","enabled","outcome","Promise","resolve","empty","logTrace","normalizeSession","undefined","completed","createDefaultModel","model","allowTrailingZerosDefault","ignoreOrderDefault","updatedResponses","reduce","acc","s","getTextFromHTML","prepareVal","normalizedQuestion","language","note","showNote","lng","out","prompt","promptEnabled","markup","equationEditor","customKeys","disabled","view","extraCSSRules","feedback","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","createCorrectResponseSession","id","validate","config","maxResponseAreas","responsesErrors","errors","field","required","entries","key","response","reversedAlternates","reverse","alternatesErrors","responseError","identicalAnswer","slice","some","val","nbOfResponseAreas","match","responseAreas"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport { isEmpty } from 'lodash-es';\nimport Translator from '@pie-lib/translator';\nimport * as mv from '@pie-framework/math-validation';\n\nimport defaults from './defaults';\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nconst { translator } = Translator;\nconst log = debug('@pie-element:math-templated:controller');\n\nconst getFeedback = (value) => (value ? 'correct' : 'incorrect');\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nconst getIsAnswerCorrect = (correctResponse, answerItem) => {\n let answerCorrect = false;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n ...(correctResponse.validation === 'literal' && {\n literal: {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n },\n }),\n };\n\n if (!answerCorrect) {\n const acceptedValues = [correctResponse.answer, ...Object.values(correctResponse.alternates || {})];\n\n try {\n for (const value of acceptedValues) {\n answerCorrect = mv.latexEqual(answerItem.value, value, opts);\n if (answerCorrect) break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', e, correctResponse, answerItem);\n answerCorrect = false;\n }\n }\n\n return answerCorrect;\n};\n\nconst getResponseCorrectness = (question, sessionResponse) => {\n const correctResponses = question.responses;\n\n if (!sessionResponse) {\n return {\n correctness: 'unanswered',\n score: 0,\n correct: false,\n };\n } else {\n let correctAnswers = 0;\n let score = 0;\n const correctResponsesCount = Object.keys(correctResponses || {}).length;\n\n Object.keys(correctResponses).forEach((responseId) => {\n const answerItem = sessionResponse['r' + responseId];\n const correctResponse = correctResponses[responseId] || {};\n\n const answerCorrect = getIsAnswerCorrect(correctResponse, answerItem);\n if (answerCorrect) {\n correctAnswers++;\n }\n });\n\n const fullyCorrect = correctAnswers === correctResponsesCount;\n\n // partial credit scoring: each correct answer is worth 1 / total answers point\n // dichotomous scoring: for credit to be awarded, a correct answer must be entered for every response area\n score = Number((correctAnswers / Object.keys(correctResponses).length).toFixed(2));\n\n return {\n correctness: getFeedback(fullyCorrect),\n score: correctAnswers > 0 ? score : 0,\n correct: fullyCorrect,\n };\n }\n};\n\nexport const getCorrectness = (question, env, session) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, session && session.answers);\n }\n};\n\nexport const getPartialScore = (question, session) => {\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n return 1;\n};\n\n/**\n * Generates detailed trace log for math-templated scoring evaluation\n * @param {Object} question\n * @param {Object} session\n * @param {Object} env\n * @returns {Array<string>} traceLog\n */\nexport const getLogTrace = (question, session, env) => {\n const traceLog = [];\n\n if (!session || !session.answers || Object.keys(session.answers).length === 0) {\n traceLog.push('Student did not enter a response.');\n return traceLog;\n }\n\n const answers = session.answers;\n const responseIds = Object.keys(question.responses || {});\n const totalAreas = responseIds.length;\n\n traceLog.push(`${totalAreas} response area(s) defined in this question.`);\n\n let answeredCount = 0;\n let correctCount = 0;\n\n responseIds.forEach((responseId, index) => {\n const answerItem = answers[`r${responseId}`];\n const studentValue = answerItem?.value?.trim();\n const correctResponse = question.responses[responseId] || {};\n\n const cleanStudentAnswer = studentValue ? studentValue.replace(/\\\\/g, '') : '';\n\n if (studentValue) {\n answeredCount++;\n traceLog.push(`Response area ${index + 1}: student entered ${cleanStudentAnswer}.`);\n } else {\n traceLog.push(`Response area ${index + 1}: no response entered.`);\n }\n\n const validation = correctResponse.validation || question.validationDefault;\n traceLog.push(`Validation mode: ${validation}.`);\n \n if (validation === 'literal') {\n const allowTrailingZeros = correctResponse.allowTrailingZeros || false;\n const ignoreOrder = correctResponse.ignoreOrder || false;\n \n traceLog.push(`Allow trailing zeros: ${allowTrailingZeros ? 'enabled' : 'disabled'}.`);\n traceLog.push(`Ignore order: ${ignoreOrder ? 'enabled' : 'disabled'}.`);\n }\n \n const acceptedValues = [correctResponse.answer].concat(\n Object.values(correctResponse.alternates || {})\n );\n \n if (acceptedValues.length > 1) {\n traceLog.push(`Accepted answers: ${acceptedValues.length} (including alternates).`);\n }\n\n if (studentValue) {\n const isCorrect = getIsAnswerCorrect(correctResponse, answerItem);\n if (isCorrect) {\n correctCount++;\n traceLog.push(`Response area ${index + 1} is correct.`);\n } else {\n traceLog.push(`Response area ${index + 1} is incorrect.`);\n }\n }\n });\n\n traceLog.push(`${correctCount} out of ${totalAreas} response area(s) are correct.`);\n\n const partialScoringEnabled = partialScoring.enabled(question, env);\n traceLog.push(\n `Scoring method: ${partialScoringEnabled ? 'partial scoring' : 'all-or-nothing scoring'}.`\n );\n\n if (partialScoringEnabled) {\n traceLog.push('Each correct response area contributes to the score.');\n } else {\n traceLog.push('Student must answer all response areas correctly to receive full credit.');\n }\n\n const correctness = getCorrectness(question, env, session);\n traceLog.push(`Overall correctness: ${correctness.correctness}.`);\n traceLog.push(`Final score: ${correctness.score}.`);\n\n return traceLog;\n};\n\nexport const outcome = (question, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ \n score: 0, \n empty: true, \n logTrace: ['Student did not enter a response.'] \n });\n return;\n }\n \n const partialScoringEnabled = partialScoring.enabled(question, env);\n session = normalizeSession(session);\n\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined, logTrace: [] });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n const score = correctness.score;\n\n resolve({ \n score: partialScoringEnabled ? score : score === 1 ? 1 : 0,\n logTrace: getLogTrace(question, session, env)\n });\n }\n });\n\nexport const createDefaultModel = (model = {}) => {\n const { validationDefault, allowTrailingZerosDefault, ignoreOrderDefault, responses = {} } = model;\n\n const updatedResponses = Object.keys(responses).reduce((acc, responseId) => {\n const correctResponse = responses[responseId];\n\n acc[responseId] = {\n ...correctResponse,\n validation: correctResponse.validation || validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || ignoreOrderDefault,\n };\n\n return acc;\n }, {});\n\n return {\n ...defaults.model,\n ...model,\n responses: updatedResponses,\n };\n};\n\nexport const normalizeSession = (s) => ({ ...s });\n\nconst getTextFromHTML = (html) => (html || '').replace(/<\\/?[^>]+(>|$)/g, '');\n\nexport const prepareVal = (html) => getTextFromHTML(html).trim();\n\nexport const model = (question, session, env) => {\n return new Promise((resolve) => {\n session = session || {};\n const normalizedQuestion = createDefaultModel(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { responses, language } = normalizedQuestion;\n let { note } = normalizedQuestion;\n let showNote = false;\n\n // check if there is at least one alternate response or if the validation for at least one response is not literal\n Object.keys(responses).forEach((responseId) => {\n const correctResponse = responses[responseId] || {};\n if (correctResponse.alternates && Object.keys(correctResponse.alternates).length > 0) {\n showNote = true;\n } else if (correctResponse.validation !== 'literal') {\n showNote = true;\n }\n });\n\n if (!note) {\n note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n }\n\n const out = {\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n markup: normalizedQuestion.markup,\n responses: env.mode === 'gather' ? null : normalizedQuestion.responses,\n language: normalizedQuestion.language,\n equationEditor: normalizedQuestion.equationEditor,\n customKeys: normalizedQuestion.customKeys,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n correctness,\n env,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n const { answers = {} } = session || {};\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n Object.keys(responses).forEach((responseId) => {\n const answerItem = answers['r' + responseId];\n const correctResponse = responses[responseId];\n feedback[responseId] = getIsAnswerCorrect(correctResponse, answerItem);\n });\n }\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.showNote = showNote;\n out.note = note;\n out.feedback = feedback;\n } else {\n out.responses = {};\n out.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n log('out: ', out);\n resolve(out);\n });\n};\n\nexport const createCorrectResponseSession = (question, env) =>\n new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const correctResponse = Object.keys(question.responses).reduce((acc, responseId) => {\n acc['r' + responseId] = { value: question.responses[responseId].answer };\n return acc;\n }, {});\n\n resolve({ id: '1', answers: correctResponse });\n } else {\n resolve(null);\n }\n });\n\nexport const validate = (model = {}, config = {}) => {\n const { responses, markup } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(responses || {}).forEach(([key, response], index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreas = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreas = 'There should be at least 1 response area defined.';\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responses = responsesErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/controller/package.json
CHANGED
package/lib/main.js
CHANGED
|
@@ -297,7 +297,7 @@ class Main extends _react.default.Component {
|
|
|
297
297
|
const el = this.root.querySelector(`#${answerId}`);
|
|
298
298
|
const indexEl = this.root.querySelector(`#${answerId}Index`);
|
|
299
299
|
if (el) {
|
|
300
|
-
let MQ = _mathquill.default.getInterface(
|
|
300
|
+
let MQ = _mathquill.default.getInterface(3);
|
|
301
301
|
const answer = answers[answerId];
|
|
302
302
|
el.textContent = answer && answer.value || '';
|
|
303
303
|
if (model.view) {
|
|
@@ -612,7 +612,7 @@ class Main extends _react.default.Component {
|
|
|
612
612
|
}
|
|
613
613
|
UNSAFE_componentWillMount() {
|
|
614
614
|
if (typeof window !== 'undefined') {
|
|
615
|
-
let MQ = _mathquill.default.getInterface(
|
|
615
|
+
let MQ = _mathquill.default.getInterface(3);
|
|
616
616
|
if (!registered) {
|
|
617
617
|
MQ.registerEmbed('answerBlock', data => ({
|
|
618
618
|
htmlString: `<div class="block-container">
|
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(2);\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(2);\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":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAP,OAAA;AACA,IAAAQ,UAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,oBAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,SAAA,GAAAZ,sBAAA,CAAAC,OAAA;AAEA,MAAMY,cAAc,GAAG,IAAAC,cAAM,EAACC,kBAAQ,CAAC,CAAC;EACtCC,KAAK,EAAEA,eAAK,CAACC,IAAI,CAAC,CAAC;EACnBC,eAAe,EAAEF,eAAK,CAACG,UAAU,CAAC,CAAC;EACnCC,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,MAAMC,aAAa,GAAG,IAAAP,cAAM,EAAC,KAAK,CAAC,CAAC;EAClCQ,KAAK,EAAE,MAAM;EACbC,QAAQ,EAAE,UAAU;EACpBL,eAAe,EAAEF,eAAK,CAACG,UAAU,CAAC,CAAC;EACnCH,KAAK,EAAEA,eAAK,CAACC,IAAI,CAAC;AACpB,CAAC,CAAC;AAEF,MAAMO,eAAe,GAAG,IAAAV,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEW;AAAM,CAAC,MAAM;EACpDC,YAAY,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,MAAMC,oBAAoB,GAAG,IAAAd,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEW;AAAM,CAAC,MAAM;EACzDC,YAAY,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,MAAME,uBAAuB,GAAG,IAAAf,cAAM,EAAC,KAAK,CAAC,CAAC;EAC5CS,QAAQ,EAAE,UAAU;EACpB,eAAe,EAAE;IACfH,OAAO,EAAE,MAAM;IACfU,UAAU,EAAE,UAAU;IACtBC,QAAQ,EAAE;EACZ,CAAC;EACD,uBAAuB,EAAE;IACvBC,MAAM,EAAE,iBAAiB;IACzBC,OAAO,EAAE;EACX,CAAC;EACD,6BAA6B,EAAE;IAC7Bb,OAAO,EAAE;EACX,CAAC;EACD,4BAA4B,EAAE;IAC5BA,OAAO,EAAE;EACX,CAAC;EACD,+BAA+B,EAAE;IAC/Bc,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE;MACLC,UAAU,EAAE;IACd,CAAC;IACD,UAAU,EAAE;MACVC,GAAG,EAAE,QAAQ;MACbC,IAAI,EAAE;IACR,CAAC;IACD,SAAS,EAAE;MACTD,GAAG,EAAE,QAAQ;MACbE,KAAK,EAAE;IACT,CAAC;IACD,kBAAkB,EAAE;MAClBF,GAAG,EAAE;IACP;EACF,CAAC;EACD,gCAAgC,EAAE;IAChC,UAAU,EAAE;MACVA,GAAG,EAAE,QAAQ;MACbE,KAAK,EAAE;IACT;EACF,CAAC;EACD,qBAAqB,EAAE;IACrBC,SAAS,EAAE,sBAAsB;IACjCC,UAAU,EAAE;EACd,CAAC;EACD,qBAAqB,EAAE;IACrBL,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF,MAAMM,UAAU,GAAG,IAAA3B,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEW,KAAK;EAAEiB,UAAU;EAAEC,QAAQ;EAAEC,gBAAgB;EAAEC;AAAoB,CAAC,MAAM;EAC5GC,QAAQ,EAAE,aAAa;EACvB,IAAIJ,UAAU,IAAI;IAChBK,WAAW,EAAE,GAAG/B,eAAK,CAACgC,SAAS,CAAC,CAAC;EACnC,CAAC,CAAC;EACF,IAAIL,QAAQ,IAAI;IACdI,WAAW,EAAE,GAAG/B,eAAK,CAACiC,OAAO,CAAC,CAAC;EACjC,CAAC,CAAC;EACF,IAAIL,gBAAgB,IAAI;IACtBZ,MAAM,EAAE;EACV,CAAC,CAAC;EACF,IAAIa,mBAAmB,IAAI;IACzBZ,OAAO,EAAER,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC;IACzBuB,aAAa,EAAE;EACjB,CAAC,CAAC;EACF,mBAAmB,EAAE;IACnB,oBAAoB,EAAE;MACpB,wBAAwB,EAAE;QACxBhB,QAAQ,EAAE,MAAM;QAChBD,OAAO,EAAER,KAAK,CAACE,OAAO,CAAC,IAAI;MAC7B;IACF,CAAC;IACD,OAAO,EAAE;MACPS,GAAG,EAAE;IACP;EACF;AACF,CAAC,CAAC,CAAC;AAEH,MAAMe,YAAY,GAAG,IAAArC,cAAM,EAACsC,aAAE,CAACC,MAAM,CAAC,CAAC;EACrC,oBAAoB,EAAE;IACpB,wBAAwB,EAAE;MACxBN,WAAW,EAAE/B,eAAK,CAACC,IAAI,CAAC;IAC1B;EACF;AACF,CAAC,CAAC;;AAEF;;AAEA,MAAMqC,iBAAiB,GAAG,IAAAxC,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEW;AAAM,CAAC,MAAM;EACtD8B,MAAM,EAAE,EAAE;EACVrB,QAAQ,EAAE,OAAO;EACjBsB,SAAS,EAAE/B,KAAK,CAACE,OAAO,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,MAAM8B,cAAc,GAAG,IAAA3C,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEW;AAAM,CAAC,MAAM;EACnDC,YAAY,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC;EAC9B+B,aAAa,EAAE;AACjB,CAAC,CAAC,CAAC;AAEH,MAAMC,MAAM,GAAG,IAAA7C,cAAM,EAAC,IAAI,CAAC,CAAC;EAC1BS,QAAQ,EAAE,UAAU;EACpBc,IAAI,EAAE,UAAU;EAChBD,GAAG,EAAE,MAAM;EACXd,KAAK,EAAE,KAAK;EACZsC,MAAM,EAAE,KAAK;EACbC,QAAQ,EAAE;AACZ,CAAC,CAAC;AAEF,MAAMC,IAAI,GAAG,IAAAhD,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEW;AAAM,CAAC,MAAM;EACzCC,YAAY,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,MAAMoC,YAAY,GAAG,IAAAjD,cAAM,EAACkD,4BAAmB,CAAC,CAAC,CAAC;EAAEvC;AAAM,CAAC,MAAM;EAC/DT,KAAK,EAAEA,eAAK,CAACC,IAAI,CAAC,CAAC;EACnBS,YAAY,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;;AAEH;AACA,IAAI,OAAOsC,QAAQ,KAAK,WAAW,EAAE;EACnC,MAAMC,OAAO,GAAG,4BAA4B;EAC5C,IAAI,CAACD,QAAQ,CAACE,cAAc,CAACD,OAAO,CAAC,EAAE;IACrC,MAAME,KAAK,GAAGH,QAAQ,CAACI,aAAa,CAAC,OAAO,CAAC;IAC7CD,KAAK,CAACE,EAAE,GAAGJ,OAAO;IAClBE,KAAK,CAACG,WAAW,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiBvD,eAAK,CAACC,IAAI,CAAC,CAAC;AAC7B,4BAA4BD,eAAK,CAACG,UAAU,CAAC,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwBH,eAAK,CAACiC,OAAO,CAAC,CAAC;AACvC;AACA;AACA,wBAAwBjC,eAAK,CAACgC,SAAS,CAAC,CAAC;AACzC;AACA,KAAK;IACDiB,QAAQ,CAACO,IAAI,CAACC,WAAW,CAACL,KAAK,CAAC;EAClC;AACF;AAEA,IAAIM,UAAU,GAAG,KAAK;;AAEtB;AACA,MAAMC,KAAK,GAAG,iBAAiB;AAC/B,MAAMC,sBAAsB,GAAG,CAAC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG,gCAAgC,CAACC,IAAI,CAACC,SAAS,CAACC,SAAS,CAAC;AAE5E,SAASC,sBAAsBA,CAACC,OAAO,GAAG,EAAE,EAAE;EAC5C,OAAOA,OAAO,CAACC,GAAG,CAAEC,GAAG,KAAM;IAC3BC,IAAI,EAAED,GAAG;IACTE,KAAK,EAAEF,GAAG;IACVG,KAAK,EAAEH,GAAG;IACVI,KAAK,EAAEJ;EACT,CAAC,CAAC,CAAC;AACL;AAEA,SAASK,cAAcA,CAACC,cAAc,GAAG,EAAE,EAAEC,cAAc,EAAE;EAC3D,OAAOC,IAAI,CAACC,KAAK,CAACH,cAAc,CAACI,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAIH,cAAc,KAAK,eAAe,GAAG,GAAG,GAAG,GAAG,CAAC;AACtG;AAEA,SAASI,YAAYA,CAAC9E,IAAI,EAAE;EAC1B;EACA,MAAM+E,KAAK,GAAG/E,IAAI,CAACgF,KAAK,CAACtB,KAAK,CAAC;EAC/B;EACA,OAAOqB,KAAK,CAACE,MAAM,CAAEC,IAAI,IAAKA,IAAI,CAAC;AACrC;AAEA,SAASC,gBAAgBA,CAACC,KAAK,EAAEC,KAAK,EAAE;EACtC,MAAM;IAAEC,SAAS;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAGN,KAAK,IAAI,CAAC,CAAC;EAEjF,IAAII,MAAM,EAAE;IACV,IAAIH,KAAK,CAACM,WAAW,EAAE;MACrB,OAAOC,MAAM,CAACC,IAAI,CAACP,SAAS,IAAI,CAAC,CAAC,CAAC,CAACQ,MAAM,CAAC,CAACC,GAAG,EAAEC,WAAW,KAAK;QAC/DD,GAAG,CAACC,WAAW,CAAC,GAAGV,SAAS,GAAGU,WAAW,CAAC,EAAEC,MAAM;QAEnD,OAAOF,GAAG;MACZ,CAAC,EAAE,CAAC,CAAC,CAAC;IACR;IAEA,MAAMG,QAAQ,GAAGpB,YAAY,CAACU,MAAM,CAAC;IAErC,OAAOU,QAAQ,CAACJ,MAAM,CAAC,CAACC,GAAG,EAAEf,KAAK,KAAK;MACrC,IAAIA,KAAK,CAACmB,KAAK,CAACzC,KAAK,CAAC,EAAE;QACtB,MAAMsC,WAAW,GAAGI,IAAI,CAACC,cAAc,CAACrB,KAAK,CAAC;QAC9C,MAAMiB,MAAM,GAAGZ,KAAK,CAACiB,OAAO,CAACC,OAAO,CAAC,IAAIP,WAAW,EAAE,CAAC;QAEvD,IAAIP,SAAS,IAAI,CAACC,iBAAiB,EAAE;UACnC,MAAMc,UAAU,GAAG,QAAQ,CAACC,MAAM,CAAC,EAAE,CAAC,GAAG,qBAAqB;UAE9D,OAAO;YACL,GAAGV,GAAG;YACN,CAACC,WAAW,GAAG,yBAAyBA,WAAW,KAAKQ,UAAU,CAACC,MAAM,CAAC,CAAC,CAAC;UAC9E,CAAC;QACH;QAEA,IAAIlB,QAAQ,EAAE;UACZ,OAAO;YACL,GAAGQ,GAAG;YACN,CAACC,WAAW,GAAG,yBAAyBA,WAAW;UACrD,CAAC;QACH;QAEA,OAAO;UACL,GAAGD,GAAG;UACN,CAACC,WAAW,GAAG,yBAAyBA,WAAW,KAAMC,MAAM,IAAIA,MAAM,CAACS,KAAK,IAAK,EAAE;QACxF,CAAC;MACH;MAEA,OAAOX,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;EACR;AACF;AAEO,MAAMK,IAAI,SAASO,cAAK,CAACC,SAAS,CAAC;EAUxCC,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA,sCA8Cc,MAAM;MACjC,MAAM;QAAE5B;MAAM,CAAC,GAAG,IAAI,CAAC0B,KAAK;MAC5B,MAAM;QAAER,OAAO;QAAEX;MAAY,CAAC,GAAG,IAAI,CAACN,KAAK;MAC3C,MAAMkB,OAAO,GAAGD,OAAO,CAACC,OAAO;MAE/B,IAAI,IAAI,CAACU,IAAI,IAAI7B,KAAK,CAACG,QAAQ,IAAI,CAACI,WAAW,EAAE;QAC/CC,MAAM,CAACC,IAAI,CAACU,OAAO,CAAC,CAACW,OAAO,CAAEC,QAAQ,IAAK;UACzC,MAAMC,EAAE,GAAG,IAAI,CAACH,IAAI,CAACI,aAAa,CAAC,IAAIF,QAAQ,EAAE,CAAC;UAClD,MAAMG,OAAO,GAAG,IAAI,CAACL,IAAI,CAACI,aAAa,CAAC,IAAIF,QAAQ,OAAO,CAAC;UAE5D,IAAIC,EAAE,EAAE;YACN,IAAIG,EAAE,GAAGC,kBAAS,CAACC,YAAY,CAAC,CAAC,CAAC;YAClC,MAAMxB,MAAM,GAAGM,OAAO,CAACY,QAAQ,CAAC;YAEhCC,EAAE,CAAC9D,WAAW,GAAI2C,MAAM,IAAIA,MAAM,CAACS,KAAK,IAAK,EAAE;YAE/C,IAAItB,KAAK,CAACsC,IAAI,EAAE;cACdN,EAAE,CAACO,aAAa,CAACA,aAAa,CAACC,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC;cAC1DT,EAAE,CAACO,aAAa,CAACA,aAAa,CAACC,SAAS,CAACC,MAAM,CAAC,WAAW,CAAC;YAC9D;YAEAN,EAAE,CAACO,UAAU,CAACV,EAAE,CAAC;YAEjBE,OAAO,CAAChE,WAAW,GAAG,GAAG;UAC3B;QACF,CAAC,CAAC;MACJ;MAEA,IAAAyE,yBAAU,EAAC,IAAI,CAACd,IAAI,CAAC;IACvB,CAAC;IAAA,IAAAF,gBAAA,CAAAC,OAAA,2BAiEkB3D,EAAE,IAAK;MACxB,IAAI,CAAC2E,QAAQ,CAAC;QAAEC,iBAAiB,EAAE5E;MAAG,CAAC,CAAC;IAC1C,CAAC;IAAA,IAAA0D,gBAAA,CAAAC,OAAA,sBAEakB,IAAI,IAAK;MACrB,IAAI,CAACA,IAAI,EAAE;QACT;MACF;MAEA,MAAM;QAAEC,IAAI;QAAEzB;MAAM,CAAC,GAAGwB,IAAI;MAE5B,IAAIC,IAAI,KAAK,SAAS,IAAIA,IAAI,KAAK,QAAQ,EAAE,OAAOD,IAAI;MAExD,IAAIC,IAAI,KAAK,QAAQ,EAAE,OAAO;QAAEA,IAAI,EAAE,QAAQ;QAAE,GAAGD;MAAK,CAAC;MAEzD,IAAIxB,KAAK,KAAK,OAAO,EAAE,OAAO;QAAEyB,IAAI,EAAE;MAAQ,CAAC;MAE/C,OAAO;QAAEA,IAAI,EAAE,OAAO;QAAEzB;MAAM,CAAC;IACjC,CAAC;IAAA,IAAAK,gBAAA,CAAAC,OAAA,oBAEWoB,KAAK,IAAK;MACpB,IAAI,CAACA,KAAK,GAAGA,KAAK;IACpB,CAAC;IAAA,IAAArB,gBAAA,CAAAC,OAAA,mBAEUkB,IAAI,IAAK;MAClB,MAAMG,CAAC,GAAG,IAAI,CAACC,UAAU,CAACJ,IAAI,CAAC;MAE/B,IAAIG,CAAC,CAACF,IAAI,KAAK,OAAO,EAAE;QACtB,IAAI,CAACC,KAAK,CAACG,KAAK,CAAC,CAAC;MACpB,CAAC,MAAM,IAAIF,CAAC,CAACF,IAAI,KAAK,SAAS,EAAE;QAC/B,IAAIK,KAAK,CAACC,OAAO,CAACJ,CAAC,CAAC3B,KAAK,CAAC,EAAE;UAC1B2B,CAAC,CAAC3B,KAAK,CAACQ,OAAO,CAAEwB,EAAE,IAAK;YACtB,IAAI,CAACN,KAAK,CAACO,GAAG,CAACD,EAAE,CAAC;UACpB,CAAC,CAAC;QACJ,CAAC,MAAM;UACL,IAAI,CAACN,KAAK,CAACO,GAAG,CAACN,CAAC,CAAC3B,KAAK,CAAC;QACzB;MACF,CAAC,MAAM,IAAI2B,CAAC,CAACF,IAAI,KAAK,QAAQ,EAAE;QAC9B,IAAI,CAACC,KAAK,CAACQ,SAAS,CAACP,CAAC,CAAC3B,KAAK,CAAC;MAC/B,CAAC,MAAM;QACL,IAAI,CAAC0B,KAAK,CAAC9D,KAAK,CAAC+D,CAAC,CAAC3B,KAAK,CAAC;MAC3B;MAEA,IAAI,CAAC0B,KAAK,CAACS,KAAK,CAAC,CAAC;IACpB,CAAC;IAAA,IAAA9B,gBAAA,CAAAC,OAAA,+BAEqB,MAAM;MAC1B,MAAM;QAAE8B;MAAgB,CAAC,GAAG,IAAI,CAAChC,KAAK;MAEtC,IAAIgC,eAAe,EAAE;QACnBA,eAAe,CAAC,IAAI,CAACzD,KAAK,CAACiB,OAAO,CAAC;MACrC;IACF,CAAC;IAAA,IAAAS,gBAAA,CAAAC,OAAA,6BAEoB+B,IAAI,IAAK;MAC5B,IAAI,CAACf,QAAQ,CAAC;QAAErC,WAAW,EAAEoD;MAAK,CAAC,EAAE,IAAI,CAACC,0BAA0B,CAAC;IACvE,CAAC;IAAA,IAAAjC,gBAAA,CAAAC,OAAA,2BAEiB,CAAC5C,IAAI,EAAE6E,aAAa,KAAK;MACzC,IAAAC,sBAAW,EAAC,CAAC;MAEb,IAAI9E,IAAI,EAAE;QACR,IAAI,CAAC4D,QAAQ,CACV3C,KAAK,KAAM;UACViB,OAAO,EAAE;YACP,GAAGjB,KAAK,CAACiB,OAAO;YAChBC,OAAO,EAAE;cACP,GAAGlB,KAAK,CAACiB,OAAO,CAACC,OAAO;cACxB,CAACnC,IAAI,GAAG;gBAAEsC,KAAK,EAAEuC;cAAc;YACjC;UACF;QACF,CAAC,CAAC,EACF,IAAI,CAACE,mBACP,CAAC;MACH;IACF,CAAC;IAAA,IAAApC,gBAAA,CAAAC,OAAA,wBAEc,CAACoC,WAAW,EAAEC,MAAM,KAAK;MACtC,MAAM;QAAE9C;MAAQ,CAAC,GAAG,IAAI,CAAClB,KAAK,CAACiB,OAAO;MAEtC,IAAIV,MAAM,CAACC,IAAI,CAACU,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC1B,MAAM,EAAE;QACrC,MAAMgB,IAAI,GAAGD,MAAM,CAACC,IAAI,CAACU,OAAO,CAAC;QAEjC,OAAOV,IAAI,CAACyD,IAAI,CAAEC,CAAC,IAAK;UACtB,MAAMC,EAAE,GAAGH,MAAM,CAACE,CAAC,CAAC;UAEpB,OAAOC,EAAE,IAAIA,EAAE,CAACnG,EAAE,IAAI+F,WAAW,CAAC/F,EAAE;QACtC,CAAC,CAAC;MACJ;IACF,CAAC;IAAA,IAAA0D,gBAAA,CAAAC,OAAA,kBAESyC,CAAC,IAAK;MACd,MAAM;QAAEC,aAAa;QAAEC;MAAc,CAAC,GAAGF,CAAC,IAAI,CAAC,CAAC;MAEhD,SAASG,wBAAwBA,CAACC,OAAO,EAAEC,KAAK,GAAG,CAAC,EAAE;QACpD;QACA,IAAI,CAACD,OAAO,IAAIC,KAAK,IAAI,EAAE,EAAE,OAAO,IAAI;QAExC,MAAMC,MAAM,GAAGF,OAAO,CAACG,YAAY;QAEnC,IAAI,CAACD,MAAM,EAAE,OAAO,IAAI;QAExB,IAAIA,MAAM,CAACE,YAAY,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;UAC7C,OAAOF,MAAM;QACf;QAEA,OAAOH,wBAAwB,CAACG,MAAM,EAAED,KAAK,GAAG,CAAC,CAAC;MACpD;MAEA,SAASI,sBAAsBA,CAACL,OAAO,EAAEC,KAAK,GAAG,CAAC,EAAE;QAClD;QACA,IAAI,CAACD,OAAO,IAAIC,KAAK,IAAI,CAAC,EAAE,OAAO,IAAI;QAEvC,MAAMK,KAAK,GAAGN,OAAO,EAAEO,QAAQ,GAAG,CAAC,CAAC;QAEpC,IAAI,CAACD,KAAK,EAAE,OAAO,IAAI;QAEvB,IAAIA,KAAK,CAACE,UAAU,IAAIF,KAAK,CAACE,UAAU,CAAC,aAAa,CAAC,EAAE;UACvD,OAAOF,KAAK;QACd;QAEA,OAAOD,sBAAsB,CAACC,KAAK,EAAEL,KAAK,GAAG,CAAC,CAAC;MACjD;MAEA,MAAMQ,qBAAqB,GAAGV,wBAAwB,CAACF,aAAa,CAAC;MACrE,MAAMa,mBAAmB,GAAGD,qBAAqB,GAAGJ,sBAAsB,CAACI,qBAAqB,CAAC,GAAG,IAAI;MAExG,IAAI,CAACZ,aAAa,IAAI,CAACC,aAAa,IAAI,CAACY,mBAAmB,EAAEF,UAAU,CAAC,aAAa,CAAC,EAAE;QACvF,IAAI,CAACrC,QAAQ,CAAC;UAAEC,iBAAiB,EAAE;QAAG,CAAC,CAAC;MAC1C;IACF,CAAC;IAAA,IAAAlB,gBAAA,CAAAC,OAAA,qCAiB2B,MAAM;MAChC,MAAM;QAAE5B;MAAM,CAAC,GAAG,IAAI,CAAC0B,KAAK;MAC5B,MAAM;QAAE0D,mBAAmB;QAAEC;MAAmB,CAAC,GAAGrF,KAAK,IAAI,CAAC,CAAC;MAC/D,MAAMsF,uBAAuB,GAC3BF,mBAAmB,KAAK,IAAAG,iBAAO,EAACH,mBAAmB,CAAC,IAAI,IAAAI,kBAAQ,EAACJ,mBAAmB,CAAC,CAAC;MAExF,MAAMK,sBAAsB,gBAC1B/L,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC9D,SAAA,CAAAwL,aAAa;QAACC,gBAAgB,EAAC,sBAAsB;QAACC,MAAM,EAAER;MAAoB,CAAE,CACtF;MAED,OACEE,uBAAuB,iBACrB5L,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAACzC,oBAAoB,QAClB,CAAC8J,kBAAkB,gBAClB3L,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC9D,SAAA,CAAA2L,WAAW;QAACC,MAAM,EAAE;UAAEC,MAAM,EAAE,2BAA2B;UAAEC,OAAO,EAAE;QAA4B;MAAE,GAChGP,sBACU,CAAC,GAEdA,sBAEkB,CACvB;IAEL,CAAC;IAAA,IAAA9D,gBAAA,CAAAC,OAAA,2BAEiB,MAAM;MACtB,MAAM;QAAE5B;MAAM,CAAC,GAAG,IAAI,CAAC0B,KAAK;MAC5B,MAAM;QAAEuE,SAAS;QAAEZ;MAAmB,CAAC,GAAGrF,KAAK,IAAI,CAAC,CAAC;MACrD,MAAMkG,YAAY,gBAAGxM,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC9D,SAAA,CAAAwL,aAAa;QAACE,MAAM,EAAEK;MAAU,CAAE,CAAC;MACzD,MAAME,aAAa,GAAGF,SAAS,KAAK,IAAAV,iBAAO,EAACU,SAAS,CAAC,IAAI,IAAAT,kBAAQ,EAACS,SAAS,CAAC,CAAC;MAE9E,OACEE,aAAa,iBACXzM,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAACzC,oBAAoB,QAClB,CAAC8J,kBAAkB,gBAClB3L,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC9D,SAAA,CAAA2L,WAAW;QAACC,MAAM,EAAE;UAAEC,MAAM,EAAE,gBAAgB;UAAEC,OAAO,EAAE;QAAiB;MAAE,GAAEE,YAA0B,CAAC,GAE1GA,YAEkB,CACvB;IAEL,CAAC;IAAA,IAAAvE,gBAAA,CAAAC,OAAA,+BAEqB,MAAM;MAC1B,MAAM;QAAE5B;MAAM,CAAC,GAAG,IAAI,CAAC0B,KAAK;MAC5B,MAAM;QAAEmB,iBAAiB;QAAEtC,WAAW;QAAEW,OAAO;QAAEkF;MAAoB,CAAC,GAAG,IAAI,CAACnG,KAAK;MACnF,MAAM;QACJoG,WAAW;QACXlG,QAAQ;QACRmC,IAAI;QACJpC,SAAS;QACTZ,cAAc;QACdgH,UAAU;QACVC,QAAQ;QACRC,GAAG,EAAE;UAAEC;QAAK,CAAC,GAAG,CAAC,CAAC;QAClBpG,SAAS;QACTC;MACF,CAAC,GAAGN,KAAK,IAAI,CAAC,CAAC;MAEf,MAAM0G,aAAa,GAAG,IAAAC,iBAAO,EAACzG,SAAS,CAAC;MACxC,MAAMb,cAAc,GAAGT,sBAAsB,CAAC0H,UAAU,CAAC;MACzD,MAAMM,OAAO,GAAG7G,gBAAgB,CAACC,KAAK,EAAE,IAAI,CAACC,KAAK,CAAC,IAAI,EAAE;MACzD,MAAM4G,gBAAgB,GAAGxG,SAAS,IAAI,CAACC,iBAAiB;MAExD,oBACE5G,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAACxC,uBAAuB,qBACtB9B,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC3D,WAAA,CAAAyM,YAAY;QACX3G,QAAQ,EAAEA,QAAS;QACnBC,MAAM,EAAEJ,KAAK,CAACI;QACd;QAAA;QACAkB,KAAK,EAAE,CAAC,CAAE;QACVyF,yBAAyB,EAAG9I,EAAE,IAAK;UACjC,MAAM+I,iBAAiB,GAAGP,IAAI,KAAK,UAAU,IAAIF,QAAQ,IAAIA,QAAQ,CAACtI,EAAE,CAAC;UAEzE,MAAMgJ,QAAQ,gBACZvN,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAClB,YAAY;YACXoK,GAAG,EAAGC,QAAQ,IAAK;cACjB,IAAI,CAACA,QAAQ,GAAGA,QAAQ,IAAI,IAAI,CAACA,QAAQ;YAC3C,CAAE;YACFlI,KAAK,EAAE2H,OAAO,CAAC3I,EAAE,CAAE;YACnBmJ,gBAAgB,EAAE,IAAI,CAACC,eAAgB;YACvCC,YAAY,EAAE,IAAI,CAACA,YAAa;YAChCC,QAAQ,EAAE,IAAI,CAACA,QAAS;YACxBC,eAAe,EAAE,IAAI,CAACA,eAAgB;YACtCC,MAAM,EAAE,IAAI,CAACA;UAAO,CACrB,CACF;UAED,oBACE/N,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC5B,UAAU;YACT8K,GAAG,EAAEd,mBAAoB;YACzB/J,UAAU,EAAE,CAACqK,aAAa,IAAI,CAACM,iBAAiB,IAAI,CAACzG,WAAY;YACjEjE,QAAQ,EAAE,CAACoK,aAAa,KAAKM,iBAAiB,IAAIzG,WAAW,CAAE;YAC/DhE,gBAAgB,EAAE,CAACmK,aAAa,IAAIvG,QAAQ,IAAIkG,WAAW,IAAI,CAAC/D,IAAK;YACrE9F,mBAAmB,EAAE+D;UAAY,gBAEjC7G,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAChE,QAAA,CAAA4H,OAAO;YACNsF,GAAG,EAAGA,GAAG,IAAK,IAAI,CAACQ,aAAa,CAACR,GAAG,CAAE;YACtCS,eAAe,EAAE,CAAE;YACnBC,WAAW;YACXC,IAAI,EAAEhF,iBAAiB,KAAK,IAAI5E,EAAE,EAAG;YACrC6J,SAAS,EAAE;cACTC,MAAM,EAAE;gBACNC,SAAS,EAAE5B,mBAAmB,EAAE6B,OAAO,IAAIC,SAAS;gBACpDC,SAAS,EAAE,YAAY;gBACvBC,EAAE,EAAE;kBACFvN,eAAe,EAAE,aAAa;kBAC9BI,KAAK,EAAE,OAAO;kBACdoN,OAAO,EAAE,CAAC;kBACV,qBAAqB,EAAE;oBACrBtN,OAAO,EAAE;kBACX;gBACF,CAAC;gBACDuN,SAAS,EAAE;kBACTC,eAAe,EAAE;oBACfC,OAAO,EAAE,IAAI;oBACbC,iBAAiB,EAAE;kBACrB,CAAC;kBACDC,IAAI,EAAE;oBACJF,OAAO,EAAE;kBACX;gBACF;cACF,CAAC;cACDG,OAAO,EAAE;gBACPP,EAAE,EAAE;kBACFQ,QAAQ,EAAE,SAAS;kBACnB/N,eAAe,EAAE,aAAa;kBAC9BI,KAAK,EAAE,OAAO;kBACdkC,SAAS,EAAE,CAAC;kBACZhB,UAAU,EAAE,CAAC;kBACb0M,SAAS,EAAE;gBACb;cACF;YACF,CAAE;YACFC,KAAK,EAAEtI,MAAM,CAACC,IAAI,CAACS,OAAO,CAACC,OAAO,CAAC,CAACrC,GAAG,CACpCiD,QAAQ,IACNA,QAAQ,KAAKc,iBAAiB,IAAI,EAAEtC,WAAW,IAAIJ,QAAQ,CAAC,iBAC3DzG,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAACf,iBAAiB;cAChB,eAAa,IAAK;cAClB8B,GAAG,EAAEgD,QAAS;cACdhE,KAAK,EAAE;gBAAE9C,KAAK,EAAEmE,cAAc,CAACC,cAAc,EAAEC,cAAc;cAAE;YAAE,gBAEjE5F,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC/D,UAAA,CAAA8O,gBAAgB;cACf1J,cAAc,EAAEA,cAAe;cAC/BoH,IAAI,EAAEnH,cAAc,IAAIf,sBAAuB;cAC/CyK,OAAO,EAAE,IAAI,CAACA;YAAQ,CACvB,CACgB,CACpB,IACD,IACJ;UAAE,GAEDnC,gBAAgB,gBAAGnN,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAACZ,cAAc,QAAE6J,QAAyB,CAAC,gBAAGvN,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,cAAMiJ,QAAc,CAC/E,CACC,CAAC;QAEjB;MAAE,CACH,CACsB,CAAC;IAE9B,CAAC;IA9bC,MAAM9F,QAAO,GAAG,CAAC,CAAC;IAClB,MAAM;MAAEnB,KAAK,EAALA,MAAK;MAAEkB,OAAO,EAAPA;IAAQ,CAAC,GAAGQ,KAAK,IAAI,CAAC,CAAC;IACtC,MAAM;MAAEtB,MAAM;MAAEE,iBAAiB,EAAjBA;IAAkB,CAAC,GAAGN,MAAK,IAAI,CAAC,CAAC;IACjD,MAAM;MAAEmB,OAAO,EAAE8H;IAAe,CAAC,GAAG/H,QAAO,IAAI,CAAC,CAAC;IAEjD,IAAId,MAAM,EAAE;MACV;MACA,CAACA,MAAM,IAAI,EAAE,EAAE8I,OAAO,CAAC5K,KAAK,EAAG6K,QAAQ,IAAK;QAC1C,MAAMvI,WAAW,GAAGI,IAAI,CAACC,cAAc,CAACkI,QAAQ,CAAC;QACjD,MAAMC,wBAAwB,GAAGH,cAAc,IAAIA,cAAc,CAAC,IAAIrI,WAAW,EAAE,CAAC;QAEpFO,QAAO,CAAC,IAAIP,WAAW,EAAE,CAAC,GAAG;UAAEU,KAAK,EAAE8H,wBAAwB,EAAE9H,KAAK,IAAI;QAAG,CAAC;MAC/E,CAAC,CAAC;IACJ;IAEA,IAAI,CAACrB,KAAK,GAAG;MACXiB,OAAO,EAAE;QAAE,GAAGQ,KAAK,CAACR,OAAO;QAAEC,OAAO,EAAPA;MAAQ,CAAC;MACtC0B,iBAAiB,EAAE,EAAE;MACrBtC,WAAW,EAAED,kBAAiB,IAAI,KAAK;MACvC8F,mBAAmB,eAAE7E,cAAK,CAAC8H,SAAS,CAAC;IACvC,CAAC;EACH;EAEAC,yBAAyBA,CAAA,EAAG;IAC1B,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;MACjC,IAAIpH,EAAE,GAAGC,kBAAS,CAACC,YAAY,CAAC,CAAC,CAAC;MAElC,IAAI,CAAChE,UAAU,EAAE;QACf8D,EAAE,CAACqH,aAAa,CAAC,aAAa,EAAG1G,IAAI,KAAM;UACzC2G,UAAU,EAAE;AACtB,gDAAgD3G,IAAI;AACpD;AACA,4BAA4BA,IAAI;AAChC;AACA,mBAAmB;UACTlI,IAAI,EAAEA,CAAA,KAAM,MAAM;UAClBqE,KAAK,EAAEA,CAAA,KAAM,wBAAwB6D,IAAI;QAC3C,CAAC,CAAC,CAAC;QAEHzE,UAAU,GAAG,IAAI;MACnB;IACF;EACF;EAiCAqL,gCAAgCA,CAACC,SAAS,EAAE;IAC1C,MAAM;MAAE3J;IAAM,CAAC,GAAG,IAAI,CAAC0B,KAAK;IAC5B,MAAM;MAAE1B,KAAK,EAAE4J,SAAS,GAAG,CAAC;IAAE,CAAC,GAAGD,SAAS,IAAI,CAAC,CAAC;IACjD,MAAM;MAAEvJ,MAAM,GAAG,EAAE;MAAEoG,GAAG,GAAG,CAAC;IAAE,CAAC,GAAGxG,KAAK,IAAI,CAAC,CAAC;IAC7C,MAAM;MAAEI,MAAM,EAAEyJ,UAAU,GAAG,EAAE;MAAErD,GAAG,EAAEsD,OAAO,GAAG,CAAC,CAAC;MAAExJ,iBAAiB,EAAEyJ,qBAAqB,GAAG;IAAM,CAAC,GAAGH,SAAS;IAElH,MAAMI,cAAc,GAAIxD,GAAG,IAAKA,GAAG,IAAIA,GAAG,CAACC,IAAI,KAAK,UAAU;IAE9D,IAAI,CAACuD,cAAc,CAACxD,GAAG,CAAC,IAAI,CAACwD,cAAc,CAACF,OAAO,CAAC,EAAE;MACpD,IAAI,CAAClH,QAAQ,CAAEqH,SAAS,KAAM;QAAE,GAAGA,SAAS,CAAC/I,OAAO;QAAEX,WAAW,EAAE;MAAM,CAAC,CAAC,CAAC;IAC9E;IAEA,IAAIwJ,qBAAqB,EAAE;MACzB,IAAI,CAACnH,QAAQ,CAAC;QAAErC,WAAW,EAAE;MAAK,CAAC,CAAC;IACtC;IAEA,MAAM2J,OAAO,GAAG9J,MAAM,CAACW,KAAK,CAACzC,KAAK,CAAC;IACnC,MAAM6L,WAAW,GAAGN,UAAU,CAAC9I,KAAK,CAACzC,KAAK,CAAC;;IAE3C;IACA,IAAI,CAAC,IAAA8L,iBAAO,EAACF,OAAO,EAAEC,WAAW,CAAC,EAAE;MAClC,MAAME,UAAU,GAAG,CAAC,CAAC;MACrB,MAAMlJ,OAAO,GAAG,IAAI,CAAClB,KAAK,CAACiB,OAAO,CAACC,OAAO;MAE1C,CAACgJ,WAAW,IAAI,EAAE,EAAErI,OAAO,CAAEwI,SAAS,IAAK;QACzC,MAAM1J,WAAW,GAAGI,IAAI,CAACC,cAAc,CAACqJ,SAAS,CAAC;QAClD,MAAMlB,wBAAwB,GAAGjI,OAAO,IAAIA,OAAO,CAAC,IAAIP,WAAW,EAAE,CAAC;;QAEtE;QACAyJ,UAAU,CAAC,IAAIzJ,WAAW,EAAE,CAAC,GAAG;UAAEU,KAAK,EAAE8H,wBAAwB,EAAE9H,KAAK,IAAI;QAAG,CAAC;MAClF,CAAC,CAAC;MAEF,IAAI,CAACsB,QAAQ,CACV3C,KAAK,KAAM;QACViB,OAAO,EAAE;UACP,GAAGjB,KAAK,CAACiB,OAAO;UAChBC,OAAO,EAAEkJ;QACX;MACF,CAAC,CAAC,EACF,MAAM;QACJ,IAAI,CAAC3I,KAAK,CAACgC,eAAe,CAAC,IAAI,CAACzD,KAAK,CAACiB,OAAO,CAAC;QAC9C,IAAI,CAAC0C,0BAA0B,CAAC,CAAC;MACnC,CACF,CAAC;IACH;EACF;EAEA2G,qBAAqBA,CAACZ,SAAS,EAAEa,SAAS,EAAE;IAC1C,MAAMC,SAAS,GAAG,IAAAL,iBAAO,EAAC,IAAI,CAAC1I,KAAK,CAAC1B,KAAK,EAAE2J,SAAS,CAAC3J,KAAK,CAAC;IAC5D,MAAM0K,SAAS,GAAG,IAAAN,iBAAO,EAAC,IAAI,CAACnK,KAAK,EAAEuK,SAAS,CAAC;IAEhD,OAAO,CAACC,SAAS,IAAI,CAACC,SAAS;EACjC;EAEAC,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAAC/G,0BAA0B,CAAC,CAAC;IACjCgH,UAAU,CAAC,MAAM,IAAAjI,yBAAU,EAAC,IAAI,CAACd,IAAI,CAAC,EAAE,GAAG,CAAC;EAC9C;EAEAgJ,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACjH,0BAA0B,CAAC,CAAC;EACnC;EAsIA;EACA8D,aAAaA,CAACR,GAAG,EAAE;IACjB;IACA0D,UAAU,CAAC,MAAM;MACf,IAAI1D,GAAG,IAAI1I,SAAS,EAAE;QACpB,MAAMsM,GAAG,GAAGlN,QAAQ,CAACqE,aAAa,CAAC,kBAAkB,CAAC;QAEtD,IAAI6I,GAAG,EAAE;UACP,MAAM9I,EAAE,GAAG8I,GAAG,CAACC,UAAU;UACzB/I,EAAE,CAACgJ,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;QACnC;MACF;IACF,CAAC,EAAE,CAAC,CAAC;EACP;EAqKAC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEjL;IAAM,CAAC,GAAG,IAAI,CAAC0B,KAAK;IAC5B,MAAM;MAAEnB;IAAY,CAAC,GAAG,IAAI,CAACN,KAAK;IAClC,MAAM;MACJ2F,MAAM;MACNY,GAAG,EAAE;QAAEC,IAAI;QAAEyE;MAAK,CAAC,GAAG,CAAC,CAAC;MACxBC,aAAa;MACb9E,WAAW;MACXnG,SAAS;MACTkL,QAAQ;MACRC,QAAQ;MACRC;IACF,CAAC,GAAGtL,KAAK,IAAI,CAAC,CAAC;IACf,MAAM0G,aAAa,GAAG,IAAAC,iBAAO,EAACzG,SAAS,CAAC;IACxC,MAAMqL,uBAAuB,GAAG,CAAC7E,aAAa,IAAIL,WAAW,IAAIA,WAAW,CAACA,WAAW,KAAK,SAAS;IACtG,MAAMmF,WAAW,GAAG,CAACjL,WAAW,IAAKkG,IAAI,KAAK,MAAM,IAAIyE,IAAI,KAAK,YAAa,KAAKG,QAAQ,IAAIC,IAAI;IAEnG,oBACE5R,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAACxD,cAAc;MACb2Q,aAAa,EAAEA,aAAc;MAC7BjE,GAAG,EAAGuE,CAAC,IAAK;QACV;QACA,MAAMC,OAAO,GAAGC,iBAAQ,CAACC,WAAW,CAACH,CAAC,CAAC;QAEvC,IAAI,CAAC5J,IAAI,GAAG6J,OAAO,IAAI,IAAI,CAAC7J,IAAI;MAClC;IAAE,gBAEFnI,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAChD,aAAa,QAEXyL,IAAI,KAAK,QAAQ,iBAAI/M,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAACV,MAAM,QAAC,iCAAuC,CAAC,eAEtE5D,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAChD,aAAa,QACXuQ,uBAAuB,iBACtB7R,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAACN,YAAY;MAAC0N,QAAQ,EAAEA,QAAS;MAACzH,IAAI;MAACkI,OAAO,EAAEtL,WAAY;MAACuL,QAAQ,EAAE,IAAI,CAACC;IAAkB,CAAE,CAErF,CAAC,EAEf,IAAI,CAACC,yBAAyB,CAAC,CAAC,EAEhCpG,MAAM,iBACLlM,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC7C,eAAe,qBACdzB,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC9D,SAAA,CAAAwL,aAAa;MAACE,MAAM,EAAEA;IAAO,CAAE,CACjB,CAClB,eAEDlM,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAAC9D,SAAA,CAAA+R,QAAQ;MAACC,KAAK;IAAA,GAAE,IAAI,CAACC,mBAAmB,CAAC,CAAY,CAAC,EAEtDX,WAAW,iBAAI9R,MAAA,CAAAkI,OAAA,CAAA5D,aAAA,CAACP,IAAI;MAAC2O,SAAS,EAAC,MAAM;MAACC,uBAAuB,EAAE;QAAEC,MAAM,EAAEhB;MAAK;IAAE,CAAE,CAAC,EAEnF,IAAI,CAACiB,eAAe,CAAC,CACT,CACD,CAAC;EAErB;AACF;AAACC,OAAA,CAAAxL,IAAA,GAAAA,IAAA;AAlgBC;AAAA,IAAAW,gBAAA,CAAAC,OAAA,EADWZ,IAAI,oBAEUmI,QAAQ,IAAK,CAACA,QAAQ,IAAI,EAAE,EAAEsD,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAACA,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;AAAA,IAAA9K,gBAAA,CAAAC,OAAA,EAFrFZ,IAAI,eAII;EACjBE,OAAO,EAAEwL,kBAAS,CAACC,MAAM,CAACC,UAAU;EACpClJ,eAAe,EAAEgJ,kBAAS,CAACG,IAAI;EAC/B7M,KAAK,EAAE0M,kBAAS,CAACC,MAAM,CAACC;AAC1B,CAAC;AAAA,IAAAE,QAAA,GAAAN,OAAA,CAAA5K,OAAA,GA6fYZ,IAAI","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","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":[]}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "6.
|
|
7
|
+
"version": "6.2.0-next.0",
|
|
8
8
|
"description": "",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@emotion/react": "^11.14.0",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"@mui/material": "^7.3.4",
|
|
14
14
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
15
15
|
"@pie-lib/correct-answer-toggle": "3.2.0-next.4",
|
|
16
|
-
"@pie-lib/mask-markup": "2.2.0-next.
|
|
17
|
-
"@pie-lib/math-input": "7.2.0-next.
|
|
16
|
+
"@pie-lib/mask-markup": "2.2.0-next.17",
|
|
17
|
+
"@pie-lib/math-input": "7.2.0-next.8",
|
|
18
18
|
"@pie-lib/math-rendering": "4.2.0-next.3",
|
|
19
19
|
"@pie-lib/render-ui": "5.2.0-next.4",
|
|
20
20
|
"prop-types": "^15.8.1",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"author": "",
|
|
25
25
|
"license": "ISC",
|
|
26
|
-
"gitHead": "
|
|
26
|
+
"gitHead": "11169f258ac462817f622c5272b360009b6675ab",
|
|
27
27
|
"scripts": {
|
|
28
28
|
"postpublish": "../../scripts/postpublish"
|
|
29
29
|
},
|