@pie-element/inline-dropdown 3.10.6-next.3 → 3.11.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 +29 -0
- package/LICENSE.md +5 -0
- package/configure/CHANGELOG.md +25 -0
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/index.js +1 -1
- package/configure/lib/inline-dropdown-toolbar.js +1 -1
- package/configure/lib/main.js +54 -8
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +1 -1
- package/configure/lib/utils.js +16 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +4 -4
- package/controller/CHANGELOG.md +13 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +21 -1
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +1 -1
- package/controller/package.json +1 -1
- package/lib/index.js +1 -1
- package/lib/inline-dropdown.js +1 -1
- package/package.json +6 -6
- package/configure/lib/__tests__/inline-dropdown-toolbar.test.js +0 -124
- package/configure/lib/__tests__/main.test.js +0 -516
- package/configure/lib/__tests__/markupUtils.test.js +0 -108
- package/controller/lib/__tests__/index.test.js +0 -942
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/inline-dropdown.test.js +0 -121
|
@@ -67,4 +67,4 @@ var createSlateMarkup = function createSlateMarkup(markup, choices) {
|
|
|
67
67
|
};
|
|
68
68
|
|
|
69
69
|
exports.createSlateMarkup = createSlateMarkup;
|
|
70
|
-
//# sourceMappingURL=
|
|
70
|
+
//# sourceMappingURL=markupUtils.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.generateValidationMessage = void 0;
|
|
7
|
+
|
|
8
|
+
var generateValidationMessage = function generateValidationMessage(config) {
|
|
9
|
+
var maxResponseAreas = config.maxResponseAreas;
|
|
10
|
+
var responseAreasMessage = '\nThere should be at least 1 ' + (maxResponseAreas ? "and at most ".concat(maxResponseAreas, " ") : '') + 'response area' + (maxResponseAreas ? 's' : '') + ' defined.';
|
|
11
|
+
var message = 'Validation requirements:' + responseAreasMessage;
|
|
12
|
+
return message;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.generateValidationMessage = generateValidationMessage;
|
|
16
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.js"],"names":["generateValidationMessage","config","maxResponseAreas","responseAreasMessage","message"],"mappings":";;;;;;;AAAO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,CAAAC,MAAM,EAAI;AACjD,MAAQC,gBAAR,GAA6BD,MAA7B,CAAQC,gBAAR;AAEA,MAAMC,oBAAoB,GAAG,mCAC1BD,gBAAgB,yBAAkBA,gBAAlB,SAAwC,EAD9B,IAE3B,eAF2B,IAERA,gBAAgB,GAAG,GAAH,GAAS,EAFjB,IAEuB,WAFpD;AAIA,MAAME,OAAO,GAAG,6BAA6BD,oBAA7C;AAEA,SAAOC,OAAP;AACD,CAVM","sourcesContent":["export const generateValidationMessage = config => {\n const { maxResponseAreas } = config;\n\n const responseAreasMessage = '\\nThere should be at least 1 ' +\n (maxResponseAreas ? `and at most ${maxResponseAreas} ` : '') +\n 'response area' + (maxResponseAreas ? 's' : '') + ' defined.';\n\n const message = 'Validation requirements:' + responseAreasMessage;\n\n return message;\n};\n"],"file":"utils.js"}
|
package/configure/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/inline-dropdown-configure",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"private": true,
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@material-ui/icons": "^3.0.1",
|
|
10
10
|
"@pie-framework/pie-configure-events": "^1.2.0",
|
|
11
|
-
"@pie-lib/config-ui": "^10.
|
|
12
|
-
"@pie-lib/editable-html": "^7.
|
|
13
|
-
"@pie-lib/math-rendering": "^2.
|
|
11
|
+
"@pie-lib/config-ui": "^10.12.1",
|
|
12
|
+
"@pie-lib/editable-html": "^7.22.1",
|
|
13
|
+
"@pie-lib/math-rendering": "^2.4.0",
|
|
14
14
|
"classnames": "^2.2.6",
|
|
15
15
|
"debug": "^3.1.0",
|
|
16
16
|
"lodash": "^4.17.15",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
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
|
+
# [3.4.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@3.3.5...@pie-element/inline-dropdown-controller@3.4.0) (2022-05-03)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **inline-dropdown:** added configurable validation ([268a876](https://github.com/pie-framework/pie-elements/commit/268a8766c963a35aa7ca2f3831b870f411d1ad10))
|
|
12
|
+
* **inline-dropdown:** added configurable validation PD-1698 ([c326731](https://github.com/pie-framework/pie-elements/commit/c3267310c3620037402b722104dcdf0358e74d42))
|
|
13
|
+
* **inline-dropdown:** added configurable validation PD-1698 ([68405ab](https://github.com/pie-framework/pie-elements/commit/68405ab78680cdc7fda1d893c78ebb4880fbed86))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
6
19
|
## [3.3.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@3.3.4...@pie-element/inline-dropdown-controller@3.3.5) (2022-03-22)
|
|
7
20
|
|
|
8
21
|
**Note:** Version bump only for package @pie-element/inline-dropdown-controller
|
|
@@ -8,4 +8,4 @@ var _default = {
|
|
|
8
8
|
choices: {}
|
|
9
9
|
};
|
|
10
10
|
exports["default"] = _default;
|
|
11
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=defaults.js.map
|
package/controller/lib/index.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.getScore = exports.createCorrectResponseSession = void 0;
|
|
|
9
9
|
exports.model = model;
|
|
10
10
|
exports.normalize = void 0;
|
|
11
11
|
exports.outcome = outcome;
|
|
12
|
+
exports.validate = void 0;
|
|
12
13
|
|
|
13
14
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
14
15
|
|
|
@@ -315,4 +316,23 @@ var createCorrectResponseSession = function createCorrectResponseSession(questio
|
|
|
315
316
|
};
|
|
316
317
|
|
|
317
318
|
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
318
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJnZXRGZWVkYmFjayIsImNvcnJlY3QiLCJub3JtYWxpemUiLCJxdWVzdGlvbiIsInByb21wdEVuYWJsZWQiLCJyYXRpb25hbGVFbmFibGVkIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZCIsImNob2ljZVJhdGlvbmFsZUVuYWJsZWQiLCJtb2RlbCIsInNlc3Npb24iLCJlbnYiLCJ1cGRhdGVTZXNzaW9uIiwiUHJvbWlzZSIsInJlc29sdmUiLCJub3JtYWxpemVkUXVlc3Rpb24iLCJ2YWx1ZSIsImNob2ljZXMiLCJvYmoiLCJhcmVhIiwia2V5IiwiY2hvaWNlIiwiZmVlZGJhY2siLCJtb2RlIiwiYWxsQ29ycmVjdFJlc3BvbnNlcyIsInJlc3BBcmVhTGVuZ3RoIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImNvcnJlY3RSZXNwb25zZXMiLCJpIiwicmVzdWx0IiwiYW5zd2VyIiwiY29ycmVjdENob2ljZSIsImlzQ29ycmVjdCIsImxvY2tDaG9pY2VPcmRlciIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJyYXRpb25hbGUiLCJjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzIiwicmVkdWNlIiwiYWNjIiwiY3VycmVudFZhbHVlIiwibWFwIiwicm9sZSIsIm91dCIsImRpc2FibGVkIiwicHJvbXB0IiwiZGlzcGxheVR5cGUiLCJtYXJrdXAiLCJyZXNwb25zZUNvcnJlY3QiLCJnZXRTY29yZSIsInVuZGVmaW5lZCIsImNvbmZpZyIsIm1heFNjb3JlIiwiY29ycmVjdENvdW50IiwidG90YWwiLCJzdHIiLCJ0b0ZpeGVkIiwicGFyc2VGbG9hdCIsIm91dGNvbWUiLCJzY29yZSIsImVtcHR5IiwicGFydGlhbFNjb3JpbmdFbmFibGVkIiwicGFydGlhbFNjb3JpbmciLCJlbmFibGVkIiwiTWF0aCIsImZsb29yIiwiY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lv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bUJBQU9BLENBQUMsQ0FBQ3RFLE9BQVQ7QUFBQSxXQUFwQixDQURsQjtBQUdBZSxVQUFBQSxNQUFLLENBQUNjLENBQUQsQ0FBTCxHQUFXdUMsY0FBYyxJQUFJQSxjQUFjLENBQUMsQ0FBRCxDQUFkLENBQWtCckQsS0FBL0M7QUFDRCxTQUxEO0FBTUQ7O0FBRURGLE1BQUFBLE9BQU8sQ0FBQztBQUNOMEQsUUFBQUEsRUFBRSxFQUFFLEdBREU7QUFFTnhELFFBQUFBLEtBQUssRUFBTEE7QUFGTSxPQUFELENBQVA7QUFJRCxLQWpCRCxNQWlCTztBQUNMRixNQUFBQSxPQUFPLENBQUMsSUFBRCxDQUFQO0FBQ0Q7QUFDRixHQXJCTSxDQUFQO0FBc0JELENBdkJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1hcCBmcm9tICdsb2Rhc2gvbWFwJztcbmltcG9ydCByZWR1Y2UgZnJvbSAnbG9kYXNoL3JlZHVjZSc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQge1xuICBsb2NrQ2hvaWNlcyxcbiAgZ2V0U2h1ZmZsZWRDaG9pY2VzLFxuICBwYXJ0aWFsU2NvcmluZyxcbn0gZnJvbSAnQHBpZS1saWIvY29udHJvbGxlci11dGlscyc7XG5cbmltcG9ydCB7IGdldEFsbENvcnJlY3RSZXNwb25zZXMgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgZ2V0RmVlZGJhY2sgPSAoY29ycmVjdCkgPT4ge1xuICBpZiAoY29ycmVjdCkge1xuICAgIHJldHVybiAnY29ycmVjdCc7XG4gIH1cblxuICByZXR1cm4gJ2luY29ycmVjdCc7XG59O1xuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplID0gKHF1ZXN0aW9uKSA9PiAoe1xuICBwcm9tcHRFbmFibGVkOiB0cnVlLFxuICByYXRpb25hbGVFbmFibGVkOiB0cnVlLFxuICB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgc3R1ZGVudEluc3RydWN0aW9uc0VuYWJsZWQ6IHRydWUsXG4gIGNob2ljZVJhdGlvbmFsZUVuYWJsZWQ6IHRydWUsXG4gIC4uLnF1ZXN0aW9uLFxufSk7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7Kn0gcXVlc3Rpb25cbiAqIEBwYXJhbSB7Kn0gc2Vzc2lvblxuICogQHBhcmFtIHsqfSBlbnZcbiAqIEBwYXJhbSB7Kn0gdXBkYXRlU2Vzc2lvbiAtIG9wdGlvbmFsIC0gYSBmdW5jdGlvbiB0aGF0IHdpbGwgc2V0IHRoZSBwcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIGl0IG9uIHRoZSBzZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWwocXVlc3Rpb24sIHNlc3Npb24sIGVudiwgdXBkYXRlU2Vzc2lvbikge1xuICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkUXVlc3Rpb24gPSBub3JtYWxpemUocXVlc3Rpb24pO1xuICAgIGNvbnN0IHsgdmFsdWUgPSB7fSB9ID0gc2Vzc2lvbiB8fCB7fTtcbiAgICBsZXQgY2hvaWNlcyA9IHJlZHVjZShcbiAgICAgIG5vcm1hbGl6ZWRRdWVzdGlvbi5jaG9pY2VzLFxuICAgICAgKG9iaiwgYXJlYSwga2V5KSA9PiB7XG4gICAgICAgIG9ialtrZXldID0gbWFwKGFyZWEsIChjaG9pY2UpID0+IGNob2ljZSk7XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBsZXQgZmVlZGJhY2sgPSB7fTtcblxuICAgIGlmIChlbnYubW9kZSA9PT0gJ2V2YWx1YXRlJykge1xuICAgICAgY29uc3QgYWxsQ29ycmVjdFJlc3BvbnNlcyA9IGdldEFsbENvcnJlY3RSZXNwb25zZXMobm9ybWFsaXplZFF1ZXN0aW9uKTtcbiAgICAgIGNvbnN0IHJlc3BBcmVhTGVuZ3RoID0gT2JqZWN0LmtleXMoYWxsQ29ycmVjdFJlc3BvbnNlcykubGVuZ3RoO1xuICAgICAgbGV0IGNvcnJlY3RSZXNwb25zZXMgPSAwO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3BBcmVhTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVkdWNlKFxuICAgICAgICAgIGFsbENvcnJlY3RSZXNwb25zZXMsXG4gICAgICAgICAgKG9iaiwgY2hvaWNlcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbnN3ZXIgPSAodmFsdWUgJiYgdmFsdWVba2V5XSkgfHwgJyc7XG4gICAgICAgICAgICBjb25zdCBjb3JyZWN0Q2hvaWNlID0gY2hvaWNlc1tpXSB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IGlzQ29ycmVjdCA9XG4gICAgICAgICAgICAgIGFuc3dlciAmJiBjb3JyZWN0Q2hvaWNlICYmIGNvcnJlY3RDaG9pY2UgPT09IGFuc3dlcjtcblxuICAgICAgICAgICAgb2JqLmZlZWRiYWNrW2tleV0gPSBnZXRGZWVkYmFjayhpc0NvcnJlY3QpO1xuXG4gICAgICAgICAgICBpZiAoaXNDb3JyZWN0KSB7XG4gICAgICAgICAgICAgIG9iai5jb3JyZWN0UmVzcG9uc2VzICs9IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGNvcnJlY3RSZXNwb25zZXM6IDAsIGZlZWRiYWNrOiB7fSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5jb3JyZWN0UmVzcG9uc2VzID49IGNvcnJlY3RSZXNwb25zZXMpIHtcbiAgICAgICAgICBjb3JyZWN0UmVzcG9uc2VzID0gcmVzdWx0LmNvcnJlY3RSZXNwb25zZXM7XG4gICAgICAgICAgZmVlZGJhY2sgPSByZXN1bHQuZmVlZGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0LmNvcnJlY3RSZXNwb25zZXMgPT09IHJlc3BBcmVhTGVuZ3RoKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBsb2NrQ2hvaWNlT3JkZXIgPSBsb2NrQ2hvaWNlcyhub3JtYWxpemVkUXVlc3Rpb24sIHNlc3Npb24sIGVudik7XG5cbiAgICBpZiAoIWxvY2tDaG9pY2VPcmRlcikge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNob2ljZXMpO1xuICAgICAgbGV0IGk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG5cbiAgICAgICAgY2hvaWNlc1trZXldID0gYXdhaXQgZ2V0U2h1ZmZsZWRDaG9pY2VzKFxuICAgICAgICAgIGNob2ljZXNba2V5XSxcbiAgICAgICAgICBzZXNzaW9uLFxuICAgICAgICAgIHVwZGF0ZVNlc3Npb24sXG4gICAgICAgICAgJ3ZhbHVlJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0gbnVsbDtcbiAgICBsZXQgcmF0aW9uYWxlID0gbnVsbDtcblxuICAgIGNvbnN0IGNob2ljZXNXaWxsTnVsbFJhdGlvbmFsZXMgPSAoT2JqZWN0LmtleXMoY2hvaWNlcykgfHwgW10pLnJlZHVjZShcbiAgICAgIChhY2MsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICBhY2NbY3VycmVudFZhbHVlXSA9IChjaG9pY2VzW2N1cnJlbnRWYWx1ZV0gfHwgW10pLm1hcCgoY2hvaWNlKSA9PiAoe1xuICAgICAgICAgIC4uLmNob2ljZSxcbiAgICAgICAgICByYXRpb25hbGU6IG51bGwsXG4gICAgICAgIH0pKTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGlmIChcbiAgICAgIGVudi5yb2xlID09PSAnaW5zdHJ1Y3RvcicgJiZcbiAgICAgIChlbnYubW9kZSA9PT0gJ3ZpZXcnIHx8IGVudi5tb2RlID09PSAnZXZhbHVhdGUnKVxuICAgICkge1xuICAgICAgcmF0aW9uYWxlID0gbm9ybWFsaXplZFF1ZXN0aW9uLnJhdGlvbmFsZUVuYWJsZWRcbiAgICAgICAgPyBub3JtYWxpemVkUXVlc3Rpb24ucmF0aW9uYWxlXG4gICAgICAgIDogbnVsbDtcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMgPSBub3JtYWxpemVkUXVlc3Rpb24udGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWRcbiAgICAgICAgPyBub3JtYWxpemVkUXVlc3Rpb24udGVhY2hlckluc3RydWN0aW9uc1xuICAgICAgICA6IG51bGw7XG5cbiAgICAgIGNob2ljZXMgPSBub3JtYWxpemVkUXVlc3Rpb24uY2hvaWNlUmF0aW9uYWxlRW5hYmxlZFxuICAgICAgICA/IG5vcm1hbGl6ZWRRdWVzdGlvbi5jaG9pY2VzXG4gICAgICAgIDogY2hvaWNlc1dpbGxOdWxsUmF0aW9uYWxlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmF0aW9uYWxlID0gbnVsbDtcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMgPSBudWxsO1xuICAgICAgY2hvaWNlcyA9IGNob2ljZXNXaWxsTnVsbFJhdGlvbmFsZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0ID0ge1xuICAgICAgZGlzYWJsZWQ6IGVudi5tb2RlICE9PSAnZ2F0aGVyJyxcbiAgICAgIG1vZGU6IGVudi5tb2RlLFxuICAgICAgcHJvbXB0OiBub3JtYWxpemVkUXVlc3Rpb24ucHJvbXB0RW5hYmxlZFxuICAgICAgICA/IG5vcm1hbGl6ZWRRdWVzdGlvbi5wcm9tcHRcbiAgICAgICAgOiBudWxsLFxuICAgICAgICBkaXNwbGF5VHlwZTogbm9ybWFsaXplZFF1ZXN0aW9uLmRpc3BsYXlUeXBlLFxuICAgICAgbWFya3VwOiBub3JtYWxpemVkUXVlc3Rpb24ubWFya3VwLFxuICAgICAgY2hvaWNlcyxcbiAgICAgIGZlZWRiYWNrLFxuXG4gICAgICByZXNwb25zZUNvcnJlY3Q6XG4gICAgICAgIGVudi5tb2RlID09PSAnZXZhbHVhdGUnXG4gICAgICAgICAgPyBnZXRTY29yZShub3JtYWxpemVkUXVlc3Rpb24sIHNlc3Npb24pID09PSAxXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByYXRpb25hbGUsXG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zLFxuICAgIH07XG5cbiAgICByZXNvbHZlKG91dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0U2NvcmUgPSAoY29uZmlnLCBzZXNzaW9uKSA9PiB7XG4gIGNvbnN0IHsgdmFsdWUgPSB7fSB9ID0gc2Vzc2lvbiB8fCB7fTtcbiAgY29uc3QgbWF4U2NvcmUgPVxuICAgIGNvbmZpZyAmJiBjb25maWcuY2hvaWNlcyA/IE9iamVjdC5rZXlzKGNvbmZpZy5jaG9pY2VzKS5sZW5ndGggOiAwO1xuICBjb25zdCBhbGxDb3JyZWN0UmVzcG9uc2VzID0gZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyhjb25maWcpO1xuICBsZXQgY29ycmVjdENvdW50ID0gMDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFNjb3JlOyBpKyspIHtcbiAgICBjb25zdCByZXN1bHQgPSByZWR1Y2UoXG4gICAgICBhbGxDb3JyZWN0UmVzcG9uc2VzLFxuICAgICAgKHRvdGFsLCBjaG9pY2VzLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgYW5zd2VyID0gKHZhbHVlICYmIHZhbHVlW2tleV0pIHx8ICcnO1xuICAgICAgICBjb25zdCBjb3JyZWN0Q2hvaWNlID0gY2hvaWNlc1tpXSB8fCAnJztcblxuICAgICAgICBpZiAoY29ycmVjdENob2ljZSAmJiBhbnN3ZXIgJiYgY29ycmVjdENob2ljZSA9PT0gYW5zd2VyKSB7XG4gICAgICAgICAgcmV0dXJuIHRvdGFsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRvdGFsIC0gMTtcbiAgICAgIH0sXG4gICAgICBtYXhTY29yZVxuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID4gY29ycmVjdENvdW50KSB7XG4gICAgICBjb3JyZWN0Q291bnQgPSByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9PT0gbWF4U2NvcmUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ciA9IChjb3JyZWN0Q291bnQgLyBtYXhTY29yZSkudG9GaXhlZCgyKTtcblxuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpO1xufTtcblxuLyoqXG4gKlxuICogVGhlIHNjb3JlIGlzIHBhcnRpYWwgYnkgZGVmYXVsdCBmb3IgY2hlY2tib3ggbW9kZSwgYWxsT3JOb3RoaW5nIGZvciByYWRpbyBtb2RlLlxuICogVG8gZGlzYWJsZSBwYXJ0aWFsIHNjb3JpbmcgZm9yIGNoZWNrYm94IG1vZGUgeW91IGVpdGhlciBzZXQgbW9kZWwucGFydGlhbFNjb3JpbmcgPSBmYWxzZSBvciBlbnYucGFydGlhbFNjb3JpbmcgPVxuICogZmFsc2UuIHRoZSB2YWx1ZSBpbiBgZW52YCB3aWxsIG92ZXJyaWRlIHRoZSB2YWx1ZSBpbiBgbW9kZWxgLlxuICogQHBhcmFtIHtPYmplY3R9IG1vZGVsIC0gdGhlIG1haW4gbW9kZWxcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbW9kZWwucGFydGlhbFNjb3JpbmcgLSBpcyBwYXJ0aWFsIHNjb3JpbmcgZW5hYmxlZCAoaWYgdW5kZWZpbmVkIHNldCB0byB0byB0cnVlKVxuICogQHBhcmFtIHsqfSBzZXNzaW9uXG4gKiBAcGFyYW0ge09iamVjdH0gZW52XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGVudi5wYXJ0aWFsU2NvcmluZyAtIGlzIHBhcnRpYWwgc2NvcmluZyBlbmFibGVkIChpZiB1bmRlZmluZWQgZGVmYXVsdCB0byB0cnVlKSBUaGlzIG92ZXJyaWRlc1xuICogICBgbW9kZWwucGFydGlhbFNjb3JpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb3V0Y29tZShtb2RlbCwgc2Vzc2lvbiwgZW52ID0ge30pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgaWYgKCFzZXNzaW9uIHx8IGlzRW1wdHkoc2Vzc2lvbikpIHtcbiAgICAgIHJlc29sdmUoeyBzY29yZTogMCwgZW1wdHk6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFydGlhbFNjb3JpbmdFbmFibGVkID0gcGFydGlhbFNjb3JpbmcuZW5hYmxlZChtb2RlbCwgZW52KTtcbiAgICBjb25zdCBzY29yZSA9IGdldFNjb3JlKG1vZGVsLCBzZXNzaW9uKTtcblxuICAgIHJlc29sdmUoe1xuICAgICAgc2NvcmU6IHBhcnRpYWxTY29yaW5nRW5hYmxlZCA/IHNjb3JlIDogTWF0aC5mbG9vcihzY29yZSksXG4gICAgICBlbXB0eTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbiA9IChxdWVzdGlvbiwgZW52KSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGlmIChlbnYubW9kZSAhPT0gJ2V2YWx1YXRlJyAmJiBlbnYucm9sZSA9PT0gJ2luc3RydWN0b3InKSB7XG4gICAgICBjb25zdCB7IGNob2ljZXMgfSA9IHF1ZXN0aW9uO1xuICAgICAgY29uc3QgdmFsdWUgPSB7fTtcblxuICAgICAgaWYgKGNob2ljZXMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY2hvaWNlcykuZm9yRWFjaCgoa2V5LCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29ycmVjdENob2ljZXMgPVxuICAgICAgICAgICAgY2hvaWNlc1trZXldICYmIGNob2ljZXNba2V5XS5maWx0ZXIoKGMpID0+IGMuY29ycmVjdCk7XG5cbiAgICAgICAgICB2YWx1ZVtpXSA9IGNvcnJlY3RDaG9pY2VzICYmIGNvcnJlY3RDaG9pY2VzWzBdLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGlkOiAnMScsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgfVxuICB9KTtcbn07XG4iXX0=
|
|
319
|
+
|
|
320
|
+
var validate = function validate() {
|
|
321
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
322
|
+
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
323
|
+
var markup = model.markup;
|
|
324
|
+
var maxResponseAreas = config.maxResponseAreas;
|
|
325
|
+
var errors = {};
|
|
326
|
+
var nbOfResponseAreas = (markup.match(/\{\{(\d+)\}\}/g) || []).length;
|
|
327
|
+
|
|
328
|
+
if (nbOfResponseAreas > maxResponseAreas) {
|
|
329
|
+
errors.responseAreasError = "No more than ".concat(maxResponseAreas, " response areas should be defined.");
|
|
330
|
+
} else if (nbOfResponseAreas < 1) {
|
|
331
|
+
errors.responseAreasError = 'There should be defined at least 1 response area.';
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return errors;
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
exports.validate = validate;
|
|
338
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -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","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","id"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n lockChoices,\n getShuffledChoices,\n partialScoring,\n} from '@pie-lib/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 =\n 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(\n choices[key],\n session,\n updateSession,\n 'value'\n );\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce(\n (acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n },\n {}\n );\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n rationale = normalizedQuestion.rationaleEnabled\n ? normalizedQuestion.rationale\n : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled\n ? normalizedQuestion.choices\n : 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\n ? normalizedQuestion.prompt\n : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect:\n env.mode === 'evaluate'\n ? getScore(normalizedQuestion, session) === 1\n : undefined,\n rationale,\n teacherInstructions,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore =\n 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 =\n 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"],"file":"index.js"}
|
|
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","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","id","validate","maxResponseAreas","errors","nbOfResponseAreas","match","responseAreasError"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n lockChoices,\n getShuffledChoices,\n partialScoring,\n} from '@pie-lib/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 =\n 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(\n choices[key],\n session,\n updateSession,\n 'value'\n );\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce(\n (acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n },\n {}\n );\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n rationale = normalizedQuestion.rationaleEnabled\n ? normalizedQuestion.rationale\n : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled\n ? normalizedQuestion.choices\n : 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\n ? normalizedQuestion.prompt\n : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect:\n env.mode === 'evaluate'\n ? getScore(normalizedQuestion, session) === 1\n : undefined,\n rationale,\n teacherInstructions,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore =\n 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 =\n 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\nexport const validate = (model = {}, config = {}) => {\n const { markup } = model;\n const { maxResponseAreas } = config;\n const errors = {};\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 return errors;\n};\n"],"file":"index.js"}
|
package/controller/lib/utils.js
CHANGED
|
@@ -37,4 +37,4 @@ var getAllCorrectResponses = function getAllCorrectResponses(_ref) {
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
exports.getAllCorrectResponses = getAllCorrectResponses;
|
|
40
|
-
//# sourceMappingURL=
|
|
40
|
+
//# sourceMappingURL=utils.js.map
|
package/controller/package.json
CHANGED
package/lib/index.js
CHANGED
|
@@ -111,4 +111,4 @@ var RootInlineDropdown = /*#__PURE__*/function (_HTMLElement) {
|
|
|
111
111
|
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
112
112
|
|
|
113
113
|
exports["default"] = RootInlineDropdown;
|
|
114
|
-
//# sourceMappingURL=
|
|
114
|
+
//# sourceMappingURL=index.js.map
|
package/lib/inline-dropdown.js
CHANGED
|
@@ -213,4 +213,4 @@ var styles = function styles(theme) {
|
|
|
213
213
|
var _default = (0, _styles.withStyles)(styles)(InlineDropdown);
|
|
214
214
|
|
|
215
215
|
exports["default"] = _default;
|
|
216
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmxpbmUtZHJvcGRvd24uanN4Il0sIm5hbWVzIjpbIklubGluZURyb3Bkb3duIiwic2hvd0NvcnJlY3RBbnN3ZXIiLCJzZXRTdGF0ZSIsInN0YXRlIiwibmV4dFByb3BzIiwiZmVlZGJhY2siLCJkb21Ob2RlIiwiUmVhY3RET00iLCJmaW5kRE9NTm9kZSIsInByb3BzIiwiY2xhc3NlcyIsInByb21wdCIsIm1vZGUiLCJyYXRpb25hbGUiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwiY2hvaWNlcyIsImRpc3BsYXlUeXBlIiwic2hvd0NvcnJlY3RBbnN3ZXJUb2dnbGUiLCJjaG9pY2VSYXRpb25hbGVzSGF2ZVRleHQiLCJjaG9pY2VSYXRpb25hbGVzIiwiT2JqZWN0Iiwia2V5cyIsIm1hcCIsImtleSIsInJlZHVjZSIsImFjYyIsImN1cnJlbnRWYWx1ZSIsInB1c2giLCJtYWluQ29udGFpbmVyIiwiZGlzcGxheSIsImhpZGRlbiIsInZpc2libGUiLCJ0b2dnbGVTaG93Q29ycmVjdCIsImluZGV4IiwibGVuZ3RoIiwiY2hvaWNlIiwiY2hvaWNlUmF0aW9uYWxlIiwibGFiZWwiLCJjaG9pY2VSYXRpb25hbGVMYWJlbCIsImNvcnJlY3QiLCJfX2h0bWwiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsInN0cmluZyIsImRpc2FibGVkIiwiYm9vbCIsIm1hcmt1cCIsInZhbHVlIiwib25DaGFuZ2UiLCJmdW5jIiwic3R5bGVzIiwidGhlbWUiLCJjb2xvciIsInRleHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kIiwicGFkZGluZyIsInNwYWNpbmciLCJ1bml0Iiwid2hpdGVTcGFjZSIsImluY29ycmVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7SUFFYUEsYzs7Ozs7Ozs7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LE9BQU8sRUFBRSxNQURNO0FBRWZnQyxNQUFBQSxVQUFVLEVBQUU7QUFGRyxLQU5RO0FBVXpCdkIsSUFBQUEsb0JBQW9CLEVBQUU7QUFDcEJULE1BQUFBLE9BQU8sRUFBRSxNQURXO0FBRXBCLG1CQUFhO0FBQ1h5QixRQUFBQSxLQUFLLEVBQUVBLGdCQUFNZixPQUFOO0FBREksT0FGTztBQUtwQixxQkFBZTtBQUNiZSxRQUFBQSxLQUFLLEVBQUVBLGdCQUFNUSxTQUFOO0FBRE07QUFMSztBQVZHLEdBQVo7QUFBQSxDQUFmOztlQXFCZSx3QkFBV1YsTUFBWCxFQUFtQnBELGNBQW5CLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IENvcnJlY3RBbnN3ZXJUb2dnbGUgZnJvbSAnQHBpZS1saWIvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJztcbmltcG9ydCB7IElubGluZURyb3Bkb3duIGFzIERyb3BEb3duIH0gZnJvbSAnQHBpZS1saWIvbWFzay1tYXJrdXAnO1xuaW1wb3J0IHtjb2xvciwgQ29sbGFwc2libGUsIGhhc1RleHQsIFByZXZpZXdQcm9tcHR9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgeyByZW5kZXJNYXRoIH0gZnJvbSAnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuZXhwb3J0IGNsYXNzIElubGluZURyb3Bkb3duIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHByb21wdDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWFya3VwOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1vZGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzcGxheVR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgcmF0aW9uYWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2hvaWNlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB2YWx1ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBmZWVkYmFjazogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmNcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHZhbHVlOiB7fVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIHNob3dDb3JyZWN0QW5zd2VyOiBmYWxzZVxuICB9O1xuXG4gIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIGlmIChpc0VtcHR5KG5leHRQcm9wcy5mZWVkYmFjaykpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzaG93Q29ycmVjdEFuc3dlcjogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGRvbU5vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTtcblxuICAgIHJlbmRlck1hdGgoZG9tTm9kZSk7XG4gIH1cblxuICB0b2dnbGVTaG93Q29ycmVjdCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgc2hvd0NvcnJlY3RBbnN3ZXI6ICF0aGlzLnN0YXRlLnNob3dDb3JyZWN0QW5zd2VyIH0pO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHNob3dDb3JyZWN0QW5zd2VyIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHsgY2xhc3NlcywgcHJvbXB0LCBtb2RlLCByYXRpb25hbGUsIHRlYWNoZXJJbnN0cnVjdGlvbnMsIGNob2ljZXMsIGRpc3BsYXlUeXBlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHNob3dDb3JyZWN0QW5zd2VyVG9nZ2xlID0gbW9kZSA9PT0gJ2V2YWx1YXRlJztcbiAgICBsZXQgY2hvaWNlUmF0aW9uYWxlc0hhdmVUZXh0ID0gZmFsc2U7XG5cbiAgICBjb25zdCBjaG9pY2VSYXRpb25hbGVzID0gKE9iamVjdC5rZXlzKGNob2ljZXMpIHx8IFtdKS5tYXAoa2V5ID0+IChjaG9pY2VzW2tleV0gfHwgW10pXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICBpZiAoY3VycmVudFZhbHVlLnJhdGlvbmFsZSAmJiBoYXNUZXh0KGN1cnJlbnRWYWx1ZS5yYXRpb25hbGUpKSB7XG4gICAgICAgICAgY2hvaWNlUmF0aW9uYWxlc0hhdmVUZXh0ID0gdHJ1ZTtcblxuICAgICAgICAgIGFjYy5wdXNoKGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMubWFpbkNvbnRhaW5lcn0gc3R5bGU9e3sgZGlzcGxheTogYCR7ZGlzcGxheVR5cGV9YCB9fT5cbiAgICAgICAge1xuICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMgJiYgaGFzVGV4dCh0ZWFjaGVySW5zdHJ1Y3Rpb25zKSAmJiAoXG4gICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgICAgICAgIGxhYmVscz17eyBoaWRkZW46ICdTaG93IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJywgdmlzaWJsZTogJ0hpZGUgVGVhY2hlciBJbnN0cnVjdGlvbnMnIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UHJldmlld1Byb21wdCBwcm9tcHQ9e3RlYWNoZXJJbnN0cnVjdGlvbnN9IC8+XG4gICAgICAgICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICA8Q29ycmVjdEFuc3dlclRvZ2dsZVxuICAgICAgICAgIHNob3c9e3Nob3dDb3JyZWN0QW5zd2VyVG9nZ2xlfVxuICAgICAgICAgIHRvZ2dsZWQ9e3Nob3dDb3JyZWN0QW5zd2VyfVxuICAgICAgICAgIG9uVG9nZ2xlPXt0aGlzLnRvZ2dsZVNob3dDb3JyZWN0fVxuICAgICAgICAvPlxuICAgICAgICB7c2hvd0NvcnJlY3RBbnN3ZXJUb2dnbGUgJiYgPGJyIC8+fVxuXG4gICAgICAgIHtwcm9tcHQgJiYgKFxuICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgIDxQcmV2aWV3UHJvbXB0IHByb21wdD17cHJvbXB0fSAvPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgKX1cbiAgICAgICAgPERyb3BEb3duXG4gICAgICAgICAgey4uLnRoaXMucHJvcHN9XG4gICAgICAgICAgc2hvd0NvcnJlY3RBbnN3ZXI9e3Nob3dDb3JyZWN0QW5zd2VyfVxuICAgICAgICAvPlxuICAgICAgICB7cmF0aW9uYWxlICYmIGhhc1RleHQocmF0aW9uYWxlKSAmJiAoXG4gICAgICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICAgICAgbGFiZWxzPXt7IGhpZGRlbjogJ1Nob3cgUmF0aW9uYWxlJywgdmlzaWJsZTogJ0hpZGUgUmF0aW9uYWxlJyB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8UHJldmlld1Byb21wdCBwcm9tcHQ9e3JhdGlvbmFsZX0gLz5cbiAgICAgICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICAgICl9XG4gICAgICAgIHtjaG9pY2VSYXRpb25hbGVzSGF2ZVRleHQgJiYgKFxuICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVscz17e2hpZGRlbjogJ1Nob3cgUmF0aW9uYWxlIGZvciBjaG9pY2VzJywgdmlzaWJsZTogJ0hpZGUgUmF0aW9uYWxlIGZvciBjaG9pY2VzJ319PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIHtjaG9pY2VSYXRpb25hbGVzLm1hcCgoY2hvaWNlcywgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICB7Y2hvaWNlcyAmJiBjaG9pY2VzLmxlbmd0aCA+IDAgJiYgY2hvaWNlcy5tYXAoIGNob2ljZSA9PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNob2ljZVJhdGlvbmFsZX0ga2V5PXtjaG9pY2UubGFiZWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5jaG9pY2VSYXRpb25hbGVMYWJlbCwgY2hvaWNlLmNvcnJlY3QgPyAnY29ycmVjdCcgOiAnaW5jb3JyZWN0Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogYCR7Y2hvaWNlLmxhYmVsfTogYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcmV2aWV3UHJvbXB0IHByb21wdD17Y2hvaWNlLnJhdGlvbmFsZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2Nob2ljZXMgJiYgY2hvaWNlcy5sZW5ndGggPiAwICYmIDxiciAvPn1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBzdHlsZXMgPSAodGhlbWUpID0+ICh7XG4gIG1haW5Db250YWluZXI6IHtcbiAgICBjb2xvcjogY29sb3IudGV4dCgpLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuYmFja2dyb3VuZCgpLFxuICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcudW5pdFxuICB9LFxuICBjaG9pY2VSYXRpb25hbGU6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2hpdGVTcGFjZTogJ2JyZWFrLXNwYWNlcydcbiAgfSxcbiAgY2hvaWNlUmF0aW9uYWxlTGFiZWw6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgJyYuY29ycmVjdCc6IHtcbiAgICAgIGNvbG9yOiBjb2xvci5jb3JyZWN0KClcbiAgICB9LFxuICAgICcmLmluY29ycmVjdCc6IHtcbiAgICAgIGNvbG9yOiBjb2xvci5pbmNvcnJlY3QoKVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzKShJbmxpbmVEcm9wZG93bik7XG4iXX0=
|
|
216
|
+
//# sourceMappingURL=inline-dropdown.js.map
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "3.
|
|
7
|
+
"version": "3.11.0",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@material-ui/core": "^3.9.2",
|
|
15
15
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
16
|
-
"@pie-lib/correct-answer-toggle": "^2.3.
|
|
17
|
-
"@pie-lib/mask-markup": "^1.12.
|
|
18
|
-
"@pie-lib/math-rendering": "^2.
|
|
19
|
-
"@pie-lib/render-ui": "^4.12.
|
|
16
|
+
"@pie-lib/correct-answer-toggle": "^2.3.36",
|
|
17
|
+
"@pie-lib/mask-markup": "^1.12.4",
|
|
18
|
+
"@pie-lib/math-rendering": "^2.4.0",
|
|
19
|
+
"@pie-lib/render-ui": "^4.12.6",
|
|
20
20
|
"classnames": "^2.2.5",
|
|
21
21
|
"lodash": "^4.17.10",
|
|
22
22
|
"prop-types": "^15.6.1",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"author": "",
|
|
27
27
|
"license": "ISC",
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "87c4247b2cca04380c8638f88e57bba47fb6c06a",
|
|
29
29
|
"main": "lib/index.js",
|
|
30
30
|
"module": "src/index.js"
|
|
31
31
|
}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
-
|
|
7
|
-
var _enzyme = require("enzyme");
|
|
8
|
-
|
|
9
|
-
var _react = _interopRequireDefault(require("react"));
|
|
10
|
-
|
|
11
|
-
var _inlineDropdownToolbar = require("../inline-dropdown-toolbar");
|
|
12
|
-
|
|
13
|
-
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; }
|
|
14
|
-
|
|
15
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
|
-
|
|
17
|
-
describe('Main', function () {
|
|
18
|
-
var onAddChoice = jest.fn();
|
|
19
|
-
var onRemoveChoice = jest.fn();
|
|
20
|
-
var onSelectChoice = jest.fn();
|
|
21
|
-
var onToolbarDone = jest.fn();
|
|
22
|
-
var value = {
|
|
23
|
-
change: jest.fn().mockReturnValue({
|
|
24
|
-
setNodeByKey: jest.fn().mockReturnValue({
|
|
25
|
-
moveFocusTo: jest.fn().mockReturnValue({
|
|
26
|
-
moveAnchorTo: jest.fn()
|
|
27
|
-
})
|
|
28
|
-
})
|
|
29
|
-
}),
|
|
30
|
-
document: {
|
|
31
|
-
getNextText: jest.fn().mockReturnValue({
|
|
32
|
-
key: '1'
|
|
33
|
-
})
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
var wrapper = function wrapper() {
|
|
38
|
-
var defaults = {
|
|
39
|
-
onAddChoice: onAddChoice,
|
|
40
|
-
onRemoveChoice: onRemoveChoice,
|
|
41
|
-
onSelectChoice: onSelectChoice,
|
|
42
|
-
node: {
|
|
43
|
-
key: '1',
|
|
44
|
-
data: {
|
|
45
|
-
toJSON: jest.fn(),
|
|
46
|
-
get: function get(key) {
|
|
47
|
-
if (key === 'index') {
|
|
48
|
-
return '0';
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return 'cow';
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
value: value,
|
|
56
|
-
onToolbarDone: onToolbarDone,
|
|
57
|
-
choices: [{
|
|
58
|
-
label: 'cow ',
|
|
59
|
-
value: '0',
|
|
60
|
-
correct: true
|
|
61
|
-
}, {
|
|
62
|
-
label: 'dog ',
|
|
63
|
-
value: '1',
|
|
64
|
-
correct: false
|
|
65
|
-
}, {
|
|
66
|
-
label: 'cat ',
|
|
67
|
-
value: '2',
|
|
68
|
-
correct: false
|
|
69
|
-
}]
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
var props = _objectSpread({}, defaults);
|
|
73
|
-
|
|
74
|
-
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_inlineDropdownToolbar.RespAreaToolbar, props), {
|
|
75
|
-
disableLifecycleMethods: true
|
|
76
|
-
});
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
describe('snapshot', function () {
|
|
80
|
-
it('Renders', function () {
|
|
81
|
-
expect(wrapper()).toMatchSnapshot();
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
describe('logic', function () {
|
|
85
|
-
var w;
|
|
86
|
-
beforeEach(function () {
|
|
87
|
-
w = wrapper();
|
|
88
|
-
});
|
|
89
|
-
describe('onRespAreaChange', function () {
|
|
90
|
-
it('sets state', function () {
|
|
91
|
-
w.instance().onRespAreaChange('<div>test</div>');
|
|
92
|
-
expect(w.instance().state.respAreaMarkup).toEqual('<div>test</div>');
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
describe('onDone', function () {
|
|
96
|
-
it('does not call onAddChoice if choice is empty', function () {
|
|
97
|
-
w.instance().onDone('<div><p></p></div>');
|
|
98
|
-
expect(onAddChoice).not.toBeCalled();
|
|
99
|
-
});
|
|
100
|
-
it('calls onAddChoice if choice not empty', function () {
|
|
101
|
-
w.instance().onDone('<div>test</div>');
|
|
102
|
-
expect(onAddChoice).toBeCalledWith('0', '<div>test</div>');
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
describe('onSelectChoice', function () {
|
|
106
|
-
it('calls onToolbarDone and onSelectChoice', function () {
|
|
107
|
-
w.instance().onSelectChoice('cat', '2');
|
|
108
|
-
expect(onToolbarDone).toBeCalled();
|
|
109
|
-
expect(onSelectChoice).toBeCalledWith('2');
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
describe('onRemoveChoice', function () {
|
|
113
|
-
it('calls onToolbarChange if removed value is the one selected as correct', function () {
|
|
114
|
-
w.instance().onRemoveChoice('cow', '0');
|
|
115
|
-
expect(onToolbarDone).toBeCalled();
|
|
116
|
-
});
|
|
117
|
-
it('calls onRemoveChoice if removed value is not the one selected as correct', function () {
|
|
118
|
-
w.instance().onRemoveChoice('cat', '2');
|
|
119
|
-
expect(onRemoveChoice).toBeCalledWith('2');
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5saW5lLWRyb3Bkb3duLXRvb2xiYXIudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJvbkFkZENob2ljZSIsImplc3QiLCJmbiIsIm9uUmVtb3ZlQ2hvaWNlIiwib25TZWxlY3RDaG9pY2UiLCJvblRvb2xiYXJEb25lIiwidmFsdWUiLCJjaGFuZ2UiLCJtb2NrUmV0dXJuVmFsdWUiLCJzZXROb2RlQnlLZXkiLCJtb3ZlRm9jdXNUbyIsIm1vdmVBbmNob3JUbyIsImRvY3VtZW50IiwiZ2V0TmV4dFRleHQiLCJrZXkiLCJ3cmFwcGVyIiwiZGVmYXVsdHMiLCJub2RlIiwiZGF0YSIsInRvSlNPTiIsImdldCIsImNob2ljZXMiLCJsYWJlbCIsImNvcnJlY3QiLCJwcm9wcyIsImRpc2FibGVMaWZlY3ljbGVNZXRob2RzIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJ3IiwiYmVmb3JlRWFjaCIsImluc3RhbmNlIiwib25SZXNwQXJlYUNoYW5nZSIsInN0YXRlIiwicmVzcEFyZWFNYXJrdXAiLCJ0b0VxdWFsIiwib25Eb25lIiwibm90IiwidG9CZUNhbGxlZCIsInRvQmVDYWxsZWRXaXRoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxNQUFELEVBQVMsWUFBTTtBQUNyQixNQUFJQyxXQUFXLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFsQjtBQUNBLE1BQUlDLGNBQWMsR0FBR0YsSUFBSSxDQUFDQyxFQUFMLEVBQXJCO0FBQ0EsTUFBSUUsY0FBYyxHQUFHSCxJQUFJLENBQUNDLEVBQUwsRUFBckI7QUFDQSxNQUFJRyxhQUFhLEdBQUdKLElBQUksQ0FBQ0MsRUFBTCxFQUFwQjtBQUVBLE1BQU1JLEtBQUssR0FBRztBQUNaQyxJQUFBQSxNQUFNLEVBQUVOLElBQUksQ0FBQ0MsRUFBTCxHQUFVTSxlQUFWLENBQTBCO0FBQ2hDQyxNQUFBQSxZQUFZ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QUNuRkcsUUFBQUEsQ0FBQyxDQUFDRSxRQUFGLEdBQWE1QixjQUFiLENBQTRCLEtBQTVCLEVBQW1DLEdBQW5DO0FBRUF3QixRQUFBQSxNQUFNLENBQUN4QixjQUFELENBQU4sQ0FBdUJvQyxjQUF2QixDQUFzQyxHQUF0QztBQUNELE9BSkMsQ0FBRjtBQUtELEtBWk8sQ0FBUjtBQWFELEdBbkRPLENBQVI7QUFvREQsQ0ExSE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgUmVzcEFyZWFUb29sYmFyIH0gZnJvbSAnLi4vaW5saW5lLWRyb3Bkb3duLXRvb2xiYXInO1xuXG5kZXNjcmliZSgnTWFpbicsICgpID0+IHtcbiAgbGV0IG9uQWRkQ2hvaWNlID0gamVzdC5mbigpO1xuICBsZXQgb25SZW1vdmVDaG9pY2UgPSBqZXN0LmZuKCk7XG4gIGxldCBvblNlbGVjdENob2ljZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uVG9vbGJhckRvbmUgPSBqZXN0LmZuKCk7XG5cbiAgY29uc3QgdmFsdWUgPSB7XG4gICAgY2hhbmdlOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgIHNldE5vZGVCeUtleTogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgIG1vdmVGb2N1c1RvOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgICAgICBtb3ZlQW5jaG9yVG86IGplc3QuZm4oKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KSxcbiAgICBkb2N1bWVudDoge1xuICAgICAgZ2V0TmV4dFRleHQ6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgICBrZXk6ICcxJ1xuICAgICAgfSlcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgd3JhcHBlciA9ICgpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG9uQWRkQ2hvaWNlLFxuICAgICAgb25SZW1vdmVDaG9pY2UsXG4gICAgICBvblNlbGVjdENob2ljZSxcbiAgICAgIG5vZGU6IHtcbiAgICAgICAga2V5OiAnMScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB0b0pTT046IGplc3QuZm4oKSxcbiAgICAgICAgICBnZXQ6IChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdpbmRleCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICcwJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICdjb3cnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHZhbHVlLFxuICAgICAgb25Ub29sYmFyRG9uZSxcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnY293ICcsXG4gICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgICBjb3JyZWN0OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ2RvZyAnLFxuICAgICAgICAgIHZhbHVlOiAnMScsXG4gICAgICAgICAgY29ycmVjdDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnY2F0ICcsXG4gICAgICAgICAgdmFsdWU6ICcyJyxcbiAgICAgICAgICBjb3JyZWN0OiBmYWxzZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMgfTtcblxuICAgIHJldHVybiBzaGFsbG93KDxSZXNwQXJlYVRvb2xiYXIgey4uLnByb3BzfSAvPiwgeyBkaXNhYmxlTGlmZWN5Y2xlTWV0aG9kczogdHJ1ZSB9KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ1JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGxldCB3O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uUmVzcEFyZWFDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpdCgnc2V0cyBzdGF0ZScsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uUmVzcEFyZWFDaGFuZ2UoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuc3RhdGUucmVzcEFyZWFNYXJrdXApLnRvRXF1YWwoJzxkaXY+dGVzdDwvZGl2PicpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25Eb25lJywgKCkgPT4ge1xuICAgICAgaXQoJ2RvZXMgbm90IGNhbGwgb25BZGRDaG9pY2UgaWYgY2hvaWNlIGlzIGVtcHR5JywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkub25Eb25lKCc8ZGl2PjxwPjwvcD48L2Rpdj4nKTtcblxuICAgICAgICBleHBlY3Qob25BZGRDaG9pY2UpLm5vdC50b0JlQ2FsbGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQWRkQ2hvaWNlIGlmIGNob2ljZSBub3QgZW1wdHknLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkRvbmUoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdChvbkFkZENob2ljZSkudG9CZUNhbGxlZFdpdGgoJzAnLCAnPGRpdj50ZXN0PC9kaXY+Jyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblNlbGVjdENob2ljZScsICAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgb25Ub29sYmFyRG9uZSBhbmQgb25TZWxlY3RDaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblNlbGVjdENob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgICBleHBlY3Qob25TZWxlY3RDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblJlbW92ZUNob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyBvblRvb2xiYXJDaGFuZ2UgaWYgcmVtb3ZlZCB2YWx1ZSBpcyB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY293JywgJzAnKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdjYWxscyBvblJlbW92ZUNob2ljZSBpZiByZW1vdmVkIHZhbHVlIGlzIG5vdCB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25SZW1vdmVDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|