@pie-element/math-inline 8.7.3-next.6 → 8.8.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 +19 -0
- package/configure/CHANGELOG.md +17 -0
- package/configure/package.json +2 -2
- package/controller/CHANGELOG.md +19 -0
- package/controller/lib/index.js +13 -15
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +3 -3
- package/module/configure.js +2 -2
- package/module/controller.js +45 -25
- package/module/element.js +28 -10
- package/module/manifest.json +2 -2
- package/module/print.js +28 -10
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
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
|
+
# [8.8.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@8.7.2...@pie-element/math-inline@8.8.0) (2025-07-18)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* allow math-inline scoring to continue even if one alternate answer fails parsing ([540e3a9](https://github.com/pie-framework/pie-elements/commit/540e3a902cd02408d22337484bbe3fdbd1abbcc6))
|
|
12
|
+
* bump math-validation PD-4848 ([bd6d706](https://github.com/pie-framework/pie-elements/commit/bd6d706f251ef39b580063100594d81ba2518752))
|
|
13
|
+
* update pie-lib/pie-toolbox PD-363 ([10ce402](https://github.com/pie-framework/pie-elements/commit/10ce402bcb1c0c9c24dfc9ecff2e13c4de14a753))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* update pie-lib/pie toolbox PD-5082, PD-5081, PD-3797, PD-5083, revert PD-363, PD-653 ([9214466](https://github.com/pie-framework/pie-elements/commit/92144667464f18c213c7ab1d769595e43b553dab))
|
|
19
|
+
* update pie-lib/pie-toolbox PD-5082, PD-5081, PD-3797, PD-5083, PD-4885, PD-5097, PD-5100, PD-5131, PD-5080 ([dc67b1c](https://github.com/pie-framework/pie-elements/commit/dc67b1c735b2adb60943e5d145e739ce4e39a428))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
## [8.7.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline@8.7.1...@pie-element/math-inline@8.7.2) (2025-06-27)
|
|
7
26
|
|
|
8
27
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
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
|
+
# [8.6.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-configure@8.5.10...@pie-element/math-inline-configure@8.6.0) (2025-07-18)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-363 ([10ce402](https://github.com/pie-framework/pie-elements/commit/10ce402bcb1c0c9c24dfc9ecff2e13c4de14a753))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* update pie-lib/pie toolbox PD-5082, PD-5081, PD-3797, PD-5083, revert PD-363, PD-653 ([9214466](https://github.com/pie-framework/pie-elements/commit/92144667464f18c213c7ab1d769595e43b553dab))
|
|
17
|
+
* update pie-lib/pie-toolbox PD-5082, PD-5081, PD-3797, PD-5083, PD-4885, PD-5097, PD-5100, PD-5131, PD-5080 ([dc67b1c](https://github.com/pie-framework/pie-elements/commit/dc67b1c735b2adb60943e5d145e739ce4e39a428))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
6
23
|
## [8.5.10](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-configure@8.5.9...@pie-element/math-inline-configure@8.5.10) (2025-06-27)
|
|
7
24
|
|
|
8
25
|
|
package/configure/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/math-inline-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "8.
|
|
4
|
+
"version": "8.6.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@material-ui/icons": "^3.0.1",
|
|
12
12
|
"@pie-framework/mathquill": "^1.1.3",
|
|
13
13
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
14
|
-
"@pie-lib/pie-toolbox": "2.
|
|
14
|
+
"@pie-lib/pie-toolbox": "2.22.0",
|
|
15
15
|
"classnames": "^2.2.5",
|
|
16
16
|
"debug": "^3.1.0",
|
|
17
17
|
"prop-types": "^15.6.2",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [7.4.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@7.3.2...@pie-element/math-inline-controller@7.4.0) (2025-07-18)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* allow math-inline scoring to continue even if one alternate answer fails parsing ([540e3a9](https://github.com/pie-framework/pie-elements/commit/540e3a902cd02408d22337484bbe3fdbd1abbcc6))
|
|
12
|
+
* bump math-validation PD-4848 ([bd6d706](https://github.com/pie-framework/pie-elements/commit/bd6d706f251ef39b580063100594d81ba2518752))
|
|
13
|
+
* update pie-lib/pie-toolbox PD-363 ([10ce402](https://github.com/pie-framework/pie-elements/commit/10ce402bcb1c0c9c24dfc9ecff2e13c4de14a753))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* update pie-lib/pie toolbox PD-5082, PD-5081, PD-3797, PD-5083, revert PD-363, PD-653 ([9214466](https://github.com/pie-framework/pie-elements/commit/92144667464f18c213c7ab1d769595e43b553dab))
|
|
19
|
+
* update pie-lib/pie-toolbox PD-5082, PD-5081, PD-3797, PD-5083, PD-4885, PD-5097, PD-5100, PD-5131, PD-5080 ([dc67b1c](https://github.com/pie-framework/pie-elements/commit/dc67b1c735b2adb60943e5d145e739ce4e39a428))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
## [7.3.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/math-inline-controller@7.3.1...@pie-element/math-inline-controller@7.3.2) (2025-06-27)
|
|
7
26
|
|
|
8
27
|
|
package/controller/lib/index.js
CHANGED
|
@@ -74,36 +74,34 @@ var getResponseCorrectness = function getResponseCorrectness(model, answerItem,
|
|
|
74
74
|
return correctnessObject;
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
-
function getIsAnswerCorrect(
|
|
77
|
+
function getIsAnswerCorrect(correctResponseItems, answerItem) {
|
|
78
78
|
var answerCorrect = false;
|
|
79
|
-
(
|
|
79
|
+
(correctResponseItems || []).forEach(function (correctResponse) {
|
|
80
|
+
if (answerCorrect) return;
|
|
80
81
|
var opts = {
|
|
81
82
|
mode: correctResponse.validation || _defaults["default"].validationDefault
|
|
82
83
|
};
|
|
83
84
|
|
|
84
|
-
if (opts.mode
|
|
85
|
+
if (opts.mode === 'literal') {
|
|
85
86
|
opts.literal = {
|
|
86
87
|
allowTrailingZeros: correctResponse.allowTrailingZeros || false,
|
|
87
88
|
ignoreOrder: correctResponse.ignoreOrder || false
|
|
88
89
|
};
|
|
89
90
|
}
|
|
90
91
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
})) || [];
|
|
92
|
+
var acceptedValues = [correctResponse.answer].concat(Object.keys(correctResponse.alternates || {}).map(function (alternateId) {
|
|
93
|
+
return correctResponse.alternates[alternateId];
|
|
94
|
+
}));
|
|
95
95
|
|
|
96
|
+
for (var i = 0; i < acceptedValues.length; i++) {
|
|
96
97
|
try {
|
|
97
|
-
|
|
98
|
-
answerCorrect =
|
|
99
|
-
|
|
100
|
-
if (answerCorrect) {
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
98
|
+
if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {
|
|
99
|
+
answerCorrect = true;
|
|
100
|
+
break;
|
|
103
101
|
}
|
|
104
102
|
} catch (e) {
|
|
105
|
-
log('Parse failure when evaluating math',
|
|
106
|
-
|
|
103
|
+
log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);
|
|
104
|
+
continue;
|
|
107
105
|
}
|
|
108
106
|
}
|
|
109
107
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","log","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","responses","isAdvanced","responseType","ResponseTypes","advanced","correctness","score","correct","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItem","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","concat","Object","keys","alternates","map","alternateId","i","length","mv","latexEqual","e","getCorrectness","question","env","session","completeAnswer","response","undefined","createDefaultModel","Promise","resolve","config","outcome","completed","empty","normalize","allowTrailingZerosDefault","ignoreOrderDefault","normalizedQuestion","extraCSSRules","language","simple","feedback","feedbackEnabled","out","disabled","view","note","t","lng","showNote","some","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","escape","string","replace","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","o","split","to","tt","join","m","match","RegExp","count","console","shift","value","trim","error","toString","createCorrectResponseSession","toLowerCase","getInnerText","html","replaceAll","getContent","validate","maxResponseAreas","responsesErrors","errors","field","required","index","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","val","nbOfResponseAreas","responseAreasError"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAGA;;AAEA;;;;;;;;;;;;AAHA,IAAQA,UAAR,GAAuBC,sBAAvB,CAAQD,UAAR;AAKA,IAAME,GAAG,GAAG,uBAAM,qCAAN,CAAZ;;AAEA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,KAAD,EAAQC,UAAR,EAAoBC,SAApB,EAAkC;AAC/D,MAAMC,gBAAgB,GAAGH,KAAK,CAACI,SAA/B;AACA,MAAMC,UAAU,GAAGL,KAAK,CAACM,YAAN,KAAuBC,qBAAcC,QAAxD;;AAEA,MAAI,CAACP,UAAL,EAAiB;AACf,WAAO;AACLQ,MAAAA,WAAW,EAAE,YADR;AAELC,MAAAA,KAAK,EAAER,SAAS,GAAG,CAAH,GAAO,IAFlB;AAGLS,MAAAA,OAAO,EAAE;AAHJ,KAAP;AAKD;;AAED,MAAMC,eAAe,GAAGC,kBAAkB,CAACR,UAAU,GAAGF,gBAAH,GAAsBA,gBAAgB,CAACW,KAAjB,CAAuB,CAAvB,EAA0B,CAA1B,CAAjC,EAA+Db,UAA/D,CAA1C;AAEA,MAAMc,iBAAiB,GAAG;AACxBN,IAAAA,WAAW,EAAE,WADW;AAExBC,IAAAA,KAAK,EAAER,SAAS,GAAG,CAAH,GAAO,IAFC;AAGxBS,IAAAA,OAAO,EAAE;AAHe,GAA1B;;AAMA,MAAIC,eAAJ,EAAqB;AACnBG,IAAAA,iBAAiB,CAACN,WAAlB,GAAgC,SAAhC;AACAM,IAAAA,iBAAiB,CAACL,KAAlB,GAA0BR,SAAS,GAAG,CAAH,GAAO,MAA1C;AACAa,IAAAA,iBAAiB,CAACJ,OAAlB,GAA4B,IAA5B;AACD;;AAED,SAAOI,iBAAP;AACD,CA3BD;;AA6BA,SAASF,kBAAT,CAA4BG,mBAA5B,EAAiDf,UAAjD,EAA6D;AAC3D,MAAIgB,aAAa,GAAG,KAApB;AAEA,GAACD,mBAAmB,IAAI,EAAxB,EAA4BE,OAA5B,CAAoC,UAACC,eAAD,EAAqB;AACvD,QAAIC,IAAI,GAAG;AACTC,MAAAA,IAAI,EAAEF,eAAe,CAACG,UAAhB,IAA8BC,qBAASC;AADpC,KAAX;;AAIA,QAAIJ,IAAI,CAACC,IAAL,IAAa,SAAjB,EAA4B;AAC1BD,MAAAA,IAAI,CAACK,OAAL,GAAe;AACbC,QAAAA,kBAAkB,EAAEP,eAAe,CAACO,kBAAhB,IAAsC,KAD7C;AAEbC,QAAAA,WAAW,EAAER,eAAe,CAACQ,WAAhB,IAA+B;AAF/B,OAAf;AAID;;AAED,QAAI,CAACV,aAAL,EAAoB;AAClB,UAAMW,cAAc,GAClB,CAACT,eAAe,CAACU,MAAjB,EAAyBC,MAAzB,CACEC,MAAM,CAACC,IAAP,CAAYb,eAAe,CAACc,UAAhB,IAA8B,EAA1C,EAA8CC,GAA9C,CAAkD,UAACC,WAAD;AAAA,eAAiBhB,eAAe,CAACc,UAAhB,CAA2BE,WAA3B,CAAjB;AAAA,OAAlD,CADF,KAEK,EAHP;;AAKA,UAAI;AACF,aAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,cAAc,CAACS,MAAnC,EAA2CD,CAAC,EAA5C,EAAgD;AAC9CnB,UAAAA,aAAa,GAAGqB,EAAE,CAACC,UAAH,CAActC,UAAd,EAA0B2B,cAAc,CAACQ,CAAD,CAAxC,EAA6ChB,IAA7C,CAAhB;;AAEA,cAAIH,aAAJ,EAAmB;AACjB;AACD;AACF;AACF,OARD,CAQE,OAAOuB,CAAP,EAAU;AACV1C,QAAAA,GAAG,CAAC,oCAAD,EAAuC0C,CAAvC,EAA0CrB,eAA1C,EAA2DlB,UAA3D,CAAH;AAEAgB,QAAAA,aAAa,GAAG,KAAhB;AACD;AACF;AACF,GAhCD;AAkCA,SAAOA,aAAP;AACD;;AAED,IAAMwB,cAAc,GAAG,SAAjBA,cAAiB,CAACC,QAAD,EAAWC,GAAX,EAAgBC,OAAhB,EAAyB1C,SAAzB,EAAuC;AAC5D,MAAIyC,GAAG,CAACtB,IAAJ,KAAa,UAAjB,EAA6B;AAC3B,WAAOtB,sBAAsB,CAC3B2C,QAD2B,EAE3BA,QAAQ,CAACpC,YAAT,KAA0BC,qBAAcC,QAAxC,GACKoC,OAAO,IAAIA,OAAO,CAACC,cAApB,IAAuC,EAD3C,GAEID,OAAO,IAAIA,OAAO,CAACE,QAJI,EAK3B5C,SAL2B,CAA7B;AAOD;;AAED,SAAO6C,SAAP;AACD,CAZD;;AAcO,SAASC,kBAAT,GAAwC;AAAA,MAAZhD,KAAY,uEAAJ,EAAI;AAC7C,SAAO,IAAIiD,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9BA,IAAAA,OAAO,CAAC;AACNC,MAAAA,MAAM,kCACD5B,oBADC,GAEDvB,KAFC;AADA,KAAD,CAAP;AAMD,GAPM,CAAP;AAQD;;AAEM,IAAMoD,OAAO,GAAG,SAAVA,OAAU,CAACV,QAAD,EAAWE,OAAX,EAAoBD,GAApB,EAA4B;AACjD,SAAO,IAAIM,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAIP,GAAG,CAACtB,IAAJ,KAAa,UAAjB,EAA6B;AAC3B6B,MAAAA,OAAO,CAAC;AAAExC,QAAAA,KAAK,EAAEqC,SAAT;AAAoBM,QAAAA,SAAS,EAAEN;AAA/B,OAAD,CAAP;AACD,KAFD,MAEO;AACL,UAAI,CAACH,OAAD,IAAY,yBAAQA,OAAR,CAAhB,EAAkC;AAChCM,QAAAA,OAAO,CAAC;AAAExC,UAAAA,KAAK,EAAE,CAAT;AAAY4C,UAAAA,KAAK,EAAE;AAAnB,SAAD,CAAP;AACD,OAFD,MAEO;AACL,YAAM7C,WAAW,GAAGgC,cAAc,CAACC,QAAD,EAAWC,GAAX,EAAgBC,OAAhB,EAAyB,IAAzB,CAAlC;AAEAM,QAAAA,OAAO,CAAC;AAAExC,UAAAA,KAAK,EAAED,WAAW,CAACC;AAArB,SAAD,CAAP;AACD;AACF;AACF,GAZM,CAAP;AAaD,CAdM;;;;AAgBA,IAAM6C,SAAS,GAAG,SAAZA,SAAY,CAACb,QAAD,EAAc;AACrC;AACA,MAAI,CAAC,yBAAQA,QAAQ,CAACtC,SAAjB,CAAL,EAAkC;AAChCsC,IAAAA,QAAQ,CAACtC,SAAT,GAAqBsC,QAAQ,CAACtC,SAAT,CAAmB8B,GAAnB,CAAuB,UAACf,eAAD;AAAA,6CACvCA,eADuC;AAE1CG,QAAAA,UAAU,EAAEH,eAAe,CAACG,UAAhB,IAA8BoB,QAAQ,CAAClB,iBAFT;AAG1CE,QAAAA,kBAAkB,EAAEP,eAAe,CAACO,kBAAhB,IAAsCgB,QAAQ,CAACc,yBAHzB;AAI1C7B,QAAAA,WAAW,EAAER,eAAe,CAACQ,WAAhB,IAA+Be,QAAQ,CAACe;AAJX;AAAA,KAAvB,CAArB;AAMD;;AAED,yCAAYlC,oBAAZ,GAAyBmB,QAAzB;AACD,CAZM;;;;AAcA,IAAM1C,KAAK,GAAG,SAARA,KAAQ,CAAC0C,QAAD,EAAWE,OAAX,EAAoBD,GAApB;AAAA,SACnB,IAAIM,OAAJ,CAAY,UAACC,OAAD,EAAa;AAAA;;AACvB,QAAMQ,kBAAkB,GAAGH,SAAS,CAACb,QAAD,CAApC;AACA,QAAMjC,WAAW,GAAGgC,cAAc,CAACiB,kBAAD,EAAqBf,GAArB,EAA0BC,OAA1B,CAAlC;AACA,QAAQe,aAAR,GAA0DD,kBAA1D,CAAQC,aAAR;AAAA,QAAuBvD,SAAvB,GAA0DsD,kBAA1D,CAAuBtD,SAAvB;AAAA,QAAkCwD,QAAlC,GAA0DF,kBAA1D,CAAkCE,QAAlC;AAAA,QAA+CT,MAA/C,6CAA0DO,kBAA1D;AAEAP,IAAAA,MAAM,CAAC/C,SAAP,GAAmB+C,MAAM,CAAC7C,YAAP,KAAwBC,qBAAcsD,MAAtC,GAA+CzD,SAAS,CAACU,KAAV,CAAgB,CAAhB,EAAmB,CAAnB,CAA/C,GAAuEV,SAA1F;AAEA,QAAM0D,QAAQ,GACZnB,GAAG,CAACtB,IAAJ,KAAa,UAAb,IAA2BqC,kBAAkB,CAACK,eAA9C,GACI,+CAAgCtD,WAAhC,aAAgCA,WAAhC,uBAAgCA,WAAW,CAAEA,WAA7C,EAA0DiD,kBAAkB,CAACI,QAA7E,CADJ,GAEIf,SAHN;AAKA,QAAMiB,GAAG,GAAG;AACVL,MAAAA,aAAa,EAAbA,aADU;AAEVR,MAAAA,MAAM,EAANA,MAFU;AAGV1C,MAAAA,WAAW,EAAXA,WAHU;AAIVqD,MAAAA,QAAQ,EAARA,QAJU;AAKVG,MAAAA,QAAQ,EAAEtB,GAAG,CAACtB,IAAJ,KAAa,QALb;AAMV6C,MAAAA,IAAI,EAAEvB,GAAG,CAACtB,IAAJ,KAAa;AANT,KAAZ;AASA,QAAM8C,IAAI,GAAGT,kBAAkB,CAACS,IAAnB,IAA2BvE,UAAU,CAACwE,CAAX,CAAa,yCAAb,EAAwD;AAAEC,MAAAA,GAAG,EAAET;AAAP,KAAxD,CAAxC;AACA,QAAMU,QAAQ,GACZ,CAAAnB,MAAM,SAAN,IAAAA,MAAM,WAAN,iCAAAA,MAAM,CAAE/C,SAAR,wEAAmBiC,MAAnB,IAA4B,CAA5B,IACA,CAAC,CAAAc,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAE/C,SAAR,KAAqB,EAAtB,EAA0BmE,IAA1B,CACE,UAACzB,QAAD;AAAA,aAAcA,QAAQ,CAACxB,UAAT,KAAwB,UAAxB,IAAsCS,MAAM,CAACC,IAAP,CAAYc,QAAQ,CAACb,UAAT,IAAuB,EAAnC,EAAuCI,MAAvC,GAAgD,CAApG;AAAA,KADF,CAFF;;AAMA,QAAIM,GAAG,CAACtB,IAAJ,KAAa,UAAjB,EAA6B;AAC3B2C,MAAAA,GAAG,CAAC7C,eAAJ,GAAsB,EAAtB;AACA6C,MAAAA,GAAG,CAACb,MAAJ,CAAWmB,QAAX,GAAsBA,QAAtB;AACAN,MAAAA,GAAG,CAACb,MAAJ,CAAWgB,IAAX,GAAkBA,IAAlB;AACD,KAJD,MAIO;AACLH,MAAAA,GAAG,CAACb,MAAJ,CAAW/C,SAAX,GAAuB,EAAvB;AACA4D,MAAAA,GAAG,CAACb,MAAJ,CAAWmB,QAAX,GAAsB,KAAtB;AACD;;AAED,QAAI3B,GAAG,CAAC6B,IAAJ,KAAa,YAAb,KAA8B7B,GAAG,CAACtB,IAAJ,KAAa,MAAb,IAAuBsB,GAAG,CAACtB,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjF2C,MAAAA,GAAG,CAACS,SAAJ,GAAgBf,kBAAkB,CAACgB,gBAAnB,GAAsChB,kBAAkB,CAACe,SAAzD,GAAqE,IAArF;AACAT,MAAAA,GAAG,CAACW,mBAAJ,GAA0BjB,kBAAkB,CAACkB,0BAAnB,GACtBlB,kBAAkB,CAACiB,mBADG,GAEtB,IAFJ;AAGD,KALD,MAKO;AACLX,MAAAA,GAAG,CAACS,SAAJ,GAAgB,IAAhB;AACAT,MAAAA,GAAG,CAACW,mBAAJ,GAA0B,IAA1B;AACAX,MAAAA,GAAG,CAACb,MAAJ,CAAWsB,SAAX,GAAuB,IAAvB;AACAT,MAAAA,GAAG,CAACb,MAAJ,CAAWwB,mBAAX,GAAiC,IAAjC;AACD;;AAEDX,IAAAA,GAAG,CAACb,MAAJ,CAAWR,GAAX,GAAiBA,GAAjB;AACAqB,IAAAA,GAAG,CAACb,MAAJ,CAAW0B,MAAX,GAAoBnB,kBAAkB,CAACoB,aAAnB,GAAmCpB,kBAAkB,CAACmB,MAAtD,GAA+D,IAAnF;AACAb,IAAAA,GAAG,CAACJ,QAAJ,GAAeA,QAAf;AAEA9D,IAAAA,GAAG,CAAC,OAAD,EAAUkE,GAAV,CAAH;AACAd,IAAAA,OAAO,CAACc,GAAD,CAAP;AACD,GAvDD,CADmB;AAAA,CAAd;;;;AA0DP,IAAMe,MAAM,GAAG,SAATA,MAAS,CAACC,MAAD;AAAA,SAAYA,MAAM,CAACC,OAAP,CAAe,qBAAf,EAAsC,MAAtC,CAAZ;AAAA,CAAf,C,CAA0E;;;AAE1E,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACxC,QAAD;AAAA,SAC5B,IAAIO,OAAJ,CAAY,UAACC,OAAD,EAAa;AACvB,QAAQ9C,SAAR,GAA0BsC,QAA1B,CAAQtC,SAAR;AAAA,QAAmB+E,EAAnB,GAA0BzC,QAA1B,CAAmByC,EAAnB;;AACA,eAAmB/E,SAAS,IAAIA,SAAS,CAACiC,MAAvB,GAAgCjC,SAAS,CAAC,CAAD,CAAzC,GAA+C,EAAlE;AAAA,QAAQyB,MAAR,QAAQA,MAAR;;AAEAqB,IAAAA,OAAO,CAAC;AACNiC,MAAAA,EAAE,EAAFA,EADM;AAENrC,MAAAA,QAAQ,EAAEjB,MAAM,IAAI,EAFd;AAGNgB,MAAAA,cAAc,EAAEhB,MAAM,IAAI;AAHpB,KAAD,CAAP;AAKD,GATD,CAD4B;AAAA,CAA9B,C,CAYA;;;AACA,IAAMuD,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,GAAD;AAAA,SAAUA,GAAG,CAACC,QAAJ,CAAa,IAAb,IAAqBD,GAAG,CAACvE,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAArB,GAAwCuE,GAAlD;AAAA,CAA7B;;AAEA,IAAME,uBAAuB,GAAG,SAA1BA,uBAA0B,CAAC7C,QAAD;AAAA,SAC9B,IAAIO,OAAJ,CAAY,UAACC,OAAD,EAAa;AACvB,QAAQ9C,SAAR,GAA0BsC,QAA1B,CAAQtC,SAAR;AAAA,QAAmB+E,EAAnB,GAA0BzC,QAA1B,CAAmByC,EAAnB;;AACA,gBAAmB/E,SAAS,IAAIA,SAAS,CAACiC,MAAvB,GAAgCjC,SAAS,CAAC,CAAD,CAAzC,GAA+C,EAAlE;AAAA,QAAQyB,MAAR,SAAQA,MAAR;;AAEA,QAAI,CAACA,MAAL,EAAa;AACXqB,MAAAA,OAAO,CAAC;AACNiC,QAAAA,EAAE,EAAFA,EADM;AAENK,QAAAA,OAAO,EAAE,EAFH;AAGN3C,QAAAA,cAAc,EAAE;AAHV,OAAD,CAAP;AAMA;AACD;;AAED,QAAI;AACF,UAAML,CAAC,GAAGE,QAAQ,CAAC+C,UAAnB;AACA,UAAMC,cAAc,GAAG,6BAAvB;AAEA,UAAMC,CAAC,GAAGZ,MAAM,CAACvC,CAAD,CAAN,CAAUoD,KAAV,CAAgBF,cAAhB,CAAV;AACA,UAAMG,EAAE,GAAGF,CAAC,CAACzD,GAAF,CAAM,UAACkC,CAAD;AAAA,eAAQA,CAAC,KAAK,EAAN,GAAWA,CAAX,GAAeA,CAAC,CAACa,OAAF,CAAU,MAAV,EAAkB;AAAA,iBAAM,MAAN;AAAA,SAAlB,CAAvB;AAAA,OAAN,CAAX;AACA,UAAMa,EAAE,GAAGD,EAAE,CAACE,IAAH,CAAQ,MAAR,CAAX;AAEA,UAAMC,CAAC,GAAGnE,MAAM,CAACoE,KAAP,CAAa,IAAIC,MAAJ,CAAWJ,EAAX,CAAb,CAAV;AAEA,UAAMK,KAAK,GAAGR,CAAC,CAACtD,MAAF,GAAW,CAAzB;;AAEA,UAAI,CAAC2D,CAAL,EAAQ;AACN9C,QAAAA,OAAO,CAAC;AACNiC,UAAAA,EAAE,EAAFA,EADM;AAENK,UAAAA,OAAO,EAAE,EAFH;AAGN3C,UAAAA,cAAc,EAAEhB;AAHV,SAAD,CAAP,CADM,CAON;;AACAuE,QAAAA,OAAO,CAACtG,GAAR,+BAAmC6F,CAAnC,iBAA2C9D,MAA3C;AAEA;AACD;;AAEDmE,MAAAA,CAAC,CAACK,KAAF;AAEA,UAAMb,OAAO,GAAG,EAAhB;;AAEA,WAAK,IAAIpD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+D,KAApB,EAA2B/D,CAAC,EAA5B,EAAgC;AAC9BoD,QAAAA,OAAO,YAAKpD,CAAC,GAAG,CAAT,EAAP,GAAuB;AAAEkE,UAAAA,KAAK,EAAElB,oBAAoB,CAACY,CAAC,CAAC5D,CAAD,CAAD,CAAKmE,IAAL,EAAD;AAA7B,SAAvB;AACD;;AAEDrD,MAAAA,OAAO,CAAC;AACNiC,QAAAA,EAAE,EAAFA,EADM;AAENK,QAAAA,OAAO,EAAPA,OAFM;AAGN3C,QAAAA,cAAc,EAAEhB;AAHV,OAAD,CAAP;AAKD,KAtCD,CAsCE,OAAOW,CAAP,EAAU;AACVU,MAAAA,OAAO,CAAC;AACNiC,QAAAA,EAAE,EAAFA,EADM;AAENK,QAAAA,OAAO,EAAE,EAFH;AAGN3C,QAAAA,cAAc,EAAEhB;AAHV,OAAD,CAAP,CADU,CAMV;;AACAuE,MAAAA,OAAO,CAACI,KAAR,CAAchE,CAAC,CAACiE,QAAF,EAAd;AACD;AACF,GA7DD,CAD8B;AAAA,CAAhC;;AAgEO,IAAMC,4BAA4B,GAAG,SAA/BA,4BAA+B,CAAChE,QAAD,EAAWC,GAAX,EAAmB;AAC7D,MAAIA,GAAG,CAACtB,IAAJ,KAAa,UAAb,IAA2BsB,GAAG,CAAC6B,IAAJ,KAAa,YAA5C,EAA0D;AACxD;AACA4B,IAAAA,OAAO,CAACI,KAAR,CAAc,uFAAd;AAEA,WAAOvD,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAP;AACD;;AAED,MAAI,CAACR,QAAQ,CAACpC,YAAT,IAAyB,EAA1B,EAA8BqG,WAA9B,OAAgD,QAApD,EAA8D;AAC5D,WAAOzB,qBAAqB,CAACxC,QAAD,EAAWC,GAAX,CAA5B;AACD,GAFD,MAEO;AACL,WAAO4C,uBAAuB,CAAC7C,QAAD,EAAWC,GAAX,CAA9B;AACD;AACF,CAbM,C,CAeP;;;;;AACA,IAAMiE,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaC,UAAb,CAAwB,UAAxB,EAAoC,EAApC,CAAV;AAAA,CAArB,C,CAEA;;;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACF,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAa5B,OAAb,CAAqB,oCAArB,EAA2D,EAA3D,CAAV;AAAA,CAAnB;;AAEO,IAAM+B,QAAQ,GAAG,SAAXA,QAAW,GAA6B;AAAA,MAA5BhH,KAA4B,uEAApB,EAAoB;AAAA,MAAhBmD,MAAgB,uEAAP,EAAO;AACnD,0BAAqDnD,KAArD,CAAQyF,UAAR;AAAA,MAAQA,UAAR,kCAAqB,EAArB;AAAA,MAAyBrF,SAAzB,GAAqDJ,KAArD,CAAyBI,SAAzB;AAAA,MAAoCE,YAApC,GAAqDN,KAArD,CAAoCM,YAApC;AACA,MAAQ2G,gBAAR,GAA6B9D,MAA7B,CAAQ8D,gBAAR;AACA,MAAMC,eAAe,GAAG,EAAxB;AACA,MAAMC,MAAM,GAAG,EAAf;AAEA,GAAC,qBAAD,EAAwB,QAAxB,EAAkC,WAAlC,EAA+CjG,OAA/C,CAAuD,UAACkG,KAAD,EAAW;AAAA;;AAChE,QAAI,iBAAAjE,MAAM,CAACiE,KAAD,CAAN,wDAAeC,QAAf,IAA2B,CAACN,UAAU,CAAC/G,KAAK,CAACoH,KAAD,CAAN,CAA1C,EAA0D;AACxDD,MAAAA,MAAM,CAACC,KAAD,CAAN,GAAgB,yBAAhB;AACD;AACF,GAJD;AAMA,GAAChH,SAAS,IAAI,EAAd,EAAkBc,OAAlB,CAA0B,UAAC4B,QAAD,EAAWwE,KAAX,EAAqB;AAC7C,QAAQzF,MAAR,GAAmBiB,QAAnB,CAAQjB,MAAR;AACA,QAAM0F,kBAAkB,GAAG,oCAAIxF,MAAM,CAACyF,OAAP,CAAe1E,QAAQ,CAACb,UAAT,IAAuB,EAAtC,CAAJ,EAA+CwF,OAA/C,EAA3B;AACA,QAAMC,gBAAgB,GAAG,EAAzB;AACA,QAAMC,aAAa,GAAG,EAAtB;;AAEA,QAAI9F,MAAM,KAAK,EAAf,EAAmB;AACjB8F,MAAAA,aAAa,CAAC9F,MAAd,GAAuB,8BAAvB;AACD;;AAED0F,IAAAA,kBAAkB,CAACrG,OAAnB,CAA2B,iBAAeoG,KAAf,EAAyB;AAAA;AAAA,UAAvBM,GAAuB;AAAA,UAAlBtB,KAAkB;;AAClD,UAAIA,KAAK,KAAK,EAAd,EAAkB;AAChBoB,QAAAA,gBAAgB,CAACE,GAAD,CAAhB,GAAwB,8BAAxB;AACD,OAFD,MAEO;AACL,YAAMC,eAAe,GACnBhG,MAAM,KAAKyE,KAAX,IAAoBiB,kBAAkB,CAACzG,KAAnB,CAAyBwG,KAAK,GAAG,CAAjC,EAAoC/C,IAApC,CAAyC;AAAA;AAAA,cAAIuD,GAAJ;;AAAA,iBAAaA,GAAG,KAAKxB,KAArB;AAAA,SAAzC,CADtB;;AAGA,YAAIuB,eAAJ,EAAqB;AACnBH,UAAAA,gBAAgB,CAACE,GAAD,CAAhB,GAAwB,2BAAxB;AACD;AACF;AACF,KAXD;;AAaA,QAAI,CAAC,yBAAQD,aAAR,CAAD,IAA2B,CAAC,yBAAQD,gBAAR,CAAhC,EAA2D;AACzDR,MAAAA,eAAe,CAACI,KAAD,CAAf,mCAA8BK,aAA9B,GAAgDD,gBAAhD;AACD;AACF,GA1BD;;AA4BA,MAAIpH,YAAY,KAAK,gBAArB,EAAuC;AACrC,QAAMyH,iBAAiB,GAAG,CAACtC,UAAU,CAACQ,KAAX,CAAiB,mBAAjB,KAAyC,EAA1C,EAA8C5D,MAAxE;;AAEA,QAAI0F,iBAAiB,GAAGd,gBAAxB,EAA0C;AACxCE,MAAAA,MAAM,CAACa,kBAAP,0BAA4Cf,gBAA5C;AACD,KAFD,MAEO,IAAIc,iBAAiB,GAAG,CAAxB,EAA2B;AAChCZ,MAAAA,MAAM,CAACa,kBAAP,GAA4B,mDAA5B;AACD;AACF;;AAED,MAAI,CAAC,yBAAQd,eAAR,CAAL,EAA+B;AAC7BC,IAAAA,MAAM,CAACD,eAAP,GAAyBA,eAAzB;AACD;;AAED,SAAOC,MAAP;AACD,CAvDM","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { getActualFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\n\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\n\nimport * as mv from '@pie-framework/math-validation';\n\nconst log = debug('@pie-element:math-inline:controller');\n\nconst getResponseCorrectness = (model, answerItem, isOutcome) => {\n const correctResponses = model.responses;\n const isAdvanced = model.responseType === ResponseTypes.advanced;\n\n if (!answerItem) {\n return {\n correctness: 'unanswered',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n }\n\n const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);\n\n const correctnessObject = {\n correctness: 'incorrect',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n\n if (isAnswerCorrect) {\n correctnessObject.correctness = 'correct';\n correctnessObject.score = isOutcome ? 1 : '100%';\n correctnessObject.correct = true;\n }\n\n return correctnessObject;\n};\n\nfunction getIsAnswerCorrect(correctResponseItem, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItem || []).forEach((correctResponse) => {\n let opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n };\n\n if (opts.mode == 'literal') {\n opts.literal = {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n };\n }\n\n if (!answerCorrect) {\n const acceptedValues =\n [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n ) || [];\n\n try {\n for (let i = 0; i < acceptedValues.length; i++) {\n answerCorrect = mv.latexEqual(answerItem, acceptedValues[i], opts);\n\n if (answerCorrect) {\n break;\n }\n }\n } catch (e) {\n log('Parse failure when evaluating math', e, correctResponse, answerItem);\n\n answerCorrect = false;\n }\n }\n });\n\n return answerCorrect;\n}\n\nconst getCorrectness = (question, env, session, isOutcome) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n question.responseType === ResponseTypes.advanced\n ? (session && session.completeAnswer) || ''\n : session && session.response,\n isOutcome,\n );\n }\n\n return undefined;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n config: {\n ...defaults,\n ...model,\n },\n });\n });\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 } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score });\n }\n }\n });\n};\n\nexport const normalize = (question) => {\n // making sure that defaults are set\n if (!isEmpty(question.responses)) {\n question.responses = question.responses.map((correctResponse) => ({\n ...correctResponse,\n validation: correctResponse.validation || question.validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,\n }));\n }\n\n return { ...defaults, ...question };\n};\n\nexport const model = (question, session, env) =>\n new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { extraCSSRules, responses, language, ...config } = normalizedQuestion;\n\n config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const out = {\n extraCSSRules,\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n const showNote =\n config?.responses?.length > 1 ||\n (config?.responses || []).some(\n (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,\n );\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.config.showNote = showNote;\n out.config.note = note;\n } else {\n out.config.responses = [];\n out.config.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 out.config.rationale = null;\n out.config.teacherInstructions = null;\n }\n\n out.config.env = env;\n out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;\n out.language = language;\n\n log('out: ', out);\n resolve(out);\n });\n\nconst escape = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\nconst simpleSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n resolve({\n id,\n response: answer || '',\n completeAnswer: answer || '',\n });\n });\n\n// use this for items like E672793\nconst removeTrailingEscape = (str) => (str.endsWith('\\\\') ? str.slice(0, -1) : str);\n\nconst advancedSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n if (!answer) {\n resolve({\n id,\n answers: {},\n completeAnswer: '',\n });\n\n return;\n }\n\n try {\n const e = question.expression;\n const RESPONSE_TOKEN = /\\\\{\\\\{\\s*response\\s*\\\\}\\\\}/g;\n\n const o = escape(e).split(RESPONSE_TOKEN);\n const to = o.map((t) => (t === '' ? t : t.replace(/\\s+/g, () => '\\\\s*')));\n const tt = to.join('(.*)');\n\n const m = answer.match(new RegExp(tt));\n\n const count = o.length - 1;\n\n if (!m) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n\n // eslint-disable-next-line no-console\n console.log(`can not find match: ${o} in ${answer}`);\n\n return;\n }\n\n m.shift();\n\n const answers = {};\n\n for (var i = 0; i < count; i++) {\n answers[`r${i + 1}`] = { value: removeTrailingEscape(m[i].trim()) };\n }\n\n resolve({\n id,\n answers,\n completeAnswer: answer,\n });\n } catch (e) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n });\n\nexport const createCorrectResponseSession = (question, env) => {\n if (env.mode === 'evaluate' || env.role !== 'instructor') {\n // eslint-disable-next-line no-console\n console.error('can not create correct response session if mode is evaluate or role is not instructor');\n\n return Promise.resolve(null);\n }\n\n if ((question.responseType || '').toLowerCase() === 'simple') {\n return simpleSessionResponse(question, env);\n } else {\n return advancedSessionResponse(question, env);\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 { expression = '', responses, responseType } = 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 (responses || []).forEach((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 if (responseType === 'Advanced Multi') {\n const nbOfResponseAreas = (expression.match(/\\{\\{response\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be at least 1 response area defined.';\n }\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responsesErrors = responsesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","log","getResponseCorrectness","model","answerItem","isOutcome","correctResponses","responses","isAdvanced","responseType","ResponseTypes","advanced","correctness","score","correct","isAnswerCorrect","getIsAnswerCorrect","slice","correctnessObject","correctResponseItems","answerCorrect","forEach","correctResponse","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","concat","Object","keys","alternates","map","alternateId","i","length","mv","latexEqual","e","getCorrectness","question","env","session","completeAnswer","response","undefined","createDefaultModel","Promise","resolve","config","outcome","completed","empty","normalize","allowTrailingZerosDefault","ignoreOrderDefault","normalizedQuestion","extraCSSRules","language","simple","feedback","feedbackEnabled","out","disabled","view","note","t","lng","showNote","some","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","escape","string","replace","simpleSessionResponse","id","removeTrailingEscape","str","endsWith","advancedSessionResponse","answers","expression","RESPONSE_TOKEN","o","split","to","tt","join","m","match","RegExp","count","console","shift","value","trim","error","toString","createCorrectResponseSession","toLowerCase","getInnerText","html","replaceAll","getContent","validate","maxResponseAreas","responsesErrors","errors","field","required","index","reversedAlternates","entries","reverse","alternatesErrors","responseError","key","identicalAnswer","val","nbOfResponseAreas","responseAreasError"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { getActualFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\n\nimport { ResponseTypes } from './utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\n\nimport * as mv from '@pie-framework/math-validation';\n\nconst log = debug('@pie-element:math-inline:controller');\n\nconst getResponseCorrectness = (model, answerItem, isOutcome) => {\n const correctResponses = model.responses;\n const isAdvanced = model.responseType === ResponseTypes.advanced;\n\n if (!answerItem) {\n return {\n correctness: 'unanswered',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n }\n\n const isAnswerCorrect = getIsAnswerCorrect(isAdvanced ? correctResponses : correctResponses.slice(0, 1), answerItem);\n\n const correctnessObject = {\n correctness: 'incorrect',\n score: isOutcome ? 0 : '0%',\n correct: false,\n };\n\n if (isAnswerCorrect) {\n correctnessObject.correctness = 'correct';\n correctnessObject.score = isOutcome ? 1 : '100%';\n correctnessObject.correct = true;\n }\n\n return correctnessObject;\n};\n\nfunction getIsAnswerCorrect(correctResponseItems, answerItem) {\n let answerCorrect = false;\n\n (correctResponseItems || []).forEach((correctResponse) => {\n if (answerCorrect) return;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n };\n\n if (opts.mode === 'literal') {\n opts.literal = {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n };\n }\n\n const acceptedValues = [correctResponse.answer].concat(\n Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),\n );\n\n for (let i = 0; i < acceptedValues.length; i++) {\n try {\n if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {\n answerCorrect = true;\n break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);\n continue;\n }\n }\n });\n\n return answerCorrect;\n}\n\nconst getCorrectness = (question, env, session, isOutcome) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n question.responseType === ResponseTypes.advanced\n ? (session && session.completeAnswer) || ''\n : session && session.response,\n isOutcome,\n );\n }\n\n return undefined;\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n config: {\n ...defaults,\n ...model,\n },\n });\n });\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 } else {\n const correctness = getCorrectness(question, env, session, true);\n\n resolve({ score: correctness.score });\n }\n }\n });\n};\n\nexport const normalize = (question) => {\n // making sure that defaults are set\n if (!isEmpty(question.responses)) {\n question.responses = question.responses.map((correctResponse) => ({\n ...correctResponse,\n validation: correctResponse.validation || question.validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || question.allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || question.ignoreOrderDefault,\n }));\n }\n\n return { ...defaults, ...question };\n};\n\nexport const model = (question, session, env) =>\n new Promise((resolve) => {\n const normalizedQuestion = normalize(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { extraCSSRules, responses, language, ...config } = normalizedQuestion;\n\n config.responses = config.responseType === ResponseTypes.simple ? responses.slice(0, 1) : responses;\n\n const feedback =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getActualFeedbackForCorrectness(correctness?.correctness, normalizedQuestion.feedback)\n : undefined;\n\n const out = {\n extraCSSRules,\n config,\n correctness,\n feedback,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n };\n\n const note = normalizedQuestion.note || translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n const showNote =\n config?.responses?.length > 1 ||\n (config?.responses || []).some(\n (response) => response.validation === 'symbolic' || Object.keys(response.alternates || {}).length > 0,\n );\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.config.showNote = showNote;\n out.config.note = note;\n } else {\n out.config.responses = [];\n out.config.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 out.config.rationale = null;\n out.config.teacherInstructions = null;\n }\n\n out.config.env = env;\n out.config.prompt = normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null;\n out.language = language;\n\n log('out: ', out);\n resolve(out);\n });\n\nconst escape = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n\nconst simpleSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n resolve({\n id,\n response: answer || '',\n completeAnswer: answer || '',\n });\n });\n\n// use this for items like E672793\nconst removeTrailingEscape = (str) => (str.endsWith('\\\\') ? str.slice(0, -1) : str);\n\nconst advancedSessionResponse = (question) =>\n new Promise((resolve) => {\n const { responses, id } = question;\n const { answer } = responses && responses.length ? responses[0] : {};\n\n if (!answer) {\n resolve({\n id,\n answers: {},\n completeAnswer: '',\n });\n\n return;\n }\n\n try {\n const e = question.expression;\n const RESPONSE_TOKEN = /\\\\{\\\\{\\s*response\\s*\\\\}\\\\}/g;\n\n const o = escape(e).split(RESPONSE_TOKEN);\n const to = o.map((t) => (t === '' ? t : t.replace(/\\s+/g, () => '\\\\s*')));\n const tt = to.join('(.*)');\n\n const m = answer.match(new RegExp(tt));\n\n const count = o.length - 1;\n\n if (!m) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n\n // eslint-disable-next-line no-console\n console.log(`can not find match: ${o} in ${answer}`);\n\n return;\n }\n\n m.shift();\n\n const answers = {};\n\n for (var i = 0; i < count; i++) {\n answers[`r${i + 1}`] = { value: removeTrailingEscape(m[i].trim()) };\n }\n\n resolve({\n id,\n answers,\n completeAnswer: answer,\n });\n } catch (e) {\n resolve({\n id,\n answers: {},\n completeAnswer: answer,\n });\n // eslint-disable-next-line no-console\n console.error(e.toString());\n }\n });\n\nexport const createCorrectResponseSession = (question, env) => {\n if (env.mode === 'evaluate' || env.role !== 'instructor') {\n // eslint-disable-next-line no-console\n console.error('can not create correct response session if mode is evaluate or role is not instructor');\n\n return Promise.resolve(null);\n }\n\n if ((question.responseType || '').toLowerCase() === 'simple') {\n return simpleSessionResponse(question, env);\n } else {\n return advancedSessionResponse(question, env);\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 { expression = '', responses, responseType } = 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 (responses || []).forEach((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 if (responseType === 'Advanced Multi') {\n const nbOfResponseAreas = (expression.match(/\\{\\{response\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be at least 1 response area defined.';\n }\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responsesErrors = responsesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/math-inline-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "7.
|
|
4
|
+
"version": "7.4.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"test": "./node_modules/.bin/jest"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@pie-framework/math-validation": "^1.4.
|
|
13
|
-
"@pie-lib/pie-toolbox": "2.
|
|
12
|
+
"@pie-framework/math-validation": "^1.4.1",
|
|
13
|
+
"@pie-lib/pie-toolbox": "2.22.0",
|
|
14
14
|
"debug": "^3.1.0",
|
|
15
15
|
"lodash": "^4.17.15"
|
|
16
16
|
},
|
package/module/configure.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@5.0
|
|
2
|
-
import {_dll_pie_lib__pie_toolbox_config_ui, _dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_editable_html} from "../../../@pie-lib/pie-toolbox-module@8.0
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@5.3.0/module/index.js";
|
|
2
|
+
import {_dll_pie_lib__pie_toolbox_config_ui, _dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_editable_html} from "../../../@pie-lib/pie-toolbox-module@8.3.0/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
5
5
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
package/module/controller.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as mv from '@pie-framework/math-validation';
|
|
2
2
|
|
|
3
|
+
var debug = () => () => {};
|
|
4
|
+
|
|
3
5
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
6
|
|
|
5
7
|
function getDefaultExportFromCjs (x) {
|
|
@@ -3999,8 +4001,16 @@ var _default = {
|
|
|
3999
4001
|
},
|
|
4000
4002
|
charting: {
|
|
4001
4003
|
addCategory: 'Add category',
|
|
4004
|
+
actions: 'Actions',
|
|
4005
|
+
add: 'Add',
|
|
4006
|
+
"delete": 'Delete',
|
|
4002
4007
|
newLabel: 'New label',
|
|
4003
|
-
reachedLimit_other: "There can't be more than {{count}} categories."
|
|
4008
|
+
reachedLimit_other: "There can't be more than {{count}} categories.",
|
|
4009
|
+
keyLegend: {
|
|
4010
|
+
incorrectAnswer: 'Student incorrect answer',
|
|
4011
|
+
correctAnswer: 'Student correct answer',
|
|
4012
|
+
correctKeyAnswer: 'Answer key correct'
|
|
4013
|
+
}
|
|
4004
4014
|
},
|
|
4005
4015
|
graphing: {
|
|
4006
4016
|
point: 'Point',
|
|
@@ -4029,9 +4039,10 @@ var _default = {
|
|
|
4029
4039
|
minmaxSelections_range: 'Select between {{minSelections}} and {{maxSelections}}.'
|
|
4030
4040
|
},
|
|
4031
4041
|
selectText: {
|
|
4032
|
-
correctAnswerSelected: 'Correct
|
|
4033
|
-
correctAnswerNotSelected: 'Correct
|
|
4034
|
-
incorrectSelection: 'Incorrect
|
|
4042
|
+
correctAnswerSelected: 'Correct',
|
|
4043
|
+
correctAnswerNotSelected: 'Correct Answer Not Selected',
|
|
4044
|
+
incorrectSelection: 'Incorrect Selection',
|
|
4045
|
+
key: 'Key'
|
|
4035
4046
|
}
|
|
4036
4047
|
},
|
|
4037
4048
|
common: {
|
|
@@ -4096,8 +4107,16 @@ var _default = {
|
|
|
4096
4107
|
},
|
|
4097
4108
|
charting: {
|
|
4098
4109
|
addCategory: 'Añadir categoría',
|
|
4110
|
+
actions: 'Acciones',
|
|
4111
|
+
add: 'Añadir',
|
|
4112
|
+
"delete": 'Eliminar',
|
|
4099
4113
|
newLabel: 'Nueva etiqueta',
|
|
4100
|
-
reachedLimit_other: 'No puede haber más de {{count}} categorías.'
|
|
4114
|
+
reachedLimit_other: 'No puede haber más de {{count}} categorías.',
|
|
4115
|
+
keyLegend: {
|
|
4116
|
+
incorrectAnswer: 'Respuesta incorrecta del estudiante',
|
|
4117
|
+
correctAnswer: 'Respuesta correcta del estudiante',
|
|
4118
|
+
correctKeyAnswer: 'Clave de respuesta correcta'
|
|
4119
|
+
}
|
|
4101
4120
|
},
|
|
4102
4121
|
graphing: {
|
|
4103
4122
|
point: 'Punto',
|
|
@@ -4126,9 +4145,10 @@ var _default = {
|
|
|
4126
4145
|
minmaxSelections_range: 'Seleccione entre {{minSelections}} y {{maxSelections}}.'
|
|
4127
4146
|
},
|
|
4128
4147
|
selectText: {
|
|
4129
|
-
correctAnswerSelected: 'Respuesta
|
|
4130
|
-
correctAnswerNotSelected: 'Respuesta
|
|
4131
|
-
incorrectSelection: 'Selección
|
|
4148
|
+
correctAnswerSelected: 'Respuesta Correcta',
|
|
4149
|
+
correctAnswerNotSelected: 'Respuesta Correcta No Seleccionada',
|
|
4150
|
+
incorrectSelection: 'Selección Incorrecta',
|
|
4151
|
+
key: 'Clave'
|
|
4132
4152
|
}
|
|
4133
4153
|
},
|
|
4134
4154
|
common: {
|
|
@@ -4270,6 +4290,8 @@ var defaults = {
|
|
|
4270
4290
|
|
|
4271
4291
|
const { translator } = Translator;
|
|
4272
4292
|
|
|
4293
|
+
const log = debug();
|
|
4294
|
+
|
|
4273
4295
|
const getResponseCorrectness = (model, answerItem, isOutcome) => {
|
|
4274
4296
|
const correctResponses = model.responses;
|
|
4275
4297
|
const isAdvanced = model.responseType === ResponseTypes.advanced;
|
|
@@ -4299,38 +4321,36 @@ const getResponseCorrectness = (model, answerItem, isOutcome) => {
|
|
|
4299
4321
|
return correctnessObject;
|
|
4300
4322
|
};
|
|
4301
4323
|
|
|
4302
|
-
function getIsAnswerCorrect(
|
|
4324
|
+
function getIsAnswerCorrect(correctResponseItems, answerItem) {
|
|
4303
4325
|
let answerCorrect = false;
|
|
4304
4326
|
|
|
4305
|
-
(
|
|
4306
|
-
|
|
4327
|
+
(correctResponseItems || []).forEach((correctResponse) => {
|
|
4328
|
+
if (answerCorrect) return;
|
|
4329
|
+
|
|
4330
|
+
const opts = {
|
|
4307
4331
|
mode: correctResponse.validation || defaults.validationDefault,
|
|
4308
4332
|
};
|
|
4309
4333
|
|
|
4310
|
-
if (opts.mode
|
|
4334
|
+
if (opts.mode === 'literal') {
|
|
4311
4335
|
opts.literal = {
|
|
4312
4336
|
allowTrailingZeros: correctResponse.allowTrailingZeros || false,
|
|
4313
4337
|
ignoreOrder: correctResponse.ignoreOrder || false,
|
|
4314
4338
|
};
|
|
4315
4339
|
}
|
|
4316
4340
|
|
|
4317
|
-
|
|
4318
|
-
|
|
4319
|
-
|
|
4320
|
-
Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),
|
|
4321
|
-
) || [];
|
|
4341
|
+
const acceptedValues = [correctResponse.answer].concat(
|
|
4342
|
+
Object.keys(correctResponse.alternates || {}).map((alternateId) => correctResponse.alternates[alternateId]),
|
|
4343
|
+
);
|
|
4322
4344
|
|
|
4345
|
+
for (let i = 0; i < acceptedValues.length; i++) {
|
|
4323
4346
|
try {
|
|
4324
|
-
|
|
4325
|
-
answerCorrect =
|
|
4326
|
-
|
|
4327
|
-
if (answerCorrect) {
|
|
4328
|
-
break;
|
|
4329
|
-
}
|
|
4347
|
+
if (mv.latexEqual(answerItem, acceptedValues[i], opts)) {
|
|
4348
|
+
answerCorrect = true;
|
|
4349
|
+
break;
|
|
4330
4350
|
}
|
|
4331
4351
|
} catch (e) {
|
|
4332
|
-
|
|
4333
|
-
|
|
4352
|
+
log('Parse failure when evaluating math', acceptedValues[i], answerItem, e);
|
|
4353
|
+
continue;
|
|
4334
4354
|
}
|
|
4335
4355
|
}
|
|
4336
4356
|
});
|
package/module/element.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@5.0
|
|
2
|
-
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@8.0
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@5.3.0/module/index.js";
|
|
2
|
+
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@8.3.0/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
5
5
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
@@ -11555,8 +11555,16 @@ var en = {};
|
|
|
11555
11555
|
},
|
|
11556
11556
|
charting: {
|
|
11557
11557
|
addCategory: 'Add category',
|
|
11558
|
+
actions: 'Actions',
|
|
11559
|
+
add: 'Add',
|
|
11560
|
+
"delete": 'Delete',
|
|
11558
11561
|
newLabel: 'New label',
|
|
11559
|
-
reachedLimit_other: "There can't be more than {{count}} categories."
|
|
11562
|
+
reachedLimit_other: "There can't be more than {{count}} categories.",
|
|
11563
|
+
keyLegend: {
|
|
11564
|
+
incorrectAnswer: 'Student incorrect answer',
|
|
11565
|
+
correctAnswer: 'Student correct answer',
|
|
11566
|
+
correctKeyAnswer: 'Answer key correct'
|
|
11567
|
+
}
|
|
11560
11568
|
},
|
|
11561
11569
|
graphing: {
|
|
11562
11570
|
point: 'Point',
|
|
@@ -11585,9 +11593,10 @@ var en = {};
|
|
|
11585
11593
|
minmaxSelections_range: 'Select between {{minSelections}} and {{maxSelections}}.'
|
|
11586
11594
|
},
|
|
11587
11595
|
selectText: {
|
|
11588
|
-
correctAnswerSelected: 'Correct
|
|
11589
|
-
correctAnswerNotSelected: 'Correct
|
|
11590
|
-
incorrectSelection: 'Incorrect
|
|
11596
|
+
correctAnswerSelected: 'Correct',
|
|
11597
|
+
correctAnswerNotSelected: 'Correct Answer Not Selected',
|
|
11598
|
+
incorrectSelection: 'Incorrect Selection',
|
|
11599
|
+
key: 'Key'
|
|
11591
11600
|
}
|
|
11592
11601
|
},
|
|
11593
11602
|
common: {
|
|
@@ -11649,8 +11658,16 @@ var es = {};
|
|
|
11649
11658
|
},
|
|
11650
11659
|
charting: {
|
|
11651
11660
|
addCategory: 'Añadir categoría',
|
|
11661
|
+
actions: 'Acciones',
|
|
11662
|
+
add: 'Añadir',
|
|
11663
|
+
"delete": 'Eliminar',
|
|
11652
11664
|
newLabel: 'Nueva etiqueta',
|
|
11653
|
-
reachedLimit_other: 'No puede haber más de {{count}} categorías.'
|
|
11665
|
+
reachedLimit_other: 'No puede haber más de {{count}} categorías.',
|
|
11666
|
+
keyLegend: {
|
|
11667
|
+
incorrectAnswer: 'Respuesta incorrecta del estudiante',
|
|
11668
|
+
correctAnswer: 'Respuesta correcta del estudiante',
|
|
11669
|
+
correctKeyAnswer: 'Clave de respuesta correcta'
|
|
11670
|
+
}
|
|
11654
11671
|
},
|
|
11655
11672
|
graphing: {
|
|
11656
11673
|
point: 'Punto',
|
|
@@ -11679,9 +11696,10 @@ var es = {};
|
|
|
11679
11696
|
minmaxSelections_range: 'Seleccione entre {{minSelections}} y {{maxSelections}}.'
|
|
11680
11697
|
},
|
|
11681
11698
|
selectText: {
|
|
11682
|
-
correctAnswerSelected: 'Respuesta
|
|
11683
|
-
correctAnswerNotSelected: 'Respuesta
|
|
11684
|
-
incorrectSelection: 'Selección
|
|
11699
|
+
correctAnswerSelected: 'Respuesta Correcta',
|
|
11700
|
+
correctAnswerNotSelected: 'Respuesta Correcta No Seleccionada',
|
|
11701
|
+
incorrectSelection: 'Selección Incorrecta',
|
|
11702
|
+
key: 'Clave'
|
|
11685
11703
|
}
|
|
11686
11704
|
},
|
|
11687
11705
|
common: {
|
package/module/manifest.json
CHANGED
package/module/print.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@5.0
|
|
2
|
-
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@8.0
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_pie_lib__pie_toolbox_math_rendering, _dll_lodash, _dll_pie_framework__mathquill, _dll_debug} from "../../../@pie-lib/pie-toolbox-math-rendering-module@5.3.0/module/index.js";
|
|
2
|
+
import {_dll_pie_lib__pie_toolbox_math_toolbar, _dll_pie_lib__pie_toolbox_math_input, _dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@8.3.0/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
5
5
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
@@ -11286,8 +11286,16 @@ var en = {};
|
|
|
11286
11286
|
},
|
|
11287
11287
|
charting: {
|
|
11288
11288
|
addCategory: 'Add category',
|
|
11289
|
+
actions: 'Actions',
|
|
11290
|
+
add: 'Add',
|
|
11291
|
+
"delete": 'Delete',
|
|
11289
11292
|
newLabel: 'New label',
|
|
11290
|
-
reachedLimit_other: "There can't be more than {{count}} categories."
|
|
11293
|
+
reachedLimit_other: "There can't be more than {{count}} categories.",
|
|
11294
|
+
keyLegend: {
|
|
11295
|
+
incorrectAnswer: 'Student incorrect answer',
|
|
11296
|
+
correctAnswer: 'Student correct answer',
|
|
11297
|
+
correctKeyAnswer: 'Answer key correct'
|
|
11298
|
+
}
|
|
11291
11299
|
},
|
|
11292
11300
|
graphing: {
|
|
11293
11301
|
point: 'Point',
|
|
@@ -11316,9 +11324,10 @@ var en = {};
|
|
|
11316
11324
|
minmaxSelections_range: 'Select between {{minSelections}} and {{maxSelections}}.'
|
|
11317
11325
|
},
|
|
11318
11326
|
selectText: {
|
|
11319
|
-
correctAnswerSelected: 'Correct
|
|
11320
|
-
correctAnswerNotSelected: 'Correct
|
|
11321
|
-
incorrectSelection: 'Incorrect
|
|
11327
|
+
correctAnswerSelected: 'Correct',
|
|
11328
|
+
correctAnswerNotSelected: 'Correct Answer Not Selected',
|
|
11329
|
+
incorrectSelection: 'Incorrect Selection',
|
|
11330
|
+
key: 'Key'
|
|
11322
11331
|
}
|
|
11323
11332
|
},
|
|
11324
11333
|
common: {
|
|
@@ -11380,8 +11389,16 @@ var es = {};
|
|
|
11380
11389
|
},
|
|
11381
11390
|
charting: {
|
|
11382
11391
|
addCategory: 'Añadir categoría',
|
|
11392
|
+
actions: 'Acciones',
|
|
11393
|
+
add: 'Añadir',
|
|
11394
|
+
"delete": 'Eliminar',
|
|
11383
11395
|
newLabel: 'Nueva etiqueta',
|
|
11384
|
-
reachedLimit_other: 'No puede haber más de {{count}} categorías.'
|
|
11396
|
+
reachedLimit_other: 'No puede haber más de {{count}} categorías.',
|
|
11397
|
+
keyLegend: {
|
|
11398
|
+
incorrectAnswer: 'Respuesta incorrecta del estudiante',
|
|
11399
|
+
correctAnswer: 'Respuesta correcta del estudiante',
|
|
11400
|
+
correctKeyAnswer: 'Clave de respuesta correcta'
|
|
11401
|
+
}
|
|
11385
11402
|
},
|
|
11386
11403
|
graphing: {
|
|
11387
11404
|
point: 'Punto',
|
|
@@ -11410,9 +11427,10 @@ var es = {};
|
|
|
11410
11427
|
minmaxSelections_range: 'Seleccione entre {{minSelections}} y {{maxSelections}}.'
|
|
11411
11428
|
},
|
|
11412
11429
|
selectText: {
|
|
11413
|
-
correctAnswerSelected: 'Respuesta
|
|
11414
|
-
correctAnswerNotSelected: 'Respuesta
|
|
11415
|
-
incorrectSelection: 'Selección
|
|
11430
|
+
correctAnswerSelected: 'Respuesta Correcta',
|
|
11431
|
+
correctAnswerNotSelected: 'Respuesta Correcta No Seleccionada',
|
|
11432
|
+
incorrectSelection: 'Selección Incorrecta',
|
|
11433
|
+
key: 'Clave'
|
|
11416
11434
|
}
|
|
11417
11435
|
},
|
|
11418
11436
|
common: {
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "8.
|
|
7
|
+
"version": "8.8.0",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"description": "",
|
|
10
10
|
"scripts": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"@material-ui/core": "^3.9.2",
|
|
15
15
|
"@pie-framework/mathquill": "^1.1.3",
|
|
16
16
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
17
|
-
"@pie-lib/pie-toolbox": "2.
|
|
17
|
+
"@pie-lib/pie-toolbox": "2.22.0",
|
|
18
18
|
"classnames": "^2.2.5",
|
|
19
19
|
"debug": "^4.1.1",
|
|
20
20
|
"lodash": "^4.17.10",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"author": "",
|
|
26
26
|
"license": "ISC",
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "dd63ede533364a1b0ff314c56027404314877feb",
|
|
28
28
|
"module": "src/index.js",
|
|
29
29
|
"exports": {
|
|
30
30
|
".": "./src/index.js",
|