@pie-element/inline-dropdown 6.1.4-next.3 → 6.1.4
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 +11 -0
- package/configure/CHANGELOG.md +11 -0
- package/configure/lib/defaults.js +11 -9
- package/configure/lib/defaults.js.map +1 -1
- package/configure/package.json +2 -2
- package/controller/CHANGELOG.md +11 -0
- package/controller/lib/defaults.js +16 -1
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +3 -7
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.1.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@6.1.3...@pie-element/inline-dropdown@6.1.4) (2024-10-22)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-toolbox PD-4220, PD-4194, PD-4201, PD-4189, PD-4193, PD-4018, PD-4187 ([47b14fb](https://github.com/pie-framework/pie-elements/commit/47b14fbd80a04494511bc0ae44196b4e0175f0bb))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [6.1.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@6.1.2...@pie-element/inline-dropdown@6.1.3) (2024-10-15)
|
|
7
18
|
|
|
8
19
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.0.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@6.0.6...@pie-element/inline-dropdown-configure@6.0.7) (2024-10-22)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-toolbox PD-4220, PD-4194, PD-4201, PD-4189, PD-4193, PD-4018, PD-4187 ([47b14fb](https://github.com/pie-framework/pie-elements/commit/47b14fbd80a04494511bc0ae44196b4e0175f0bb))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [6.0.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@6.0.5...@pie-element/inline-dropdown-configure@6.0.6) (2024-10-15)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -6,20 +6,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
var _default = {
|
|
8
8
|
model: {
|
|
9
|
+
alternateResponse: {},
|
|
10
|
+
choiceRationaleEnabled: true,
|
|
11
|
+
choices: {},
|
|
9
12
|
disabled: false,
|
|
10
|
-
|
|
11
|
-
prompt: 'Use the dropdowns to complete the sentence',
|
|
12
|
-
shuffle: true,
|
|
13
|
+
displayType: 'block',
|
|
13
14
|
markup: '',
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
mode: 'gather',
|
|
16
|
+
prompt: '',
|
|
16
17
|
promptEnabled: true,
|
|
18
|
+
rationale: '',
|
|
17
19
|
rationaleEnabled: true,
|
|
18
|
-
|
|
19
|
-
teacherInstructionsEnabled: true,
|
|
20
|
+
shuffle: true,
|
|
20
21
|
studentInstructionsEnabled: true,
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
teacherInstructions: '',
|
|
23
|
+
teacherInstructionsEnabled: true,
|
|
24
|
+
toolbarEditorPosition: 'bottom'
|
|
23
25
|
},
|
|
24
26
|
configuration: {
|
|
25
27
|
baseInputConfiguration: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","alternateResponse","choiceRationaleEnabled","choices","disabled","displayType","markup","mode","prompt","promptEnabled","rationale","rationaleEnabled","shuffle","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","audio","video","image","h3","blockquote","settings","label","required","inputConfiguration","responseAreaInputConfiguration","table","ul_list","ol_list","settingsPanelDisabled","spellCheck","enabled","lockChoiceOrder","partialScoring","template","choiceRationale","maxResponseAreas","maxResponseAreaChoices","maxImageWidth","maxImageHeight","withRubric","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,iBAAiB,EAAE,EADd;AAELC,IAAAA,sBAAsB,EAAE,IAFnB;AAGLC,IAAAA,OAAO,EAAE,EAHJ;AAILC,IAAAA,QAAQ,EAAE,KAJL;AAKLC,IAAAA,WAAW,EAAE,OALR;AAMLC,IAAAA,MAAM,EAAE,EANH;AAOLC,IAAAA,IAAI,EAAE,QAPD;AAQLC,IAAAA,MAAM,EAAE,EARH;AASLC,IAAAA,aAAa,EAAE,IATV;AAULC,IAAAA,SAAS,EAAE,EAVN;AAWLC,IAAAA,gBAAgB,EAAE,IAXb;AAYLC,IAAAA,OAAO,EAAE,IAZJ;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,mBAAmB,EAAE,EAdhB;AAeLC,IAAAA,0BAA0B,EAAE,IAfvB;AAgBLC,IAAAA,qBAAqB,EAAE;AAhBlB,GADM;AAmBbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,KAAK,EAAE;AAAEf,QAAAA,QAAQ,EAAE;AAAZ,OADe;AAEtBgB,MAAAA,KAAK,EAAE;AAAEhB,QAAAA,QAAQ,EAAE;AAAZ,OAFe;AAGtBiB,MAAAA,KAAK,EAAE;AAAEjB,QAAAA,QAAQ,EAAE;AAAZ,OAHe;AAItBkB,MAAAA,EAAE,EAAE;AAAElB,QAAAA,QAAQ,EAAE;AAAZ,OAJkB;AAKtBmB,MAAAA,UAAU,EAAE;AAAEnB,QAAAA,QAAQ,EAAE;AAAZ;AALU,KADX;AAQbI,IAAAA,MAAM,EAAE;AACNgB,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE,QAFD;AAGNC,MAAAA,QAAQ,EAAE,KAHJ;AAINC,MAAAA,kBAAkB,EAAE;AAClBR,QAAAA,KAAK,EAAE;AAAEf,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBgB,QAAAA,KAAK,EAAE;AAAEhB,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBiB,QAAAA,KAAK,EAAE;AAAEjB,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AAJd,KARK;AAkBbwB,IAAAA,8BAA8B,EAAE;AAC9BD,MAAAA,kBAAkB,EAAE;AAClBR,QAAAA,KAAK,EAAE;AAAEf,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBgB,QAAAA,KAAK,EAAE;AAAEhB,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBiB,QAAAA,KAAK,EAAE;AAAEjB,UAAAA,QAAQ,EAAE;AAAZ,SAHW;AAIlByB,QAAAA,KAAK,EAAE;AAAEzB,UAAAA,QAAQ,EAAE;AAAZ,SAJW;AAKlB0B,QAAAA,OAAO,EAAE;AAAE1B,UAAAA,QAAQ,EAAE;AAAZ,SALS;AAMlB2B,QAAAA,OAAO,EAAE;AAAE3B,UAAAA,QAAQ,EAAE;AAAZ;AANS;AADU,KAlBnB;AA4Bb4B,IAAAA,qBAAqB,EAAE,KA5BV;AA6BbC,IAAAA,UAAU,EAAE;AACVR,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAE,KAFA;AAGVU,MAAAA,OAAO,EAAE;AAHC,KA7BC;AAkCbC,IAAAA,eAAe,EAAE;AACfX,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KAlCJ;AAsCbW,IAAAA,cAAc,EAAE;AACdZ,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAtCH;AA0Cbf,IAAAA,SAAS,EAAE;AACTc,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE,WAFE;AAGTC,MAAAA,QAAQ,EAAE,KAHD;AAITC,MAAAA,kBAAkB,EAAE;AAClBR,QAAAA,KAAK,EAAE;AAAEf,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBgB,QAAAA,KAAK,EAAE;AAAEhB,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBiB,QAAAA,KAAK,EAAE;AAAEjB,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AAJX,KA1CE;AAoDbU,IAAAA,mBAAmB,EAAE;AACnBU,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE,sBAFY;AAGnBC,MAAAA,QAAQ,EAAE,KAHS;AAInBC,MAAAA,kBAAkB,EAAE;AAClBR,QAAAA,KAAK,EAAE;AAAEf,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBgB,QAAAA,KAAK,EAAE;AAAEhB,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBiB,QAAAA,KAAK,EAAE;AAAEjB,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AAJD,KApDR;AA8DbiC,IAAAA,QAAQ,EAAE;AACRV,MAAAA,kBAAkB,EAAE;AAClBR,QAAAA,KAAK,EAAE;AAAEf,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBgB,QAAAA,KAAK,EAAE;AAAEhB,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBiB,QAAAA,KAAK,EAAE;AAAEjB,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AADZ,KA9DG;AAqEbkC,IAAAA,eAAe,EAAE;AACfd,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KArEJ;AAyEbT,IAAAA,qBAAqB,EAAE;AACrBQ,MAAAA,QAAQ,EAAE,KADW;AAErBC,MAAAA,KAAK,EAAE;AAFc,KAzEV;AA6Ebc,IAAAA,gBAAgB,EAAE,EA7EL;AA8EbC,IAAAA,sBAAsB,EAAE,EA9EX;AA+EbC,IAAAA,aAAa,EAAE;AACb3B,MAAAA,mBAAmB,EAAE,GADR;AAEbN,MAAAA,MAAM,EAAE,GAFK;AAGbE,MAAAA,SAAS,EAAE;AAHE,KA/EF;AAoFbgC,IAAAA,cAAc,EAAE;AACd5B,MAAAA,mBAAmB,EAAE,GADP;AAEdN,MAAAA,MAAM,EAAE,GAFM;AAGdE,MAAAA,SAAS,EAAE;AAHG,KApFH;AAyFbiC,IAAAA,UAAU,EAAE;AACVnB,MAAAA,QAAQ,EAAE,KADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KAzFC;AA6FbmB,IAAAA,aAAa,EAAE;AACbC,MAAAA,SAAS,EAAE,KADE;AAEbC,MAAAA,UAAU,EAAE;AAFC,KA7FF;AAiGbC,IAAAA,QAAQ,EAAE;AACRvB,MAAAA,QAAQ,EAAE,KADF;AAERC,MAAAA,KAAK,EAAE,kBAFC;AAGRS,MAAAA,OAAO,EAAE;AAHD,KAjGG;AAsGbc,IAAAA,eAAe,EAAE;AACfvB,MAAAA,KAAK,EAAE,kBADQ;AAEfwB,MAAAA,OAAO,EAAE;AAFM;AAtGJ;AAnBF,C","sourcesContent":["export default {\n model: {\n alternateResponse: {},\n choiceRationaleEnabled: true,\n choices: {},\n disabled: false,\n displayType: 'block',\n markup: '',\n mode: 'gather',\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n shuffle: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n h3: { disabled: true },\n blockquote: { disabled: true },\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n responseAreaInputConfiguration: {\n inputConfiguration: {\n audio: { disabled: true },\n video: { disabled: true },\n image: { disabled: true },\n table: { disabled: true },\n ul_list: { disabled: true },\n ol_list: { disabled: true },\n },\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n template: {\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n choiceRationale: {\n settings: true,\n label: 'Choice Rationale',\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n maxResponseAreas: 10,\n maxResponseAreaChoices: 10,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n },\n};\n"],"file":"defaults.js"}
|
package/configure/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/inline-dropdown-configure",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.7",
|
|
4
4
|
"private": true,
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@material-ui/icons": "^3.0.1",
|
|
10
10
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
11
|
-
"@pie-lib/pie-toolbox": "2.0.
|
|
11
|
+
"@pie-lib/pie-toolbox": "2.0.14",
|
|
12
12
|
"classnames": "^2.2.6",
|
|
13
13
|
"debug": "^3.1.0",
|
|
14
14
|
"lodash": "^4.17.15",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.0.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@6.0.4...@pie-element/inline-dropdown-controller@6.0.5) (2024-10-22)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-toolbox PD-4220, PD-4194, PD-4201, PD-4189, PD-4193, PD-4018, PD-4187 ([47b14fb](https://github.com/pie-framework/pie-elements/commit/47b14fbd80a04494511bc0ae44196b4e0175f0bb))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [6.0.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@6.0.3...@pie-element/inline-dropdown-controller@6.0.4) (2024-10-15)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -5,7 +5,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
var _default = {
|
|
8
|
-
|
|
8
|
+
alternateResponse: {},
|
|
9
|
+
choiceRationaleEnabled: true,
|
|
10
|
+
choices: {},
|
|
11
|
+
disabled: false,
|
|
12
|
+
displayType: 'block',
|
|
13
|
+
markup: '',
|
|
14
|
+
mode: 'gather',
|
|
15
|
+
prompt: '',
|
|
16
|
+
promptEnabled: true,
|
|
17
|
+
rationale: '',
|
|
18
|
+
rationaleEnabled: true,
|
|
19
|
+
shuffle: true,
|
|
20
|
+
studentInstructionsEnabled: true,
|
|
21
|
+
teacherInstructions: '',
|
|
22
|
+
teacherInstructionsEnabled: true,
|
|
23
|
+
toolbarEditorPosition: 'bottom'
|
|
9
24
|
};
|
|
10
25
|
exports["default"] = _default;
|
|
11
26
|
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["choices"],"mappings":";;;;;;eAAe;AACbA,EAAAA,OAAO,EAAE;
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["alternateResponse","choiceRationaleEnabled","choices","disabled","displayType","markup","mode","prompt","promptEnabled","rationale","rationaleEnabled","shuffle","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition"],"mappings":";;;;;;eAAe;AACbA,EAAAA,iBAAiB,EAAE,EADN;AAEbC,EAAAA,sBAAsB,EAAE,IAFX;AAGbC,EAAAA,OAAO,EAAE,EAHI;AAIbC,EAAAA,QAAQ,EAAE,KAJG;AAKbC,EAAAA,WAAW,EAAE,OALA;AAMbC,EAAAA,MAAM,EAAE,EANK;AAObC,EAAAA,IAAI,EAAE,QAPO;AAQbC,EAAAA,MAAM,EAAE,EARK;AASbC,EAAAA,aAAa,EAAE,IATF;AAUbC,EAAAA,SAAS,EAAE,EAVE;AAWbC,EAAAA,gBAAgB,EAAE,IAXL;AAYbC,EAAAA,OAAO,EAAE,IAZI;AAabC,EAAAA,0BAA0B,EAAE,IAbf;AAcbC,EAAAA,mBAAmB,EAAE,EAdR;AAebC,EAAAA,0BAA0B,EAAE,IAff;AAgBbC,EAAAA,qBAAqB,EAAE;AAhBV,C","sourcesContent":["export default {\n alternateResponse: {},\n choiceRationaleEnabled: true,\n choices: {},\n disabled: false,\n displayType: 'block',\n markup: '',\n mode: 'gather',\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n shuffle: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n};\n"],"file":"defaults.js"}
|
package/controller/lib/index.js
CHANGED
|
@@ -25,6 +25,8 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
|
25
25
|
|
|
26
26
|
var _controllerUtils = require("@pie-lib/pie-toolbox/controller-utils");
|
|
27
27
|
|
|
28
|
+
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
29
|
+
|
|
28
30
|
var _utils = require("./utils");
|
|
29
31
|
|
|
30
32
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -40,13 +42,7 @@ var getFeedback = function getFeedback(correct) {
|
|
|
40
42
|
};
|
|
41
43
|
|
|
42
44
|
var normalize = function normalize(question) {
|
|
43
|
-
return _objectSpread({
|
|
44
|
-
promptEnabled: true,
|
|
45
|
-
rationaleEnabled: true,
|
|
46
|
-
teacherInstructionsEnabled: true,
|
|
47
|
-
studentInstructionsEnabled: true,
|
|
48
|
-
choiceRationaleEnabled: true
|
|
49
|
-
}, question);
|
|
45
|
+
return _objectSpread(_objectSpread({}, _defaults["default"]), question);
|
|
50
46
|
};
|
|
51
47
|
/**
|
|
52
48
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["getFeedback","correct","normalize","question","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","choiceRationaleEnabled","model","session","env","updateSession","Promise","resolve","normalizedQuestion","value","choices","obj","area","key","choice","feedback","mode","allCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","teacherInstructions","rationale","choicesWillNullRationales","reduce","acc","currentValue","map","role","out","disabled","prompt","displayType","markup","responseCorrect","getScore","undefined","language","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","id","getInnerText","html","replaceAll","getContent","replace","validate","maxResponseAreas","maxResponseAreaChoices","errors","field","required","nbOfResponseAreas","match","responseAreasError","choiceKey","responseAreaChoicesError"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAEA,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,OAAD,EAAa;AAC/B,MAAIA,OAAJ,EAAa;AACX,WAAO,SAAP;AACD;;AAED,SAAO,WAAP;AACD,CAND;;AAQO,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD;AAAA;AACvBC,IAAAA,aAAa,EAAE,IADQ;AAEvBC,IAAAA,gBAAgB,EAAE,IAFK;AAGvBC,IAAAA,0BAA0B,EAAE,IAHL;AAIvBC,IAAAA,0BAA0B,EAAE,IAJL;AAKvBC,IAAAA,sBAAsB,EAAE;AALD,KAMpBL,QANoB;AAAA,CAAlB;AASP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,SAASM,KAAT,CAAeN,QAAf,EAAyBO,OAAzB,EAAkCC,GAAlC,EAAuCC,aAAvC,EAAsD;AAC3D,SAAO,IAAIC,OAAJ;AAAA,6FAAY,iBAAOC,OAAP;AAAA;;AAAA;AAAA;AAAA;AAAA;AACXC,cAAAA,kBADW,GACUb,SAAS,CAACC,QAAD,CADnB;AAAA,sBAEMO,OAAO,IAAI,EAFjB,sBAETM,KAFS,EAETA,KAFS,4BAED,EAFC;AAGbC,cAAAA,OAHa,GAGH,wBACZF,kBAAkB,CAACE,OADP,EAEZ,UAACC,GAAD,EAAMC,IAAN,EAAYC,GAAZ,EAAoB;AAClBF,gBAAAA,GAAG,CAACE,GAAD,CAAH,GAAW,qBAAID,IAAJ,EAAU,UAACE,MAAD;AAAA,yBAAYA,MAAZ;AAAA,iBAAV,CAAX;AAEA,uBAAOH,GAAP;AACD,eANW,EAOZ,EAPY,CAHG;AAabI,cAAAA,QAba,GAaF,EAbE;;AAAA,oBAebX,GAAG,CAACY,IAAJ,KAAa,UAfA;AAAA;AAAA;AAAA;;AAgBTC,cAAAA,mBAhBS,GAgBa,mCAAuBT,kBAAvB,CAhBb;AAiBTU,cAAAA,cAjBS,GAiBQC,MAAM,CAACC,IAAP,CAAYH,mBAAZ,EAAiCI,MAjBzC;AAkBXC,cAAAA,gBAlBW,GAkBQ,CAlBR;;AAAA,qCAoBNC,CApBM;AAqBb,oBAAMC,MAAM,GAAG,wBACbP,mBADa,EAEb,UAACN,GAAD,EAAMD,OAAN,EAAeG,GAAf,EAAuB;AACrB,sBAAMY,MAAM,GAAIhB,KAAK,IAAIA,KAAK,CAACI,GAAD,CAAf,IAAyB,EAAxC;AACA,sBAAMa,aAAa,GAAGhB,OAAO,CAACa,CAAD,CAAP,IAAc,EAApC;AACA,sBAAMI,SAAS,GAAGF,MAAM,IAAIC,aAAV,IAA2BA,aAAa,KAAKD,MAA/D;AAEAd,kBAAAA,GAAG,CAACI,QAAJ,CAAaF,GAAb,IAAoBpB,WAAW,CAACkC,SAAD,CAA/B;;AAEA,sBAAIA,SAAJ,EAAe;AACbhB,oBAAAA,GAAG,CAACW,gBAAJ,IAAwB,CAAxB;AACD;;AAED,yBAAOX,GAAP;AACD,iBAdY,EAeb;AAAEW,kBAAAA,gBAAgB,EAAE,CAApB;AAAuBP,kBAAAA,QAAQ,EAAE;AAAjC,iBAfa,CAAf;;AAkBA,oBAAIS,MAAM,CAACF,gBAAP,IAA2BA,gBAA/B,EAAiD;AAC/CA,kBAAAA,gBAAgB,GAAGE,MAAM,CAACF,gBAA1B;AACAP,kBAAAA,QAAQ,GAAGS,MAAM,CAACT,QAAlB;AACD;;AAED,oBAAIS,MAAM,CAACF,gBAAP,KAA4BJ,cAAhC,EAAgD;AAC9C;AACD;AA9CY;;AAoBNK,cAAAA,CApBM,GAoBF,CApBE;;AAAA;AAAA,oBAoBCA,CAAC,GAAGL,cApBL;AAAA;AAAA;AAAA;;AAAA,2BAoBNK,CApBM;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAoBqBA,cAAAA,CAAC,EApBtB;AAAA;AAAA;;AAAA;AAkDXK,cAAAA,eAlDW,GAkDO,kCAAYpB,kBAAZ,EAAgCL,OAAhC,EAAyCC,GAAzC,CAlDP;;AAAA,kBAoDZwB,eApDY;AAAA;AAAA;AAAA;;AAqDTR,cAAAA,IArDS,GAqDFD,MAAM,CAACC,IAAP,CAAYV,OAAZ,CArDE;AAwDVa,cAAAA,EAAC,GAAG,CAxDM;;AAAA;AAAA,oBAwDHA,EAAC,GAAGH,IAAI,CAACC,MAxDN;AAAA;AAAA;AAAA;;AAyDPR,cAAAA,GAzDO,GAyDDO,IAAI,CAACG,EAAD,CAzDH;AAAA;AAAA,qBA2DQ,yCAAmBb,OAAO,CAACG,GAAD,CAA1B,EAAiCV,OAAjC,EAA0CE,aAA1C,EAAyD,OAAzD,CA3DR;;AAAA;AA2DbK,cAAAA,OAAO,CAACG,GAAD,CA3DM;;AAAA;AAwDcU,cAAAA,EAAC,EAxDf;AAAA;AAAA;;AAAA;AA+DbM,cAAAA,mBA/Da,GA+DS,IA/DT;AAgEbC,cAAAA,SAhEa,GAgED,IAhEC;AAkEXC,cAAAA,yBAlEW,GAkEiB,CAACZ,MAAM,CAACC,IAAP,CAAYV,OAAZ,KAAwB,EAAzB,EAA6BsB,MAA7B,CAAoC,UAACC,GAAD,EAAMC,YAAN,EAAuB;AAC3FD,gBAAAA,GAAG,CAACC,YAAD,CAAH,GAAoB,CAACxB,OAAO,CAACwB,YAAD,CAAP,IAAyB,EAA1B,EAA8BC,GAA9B,CAAkC,UAACrB,MAAD;AAAA,yDACjDA,MADiD;AAEpDgB,oBAAAA,SAAS,EAAE;AAFyC;AAAA,iBAAlC,CAApB;AAKA,uBAAOG,GAAP;AACD,eAPiC,EAO/B,EAP+B,CAlEjB;;AA2EjB,kBAAI7B,GAAG,CAACgC,IAAJ,KAAa,YAAb,KAA8BhC,GAAG,CAACY,IAAJ,KAAa,MAAb,IAAuBZ,GAAG,CAACY,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjFc,gBAAAA,SAAS,GAAGtB,kBAAkB,CAACV,gBAAnB,GAAsCU,kBAAkB,CAACsB,SAAzD,GAAqE,IAAjF;AACAD,gBAAAA,mBAAmB,GAAGrB,kBAAkB,CAACT,0BAAnB,GAClBS,kBAAkB,CAACqB,mBADD,GAElB,IAFJ;AAIAnB,gBAAAA,OAAO,GAAGF,kBAAkB,CAACP,sBAAnB,GAA4CO,kBAAkB,CAACE,OAA/D,GAAyEqB,yBAAnF;AACD,eAPD,MAOO;AACLD,gBAAAA,SAAS,GAAG,IAAZ;AACAD,gBAAAA,mBAAmB,GAAG,IAAtB;AACAnB,gBAAAA,OAAO,GAAGqB,yBAAV;AACD;;AAEKM,cAAAA,GAxFW,GAwFL;AACVC,gBAAAA,QAAQ,EAAElC,GAAG,CAACY,IAAJ,KAAa,QADb;AAEVA,gBAAAA,IAAI,EAAEZ,GAAG,CAACY,IAFA;AAGVuB,gBAAAA,MAAM,EAAE/B,kBAAkB,CAACX,aAAnB,GAAmCW,kBAAkB,CAAC+B,MAAtD,GAA+D,IAH7D;AAIVC,gBAAAA,WAAW,EAAEhC,kBAAkB,CAACgC,WAJtB;AAKVC,gBAAAA,MAAM,EAAEjC,kBAAkB,CAACiC,MALjB;AAMV/B,gBAAAA,OAAO,EAAPA,OANU;AAOVK,gBAAAA,QAAQ,EAARA,QAPU;AASV2B,gBAAAA,eAAe,EAAEtC,GAAG,CAACY,IAAJ,KAAa,UAAb,GAA0B2B,QAAQ,CAACnC,kBAAD,EAAqBL,OAArB,CAAR,KAA0C,CAApE,GAAwEyC,SAT/E;AAUVd,gBAAAA,SAAS,EAATA,SAVU;AAWVD,gBAAAA,mBAAmB,EAAnBA,mBAXU;AAYVgB,gBAAAA,QAAQ,EAAErC,kBAAkB,CAACqC;AAZnB,eAxFK;AAuGjBtC,cAAAA,OAAO,CAAC8B,GAAD,CAAP;;AAvGiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAZ;;AAAA;AAAA;AAAA;AAAA,MAAP;AAyGD;;AAEM,IAAMM,QAAQ,GAAG,SAAXA,QAAW,CAACG,MAAD,EAAS3C,OAAT,EAAqB;AAC3C,cAAuBA,OAAO,IAAI,EAAlC;AAAA,0BAAQM,KAAR;AAAA,MAAQA,KAAR,4BAAgB,EAAhB;;AACA,MAAMsC,QAAQ,GAAGD,MAAM,IAAIA,MAAM,CAACpC,OAAjB,GAA2BS,MAAM,CAACC,IAAP,CAAY0B,MAAM,CAACpC,OAAnB,EAA4BW,MAAvD,GAAgE,CAAjF;AACA,MAAMJ,mBAAmB,GAAG,mCAAuB6B,MAAvB,CAA5B;AACA,MAAIE,YAAY,GAAG,CAAnB;;AAJ2C,+BAMlCzB,CANkC;AAOzC,QAAMC,MAAM,GAAG,wBACbP,mBADa,EAEb,UAACgC,KAAD,EAAQvC,OAAR,EAAiBG,GAAjB,EAAyB;AACvB,UAAMY,MAAM,GAAIhB,KAAK,IAAIA,KAAK,CAACI,GAAD,CAAf,IAAyB,EAAxC;AACA,UAAMa,aAAa,GAAGhB,OAAO,CAACa,CAAD,CAAP,IAAc,EAApC;;AAEA,UAAIG,aAAa,IAAID,MAAjB,IAA2BC,aAAa,KAAKD,MAAjD,EAAyD;AACvD,eAAOwB,KAAP;AACD;;AAED,aAAOA,KAAK,GAAG,CAAf;AACD,KAXY,EAYbF,QAZa,CAAf;;AAeA,QAAIvB,MAAM,GAAGwB,YAAb,EAA2B;AACzBA,MAAAA,YAAY,GAAGxB,MAAf;AACD;;AAED,QAAIA,MAAM,KAAKuB,QAAf,EAAyB;AACvB;AACD;AA5BwC;;AAM3C,OAAK,IAAIxB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwB,QAApB,EAA8BxB,CAAC,EAA/B,EAAmC;AAAA,uBAA1BA,CAA0B;;AAAA,2BAqB/B;AAEH;;AAED,MAAM2B,GAAG,GAAG,CAACF,YAAY,GAAGD,QAAhB,EAA0BI,OAA1B,CAAkC,CAAlC,CAAZ;AAEA,SAAOC,UAAU,CAACF,GAAD,CAAjB;AACD,CAlCM;AAoCP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,SAASG,OAAT,CAAiBnD,KAAjB,EAAwBC,OAAxB,EAA2C;AAAA,MAAVC,GAAU,uEAAJ,EAAI;AAChD,SAAO,IAAIE,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAI,CAACJ,OAAD,IAAY,yBAAQA,OAAR,CAAhB,EAAkC;AAChCI,MAAAA,OAAO,CAAC;AAAE+C,QAAAA,KAAK,EAAE,CAAT;AAAYC,QAAAA,KAAK,EAAE;AAAnB,OAAD,CAAP;AACD;;AAED,QAAMC,qBAAqB,GAAGC,gCAAeC,OAAf,CAAuBxD,KAAvB,EAA8BE,GAA9B,CAA9B;;AACA,QAAMkD,KAAK,GAAGX,QAAQ,CAACzC,KAAD,EAAQC,OAAR,CAAtB;AAEAI,IAAAA,OAAO,CAAC;AACN+C,MAAAA,KAAK,EAAEE,qBAAqB,GAAGF,KAAH,GAAWK,IAAI,CAACC,KAAL,CAAWN,KAAX,CADjC;AAENC,MAAAA,KAAK,EAAE;AAFD,KAAD,CAAP;AAID,GAZM,CAAP;AAaD;;AAEM,IAAMM,4BAA4B,GAAG,SAA/BA,4BAA+B,CAACjE,QAAD,EAAWQ,GAAX,EAAmB;AAC7D,SAAO,IAAIE,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9B,QAAIH,GAAG,CAACY,IAAJ,KAAa,UAAb,IAA2BZ,GAAG,CAACgC,IAAJ,KAAa,YAA5C,EAA0D;AACxD,UAAQ1B,OAAR,GAAoBd,QAApB,CAAQc,OAAR;AACA,UAAMD,MAAK,GAAG,EAAd;;AAEA,UAAIC,OAAJ,EAAa;AACXS,QAAAA,MAAM,CAACC,IAAP,CAAYV,OAAZ,EAAqBoD,OAArB,CAA6B,UAACjD,GAAD,EAAMU,CAAN,EAAY;AACvC,cAAMwC,cAAc,GAAGrD,OAAO,CAACG,GAAD,CAAP,IAAgBH,OAAO,CAACG,GAAD,CAAP,CAAamD,MAAb,CAAoB,UAACC,CAAD;AAAA,mBAAOA,CAAC,CAACvE,OAAT;AAAA,WAApB,CAAvC;AAEAe,UAAAA,MAAK,CAACc,CAAD,CAAL,GAAWwC,cAAc,IAAIA,cAAc,CAAC,CAAD,CAAd,CAAkBtD,KAA/C;AACD,SAJD;AAKD;;AAEDF,MAAAA,OAAO,CAAC;AACN2D,QAAAA,EAAE,EAAE,GADE;AAENzD,QAAAA,KAAK,EAALA;AAFM,OAAD,CAAP;AAID,KAhBD,MAgBO;AACLF,MAAAA,OAAO,CAAC,IAAD,CAAP;AACD;AACF,GApBM,CAAP;AAqBD,CAtBM,C,CAwBP;;;;;AACA,IAAM4D,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,EAAaG,OAAb,CAAqB,6BAArB,EAAoD,EAApD,CAAV;AAAA,CAAnB;;AAEO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAA6B;AAAA,MAA5BtE,KAA4B,uEAApB,EAAoB;AAAA,MAAhB4C,MAAgB,uEAAP,EAAO;AACnD,MAAQL,MAAR,GAA4BvC,KAA5B,CAAQuC,MAAR;AAAA,MAAgB/B,OAAhB,GAA4BR,KAA5B,CAAgBQ,OAAhB;AACA,MAAQ+D,gBAAR,GAAqD3B,MAArD,CAAQ2B,gBAAR;AAAA,MAA0BC,sBAA1B,GAAqD5B,MAArD,CAA0B4B,sBAA1B;AACA,MAAMC,MAAM,GAAG,EAAf;AAEA,GAAC,qBAAD,EAAwB,QAAxB,EAAkC,WAAlC,EAA+Cb,OAA/C,CAAuD,UAACc,KAAD,EAAW;AAAA;;AAChE,QAAI,iBAAA9B,MAAM,CAAC8B,KAAD,CAAN,wDAAeC,QAAf,IAA2B,CAACP,UAAU,CAACpE,KAAK,CAAC0E,KAAD,CAAN,CAA1C,EAA0D;AACxDD,MAAAA,MAAM,CAACC,KAAD,CAAN,GAAgB,yBAAhB;AACD;AACF,GAJD;AAMA,MAAME,iBAAiB,GAAG,CAAC,CAACrC,MAAM,IAAI,EAAX,EAAesC,KAAf,CAAqB,gBAArB,KAA0C,EAA3C,EAA+C1D,MAAzE;;AAEA,MAAIyD,iBAAiB,GAAGL,gBAAxB,EAA0C;AACxCE,IAAAA,MAAM,CAACK,kBAAP,0BAA4CP,gBAA5C;AACD,GAFD,MAEO,IAAIK,iBAAiB,GAAG,CAAxB,EAA2B;AAChCH,IAAAA,MAAM,CAACK,kBAAP,GAA4B,mDAA5B;AACD;;AAED,GAAC7D,MAAM,CAACC,IAAP,CAAYV,OAAZ,KAAwB,EAAzB,EAA6BoD,OAA7B,CAAqC,UAACmB,SAAD,EAAe;AAClD,QAAIvE,OAAO,CAACuE,SAAD,CAAP,IAAsBvE,OAAO,CAACuE,SAAD,CAAP,CAAmB5D,MAAnB,GAA4BqD,sBAAtD,EAA8E;AAC5EC,MAAAA,MAAM,CAACO,wBAAP,0BAAkDR,sBAAlD;AACD;AACF,GAJD;AAMA,SAAOC,MAAP;AACD,CA1BM","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n choiceRationaleEnabled: true,\n ...question,\n});\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 function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {},\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect = answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const keys = Object.keys(choices);\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n choices[key] = await getShuffledChoices(choices[key], session, updateSession, 'value');\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce((acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n }, {});\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n rationale,\n teacherInstructions,\n language: normalizedQuestion.language,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore,\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices = choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\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 and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { markup, choices } = model;\n const { maxResponseAreas, maxResponseAreaChoices } = config;\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 const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/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 defined at least 1 response area.';\n }\n\n (Object.keys(choices) || []).forEach((choiceKey) => {\n if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {\n errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;\n }\n });\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["getFeedback","correct","normalize","question","defaults","model","session","env","updateSession","Promise","resolve","normalizedQuestion","value","choices","obj","area","key","choice","feedback","mode","allCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","teacherInstructions","rationale","choicesWillNullRationales","reduce","acc","currentValue","map","role","rationaleEnabled","teacherInstructionsEnabled","choiceRationaleEnabled","out","disabled","prompt","promptEnabled","displayType","markup","responseCorrect","getScore","undefined","language","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","id","getInnerText","html","replaceAll","getContent","replace","validate","maxResponseAreas","maxResponseAreaChoices","errors","field","required","nbOfResponseAreas","match","responseAreasError","choiceKey","responseAreaChoicesError"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport defaults from './defaults';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\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 function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {},\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect = answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const keys = Object.keys(choices);\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n choices[key] = await getShuffledChoices(choices[key], session, updateSession, 'value');\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce((acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n }, {});\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n rationale,\n teacherInstructions,\n language: normalizedQuestion.language,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore,\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices = choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\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 and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { markup, choices } = model;\n const { maxResponseAreas, maxResponseAreaChoices } = config;\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 const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/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 defined at least 1 response area.';\n }\n\n (Object.keys(choices) || []).forEach((choiceKey) => {\n if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {\n errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;\n }\n });\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/inline-dropdown-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "6.0.
|
|
4
|
+
"version": "6.0.5",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
8
8
|
"author": "",
|
|
9
9
|
"license": "ISC",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@pie-lib/pie-toolbox": "2.0.
|
|
11
|
+
"@pie-lib/pie-toolbox": "2.0.14",
|
|
12
12
|
"debug": "^3.1.0",
|
|
13
13
|
"lodash": "^4.17.15",
|
|
14
14
|
"type-of": "^2.0.1"
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "6.1.4
|
|
7
|
+
"version": "6.1.4",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"postpublish": "../../scripts/postpublish"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@material-ui/core": "^3.9.2",
|
|
14
14
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
15
|
-
"@pie-lib/pie-toolbox": "2.0.
|
|
15
|
+
"@pie-lib/pie-toolbox": "2.0.14",
|
|
16
16
|
"classnames": "^2.2.5",
|
|
17
17
|
"lodash": "^4.17.10",
|
|
18
18
|
"prop-types": "^15.6.1",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"author": "",
|
|
23
23
|
"license": "ISC",
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "e017f0f51cfcabb6300719a2fa2309277404ce01",
|
|
25
25
|
"main": "lib/index.js",
|
|
26
26
|
"module": "src/index.js"
|
|
27
27
|
}
|