@pie-element/match 11.1.2-next.4 → 11.2.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [11.2.0-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/match@11.2.0-next.0...@pie-element/match@11.2.0-next.1) (2026-03-19)
7
+
8
+ ### Features
9
+
10
+ - bump libs PD-5669, PD-5530, PD-5496,PD-5501, PD-5790, PD-5622, PD-5811, PD-5590, PD-5510 ([1c7cfc4](https://github.com/pie-framework/pie-elements/commit/1c7cfc4ea91dfd631b9e2ca23810b65a4a4585cf))
11
+
12
+ # [11.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match@11.1.2-next.4...@pie-element/match@11.2.0-next.0) (2026-03-18)
13
+
14
+ ### Features
15
+
16
+ - **match:** add scoring trace in outcome function PD-5465 ([d5406c7](https://github.com/pie-framework/pie-elements/commit/d5406c7825380da25d14e1db97036a0225bfaa4a))
17
+
6
18
  ## [11.1.2-next.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/match@11.1.2-next.3...@pie-element/match@11.1.2-next.4) (2026-03-12)
7
19
 
8
20
  ### Bug Fixes
@@ -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
+ # [9.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-configure@9.1.2-next.4...@pie-element/match-configure@9.2.0-next.0) (2026-03-19)
7
+
8
+ ### Features
9
+
10
+ - bump libs PD-5669, PD-5530, PD-5496,PD-5501, PD-5790, PD-5622, PD-5811, PD-5590, PD-5510 ([1c7cfc4](https://github.com/pie-framework/pie-elements/commit/1c7cfc4ea91dfd631b9e2ca23810b65a4a4585cf))
11
+
6
12
  ## [9.1.2-next.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-configure@9.1.2-next.3...@pie-element/match-configure@9.1.2-next.4) (2026-03-12)
7
13
 
8
14
  ### Bug Fixes
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/match-configure",
3
3
  "private": true,
4
- "version": "9.1.2-next.4",
4
+ "version": "9.2.0-next.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -13,10 +13,10 @@
13
13
  "@mui/icons-material": "^7.3.4",
14
14
  "@mui/material": "^7.3.4",
15
15
  "@pie-framework/pie-configure-events": "^1.3.0",
16
- "@pie-lib/config-ui": "12.2.0-next.17",
17
- "@pie-lib/drag": "3.2.0-next.4",
18
- "@pie-lib/editable-html-tip-tap": "1.2.0-next.16",
19
- "@pie-lib/render-ui": "5.2.0-next.4",
16
+ "@pie-lib/config-ui": "12.2.0-next.20",
17
+ "@pie-lib/drag": "3.2.0-next.6",
18
+ "@pie-lib/editable-html-tip-tap": "1.2.0-next.19",
19
+ "@pie-lib/render-ui": "5.2.0-next.6",
20
20
  "@pie-lib/test-utils": "1.2.0-next.3",
21
21
  "classnames": "^2.2.5",
22
22
  "debug": "^4.1.1",
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [9.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@9.1.1-next.1...@pie-element/match-controller@9.2.0-next.0) (2026-03-18)
7
+
8
+ ### Features
9
+
10
+ - **match:** add scoring trace in outcome function PD-5465 ([d5406c7](https://github.com/pie-framework/pie-elements/commit/d5406c7825380da25d14e1db97036a0225bfaa4a))
11
+
6
12
  ## [9.1.1-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-controller@9.1.0-next.1...@pie-element/match-controller@9.1.1-next.1) (2026-02-26)
7
13
 
8
14
  **Note:** Version bump only for package @pie-element/match-controller
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.createCorrectResponseSession = void 0;
8
8
  exports.createDefaultModel = createDefaultModel;
9
+ exports.getLogTrace = void 0;
9
10
  exports.model = model;
10
11
  exports.validate = exports.outcome = exports.normalize = void 0;
11
12
  var _lodashEs = require("lodash-es");
@@ -117,22 +118,105 @@ const getOutComeScore = (question, env, answers = {}) => {
117
118
  const isPartialScoring = _controllerUtils.partialScoring.enabled(question, env);
118
119
  return correctness === 'correct' ? 1 : correctness === 'partial' && isPartialScoring ? getPartialScore(question, answers) : 0;
119
120
  };
121
+
122
+ /**
123
+ * Generates detailed trace log for match item scoring evaluation
124
+ * @param {Object} question
125
+ * @param {Object} session
126
+ * @param {Object} env
127
+ * @returns {Array<string>} traceLog
128
+ */
129
+ const getLogTrace = (question, session, env) => {
130
+ const traceLog = [];
131
+ const answers = session?.answers || {};
132
+ const rows = question?.rows || [];
133
+ const checkboxMode = question.choiceMode === 'checkbox';
134
+ if (!answers || Object.keys(answers).length === 0) {
135
+ traceLog.push('Student did not provide any answer.');
136
+ return traceLog;
137
+ }
138
+ traceLog.push(`Match item contains ${rows.length} row(s).`);
139
+ traceLog.push(`Matching mode: ${checkboxMode ? 'checkbox (multiple matches allowed)' : 'radio (single match per row)'}.`);
140
+ let correctCount = 0;
141
+ let incorrectCount = 0;
142
+ let totalCorrect = 0;
143
+ rows.forEach(row => {
144
+ const studentAnswer = answers[row.id];
145
+ const correctValues = row.values || [];
146
+ if (checkboxMode) {
147
+ correctValues.forEach((v, idx) => {
148
+ if (v) {
149
+ totalCorrect++;
150
+ }
151
+ if (studentAnswer && studentAnswer[idx]) {
152
+ if (studentAnswer[idx] === v) {
153
+ correctCount++;
154
+ } else {
155
+ incorrectCount++;
156
+ }
157
+ }
158
+ });
159
+ } else {
160
+ totalCorrect++;
161
+ if (studentAnswer) {
162
+ if ((0, _lodashEs.isEqual)(correctValues, studentAnswer)) {
163
+ correctCount++;
164
+ } else {
165
+ incorrectCount++;
166
+ }
167
+ }
168
+ }
169
+ });
170
+ if (correctCount > 0) {
171
+ traceLog.push(`${correctCount} correct match(es) selected.`);
172
+ }
173
+ if (incorrectCount > 0) {
174
+ traceLog.push(`${incorrectCount} incorrect match(es) selected.`);
175
+ }
176
+ if (correctCount === 0 && incorrectCount === 0) {
177
+ traceLog.push('Student provided answers, but none matched the correct responses.');
178
+ }
179
+ const partialScoringEnabled = _controllerUtils.partialScoring.enabled(question, env);
180
+ if (partialScoringEnabled) {
181
+ traceLog.push('Score calculated using partial scoring.');
182
+ if (checkboxMode) {
183
+ traceLog.push('Score is based on the number of correct minus extra incorrect matches, divided by the total number of correct matches.');
184
+ if (correctCount + incorrectCount > totalCorrect) {
185
+ traceLog.push('Extra selected matches beyond the correct set reduce the score.');
186
+ }
187
+ } else {
188
+ traceLog.push('Score is based on the number of correctly matched rows divided by the total number of rows.');
189
+ }
190
+ } else {
191
+ traceLog.push('Score calculated using all-or-nothing scoring.');
192
+ traceLog.push('Student must match all rows correctly to receive full credit.');
193
+ }
194
+ const rawScore = getOutComeScore(question, env, answers);
195
+ const finalScore = partialScoringEnabled ? rawScore : rawScore === 1 ? 1 : 0;
196
+ traceLog.push(`Final score: ${finalScore}.`);
197
+ return traceLog;
198
+ };
199
+ exports.getLogTrace = getLogTrace;
120
200
  const outcome = (question, session, env) => {
121
201
  return new Promise(resolve => {
122
202
  if (env.mode !== 'evaluate') {
123
203
  resolve({
124
204
  score: undefined,
125
- completed: undefined
205
+ completed: undefined,
206
+ logTrace: []
126
207
  });
127
208
  } else {
128
209
  if (!session || (0, _lodashEs.isEmpty)(session)) {
129
210
  resolve({
130
211
  score: 0,
131
- empty: true
212
+ empty: true,
213
+ logTrace: ['Student did not provide any answer.']
132
214
  });
133
215
  }
134
216
  const out = {
135
- score: getOutComeScore(question, env, session.answers)
217
+ score: getOutComeScore(question, env, session.answers),
218
+ empty: false,
219
+ logTrace: getLogTrace(question, session, env)
136
220
  };
137
221
  resolve(out);
138
222
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_lodashEs","require","_feedback","_controllerUtils","_debug","_interopRequireDefault","_defaults","log","debug","getResponseCorrectness","model","answers","env","isPartialScoring","partialScoring","enabled","rows","checkboxMode","choiceMode","Object","keys","length","totalCorrectAnswers","getTotalCorrectAnswers","getTotalCorrect","correctAnswers","incorrectAnswers","checkboxes","getCheckboxes","getCorrectRadios","getCorrectness","question","mode","forEach","row","answer","id","values","v","i","isEqual","matchingTable","layout","noOfTotalCorrectAnswers","value","getPartialScore","totalCorrect","total","extraAnswers","score","parseFloat","toFixed","getOutComeScore","correctness","outcome","session","Promise","resolve","undefined","completed","isEmpty","empty","out","exports","createDefaultModel","defaults","normalize","updateSession","normalizedQuestion","cloneDeep","correctResponse","correctInfo","lockChoiceOrder","lockChoices","getShuffledChoices","feedback","feedbackEnabled","getFeedbackForCorrectness","extraCSSRules","promptEnabled","prompt","_","essentials","allowFeedback","shuffled","disabled","view","role","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","assign","createCorrectResponseSession","r","getInnerText","html","replaceAll","getContent","replace","validate","config","headers","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","rowsErrors","columnsErrors","errors","field","required","noOfRowsError","index","title","identicalAnswer","slice","some","hasCorrectResponse","columnsLengthError","headersContent","map","heading","shift","headerIndex","head","hasRowErrors","error","noCorrectAnswer","includes","correctResponseError","hasColumnErrors"],"sources":["../src/index.js"],"sourcesContent":["import { cloneDeep, isEmpty, isEqual } from 'lodash-es';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:match:controller');\n\nimport defaults from './defaults';\n\nconst getResponseCorrectness = (model, answers, env = {}) => {\n const isPartialScoring = partialScoring.enabled(model, env);\n const rows = model.rows;\n const checkboxMode = model.choiceMode === 'checkbox';\n\n if (!answers || Object.keys(answers).length === 0) {\n return 'unanswered';\n }\n\n const totalCorrectAnswers = checkboxMode ? getTotalCorrectAnswers(model) : getTotalCorrect(model);\n let correctAnswers;\n let incorrectAnswers = 0;\n\n if (checkboxMode) {\n const checkboxes = getCheckboxes(rows, answers);\n\n correctAnswers = checkboxes.correctAnswers;\n incorrectAnswers = checkboxes.incorrectAnswers;\n } else {\n correctAnswers = getCorrectRadios(rows, answers);\n }\n\n if (totalCorrectAnswers === correctAnswers && !incorrectAnswers) {\n return 'correct';\n } else if (correctAnswers === 0) {\n return 'incorrect';\n } else if (isPartialScoring) {\n return 'partial';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectness = (question, env, answers = {}) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\nconst getCheckboxes = (rows, answers) => {\n let correctAnswers = 0;\n let incorrectAnswers = 0;\n\n rows.forEach((row) => {\n const answer = answers[row.id];\n\n if (answer) {\n row.values.forEach((v, i) => {\n if (answer[i] && answer[i] === v) {\n correctAnswers += 1;\n } else if (answer[i] && answer[i] !== v) {\n incorrectAnswers += 1;\n }\n });\n }\n });\n\n return { correctAnswers, incorrectAnswers };\n};\n\nconst getCorrectRadios = (rows, answers) => {\n let correctAnswers = 0;\n\n rows.forEach((row) => {\n if (isEqual(row.values, answers[row.id])) {\n correctAnswers += 1;\n }\n });\n\n return correctAnswers;\n};\n\nconst getTotalCorrect = (question) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n const matchingTable = checkboxMode ? question.layout - 1 : 1;\n return (question.rows.length || 0) * matchingTable;\n};\n\nconst getTotalCorrectAnswers = (question) => {\n let noOfTotalCorrectAnswers = 0;\n\n question.rows.forEach((row) => {\n row.values.forEach((value) => {\n if (value) {\n noOfTotalCorrectAnswers += 1;\n }\n });\n });\n\n return noOfTotalCorrectAnswers;\n};\n\nconst getPartialScore = (question, answers) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n\n if (checkboxMode) {\n const { correctAnswers, incorrectAnswers } = getCheckboxes(question.rows, answers);\n const totalCorrect = getTotalCorrectAnswers(question);\n\n const total = totalCorrect === 0 ? 1 : totalCorrect;\n\n if (correctAnswers + incorrectAnswers > totalCorrect) {\n const extraAnswers = correctAnswers + incorrectAnswers - totalCorrect;\n const score = parseFloat(((correctAnswers - extraAnswers) / total).toFixed(2));\n\n return score < 0 ? 0 : score;\n } else {\n return parseFloat((correctAnswers / total).toFixed(2));\n }\n } else {\n const correctAnswers = getCorrectRadios(question.rows, answers);\n const totalCorrect = getTotalCorrect(question) === 0 ? 1 : getTotalCorrect(question);\n\n return parseFloat((correctAnswers / totalCorrect).toFixed(2));\n }\n};\n\nconst getOutComeScore = (question, env, answers = {}) => {\n const correctness = getCorrectness(question, env, answers);\n const isPartialScoring = partialScoring.enabled(question, env);\n\n return correctness === 'correct'\n ? 1\n : correctness === 'partial' && isPartialScoring\n ? getPartialScore(question, answers)\n : 0;\n};\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const out = {\n score: getOutComeScore(question, env, session.answers),\n };\n\n resolve(out);\n }\n });\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport async function model(question, session, env, updateSession) {\n const normalizedQuestion = cloneDeep(normalize(question));\n let correctness, score;\n\n if ((!session || isEmpty(session)) && env.mode === 'evaluate') {\n correctness = 'unanswered';\n score = '0%';\n } else {\n correctness = getCorrectness(normalizedQuestion, env, session && session.answers);\n score = `${getOutComeScore(normalizedQuestion, env, session && session.answers) * 100}%`;\n }\n\n const correctResponse = {};\n const correctInfo = {\n score,\n correctness,\n };\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n normalizedQuestion.rows = await getShuffledChoices(normalizedQuestion.rows, session, updateSession, 'id');\n }\n\n normalizedQuestion.rows.forEach((row) => {\n correctResponse[row.id] = row.values;\n\n if (env.mode !== 'evaluate') {\n delete row.values;\n }\n });\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? await getFeedbackForCorrectness(correctInfo.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const {\n extraCSSRules,\n feedbackEnabled,\n promptEnabled,\n prompt,\n lockChoiceOrder: _,\n ...essentials\n } = normalizedQuestion;\n const out = {\n ...essentials,\n extraCSSRules,\n allowFeedback: feedbackEnabled,\n prompt: promptEnabled ? prompt : null,\n shuffled: !lockChoiceOrder,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n if (env.mode === 'evaluate') {\n Object.assign(out, {\n correctResponse,\n correctness: correctInfo,\n });\n }\n\n log('out: ', out);\n return out;\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { rows } = question;\n const answers = {};\n\n rows.forEach((r) => {\n answers[r.id] = r.values;\n });\n\n resolve({\n answers,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { rows, choiceMode, headers } = model;\n const {\n minQuestions,\n maxQuestions,\n maxLengthQuestionsHeading,\n maxAnswers,\n maxLengthAnswers,\n maxLengthFirstColumnHeading,\n } = config;\n const rowsErrors = {};\n const columnsErrors = {};\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 if (rows.length < minQuestions) {\n errors.noOfRowsError = `There should be at least ${minQuestions} question rows.`;\n } else if (rows.length > maxQuestions) {\n errors.noOfRowsError = `No more than ${maxQuestions} question rows should be defined.`;\n }\n\n (rows || []).forEach((row, index) => {\n const { id, values = [], title } = row;\n rowsErrors[id] = '';\n\n if (maxLengthQuestionsHeading && getInnerText(title).length > maxLengthQuestionsHeading) {\n rowsErrors[id] += `Content length should be maximum ${maxLengthQuestionsHeading} characters. `;\n }\n\n if (!getContent(title)) {\n rowsErrors[id] += 'Content should not be empty. ';\n } else {\n // check for identical content with the previous answers\n const identicalAnswer = rows.slice(0, index).some((r) => getContent(r.title) === getContent(title));\n\n if (identicalAnswer) {\n rowsErrors[id] += 'Content should be unique. ';\n }\n }\n\n const hasCorrectResponse = values.some((value) => !!value);\n\n if (!hasCorrectResponse) {\n rowsErrors[id] += 'No correct response defined.';\n }\n });\n\n if (maxAnswers && headers.length - 1 > maxAnswers) {\n errors.columnsLengthError = `There should be maximum ${maxAnswers} answers.`;\n }\n\n if (maxLengthFirstColumnHeading && headers[0].length > maxLengthFirstColumnHeading) {\n columnsErrors[0] = `Content length should be maximum ${maxLengthFirstColumnHeading} characters.`;\n }\n\n const headersContent = (headers || []).map((heading) => getContent(heading));\n headersContent.shift(); // remove first column since it does not require validation\n\n headersContent.forEach((heading, index) => {\n const headerIndex = index + 1; // we need to add 1 because we removed first header from validation\n columnsErrors[headerIndex] = '';\n\n if (maxLengthAnswers && getInnerText(heading).length > maxLengthAnswers) {\n columnsErrors[headerIndex] += `Content length should be maximum ${maxLengthAnswers} characters. `;\n }\n\n if (!heading) {\n columnsErrors[headerIndex] += 'Content should not be empty.';\n } else {\n // check for identical content with the previous headers\n const identicalAnswer = headersContent.slice(0, index).some((head) => head === heading);\n\n if (identicalAnswer) {\n columnsErrors[index + 1] += 'Content should be unique.';\n }\n }\n });\n\n const hasRowErrors = Object.values(rowsErrors).some((error) => (error || '').length);\n\n if (hasRowErrors) {\n errors.rowsErrors = rowsErrors;\n\n const noCorrectAnswer = Object.values(rowsErrors).some((error) =>\n (error || '').includes('No correct response defined.'),\n );\n\n if (noCorrectAnswer) {\n errors.correctResponseError =\n choiceMode === 'radio'\n ? 'There should be a correct response defined for every row.'\n : 'There should be at least one correct response defined for every row.';\n }\n }\n\n const hasColumnErrors = Object.values(columnsErrors).some((error) => (error || '').length);\n\n if (hasColumnErrors) {\n errors.columnsErrors = columnsErrors;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_lodashEs","require","_feedback","_controllerUtils","_debug","_interopRequireDefault","_defaults","log","debug","getResponseCorrectness","model","answers","env","isPartialScoring","partialScoring","enabled","rows","checkboxMode","choiceMode","Object","keys","length","totalCorrectAnswers","getTotalCorrectAnswers","getTotalCorrect","correctAnswers","incorrectAnswers","checkboxes","getCheckboxes","getCorrectRadios","getCorrectness","question","mode","forEach","row","answer","id","values","v","i","isEqual","matchingTable","layout","noOfTotalCorrectAnswers","value","getPartialScore","totalCorrect","total","extraAnswers","score","parseFloat","toFixed","getOutComeScore","correctness","getLogTrace","session","traceLog","push","correctCount","incorrectCount","studentAnswer","correctValues","idx","partialScoringEnabled","rawScore","finalScore","exports","outcome","Promise","resolve","undefined","completed","logTrace","isEmpty","empty","out","createDefaultModel","defaults","normalize","updateSession","normalizedQuestion","cloneDeep","correctResponse","correctInfo","lockChoiceOrder","lockChoices","getShuffledChoices","feedback","feedbackEnabled","getFeedbackForCorrectness","extraCSSRules","promptEnabled","prompt","_","essentials","allowFeedback","shuffled","disabled","view","role","teacherInstructions","teacherInstructionsEnabled","rationale","rationaleEnabled","assign","createCorrectResponseSession","r","getInnerText","html","replaceAll","getContent","replace","validate","config","headers","minQuestions","maxQuestions","maxLengthQuestionsHeading","maxAnswers","maxLengthAnswers","maxLengthFirstColumnHeading","rowsErrors","columnsErrors","errors","field","required","noOfRowsError","index","title","identicalAnswer","slice","some","hasCorrectResponse","columnsLengthError","headersContent","map","heading","shift","headerIndex","head","hasRowErrors","error","noCorrectAnswer","includes","correctResponseError","hasColumnErrors"],"sources":["../src/index.js"],"sourcesContent":["import { cloneDeep, isEmpty, isEqual } from 'lodash-es';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:match:controller');\n\nimport defaults from './defaults';\n\nconst getResponseCorrectness = (model, answers, env = {}) => {\n const isPartialScoring = partialScoring.enabled(model, env);\n const rows = model.rows;\n const checkboxMode = model.choiceMode === 'checkbox';\n\n if (!answers || Object.keys(answers).length === 0) {\n return 'unanswered';\n }\n\n const totalCorrectAnswers = checkboxMode ? getTotalCorrectAnswers(model) : getTotalCorrect(model);\n let correctAnswers;\n let incorrectAnswers = 0;\n\n if (checkboxMode) {\n const checkboxes = getCheckboxes(rows, answers);\n\n correctAnswers = checkboxes.correctAnswers;\n incorrectAnswers = checkboxes.incorrectAnswers;\n } else {\n correctAnswers = getCorrectRadios(rows, answers);\n }\n\n if (totalCorrectAnswers === correctAnswers && !incorrectAnswers) {\n return 'correct';\n } else if (correctAnswers === 0) {\n return 'incorrect';\n } else if (isPartialScoring) {\n return 'partial';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectness = (question, env, answers = {}) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\nconst getCheckboxes = (rows, answers) => {\n let correctAnswers = 0;\n let incorrectAnswers = 0;\n\n rows.forEach((row) => {\n const answer = answers[row.id];\n\n if (answer) {\n row.values.forEach((v, i) => {\n if (answer[i] && answer[i] === v) {\n correctAnswers += 1;\n } else if (answer[i] && answer[i] !== v) {\n incorrectAnswers += 1;\n }\n });\n }\n });\n\n return { correctAnswers, incorrectAnswers };\n};\n\nconst getCorrectRadios = (rows, answers) => {\n let correctAnswers = 0;\n\n rows.forEach((row) => {\n if (isEqual(row.values, answers[row.id])) {\n correctAnswers += 1;\n }\n });\n\n return correctAnswers;\n};\n\nconst getTotalCorrect = (question) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n const matchingTable = checkboxMode ? question.layout - 1 : 1;\n return (question.rows.length || 0) * matchingTable;\n};\n\nconst getTotalCorrectAnswers = (question) => {\n let noOfTotalCorrectAnswers = 0;\n\n question.rows.forEach((row) => {\n row.values.forEach((value) => {\n if (value) {\n noOfTotalCorrectAnswers += 1;\n }\n });\n });\n\n return noOfTotalCorrectAnswers;\n};\n\nconst getPartialScore = (question, answers) => {\n const checkboxMode = question.choiceMode === 'checkbox';\n\n if (checkboxMode) {\n const { correctAnswers, incorrectAnswers } = getCheckboxes(question.rows, answers);\n const totalCorrect = getTotalCorrectAnswers(question);\n\n const total = totalCorrect === 0 ? 1 : totalCorrect;\n\n if (correctAnswers + incorrectAnswers > totalCorrect) {\n const extraAnswers = correctAnswers + incorrectAnswers - totalCorrect;\n const score = parseFloat(((correctAnswers - extraAnswers) / total).toFixed(2));\n\n return score < 0 ? 0 : score;\n } else {\n return parseFloat((correctAnswers / total).toFixed(2));\n }\n } else {\n const correctAnswers = getCorrectRadios(question.rows, answers);\n const totalCorrect = getTotalCorrect(question) === 0 ? 1 : getTotalCorrect(question);\n\n return parseFloat((correctAnswers / totalCorrect).toFixed(2));\n }\n};\n\nconst getOutComeScore = (question, env, answers = {}) => {\n const correctness = getCorrectness(question, env, answers);\n const isPartialScoring = partialScoring.enabled(question, env);\n\n return correctness === 'correct'\n ? 1\n : correctness === 'partial' && isPartialScoring\n ? getPartialScore(question, answers)\n : 0;\n};\n\n/**\n * Generates detailed trace log for match item 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 const answers = session?.answers || {};\n const rows = question?.rows || [];\n const checkboxMode = question.choiceMode === 'checkbox';\n\n if (!answers || Object.keys(answers).length === 0) {\n traceLog.push('Student did not provide any answer.');\n return traceLog;\n }\n\n traceLog.push(`Match item contains ${rows.length} row(s).`);\n traceLog.push(`Matching mode: ${checkboxMode ? 'checkbox (multiple matches allowed)' : 'radio (single match per row)'}.`);\n\n let correctCount = 0;\n let incorrectCount = 0;\n let totalCorrect = 0;\n\n rows.forEach((row) => {\n const studentAnswer = answers[row.id];\n const correctValues = row.values || [];\n\n if (checkboxMode) {\n correctValues.forEach((v, idx) => {\n if (v) {\n totalCorrect++;\n }\n\n if (studentAnswer && studentAnswer[idx]) {\n if (studentAnswer[idx] === v) {\n correctCount++;\n } else {\n incorrectCount++;\n }\n }\n });\n } else {\n totalCorrect++;\n if (studentAnswer) {\n if (isEqual(correctValues, studentAnswer)) {\n correctCount++;\n } else {\n incorrectCount++;\n }\n }\n }\n });\n\n if (correctCount > 0) {\n traceLog.push(`${correctCount} correct match(es) selected.`);\n }\n\n if (incorrectCount > 0) {\n traceLog.push(`${incorrectCount} incorrect match(es) selected.`);\n }\n\n if (correctCount === 0 && incorrectCount === 0) {\n traceLog.push('Student provided answers, but none matched the correct responses.');\n }\n\n const partialScoringEnabled = partialScoring.enabled(question, env);\n\n if (partialScoringEnabled) {\n traceLog.push('Score calculated using partial scoring.');\n\n if (checkboxMode) {\n traceLog.push(\n 'Score is based on the number of correct minus extra incorrect matches, divided by the total number of correct matches.',\n );\n\n if (correctCount + incorrectCount > totalCorrect) {\n traceLog.push('Extra selected matches beyond the correct set reduce the score.');\n }\n } else {\n traceLog.push(\n 'Score is based on the number of correctly matched rows divided by the total number of rows.',\n );\n }\n } else {\n traceLog.push('Score calculated using all-or-nothing scoring.');\n traceLog.push('Student must match all rows correctly to receive full credit.');\n }\n\n const rawScore = getOutComeScore(question, env, answers);\n const finalScore = partialScoringEnabled ? rawScore : rawScore === 1 ? 1 : 0;\n\n traceLog.push(`Final score: ${finalScore}.`);\n\n return traceLog;\n};\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined, logTrace: [] });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true, logTrace: ['Student did not provide any answer.'] });\n }\n\n const out = {\n score: getOutComeScore(question, env, session.answers),\n empty: false,\n logTrace: getLogTrace(question, session, env),\n };\n\n resolve(out);\n }\n });\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport async function model(question, session, env, updateSession) {\n const normalizedQuestion = cloneDeep(normalize(question));\n let correctness, score;\n\n if ((!session || isEmpty(session)) && env.mode === 'evaluate') {\n correctness = 'unanswered';\n score = '0%';\n } else {\n correctness = getCorrectness(normalizedQuestion, env, session && session.answers);\n score = `${getOutComeScore(normalizedQuestion, env, session && session.answers) * 100}%`;\n }\n\n const correctResponse = {};\n const correctInfo = {\n score,\n correctness,\n };\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n normalizedQuestion.rows = await getShuffledChoices(normalizedQuestion.rows, session, updateSession, 'id');\n }\n\n normalizedQuestion.rows.forEach((row) => {\n correctResponse[row.id] = row.values;\n\n if (env.mode !== 'evaluate') {\n delete row.values;\n }\n });\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? await getFeedbackForCorrectness(correctInfo.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const {\n extraCSSRules,\n feedbackEnabled,\n promptEnabled,\n prompt,\n lockChoiceOrder: _,\n ...essentials\n } = normalizedQuestion;\n const out = {\n ...essentials,\n extraCSSRules,\n allowFeedback: feedbackEnabled,\n prompt: promptEnabled ? prompt : null,\n shuffled: !lockChoiceOrder,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n if (env.mode === 'evaluate') {\n Object.assign(out, {\n correctResponse,\n correctness: correctInfo,\n });\n }\n\n log('out: ', out);\n return out;\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { rows } = question;\n const answers = {};\n\n rows.forEach((r) => {\n answers[r.id] = r.values;\n });\n\n resolve({\n answers,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { rows, choiceMode, headers } = model;\n const {\n minQuestions,\n maxQuestions,\n maxLengthQuestionsHeading,\n maxAnswers,\n maxLengthAnswers,\n maxLengthFirstColumnHeading,\n } = config;\n const rowsErrors = {};\n const columnsErrors = {};\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 if (rows.length < minQuestions) {\n errors.noOfRowsError = `There should be at least ${minQuestions} question rows.`;\n } else if (rows.length > maxQuestions) {\n errors.noOfRowsError = `No more than ${maxQuestions} question rows should be defined.`;\n }\n\n (rows || []).forEach((row, index) => {\n const { id, values = [], title } = row;\n rowsErrors[id] = '';\n\n if (maxLengthQuestionsHeading && getInnerText(title).length > maxLengthQuestionsHeading) {\n rowsErrors[id] += `Content length should be maximum ${maxLengthQuestionsHeading} characters. `;\n }\n\n if (!getContent(title)) {\n rowsErrors[id] += 'Content should not be empty. ';\n } else {\n // check for identical content with the previous answers\n const identicalAnswer = rows.slice(0, index).some((r) => getContent(r.title) === getContent(title));\n\n if (identicalAnswer) {\n rowsErrors[id] += 'Content should be unique. ';\n }\n }\n\n const hasCorrectResponse = values.some((value) => !!value);\n\n if (!hasCorrectResponse) {\n rowsErrors[id] += 'No correct response defined.';\n }\n });\n\n if (maxAnswers && headers.length - 1 > maxAnswers) {\n errors.columnsLengthError = `There should be maximum ${maxAnswers} answers.`;\n }\n\n if (maxLengthFirstColumnHeading && headers[0].length > maxLengthFirstColumnHeading) {\n columnsErrors[0] = `Content length should be maximum ${maxLengthFirstColumnHeading} characters.`;\n }\n\n const headersContent = (headers || []).map((heading) => getContent(heading));\n headersContent.shift(); // remove first column since it does not require validation\n\n headersContent.forEach((heading, index) => {\n const headerIndex = index + 1; // we need to add 1 because we removed first header from validation\n columnsErrors[headerIndex] = '';\n\n if (maxLengthAnswers && getInnerText(heading).length > maxLengthAnswers) {\n columnsErrors[headerIndex] += `Content length should be maximum ${maxLengthAnswers} characters. `;\n }\n\n if (!heading) {\n columnsErrors[headerIndex] += 'Content should not be empty.';\n } else {\n // check for identical content with the previous headers\n const identicalAnswer = headersContent.slice(0, index).some((head) => head === heading);\n\n if (identicalAnswer) {\n columnsErrors[index + 1] += 'Content should be unique.';\n }\n }\n });\n\n const hasRowErrors = Object.values(rowsErrors).some((error) => (error || '').length);\n\n if (hasRowErrors) {\n errors.rowsErrors = rowsErrors;\n\n const noCorrectAnswer = Object.values(rowsErrors).some((error) =>\n (error || '').includes('No correct response defined.'),\n );\n\n if (noCorrectAnswer) {\n errors.correctResponseError =\n choiceMode === 'radio'\n ? 'There should be a correct response defined for every row.'\n : 'There should be at least one correct response defined for every row.';\n }\n }\n\n const hasColumnErrors = Object.values(columnsErrors).some((error) => (error || '').length);\n\n if (hasColumnErrors) {\n errors.columnsErrors = columnsErrors;\n }\n\n return errors;\n};\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAIA,IAAAK,SAAA,GAAAD,sBAAA,CAAAJ,OAAA;AAFA,MAAMM,GAAG,GAAG,IAAAC,cAAK,EAAC,+BAA+B,CAAC;AAIlD,MAAMC,sBAAsB,GAAGA,CAACC,KAAK,EAAEC,OAAO,EAAEC,GAAG,GAAG,CAAC,CAAC,KAAK;EAC3D,MAAMC,gBAAgB,GAAGC,+BAAc,CAACC,OAAO,CAACL,KAAK,EAAEE,GAAG,CAAC;EAC3D,MAAMI,IAAI,GAAGN,KAAK,CAACM,IAAI;EACvB,MAAMC,YAAY,GAAGP,KAAK,CAACQ,UAAU,KAAK,UAAU;EAEpD,IAAI,CAACP,OAAO,IAAIQ,MAAM,CAACC,IAAI,CAACT,OAAO,CAAC,CAACU,MAAM,KAAK,CAAC,EAAE;IACjD,OAAO,YAAY;EACrB;EAEA,MAAMC,mBAAmB,GAAGL,YAAY,GAAGM,sBAAsB,CAACb,KAAK,CAAC,GAAGc,eAAe,CAACd,KAAK,CAAC;EACjG,IAAIe,cAAc;EAClB,IAAIC,gBAAgB,GAAG,CAAC;EAExB,IAAIT,YAAY,EAAE;IAChB,MAAMU,UAAU,GAAGC,aAAa,CAACZ,IAAI,EAAEL,OAAO,CAAC;IAE/Cc,cAAc,GAAGE,UAAU,CAACF,cAAc;IAC1CC,gBAAgB,GAAGC,UAAU,CAACD,gBAAgB;EAChD,CAAC,MAAM;IACLD,cAAc,GAAGI,gBAAgB,CAACb,IAAI,EAAEL,OAAO,CAAC;EAClD;EAEA,IAAIW,mBAAmB,KAAKG,cAAc,IAAI,CAACC,gBAAgB,EAAE;IAC/D,OAAO,SAAS;EAClB,CAAC,MAAM,IAAID,cAAc,KAAK,CAAC,EAAE;IAC/B,OAAO,WAAW;EACpB,CAAC,MAAM,IAAIZ,gBAAgB,EAAE;IAC3B,OAAO,SAAS;EAClB;EAEA,OAAO,WAAW;AACpB,CAAC;AAED,MAAMiB,cAAc,GAAGA,CAACC,QAAQ,EAAEnB,GAAG,EAAED,OAAO,GAAG,CAAC,CAAC,KAAK;EACtD,IAAIC,GAAG,CAACoB,IAAI,KAAK,UAAU,EAAE;IAC3B,OAAOvB,sBAAsB,CAACsB,QAAQ,EAAEpB,OAAO,EAAEC,GAAG,CAAC;EACvD;AACF,CAAC;AAED,MAAMgB,aAAa,GAAGA,CAACZ,IAAI,EAAEL,OAAO,KAAK;EACvC,IAAIc,cAAc,GAAG,CAAC;EACtB,IAAIC,gBAAgB,GAAG,CAAC;EAExBV,IAAI,CAACiB,OAAO,CAAEC,GAAG,IAAK;IACpB,MAAMC,MAAM,GAAGxB,OAAO,CAACuB,GAAG,CAACE,EAAE,CAAC;IAE9B,IAAID,MAAM,EAAE;MACVD,GAAG,CAACG,MAAM,CAACJ,OAAO,CAAC,CAACK,CAAC,EAAEC,CAAC,KAAK;QAC3B,IAAIJ,MAAM,CAACI,CAAC,CAAC,IAAIJ,MAAM,CAACI,CAAC,CAAC,KAAKD,CAAC,EAAE;UAChCb,cAAc,IAAI,CAAC;QACrB,CAAC,MAAM,IAAIU,MAAM,CAACI,CAAC,CAAC,IAAIJ,MAAM,CAACI,CAAC,CAAC,KAAKD,CAAC,EAAE;UACvCZ,gBAAgB,IAAI,CAAC;QACvB;MACF,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;EAEF,OAAO;IAAED,cAAc;IAAEC;EAAiB,CAAC;AAC7C,CAAC;AAED,MAAMG,gBAAgB,GAAGA,CAACb,IAAI,EAAEL,OAAO,KAAK;EAC1C,IAAIc,cAAc,GAAG,CAAC;EAEtBT,IAAI,CAACiB,OAAO,CAAEC,GAAG,IAAK;IACpB,IAAI,IAAAM,iBAAO,EAACN,GAAG,CAACG,MAAM,EAAE1B,OAAO,CAACuB,GAAG,CAACE,EAAE,CAAC,CAAC,EAAE;MACxCX,cAAc,IAAI,CAAC;IACrB;EACF,CAAC,CAAC;EAEF,OAAOA,cAAc;AACvB,CAAC;AAED,MAAMD,eAAe,GAAIO,QAAQ,IAAK;EACpC,MAAMd,YAAY,GAAGc,QAAQ,CAACb,UAAU,KAAK,UAAU;EACvD,MAAMuB,aAAa,GAAGxB,YAAY,GAAGc,QAAQ,CAACW,MAAM,GAAG,CAAC,GAAG,CAAC;EAC5D,OAAO,CAACX,QAAQ,CAACf,IAAI,CAACK,MAAM,IAAI,CAAC,IAAIoB,aAAa;AACpD,CAAC;AAED,MAAMlB,sBAAsB,GAAIQ,QAAQ,IAAK;EAC3C,IAAIY,uBAAuB,GAAG,CAAC;EAE/BZ,QAAQ,CAACf,IAAI,CAACiB,OAAO,CAAEC,GAAG,IAAK;IAC7BA,GAAG,CAACG,MAAM,CAACJ,OAAO,CAAEW,KAAK,IAAK;MAC5B,IAAIA,KAAK,EAAE;QACTD,uBAAuB,IAAI,CAAC;MAC9B;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAOA,uBAAuB;AAChC,CAAC;AAED,MAAME,eAAe,GAAGA,CAACd,QAAQ,EAAEpB,OAAO,KAAK;EAC7C,MAAMM,YAAY,GAAGc,QAAQ,CAACb,UAAU,KAAK,UAAU;EAEvD,IAAID,YAAY,EAAE;IAChB,MAAM;MAAEQ,cAAc;MAAEC;IAAiB,CAAC,GAAGE,aAAa,CAACG,QAAQ,CAACf,IAAI,EAAEL,OAAO,CAAC;IAClF,MAAMmC,YAAY,GAAGvB,sBAAsB,CAACQ,QAAQ,CAAC;IAErD,MAAMgB,KAAK,GAAGD,YAAY,KAAK,CAAC,GAAG,CAAC,GAAGA,YAAY;IAEnD,IAAIrB,cAAc,GAAGC,gBAAgB,GAAGoB,YAAY,EAAE;MACpD,MAAME,YAAY,GAAGvB,cAAc,GAAGC,gBAAgB,GAAGoB,YAAY;MACrE,MAAMG,KAAK,GAAGC,UAAU,CAAC,CAAC,CAACzB,cAAc,GAAGuB,YAAY,IAAID,KAAK,EAAEI,OAAO,CAAC,CAAC,CAAC,CAAC;MAE9E,OAAOF,KAAK,GAAG,CAAC,GAAG,CAAC,GAAGA,KAAK;IAC9B,CAAC,MAAM;MACL,OAAOC,UAAU,CAAC,CAACzB,cAAc,GAAGsB,KAAK,EAAEI,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD;EACF,CAAC,MAAM;IACL,MAAM1B,cAAc,GAAGI,gBAAgB,CAACE,QAAQ,CAACf,IAAI,EAAEL,OAAO,CAAC;IAC/D,MAAMmC,YAAY,GAAGtB,eAAe,CAACO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAGP,eAAe,CAACO,QAAQ,CAAC;IAEpF,OAAOmB,UAAU,CAAC,CAACzB,cAAc,GAAGqB,YAAY,EAAEK,OAAO,CAAC,CAAC,CAAC,CAAC;EAC/D;AACF,CAAC;AAED,MAAMC,eAAe,GAAGA,CAACrB,QAAQ,EAAEnB,GAAG,EAAED,OAAO,GAAG,CAAC,CAAC,KAAK;EACvD,MAAM0C,WAAW,GAAGvB,cAAc,CAACC,QAAQ,EAAEnB,GAAG,EAAED,OAAO,CAAC;EAC1D,MAAME,gBAAgB,GAAGC,+BAAc,CAACC,OAAO,CAACgB,QAAQ,EAAEnB,GAAG,CAAC;EAE9D,OAAOyC,WAAW,KAAK,SAAS,GAC5B,CAAC,GACDA,WAAW,KAAK,SAAS,IAAIxC,gBAAgB,GAC3CgC,eAAe,CAACd,QAAQ,EAAEpB,OAAO,CAAC,GAClC,CAAC;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM2C,WAAW,GAAGA,CAACvB,QAAQ,EAAEwB,OAAO,EAAE3C,GAAG,KAAK;EACrD,MAAM4C,QAAQ,GAAG,EAAE;EAEnB,MAAM7C,OAAO,GAAG4C,OAAO,EAAE5C,OAAO,IAAI,CAAC,CAAC;EACtC,MAAMK,IAAI,GAAGe,QAAQ,EAAEf,IAAI,IAAI,EAAE;EACjC,MAAMC,YAAY,GAAGc,QAAQ,CAACb,UAAU,KAAK,UAAU;EAEvD,IAAI,CAACP,OAAO,IAAIQ,MAAM,CAACC,IAAI,CAACT,OAAO,CAAC,CAACU,MAAM,KAAK,CAAC,EAAE;IACjDmC,QAAQ,CAACC,IAAI,CAAC,qCAAqC,CAAC;IACpD,OAAOD,QAAQ;EACjB;EAEAA,QAAQ,CAACC,IAAI,CAAC,uBAAuBzC,IAAI,CAACK,MAAM,UAAU,CAAC;EAC3DmC,QAAQ,CAACC,IAAI,CAAC,kBAAkBxC,YAAY,GAAG,qCAAqC,GAAG,8BAA8B,GAAG,CAAC;EAEzH,IAAIyC,YAAY,GAAG,CAAC;EACpB,IAAIC,cAAc,GAAG,CAAC;EACtB,IAAIb,YAAY,GAAG,CAAC;EAEpB9B,IAAI,CAACiB,OAAO,CAAEC,GAAG,IAAK;IACpB,MAAM0B,aAAa,GAAGjD,OAAO,CAACuB,GAAG,CAACE,EAAE,CAAC;IACrC,MAAMyB,aAAa,GAAG3B,GAAG,CAACG,MAAM,IAAI,EAAE;IAEtC,IAAIpB,YAAY,EAAE;MAChB4C,aAAa,CAAC5B,OAAO,CAAC,CAACK,CAAC,EAAEwB,GAAG,KAAK;QAChC,IAAIxB,CAAC,EAAE;UACLQ,YAAY,EAAE;QAChB;QAEA,IAAIc,aAAa,IAAIA,aAAa,CAACE,GAAG,CAAC,EAAE;UACvC,IAAIF,aAAa,CAACE,GAAG,CAAC,KAAKxB,CAAC,EAAE;YAC5BoB,YAAY,EAAE;UAChB,CAAC,MAAM;YACLC,cAAc,EAAE;UAClB;QACF;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACLb,YAAY,EAAE;MACd,IAAIc,aAAa,EAAE;QACjB,IAAI,IAAApB,iBAAO,EAACqB,aAAa,EAAED,aAAa,CAAC,EAAE;UACzCF,YAAY,EAAE;QAChB,CAAC,MAAM;UACLC,cAAc,EAAE;QAClB;MACF;IACF;EACF,CAAC,CAAC;EAEF,IAAID,YAAY,GAAG,CAAC,EAAE;IACpBF,QAAQ,CAACC,IAAI,CAAC,GAAGC,YAAY,8BAA8B,CAAC;EAC9D;EAEA,IAAIC,cAAc,GAAG,CAAC,EAAE;IACtBH,QAAQ,CAACC,IAAI,CAAC,GAAGE,cAAc,gCAAgC,CAAC;EAClE;EAEA,IAAID,YAAY,KAAK,CAAC,IAAIC,cAAc,KAAK,CAAC,EAAE;IAC9CH,QAAQ,CAACC,IAAI,CAAC,mEAAmE,CAAC;EACpF;EAEA,MAAMM,qBAAqB,GAAGjD,+BAAc,CAACC,OAAO,CAACgB,QAAQ,EAAEnB,GAAG,CAAC;EAEnE,IAAImD,qBAAqB,EAAE;IACzBP,QAAQ,CAACC,IAAI,CAAC,yCAAyC,CAAC;IAExD,IAAIxC,YAAY,EAAE;MAChBuC,QAAQ,CAACC,IAAI,CACX,wHACF,CAAC;MAED,IAAIC,YAAY,GAAGC,cAAc,GAAGb,YAAY,EAAE;QAChDU,QAAQ,CAACC,IAAI,CAAC,iEAAiE,CAAC;MAClF;IACF,CAAC,MAAM;MACLD,QAAQ,CAACC,IAAI,CACX,6FACF,CAAC;IACH;EACF,CAAC,MAAM;IACLD,QAAQ,CAACC,IAAI,CAAC,gDAAgD,CAAC;IAC/DD,QAAQ,CAACC,IAAI,CAAC,+DAA+D,CAAC;EAChF;EAEA,MAAMO,QAAQ,GAAGZ,eAAe,CAACrB,QAAQ,EAAEnB,GAAG,EAAED,OAAO,CAAC;EACxD,MAAMsD,UAAU,GAAGF,qBAAqB,GAAGC,QAAQ,GAAGA,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;EAE5ER,QAAQ,CAACC,IAAI,CAAC,gBAAgBQ,UAAU,GAAG,CAAC;EAE5C,OAAOT,QAAQ;AACjB,CAAC;AAACU,OAAA,CAAAZ,WAAA,GAAAA,WAAA;AAEK,MAAMa,OAAO,GAAGA,CAACpC,QAAQ,EAAEwB,OAAO,EAAE3C,GAAG,KAAK;EACjD,OAAO,IAAIwD,OAAO,CAAEC,OAAO,IAAK;IAC9B,IAAIzD,GAAG,CAACoB,IAAI,KAAK,UAAU,EAAE;MAC3BqC,OAAO,CAAC;QAAEpB,KAAK,EAAEqB,SAAS;QAAEC,SAAS,EAAED,SAAS;QAAEE,QAAQ,EAAE;MAAG,CAAC,CAAC;IACnE,CAAC,MAAM;MACL,IAAI,CAACjB,OAAO,IAAI,IAAAkB,iBAAO,EAAClB,OAAO,CAAC,EAAE;QAChCc,OAAO,CAAC;UAAEpB,KAAK,EAAE,CAAC;UAAEyB,KAAK,EAAE,IAAI;UAAEF,QAAQ,EAAE,CAAC,qCAAqC;QAAE,CAAC,CAAC;MACvF;MAEA,MAAMG,GAAG,GAAG;QACV1B,KAAK,EAAEG,eAAe,CAACrB,QAAQ,EAAEnB,GAAG,EAAE2C,OAAO,CAAC5C,OAAO,CAAC;QACtD+D,KAAK,EAAE,KAAK;QACZF,QAAQ,EAAElB,WAAW,CAACvB,QAAQ,EAAEwB,OAAO,EAAE3C,GAAG;MAC9C,CAAC;MAEDyD,OAAO,CAACM,GAAG,CAAC;IACd;EACF,CAAC,CAAC;AACJ,CAAC;AAACT,OAAA,CAAAC,OAAA,GAAAA,OAAA;AAEK,SAASS,kBAAkBA,CAAClE,KAAK,GAAG,CAAC,CAAC,EAAE;EAC7C,OAAO,IAAI0D,OAAO,CAAEC,OAAO,IAAK;IAC9BA,OAAO,CAAC;MACN,GAAGQ,iBAAQ;MACX,GAAGnE;IACL,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEO,MAAMoE,SAAS,GAAI/C,QAAQ,KAAM;EAAE,GAAG8C,iBAAQ;EAAE,GAAG9C;AAAS,CAAC,CAAC;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AANAmC,OAAA,CAAAY,SAAA,GAAAA,SAAA;AAOO,eAAepE,KAAKA,CAACqB,QAAQ,EAAEwB,OAAO,EAAE3C,GAAG,EAAEmE,aAAa,EAAE;EACjE,MAAMC,kBAAkB,GAAG,IAAAC,mBAAS,EAACH,SAAS,CAAC/C,QAAQ,CAAC,CAAC;EACzD,IAAIsB,WAAW,EAAEJ,KAAK;EAEtB,IAAI,CAAC,CAACM,OAAO,IAAI,IAAAkB,iBAAO,EAAClB,OAAO,CAAC,KAAK3C,GAAG,CAACoB,IAAI,KAAK,UAAU,EAAE;IAC7DqB,WAAW,GAAG,YAAY;IAC1BJ,KAAK,GAAG,IAAI;EACd,CAAC,MAAM;IACLI,WAAW,GAAGvB,cAAc,CAACkD,kBAAkB,EAAEpE,GAAG,EAAE2C,OAAO,IAAIA,OAAO,CAAC5C,OAAO,CAAC;IACjFsC,KAAK,GAAG,GAAGG,eAAe,CAAC4B,kBAAkB,EAAEpE,GAAG,EAAE2C,OAAO,IAAIA,OAAO,CAAC5C,OAAO,CAAC,GAAG,GAAG,GAAG;EAC1F;EAEA,MAAMuE,eAAe,GAAG,CAAC,CAAC;EAC1B,MAAMC,WAAW,GAAG;IAClBlC,KAAK;IACLI;EACF,CAAC;EAED,MAAM+B,eAAe,GAAG,IAAAC,4BAAW,EAACL,kBAAkB,EAAEzB,OAAO,EAAE3C,GAAG,CAAC;EAErE,IAAI,CAACwE,eAAe,EAAE;IACpBJ,kBAAkB,CAAChE,IAAI,GAAG,MAAM,IAAAsE,mCAAkB,EAACN,kBAAkB,CAAChE,IAAI,EAAEuC,OAAO,EAAEwB,aAAa,EAAE,IAAI,CAAC;EAC3G;EAEAC,kBAAkB,CAAChE,IAAI,CAACiB,OAAO,CAAEC,GAAG,IAAK;IACvCgD,eAAe,CAAChD,GAAG,CAACE,EAAE,CAAC,GAAGF,GAAG,CAACG,MAAM;IAEpC,IAAIzB,GAAG,CAACoB,IAAI,KAAK,UAAU,EAAE;MAC3B,OAAOE,GAAG,CAACG,MAAM;IACnB;EACF,CAAC,CAAC;EAEF,MAAMkD,QAAQ,GACZ3E,GAAG,CAACoB,IAAI,KAAK,UAAU,IAAIgD,kBAAkB,CAACQ,eAAe,GACzD,MAAM,IAAAC,mCAAyB,EAACN,WAAW,CAAC9B,WAAW,EAAE2B,kBAAkB,CAACO,QAAQ,CAAC,GACrFjB,SAAS;EAEf,MAAM;IACJoB,aAAa;IACbF,eAAe;IACfG,aAAa;IACbC,MAAM;IACNR,eAAe,EAAES,CAAC;IAClB,GAAGC;EACL,CAAC,GAAGd,kBAAkB;EACtB,MAAML,GAAG,GAAG;IACV,GAAGmB,UAAU;IACbJ,aAAa;IACbK,aAAa,EAAEP,eAAe;IAC9BI,MAAM,EAAED,aAAa,GAAGC,MAAM,GAAG,IAAI;IACrCI,QAAQ,EAAE,CAACZ,eAAe;IAC1BG,QAAQ;IACRU,QAAQ,EAAErF,GAAG,CAACoB,IAAI,KAAK,QAAQ;IAC/BkE,IAAI,EAAEtF,GAAG,CAACoB,IAAI,KAAK;EACrB,CAAC;EAED,IAAIpB,GAAG,CAACuF,IAAI,KAAK,YAAY,KAAKvF,GAAG,CAACoB,IAAI,KAAK,MAAM,IAAIpB,GAAG,CAACoB,IAAI,KAAK,UAAU,CAAC,EAAE;IACjF2C,GAAG,CAACyB,mBAAmB,GAAGpB,kBAAkB,CAACqB,0BAA0B,GACnErB,kBAAkB,CAACoB,mBAAmB,GACtC,IAAI;IACRzB,GAAG,CAAC2B,SAAS,GAAGtB,kBAAkB,CAACuB,gBAAgB,GAAGvB,kBAAkB,CAACsB,SAAS,GAAG,IAAI;EAC3F,CAAC,MAAM;IACL3B,GAAG,CAAC2B,SAAS,GAAG,IAAI;IACpB3B,GAAG,CAACyB,mBAAmB,GAAG,IAAI;EAChC;EAEA,IAAIxF,GAAG,CAACoB,IAAI,KAAK,UAAU,EAAE;IAC3Bb,MAAM,CAACqF,MAAM,CAAC7B,GAAG,EAAE;MACjBO,eAAe;MACf7B,WAAW,EAAE8B;IACf,CAAC,CAAC;EACJ;EAEA5E,GAAG,CAAC,OAAO,EAAEoE,GAAG,CAAC;EACjB,OAAOA,GAAG;AACZ;AAEO,MAAM8B,4BAA4B,GAAGA,CAAC1E,QAAQ,EAAEnB,GAAG,KAAK;EAC7D,OAAO,IAAIwD,OAAO,CAAEC,OAAO,IAAK;IAC9B,IAAIzD,GAAG,CAACoB,IAAI,KAAK,UAAU,IAAIpB,GAAG,CAACuF,IAAI,KAAK,YAAY,EAAE;MACxD,MAAM;QAAEnF;MAAK,CAAC,GAAGe,QAAQ;MACzB,MAAMpB,OAAO,GAAG,CAAC,CAAC;MAElBK,IAAI,CAACiB,OAAO,CAAEyE,CAAC,IAAK;QAClB/F,OAAO,CAAC+F,CAAC,CAACtE,EAAE,CAAC,GAAGsE,CAAC,CAACrE,MAAM;MAC1B,CAAC,CAAC;MAEFgC,OAAO,CAAC;QACN1D,OAAO;QACPyB,EAAE,EAAE;MACN,CAAC,CAAC;IACJ,CAAC,MAAM;MACLiC,OAAO,CAAC,IAAI,CAAC;IACf;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AAAAH,OAAA,CAAAuC,4BAAA,GAAAA,4BAAA;AACA,MAAME,YAAY,GAAIC,IAAI,IAAK,CAACA,IAAI,IAAI,EAAE,EAAEC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;;AAEtE;AACA,MAAMC,UAAU,GAAIF,IAAI,IAAK,CAACA,IAAI,IAAI,EAAE,EAAEG,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC;AAEpF,MAAMC,QAAQ,GAAGA,CAACtG,KAAK,GAAG,CAAC,CAAC,EAAEuG,MAAM,GAAG,CAAC,CAAC,KAAK;EACnD,MAAM;IAAEjG,IAAI;IAAEE,UAAU;IAAEgG;EAAQ,CAAC,GAAGxG,KAAK;EAC3C,MAAM;IACJyG,YAAY;IACZC,YAAY;IACZC,yBAAyB;IACzBC,UAAU;IACVC,gBAAgB;IAChBC;EACF,CAAC,GAAGP,MAAM;EACV,MAAMQ,UAAU,GAAG,CAAC,CAAC;EACrB,MAAMC,aAAa,GAAG,CAAC,CAAC;EACxB,MAAMC,MAAM,GAAG,CAAC,CAAC;EAEjB,CAAC,qBAAqB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC1F,OAAO,CAAE2F,KAAK,IAAK;IAChE,IAAIX,MAAM,CAACW,KAAK,CAAC,EAAEC,QAAQ,IAAI,CAACf,UAAU,CAACpG,KAAK,CAACkH,KAAK,CAAC,CAAC,EAAE;MACxDD,MAAM,CAACC,KAAK,CAAC,GAAG,yBAAyB;IAC3C;EACF,CAAC,CAAC;EAEF,IAAI5G,IAAI,CAACK,MAAM,GAAG8F,YAAY,EAAE;IAC9BQ,MAAM,CAACG,aAAa,GAAG,4BAA4BX,YAAY,iBAAiB;EAClF,CAAC,MAAM,IAAInG,IAAI,CAACK,MAAM,GAAG+F,YAAY,EAAE;IACrCO,MAAM,CAACG,aAAa,GAAG,gBAAgBV,YAAY,mCAAmC;EACxF;EAEA,CAACpG,IAAI,IAAI,EAAE,EAAEiB,OAAO,CAAC,CAACC,GAAG,EAAE6F,KAAK,KAAK;IACnC,MAAM;MAAE3F,EAAE;MAAEC,MAAM,GAAG,EAAE;MAAE2F;IAAM,CAAC,GAAG9F,GAAG;IACtCuF,UAAU,CAACrF,EAAE,CAAC,GAAG,EAAE;IAEnB,IAAIiF,yBAAyB,IAAIV,YAAY,CAACqB,KAAK,CAAC,CAAC3G,MAAM,GAAGgG,yBAAyB,EAAE;MACvFI,UAAU,CAACrF,EAAE,CAAC,IAAI,oCAAoCiF,yBAAyB,eAAe;IAChG;IAEA,IAAI,CAACP,UAAU,CAACkB,KAAK,CAAC,EAAE;MACtBP,UAAU,CAACrF,EAAE,CAAC,IAAI,+BAA+B;IACnD,CAAC,MAAM;MACL;MACA,MAAM6F,eAAe,GAAGjH,IAAI,CAACkH,KAAK,CAAC,CAAC,EAAEH,KAAK,CAAC,CAACI,IAAI,CAAEzB,CAAC,IAAKI,UAAU,CAACJ,CAAC,CAACsB,KAAK,CAAC,KAAKlB,UAAU,CAACkB,KAAK,CAAC,CAAC;MAEnG,IAAIC,eAAe,EAAE;QACnBR,UAAU,CAACrF,EAAE,CAAC,IAAI,4BAA4B;MAChD;IACF;IAEA,MAAMgG,kBAAkB,GAAG/F,MAAM,CAAC8F,IAAI,CAAEvF,KAAK,IAAK,CAAC,CAACA,KAAK,CAAC;IAE1D,IAAI,CAACwF,kBAAkB,EAAE;MACvBX,UAAU,CAACrF,EAAE,CAAC,IAAI,8BAA8B;IAClD;EACF,CAAC,CAAC;EAEF,IAAIkF,UAAU,IAAIJ,OAAO,CAAC7F,MAAM,GAAG,CAAC,GAAGiG,UAAU,EAAE;IACjDK,MAAM,CAACU,kBAAkB,GAAG,2BAA2Bf,UAAU,WAAW;EAC9E;EAEA,IAAIE,2BAA2B,IAAIN,OAAO,CAAC,CAAC,CAAC,CAAC7F,MAAM,GAAGmG,2BAA2B,EAAE;IAClFE,aAAa,CAAC,CAAC,CAAC,GAAG,oCAAoCF,2BAA2B,cAAc;EAClG;EAEA,MAAMc,cAAc,GAAG,CAACpB,OAAO,IAAI,EAAE,EAAEqB,GAAG,CAAEC,OAAO,IAAK1B,UAAU,CAAC0B,OAAO,CAAC,CAAC;EAC5EF,cAAc,CAACG,KAAK,CAAC,CAAC,CAAC,CAAC;;EAExBH,cAAc,CAACrG,OAAO,CAAC,CAACuG,OAAO,EAAET,KAAK,KAAK;IACzC,MAAMW,WAAW,GAAGX,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/BL,aAAa,CAACgB,WAAW,CAAC,GAAG,EAAE;IAE/B,IAAInB,gBAAgB,IAAIZ,YAAY,CAAC6B,OAAO,CAAC,CAACnH,MAAM,GAAGkG,gBAAgB,EAAE;MACvEG,aAAa,CAACgB,WAAW,CAAC,IAAI,oCAAoCnB,gBAAgB,eAAe;IACnG;IAEA,IAAI,CAACiB,OAAO,EAAE;MACZd,aAAa,CAACgB,WAAW,CAAC,IAAI,8BAA8B;IAC9D,CAAC,MAAM;MACL;MACA,MAAMT,eAAe,GAAGK,cAAc,CAACJ,KAAK,CAAC,CAAC,EAAEH,KAAK,CAAC,CAACI,IAAI,CAAEQ,IAAI,IAAKA,IAAI,KAAKH,OAAO,CAAC;MAEvF,IAAIP,eAAe,EAAE;QACnBP,aAAa,CAACK,KAAK,GAAG,CAAC,CAAC,IAAI,2BAA2B;MACzD;IACF;EACF,CAAC,CAAC;EAEF,MAAMa,YAAY,GAAGzH,MAAM,CAACkB,MAAM,CAACoF,UAAU,CAAC,CAACU,IAAI,CAAEU,KAAK,IAAK,CAACA,KAAK,IAAI,EAAE,EAAExH,MAAM,CAAC;EAEpF,IAAIuH,YAAY,EAAE;IAChBjB,MAAM,CAACF,UAAU,GAAGA,UAAU;IAE9B,MAAMqB,eAAe,GAAG3H,MAAM,CAACkB,MAAM,CAACoF,UAAU,CAAC,CAACU,IAAI,CAAEU,KAAK,IAC3D,CAACA,KAAK,IAAI,EAAE,EAAEE,QAAQ,CAAC,8BAA8B,CACvD,CAAC;IAED,IAAID,eAAe,EAAE;MACnBnB,MAAM,CAACqB,oBAAoB,GACzB9H,UAAU,KAAK,OAAO,GAClB,2DAA2D,GAC3D,sEAAsE;IAC9E;EACF;EAEA,MAAM+H,eAAe,GAAG9H,MAAM,CAACkB,MAAM,CAACqF,aAAa,CAAC,CAACS,IAAI,CAAEU,KAAK,IAAK,CAACA,KAAK,IAAI,EAAE,EAAExH,MAAM,CAAC;EAE1F,IAAI4H,eAAe,EAAE;IACnBtB,MAAM,CAACD,aAAa,GAAGA,aAAa;EACtC;EAEA,OAAOC,MAAM;AACf,CAAC;AAACzD,OAAA,CAAA8C,QAAA,GAAAA,QAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/match-controller",
3
3
  "private": true,
4
- "version": "9.1.1-next.1",
4
+ "version": "9.2.0-next.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "11.1.2-next.4",
7
+ "version": "11.2.0-next.1",
8
8
  "main": "lib/index.js",
9
9
  "description": "",
10
10
  "scripts": {
@@ -16,9 +16,9 @@
16
16
  "@mui/icons-material": "^7.3.4",
17
17
  "@mui/material": "^7.3.4",
18
18
  "@pie-framework/pie-player-events": "^0.1.0",
19
- "@pie-lib/correct-answer-toggle": "3.2.0-next.4",
19
+ "@pie-lib/correct-answer-toggle": "3.2.0-next.6",
20
20
  "@pie-lib/math-rendering": "4.2.0-next.3",
21
- "@pie-lib/render-ui": "5.2.0-next.4",
21
+ "@pie-lib/render-ui": "5.2.0-next.6",
22
22
  "@pie-lib/test-utils": "1.2.0-next.3",
23
23
  "classnames": "^2.2.5",
24
24
  "debug": "^4.1.1",
@@ -29,6 +29,6 @@
29
29
  },
30
30
  "author": "",
31
31
  "license": "ISC",
32
- "gitHead": "40a7ed35e8d7ede93ebb571fff94e0539294403f",
32
+ "gitHead": "d1fbd8c1e27606d50d58f5e0f6f43f0b67a21b18",
33
33
  "module": "src/index.js"
34
34
  }