@pie-element/inline-dropdown 3.10.6-next.2 → 3.10.7
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 +72 -0
- package/LICENSE.md +5 -0
- package/configure/CHANGELOG.md +64 -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 +4 -17
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +1 -1
- package/configure/package.json +3 -3
- package/controller/CHANGELOG.md +16 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +1 -21
- 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/index.js.map +1 -1
- package/lib/inline-dropdown.js +1 -1
- package/package.json +2 -2
- 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
package/configure/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/inline-dropdown-configure",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.16",
|
|
4
4
|
"private": true,
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
@@ -8,8 +8,8 @@
|
|
|
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.
|
|
11
|
+
"@pie-lib/config-ui": "^10.11.0",
|
|
12
|
+
"@pie-lib/editable-html": "^7.20.0",
|
|
13
13
|
"@pie-lib/math-rendering": "^2.3.13",
|
|
14
14
|
"classnames": "^2.2.6",
|
|
15
15
|
"debug": "^3.1.0",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [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
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/inline-dropdown-controller
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [3.3.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@3.3.3...@pie-element/inline-dropdown-controller@3.3.4) (2022-03-08)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @pie-element/inline-dropdown-controller
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
# [3.3.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@3.2.17...@pie-element/inline-dropdown-controller@3.3.0) (2021-09-20)
|
|
7
23
|
|
|
8
24
|
|
|
@@ -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,7 +9,6 @@ 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;
|
|
13
12
|
|
|
14
13
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
14
|
|
|
@@ -316,23 +315,4 @@ var createCorrectResponseSession = function createCorrectResponseSession(questio
|
|
|
316
315
|
};
|
|
317
316
|
|
|
318
317
|
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
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=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJnZXRGZWVkYmFjayIsImNvcnJlY3QiLCJub3JtYWxpemUiLCJxdWVzdGlvbiIsInByb21wdEVuYWJsZWQiLCJyYXRpb25hbGVFbmFibGVkIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZCIsImNob2ljZVJhdGlvbmFsZUVuYWJsZWQiLCJtb2RlbCIsInNlc3Npb24iLCJlbnYiLCJ1cGRhdGVTZXNzaW9uIiwiUHJvbWlzZSIsInJlc29sdmUiLCJub3JtYWxpemVkUXVlc3Rpb24iLCJ2YWx1ZSIsImNob2ljZXMiLCJvYmoiLCJhcmVhIiwia2V5IiwiY2hvaWNlIiwiZmVlZGJhY2siLCJtb2RlIiwiYWxsQ29ycmVjdFJlc3BvbnNlcyIsInJlc3BBcmVhTGVuZ3RoIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImNvcnJlY3RSZXNwb25zZXMiLCJpIiwicmVzdWx0IiwiYW5zd2VyIiwiY29ycmVjdENob2ljZSIsImlzQ29ycmVjdCIsImxvY2tDaG9pY2VPcmRlciIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJyYXRpb25hbGUiLCJjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzIiwicmVkdWNlIiwiYWNjIiwiY3VycmVudFZhbHVlIiwibWFwIiwicm9sZSIsIm91dCIsImRpc2FibGVkIiwicHJvbXB0IiwiZGlzcGxheVR5cGUiLCJtYXJrdXAiLCJyZXNwb25zZUNvcnJlY3QiLCJnZXRTY29yZSIsInVuZGVmaW5lZCIsImNvbmZpZyIsIm1heFNjb3JlIiwiY29ycmVjdENvdW50IiwidG90YWwiLCJzdHIiLCJ0b0ZpeGVkIiwicGFyc2VGbG9hdCIsIm91dGNvbWUiLCJzY29yZSIsImVtcHR5IiwicGFydGlhbFNjb3JpbmdFbmFibGVkIiwicGFydGlhbFNjb3JpbmciLCJlbmFibGVkIiwiTWF0aCIsImZsb29yIiwiY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbiIsImZvckVhY2giLCJjb3JyZWN0Q2hvaWNlcyIsImZpbHRlciIsImMiLCJpZCIsInZhbGlkYXRlIiwibWF4UmVzcG9uc2VBcmVhcyIsImVycm9ycyIsIm5iT2ZSZXNwb25zZUFyZWFzIiwibWF0Y2giLCJyZXNwb25zZUFyZWFzRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQTs7Ozs7O0FBRUEsSUFBTUEsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsT0FBRCxFQUFhO0FBQy9CLE1BQUlBLE9BQUosRUFBYTtBQUNYLFdBQU8sU0FBUDtBQUNEOztBQUVELFNBQU8sV0FBUDtBQUNELENBTkQ7O0FBUU8sSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ0MsUUFBRDtBQUFBO0FBQ3ZCQyxJQUFBQSxhQUFhLEVBQUUsSUFEUTtBQUV2QkMsSUFBQUEsZ0JBQWdCLEVBQUUsSUFGSztBQUd2QkMsSUFBQUEsMEJBQTBCLEVBQUUsSUFITDtBQUl2QkMsSUFBQUEsMEJBQTBCLEVBQUUsSUFKTDtBQUt2QkMsSUFBQUEsc0JBQXNCLEVBQUU7QUFMRCxLQU1wQkwsUUFOb0I7QUFBQSxDQUFsQjtBQVNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUNPLFNBQVNNLEtBQVQsQ0FBZU4sUUFBZixFQUF5Qk8sT0FBekIsRUFBa0NDLEdBQWxDLEVBQXVDQyxhQUF2QyxFQUFzRDtBQUMzRCxTQUFPLElBQUlDLE9BQUo7QUFBQSw2RkFBWSxpQkFBT0MsT0FBUDtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ1hDLGNBQUFBLGtCQURXLEdBQ1ViLFNBQVMsQ0FBQ0MsUUFBRCxDQURuQjtBQUFBLHNCQUVNTyxPQUFPLElBQUksRUFGakIsc0JBRVRNLEtBRlMsRUFFVEEsS0FGUyw0QkFFRCxFQUZDO0FBR2JDLGNBQUFBLE9BSGEsR0FHSCx3QkFDWkYsa0JBQWtCLENBQUNFLE9BRFAsRUFFWixVQUFDQyxHQUFELEVBQU1DLElB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QUNELENBZE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnO1xuaW1wb3J0IHJlZHVjZSBmcm9tICdsb2Rhc2gvcmVkdWNlJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCB7XG4gIGxvY2tDaG9pY2VzLFxuICBnZXRTaHVmZmxlZENob2ljZXMsXG4gIHBhcnRpYWxTY29yaW5nLFxufSBmcm9tICdAcGllLWxpYi9jb250cm9sbGVyLXV0aWxzJztcblxuaW1wb3J0IHsgZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBnZXRGZWVkYmFjayA9IChjb3JyZWN0KSA9PiB7XG4gIGlmIChjb3JyZWN0KSB7XG4gICAgcmV0dXJuICdjb3JyZWN0JztcbiAgfVxuXG4gIHJldHVybiAnaW5jb3JyZWN0Jztcbn07XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemUgPSAocXVlc3Rpb24pID0+ICh7XG4gIHByb21wdEVuYWJsZWQ6IHRydWUsXG4gIHJhdGlvbmFsZUVuYWJsZWQ6IHRydWUsXG4gIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkOiB0cnVlLFxuICBzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgY2hvaWNlUmF0aW9uYWxlRW5hYmxlZDogdHJ1ZSxcbiAgLi4ucXVlc3Rpb24sXG59KTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHsqfSBxdWVzdGlvblxuICogQHBhcmFtIHsqfSBzZXNzaW9uXG4gKiBAcGFyYW0geyp9IGVudlxuICogQHBhcmFtIHsqfSB1cGRhdGVTZXNzaW9uIC0gb3B0aW9uYWwgLSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBzZXQgdGhlIHByb3BlcnRpZXMgcGFzc2VkIGludG8gaXQgb24gdGhlIHNlc3Npb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbChxdWVzdGlvbiwgc2Vzc2lvbiwgZW52LCB1cGRhdGVTZXNzaW9uKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVzdGlvbiA9IG5vcm1hbGl6ZShxdWVzdGlvbik7XG4gICAgY29uc3QgeyB2YWx1ZSA9IHt9IH0gPSBzZXNzaW9uIHx8IHt9O1xuICAgIGxldCBjaG9pY2VzID0gcmVkdWNlKFxuICAgICAgbm9ybWFsaXplZFF1ZXN0aW9uLmNob2ljZXMsXG4gICAgICAob2JqLCBhcmVhLCBrZXkpID0+IHtcbiAgICAgICAgb2JqW2tleV0gPSBtYXAoYXJlYSwgKGNob2ljZSkgPT4gY2hvaWNlKTtcblxuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGxldCBmZWVkYmFjayA9IHt9O1xuXG4gICAgaWYgKGVudi5tb2RlID09PSAnZXZhbHVhdGUnKSB7XG4gICAgICBjb25zdCBhbGxDb3JyZWN0UmVzcG9uc2VzID0gZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyhub3JtYWxpemVkUXVlc3Rpb24pO1xuICAgICAgY29uc3QgcmVzcEFyZWFMZW5ndGggPSBPYmplY3Qua2V5cyhhbGxDb3JyZWN0UmVzcG9uc2VzKS5sZW5ndGg7XG4gICAgICBsZXQgY29ycmVjdFJlc3BvbnNlcyA9IDA7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcEFyZWFMZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZWR1Y2UoXG4gICAgICAgICAgYWxsQ29ycmVjdFJlc3BvbnNlcyxcbiAgICAgICAgICAob2JqLCBjaG9pY2VzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFuc3dlciA9ICh2YWx1ZSAmJiB2YWx1ZVtrZXldKSB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IGNvcnJlY3RDaG9pY2UgPSBjaG9pY2VzW2ldIHx8ICcnO1xuICAgICAgICAgICAgY29uc3QgaXNDb3JyZWN0ID1cbiAgICAgICAgICAgICAgYW5zd2VyICYmIGNvcnJlY3RDaG9pY2UgJiYgY29ycmVjdENob2ljZSA9PT0gYW5zd2VyO1xuXG4gICAgICAgICAgICBvYmouZmVlZGJhY2tba2V5XSA9IGdldEZlZWRiYWNrKGlzQ29ycmVjdCk7XG5cbiAgICAgICAgICAgIGlmIChpc0NvcnJlY3QpIHtcbiAgICAgICAgICAgICAgb2JqLmNvcnJlY3RSZXNwb25zZXMgKz0gMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgY29ycmVjdFJlc3BvbnNlczogMCwgZmVlZGJhY2s6IHt9IH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocmVzdWx0LmNvcnJlY3RSZXNwb25zZXMgPj0gY29ycmVjdFJlc3BvbnNlcykge1xuICAgICAgICAgIGNvcnJlY3RSZXNwb25zZXMgPSByZXN1bHQuY29ycmVjdFJlc3BvbnNlcztcbiAgICAgICAgICBmZWVkYmFjayA9IHJlc3VsdC5mZWVkYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuY29ycmVjdFJlc3BvbnNlcyA9PT0gcmVzcEFyZWFMZW5ndGgpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxvY2tDaG9pY2VPcmRlciA9IGxvY2tDaG9pY2VzKG5vcm1hbGl6ZWRRdWVzdGlvbiwgc2Vzc2lvbiwgZW52KTtcblxuICAgIGlmICghbG9ja0Nob2ljZU9yZGVyKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2hvaWNlcyk7XG4gICAgICBsZXQgaTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcblxuICAgICAgICBjaG9pY2VzW2tleV0gPSBhd2FpdCBnZXRTaHVmZmxlZENob2ljZXMoXG4gICAgICAgICAgY2hvaWNlc1trZXldLFxuICAgICAgICAgIHNlc3Npb24sXG4gICAgICAgICAgdXBkYXRlU2Vzc2lvbixcbiAgICAgICAgICAndmFsdWUnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHRlYWNoZXJJbnN0cnVjdGlvbnMgPSBudWxsO1xuICAgIGxldCByYXRpb25hbGUgPSBudWxsO1xuXG4gICAgY29uc3QgY2hvaWNlc1dpbGxOdWxsUmF0aW9uYWxlcyA9IChPYmplY3Qua2V5cyhjaG9pY2VzKSB8fCBbXSkucmVkdWNlKFxuICAgICAgKGFjYywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgIGFjY1tjdXJyZW50VmFsdWVdID0gKGNob2ljZXNbY3VycmVudFZhbHVlXSB8fCBbXSkubWFwKChjaG9pY2UpID0+ICh7XG4gICAgICAgICAgLi4uY2hvaWNlLFxuICAgICAgICAgIHJhdGlvbmFsZTogbnVsbCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge31cbiAgICApO1xuXG4gICAgaWYgKFxuICAgICAgZW52LnJvbGUgPT09ICdpbnN0cnVjdG9yJyAmJlxuICAgICAgKGVudi5tb2RlID09PSAndmlldycgfHwgZW52Lm1vZGUgPT09ICdldmFsdWF0ZScpXG4gICAgKSB7XG4gICAgICByYXRpb25hbGUgPSBub3JtYWxpemVkUXVlc3Rpb24ucmF0aW9uYWxlRW5hYmxlZFxuICAgICAgICA/IG5vcm1hbGl6ZWRRdWVzdGlvbi5yYXRpb25hbGVcbiAgICAgICAgOiBudWxsO1xuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyA9IG5vcm1hbGl6ZWRRdWVzdGlvbi50ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZFxuICAgICAgICA/IG5vcm1hbGl6ZWRRdWVzdGlvbi50ZWFjaGVySW5zdHJ1Y3Rpb25zXG4gICAgICAgIDogbnVsbDtcblxuICAgICAgY2hvaWNlcyA9IG5vcm1hbGl6ZWRRdWVzdGlvbi5jaG9pY2VSYXRpb25hbGVFbmFibGVkXG4gICAgICAgID8gbm9ybWFsaXplZFF1ZXN0aW9uLmNob2ljZXNcbiAgICAgICAgOiBjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByYXRpb25hbGUgPSBudWxsO1xuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyA9IG51bGw7XG4gICAgICBjaG9pY2VzID0gY2hvaWNlc1dpbGxOdWxsUmF0aW9uYWxlcztcbiAgICB9XG5cbiAgICBjb25zdCBvdXQgPSB7XG4gICAgICBkaXNhYmxlZDogZW52Lm1vZGUgIT09ICdnYXRoZXInLFxuICAgICAgbW9kZTogZW52Lm1vZGUsXG4gICAgICBwcm9tcHQ6IG5vcm1hbGl6ZWRRdWVzdGlvbi5wcm9tcHRFbmFibGVkXG4gICAgICAgID8gbm9ybWFsaXplZFF1ZXN0aW9uLnByb21wdFxuICAgICAgICA6IG51bGwsXG4gICAgICAgIGRpc3BsYXlUeXBlOiBub3JtYWxpemVkUXVlc3Rpb24uZGlzcGxheVR5cGUsXG4gICAgICBtYXJrdXA6IG5vcm1hbGl6ZWRRdWVzdGlvbi5tYXJrdXAsXG4gICAgICBjaG9pY2VzLFxuICAgICAgZmVlZGJhY2ssXG5cbiAgICAgIHJlc3BvbnNlQ29ycmVjdDpcbiAgICAgICAgZW52Lm1vZGUgPT09ICdldmFsdWF0ZSdcbiAgICAgICAgICA/IGdldFNjb3JlKG5vcm1hbGl6ZWRRdWVzdGlvbiwgc2Vzc2lvbikgPT09IDFcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHJhdGlvbmFsZSxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMsXG4gICAgfTtcblxuICAgIHJlc29sdmUob3V0KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRTY29yZSA9IChjb25maWcsIHNlc3Npb24pID0+IHtcbiAgY29uc3QgeyB2YWx1ZSA9IHt9IH0gPSBzZXNzaW9uIHx8IHt9O1xuICBjb25zdCBtYXhTY29yZSA9XG4gICAgY29uZmlnICYmIGNvbmZpZy5jaG9pY2VzID8gT2JqZWN0LmtleXMoY29uZmlnLmNob2ljZXMpLmxlbmd0aCA6IDA7XG4gIGNvbnN0IGFsbENvcnJlY3RSZXNwb25zZXMgPSBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzKGNvbmZpZyk7XG4gIGxldCBjb3JyZWN0Q291bnQgPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4U2NvcmU7IGkrKykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHJlZHVjZShcbiAgICAgIGFsbENvcnJlY3RSZXNwb25zZXMsXG4gICAgICAodG90YWwsIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBhbnN3ZXIgPSAodmFsdWUgJiYgdmFsdWVba2V5XSkgfHwgJyc7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RDaG9pY2UgPSBjaG9pY2VzW2ldIHx8ICcnO1xuXG4gICAgICAgIGlmIChjb3JyZWN0Q2hvaWNlICYmIGFuc3dlciAmJiBjb3JyZWN0Q2hvaWNlID09PSBhbnN3ZXIpIHtcbiAgICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG90YWwgLSAxO1xuICAgICAgfSxcbiAgICAgIG1heFNjb3JlXG4gICAgKTtcblxuICAgIGlmIChyZXN1bHQgPiBjb3JyZWN0Q291bnQpIHtcbiAgICAgIGNvcnJlY3RDb3VudCA9IHJlc3VsdDtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ID09PSBtYXhTY29yZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RyID0gKGNvcnJlY3RDb3VudCAvIG1heFNjb3JlKS50b0ZpeGVkKDIpO1xuXG4gIHJldHVybiBwYXJzZUZsb2F0KHN0cik7XG59O1xuXG4vKipcbiAqXG4gKiBUaGUgc2NvcmUgaXMgcGFydGlhbCBieSBkZWZhdWx0IGZvciBjaGVja2JveCBtb2RlLCBhbGxPck5vdGhpbmcgZm9yIHJhZGlvIG1vZGUuXG4gKiBUbyBkaXNhYmxlIHBhcnRpYWwgc2NvcmluZyBmb3IgY2hlY2tib3ggbW9kZSB5b3UgZWl0aGVyIHNldCBtb2RlbC5wYXJ0aWFsU2NvcmluZyA9IGZhbHNlIG9yIGVudi5wYXJ0aWFsU2NvcmluZyA9XG4gKiBmYWxzZS4gdGhlIHZhbHVlIGluIGBlbnZgIHdpbGwgb3ZlcnJpZGUgdGhlIHZhbHVlIGluIGBtb2RlbGAuXG4gKiBAcGFyYW0ge09iamVjdH0gbW9kZWwgLSB0aGUgbWFpbiBtb2RlbFxuICogQHBhcmFtIHtib29sZWFufSBtb2RlbC5wYXJ0aWFsU2NvcmluZyAtIGlzIHBhcnRpYWwgc2NvcmluZyBlbmFibGVkIChpZiB1bmRlZmluZWQgc2V0IHRvIHRvIHRydWUpXG4gKiBAcGFyYW0geyp9IHNlc3Npb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBlbnZcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZW52LnBhcnRpYWxTY29yaW5nIC0gaXMgcGFydGlhbCBzY29yaW5nIGVuYWJsZWQgKGlmIHVuZGVmaW5lZCBkZWZhdWx0IHRvIHRydWUpIFRoaXMgb3ZlcnJpZGVzXG4gKiAgIGBtb2RlbC5wYXJ0aWFsU2NvcmluZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvdXRjb21lKG1vZGVsLCBzZXNzaW9uLCBlbnYgPSB7fSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBpZiAoIXNlc3Npb24gfHwgaXNFbXB0eShzZXNzaW9uKSkge1xuICAgICAgcmVzb2x2ZSh7IHNjb3JlOiAwLCBlbXB0eTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0aWFsU2NvcmluZ0VuYWJsZWQgPSBwYXJ0aWFsU2NvcmluZy5lbmFibGVkKG1vZGVsLCBlbnYpO1xuICAgIGNvbnN0IHNjb3JlID0gZ2V0U2NvcmUobW9kZWwsIHNlc3Npb24pO1xuXG4gICAgcmVzb2x2ZSh7XG4gICAgICBzY29yZTogcGFydGlhbFNjb3JpbmdFbmFibGVkID8gc2NvcmUgOiBNYXRoLmZsb29yKHNjb3JlKSxcbiAgICAgIGVtcHR5OiBmYWxzZSxcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb3JyZWN0UmVzcG9uc2VTZXNzaW9uID0gKHF1ZXN0aW9uLCBlbnYpID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgaWYgKGVudi5tb2RlICE9PSAnZXZhbHVhdGUnICYmIGVudi5yb2xlID09PSAnaW5zdHJ1Y3RvcicpIHtcbiAgICAgIGNvbnN0IHsgY2hvaWNlcyB9ID0gcXVlc3Rpb247XG4gICAgICBjb25zdCB2YWx1ZSA9IHt9O1xuXG4gICAgICBpZiAoY2hvaWNlcykge1xuICAgICAgICBPYmplY3Qua2V5cyhjaG9pY2VzKS5mb3JFYWNoKChrZXksIGkpID0+IHtcbiAgICAgICAgICBjb25zdCBjb3JyZWN0Q2hvaWNlcyA9XG4gICAgICAgICAgICBjaG9pY2VzW2tleV0gJiYgY2hvaWNlc1trZXldLmZpbHRlcigoYykgPT4gYy5jb3JyZWN0KTtcblxuICAgICAgICAgIHZhbHVlW2ldID0gY29ycmVjdENob2ljZXMgJiYgY29ycmVjdENob2ljZXNbMF0udmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICB9XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gKG1vZGVsID0ge30sIGNvbmZpZyA9IHt9KSA9PiB7XG4gIGNvbnN0IHsgbWFya3VwIH0gPSBtb2RlbDtcbiAgY29uc3QgeyBtYXhSZXNwb25zZUFyZWFzIH0gPSBjb25maWc7XG4gIGNvbnN0IGVycm9ycyA9IHt9O1xuXG4gIGNvbnN0IG5iT2ZSZXNwb25zZUFyZWFzID0gKG1hcmt1cC5tYXRjaCgvXFx7XFx7KFxcZCspXFx9XFx9L2cpIHx8IFtdKS5sZW5ndGg7XG5cbiAgaWYgKG5iT2ZSZXNwb25zZUFyZWFzID4gbWF4UmVzcG9uc2VBcmVhcykge1xuICAgIGVycm9ycy5yZXNwb25zZUFyZWFzRXJyb3IgPSBgTm8gbW9yZSB0aGFuICR7bWF4UmVzcG9uc2VBcmVhc30gcmVzcG9uc2UgYXJlYXMgc2hvdWxkIGJlIGRlZmluZWQuYDtcbiAgfSBlbHNlIGlmIChuYk9mUmVzcG9uc2VBcmVhcyA8IDEpIHtcbiAgICBlcnJvcnMucmVzcG9uc2VBcmVhc0Vycm9yID0gJ1RoZXJlIHNob3VsZCBiZSBkZWZpbmVkIGF0IGxlYXN0IDEgcmVzcG9uc2UgYXJlYS4nO1xuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn07XG4iXX0=
|
|
318
|
+
//# 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","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"}
|
|
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"}
|
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/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["RootInlineDropdown","_model","_session","elem","React","createElement","InlineDropdown","prompt","rationale","teacherInstructions","disabled","displayType","markup","mode","choices","value","feedback","onChange","changeSession","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAIA;;AACA;;;;;;IAEqBA,kB;;;;;AACnB,gCAAc;AAAA;;AAAA;AACZ;AADY,gGA4BJ,YAAM;AACd,UAAI,MAAKC,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAIC,IAAI,gBAAGC,kBAAMC,aAAN,CAAoBC,0BAApB,EAAoC;AAC7CC,UAAAA,MAAM,EAAE,MAAKN,MAAL,CAAYM,MADyB;AAE7CC,UAAAA,SAAS,EAAE,MAAKP,MAAL,CAAYO,SAFsB;AAG7CC,UAAAA,mBAAmB,EAAE,MAAKR,MAAL,CAAYQ,mBAHY;AAI7CC,UAAAA,QAAQ,EAAE,MAAKT,MAAL,CAAYS,QAJuB;AAK7CC,UAAAA,WAAW,EAAE,MAAKV,MAAL,CAAYU,WALoB;AAM7CC,UAAAA,MAAM,EAAE,MAAKX,MAAL,CAAYW,MANyB;AAO7CC,UAAAA,IAAI,EAAE,MAAKZ,MAAL,CAAYY,IAP2B;AAQ7CC,UAAAA,OAAO,EAAE,MAAKb,MAAL,CAAYa,OARwB;AAS7CC,UAAAA,KAAK,EAAE,MAAKb,QAAL,CAAca,KATwB;AAU7CC,UAAAA,QAAQ,EAAE,MAAKf,MAAL,CAAYe,QAVuB;AAW7CC,UAAAA,QAAQ,EAAE,MAAKC;AAX8B,SAApC,CAAX;;
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["RootInlineDropdown","_model","_session","elem","React","createElement","InlineDropdown","prompt","rationale","teacherInstructions","disabled","displayType","markup","mode","choices","value","feedback","onChange","changeSession","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAIA;;AACA;;;;;;IAEqBA,kB;;;;;AACnB,gCAAc;AAAA;;AAAA;AACZ;AADY,gGA4BJ,YAAM;AACd,UAAI,MAAKC,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAIC,IAAI,gBAAGC,kBAAMC,aAAN,CAAoBC,0BAApB,EAAoC;AAC7CC,UAAAA,MAAM,EAAE,MAAKN,MAAL,CAAYM,MADyB;AAE7CC,UAAAA,SAAS,EAAE,MAAKP,MAAL,CAAYO,SAFsB;AAG7CC,UAAAA,mBAAmB,EAAE,MAAKR,MAAL,CAAYQ,mBAHY;AAI7CC,UAAAA,QAAQ,EAAE,MAAKT,MAAL,CAAYS,QAJuB;AAK7CC,UAAAA,WAAW,EAAE,MAAKV,MAAL,CAAYU,WALoB;AAM7CC,UAAAA,MAAM,EAAE,MAAKX,MAAL,CAAYW,MANyB;AAO7CC,UAAAA,IAAI,EAAE,MAAKZ,MAAL,CAAYY,IAP2B;AAQ7CC,UAAAA,OAAO,EAAE,MAAKb,MAAL,CAAYa,OARwB;AAS7CC,UAAAA,KAAK,EAAE,MAAKb,QAAL,CAAca,KATwB;AAU7CC,UAAAA,QAAQ,EAAE,MAAKf,MAAL,CAAYe,QAVuB;AAW7CC,UAAAA,QAAQ,EAAE,MAAKC;AAX8B,SAApC,CAAX;;AAcAC,6BAASC,MAAT,CAAgBjB,IAAhB,kDAA4B,YAAM;AAChC;AACD,SAFD;AAGD;AACF,KAhDa;AAAA,6GAkDS,YAAM;AAC3B,YAAKkB,aAAL,CACE,IAAIC,oCAAJ,CACE,MAAKC,OAAL,CAAaC,WAAb,EADF,EAEE,MAAKC,OAAL,IAAgB,CAAC,CAAC,MAAKA,OAAL,CAAaV,KAFjC,CADF;AAMD,KAzDa;AAAA,sGA2DE,UAAAA,KAAK,EAAI;AACvB,YAAKU,OAAL,CAAaV,KAAb,GAAqBA,KAArB;;AACA,YAAKW,oBAAL;;AACA,YAAKC,OAAL;AACD,KA/Da;AAEZ,UAAK1B,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,IAAhB;AAHY;AAIb;;;;SAED,aAAU0B,CAAV,EAAa;AACX,WAAK3B,MAAL,GAAc2B,CAAd;AACA,WAAKP,aAAL,CACE,IAAIQ,8BAAJ,CACE,KAAKN,OAAL,CAAaC,WAAb,EADF,EAEE,KAAKC,OAAL,IAAgB,CAAC,CAAC,KAAKA,OAAL,CAAaV,KAFjC,EAGE,CAAC,CAAC,KAAKd,MAHT,CADF;;AAQA,WAAK0B,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAKzB,QAAZ;AACD,K;SAPD,aAAY4B,CAAZ,EAAe;AACb,WAAK5B,QAAL,GAAgB4B,CAAhB;;AACA,WAAKH,OAAL;AACD;;;WA2CD,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;kDApE6CI,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n ModelSetEvent,\n SessionChangedEvent\n} from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport InlineDropdown from './inline-dropdown'; \n\nexport default class RootInlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n }\n\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n this.session && !!this.session.value,\n !!this._model\n )\n );\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(InlineDropdown, {\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n teacherInstructions: this._model.teacherInstructions,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n markup: this._model.markup,\n mode: this._model.mode,\n choices: this._model.choices,\n value: this._session.value,\n feedback: this._model.feedback,\n onChange: this.changeSession\n });\n\n ReactDOM.render(elem, this, () => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(\n new SessionChangedEvent(\n this.tagName.toLowerCase(),\n this.session && !!this.session.value\n )\n );\n };\n\n changeSession = value => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this._render();\n }\n}\n"],"file":"index.js"}
|
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.10.
|
|
7
|
+
"version": "3.10.7",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"author": "",
|
|
27
27
|
"license": "ISC",
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "de8f41ecfc06944b7bc890a167f81818d2bf1845",
|
|
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==
|