@pie-element/ebsr 6.6.3-next.620 → 6.6.3-next.762

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.
@@ -11,9 +11,9 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
11
11
 
12
12
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
13
13
 
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
+ 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; }
15
15
 
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
+ 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; }
17
17
 
18
18
  var defaultConfig = {
19
19
  addChoiceButton: {
@@ -61,6 +61,11 @@ var defaultConfig = {
61
61
  },
62
62
  gridColumns: {
63
63
  label: 'Grid columns'
64
+ },
65
+ spellCheck: {
66
+ label: 'Spellcheck',
67
+ settings: false,
68
+ enabled: true
64
69
  }
65
70
  };
66
71
 
@@ -77,6 +82,7 @@ var partModel = function partModel(base) {
77
82
  rationale: '',
78
83
  teacherInstructionsEnabled: true,
79
84
  studentInstructionsEnabled: true,
85
+ spellCheckEnabled: true,
80
86
  choicesLayout: 'vertical',
81
87
  gridColumns: '2'
82
88
  }, base);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["defaultConfig","addChoiceButton","settings","label","choiceMode","choicePrefix","deleteChoice","feedback","lockChoiceOrder","prompt","rationale","studentInstructions","teacherInstructions","choicesLayout","gridColumns","partModel","base","choices","rationaleEnabled","feedbackEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","partLabels","partLabelType","partialScoring","partA","partB","configuration","scoringType","settingsPanelDisabled"],"mappings":";;;;;;;;;;;AAAA;;;;;;AAEA,IAAMA,aAAa,GAAG;AACpBC,EAAAA,eAAe,EAAE;AACfC,IAAAA,QAAQ,EAAE,IADK;AAEfC,IAAAA,KAAK,EAAE;AAFQ,GADG;AAKpBC,EAAAA,UAAU,EAAE;AACVF,IAAAA,QAAQ,EAAE,IADA;AAEVC,IAAAA,KAAK,EAAE;AAFG,GALQ;AASpBE,EAAAA,YAAY,EAAE;AACZH,IAAAA,QAAQ,EAAE,IADE;AAEZC,IAAAA,KAAK,EAAE;AAFK,GATM;AAapBG,EAAAA,YAAY,EAAE;AACZJ,IAAAA,QAAQ,EAAE;AADE,GAbM;AAgBpBK,EAAAA,QAAQ,EAAE;AACRL,IAAAA,QAAQ,EAAE,IADF;AAERC,IAAAA,KAAK,EAAE;AAFC,GAhBU;AAoBpBK,EAAAA,eAAe,EAAE;AACfN,IAAAA,QAAQ,EAAE,IADK;AAEfC,IAAAA,KAAK,EAAE;AAFQ,GApBG;AAwBpBM,EAAAA,MAAM,EAAE;AACNP,IAAAA,QAAQ,EAAE,IADJ;AAENC,IAAAA,KAAK,EAAE;AAFD,GAxBY;AA4BpBO,EAAAA,SAAS,EAAE;AACTR,IAAAA,QAAQ,EAAE,IADD;AAETC,IAAAA,KAAK,EAAE;AAFE,GA5BS;AAgCpBQ,EAAAA,mBAAmB,EAAE;AACnBT,IAAAA,QAAQ,EAAE,KADS;AAEnBC,IAAAA,KAAK,EAAE;AAFY,GAhCD;AAoCpBS,EAAAA,mBAAmB,EAAE;AACnBV,IAAAA,QAAQ,EAAE,IADS;AAEnBC,IAAAA,KAAK,EAAE;AAFY,GApCD;AAwCpBU,EAAAA,aAAa,EAAE;AACbX,IAAAA,QAAQ,EAAE,KADG;AAEbC,IAAAA,KAAK,EAAE;AAFM,GAxCK;AA4CpBW,EAAAA,WAAW,EAAE;AACXX,IAAAA,KAAK,EAAE;AADI;AA5CO,CAAtB;;AAiDA,IAAMY,SAAS,GAAG,SAAZA,SAAY,CAAAC,IAAI;AAAA;AACpBZ,IAAAA,UAAU,EAAE,OADQ;AAEpBa,IAAAA,OAAO,EAAE,EAFW;AAGpBZ,IAAAA,YAAY,EAAE,SAHM;AAIpBI,IAAAA,MAAM,EAAE,QAJY;AAKpBS,IAAAA,gBAAgB,EAAE,IALE;AAMpBC,IAAAA,eAAe,EAAE,IANG;AAOpBC,IAAAA,aAAa,EAAE,IAPK;AAQpBR,IAAAA,mBAAmB,EAAE,EARD;AASpBF,IAAAA,SAAS,EAAE,EATS;AAUpBW,IAAAA,0BAA0B,EAAE,IAVR;AAWpBC,IAAAA,0BAA0B,EAAE,IAXR;AAYpBT,IAAAA,aAAa,EAAE,UAZK;AAapBC,IAAAA,WAAW,EAAE;AAbO,KAcjBE,IAdiB;AAAA,CAAtB;;eAiBe;AACbO,EAAAA,KAAK,EAAE;AACLC,IAAAA,UAAU,EAAE,IADP;AAELC,IAAAA,aAAa,EAAE,SAFV;AAGLC,IAAAA,cAAc,EAAE,KAHX;AAILC,IAAAA,KAAK,EAAEZ,SAAS,CAAC;AAAEN,MAAAA,MAAM,EAAE;AAAV,KAAD,CAJX;AAKLmB,IAAAA,KAAK,EAAEb,SAAS,CAAC;AAAEN,MAAAA,MAAM,EAAE;AAAV,KAAD;AALX,GADM;AAQboB,EAAAA,aAAa,EAAE;AACbH,IAAAA,cAAc,EAAE;AACdvB,MAAAA,KAAK,EAAE,uBADO;AAEd;AACA;AACA;AACAD,MAAAA,QAAQ,EAAE;AALI,KADH;AAQb4B,IAAAA,WAAW,EAAE;AACX5B,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KARA;AAYbwB,IAAAA,KAAK,EAAE,2BAAU3B,aAAV,CAZM;AAab4B,IAAAA,KAAK,EAAE,2BAAU5B,aAAV,CAbM;AAcbwB,IAAAA,UAAU,EAAE;AACVtB,MAAAA,QAAQ,EAAE,IADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KAdC;AAkBb4B,IAAAA,qBAAqB,EAAE;AAlBV;AARF,C","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\n\nconst defaultConfig = {\n addChoiceButton: {\n settings: true,\n label: 'Add a Choice'\n },\n choiceMode: {\n settings: true,\n label: 'Response Type'\n },\n choicePrefix: {\n settings: true,\n label: 'Choice Labels'\n },\n deleteChoice: {\n settings: true\n },\n feedback: {\n settings: true,\n label: 'Feedback'\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order'\n },\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n choicesLayout: {\n settings: false,\n label: 'Choices Layout',\n },\n gridColumns: {\n label: 'Grid columns',\n },\n};\n\nconst partModel = base => ({\n choiceMode: 'radio',\n choices: [],\n choicePrefix: 'numbers',\n prompt: 'Prompt',\n rationaleEnabled: true,\n feedbackEnabled: true,\n promptEnabled: true,\n teacherInstructions: '',\n rationale: '',\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n choicesLayout: 'vertical',\n gridColumns: '2',\n ...base\n});\n\nexport default {\n model: {\n partLabels: true,\n partLabelType: 'Letters',\n partialScoring: false,\n partA: partModel({ prompt: 'Prompt A' }),\n partB: partModel({ prompt: 'Prompt B' })\n },\n configuration: {\n partialScoring: {\n label: 'Allow Partial Scoring',\n // this will turn off partial scoring toggle in the settings tab by default for the interaction\n // as we'd like partial scoring to be controlled from the environment entirely\n // if any other consumers would like to enable it for themselves, they can do so from their model directly.\n settings: false\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type'\n },\n partA: cloneDeep(defaultConfig),\n partB: cloneDeep(defaultConfig),\n partLabels: {\n settings: true,\n label: 'Part Labels'\n },\n settingsPanelDisabled: true\n }\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["defaultConfig","addChoiceButton","settings","label","choiceMode","choicePrefix","deleteChoice","feedback","lockChoiceOrder","prompt","rationale","studentInstructions","teacherInstructions","choicesLayout","gridColumns","spellCheck","enabled","partModel","base","choices","rationaleEnabled","feedbackEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","spellCheckEnabled","model","partLabels","partLabelType","partialScoring","partA","partB","configuration","scoringType","settingsPanelDisabled"],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\n\nconst defaultConfig = {\n addChoiceButton: {\n settings: true,\n label: 'Add a Choice'\n },\n choiceMode: {\n settings: true,\n label: 'Response Type'\n },\n choicePrefix: {\n settings: true,\n label: 'Choice Labels'\n },\n deleteChoice: {\n settings: true\n },\n feedback: {\n settings: true,\n label: 'Feedback'\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order'\n },\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n choicesLayout: {\n settings: false,\n label: 'Choices Layout',\n },\n gridColumns: {\n label: 'Grid columns',\n },\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n};\n\nconst partModel = base => ({\n choiceMode: 'radio',\n choices: [],\n choicePrefix: 'numbers',\n prompt: 'Prompt',\n rationaleEnabled: true,\n feedbackEnabled: true,\n promptEnabled: true,\n teacherInstructions: '',\n rationale: '',\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n spellCheckEnabled:true,\n choicesLayout: 'vertical',\n gridColumns: '2',\n ...base\n});\n\nexport default {\n model: {\n partLabels: true,\n partLabelType: 'Letters',\n partialScoring: false,\n partA: partModel({ prompt: 'Prompt A' }),\n partB: partModel({ prompt: 'Prompt B' })\n },\n configuration: {\n partialScoring: {\n label: 'Allow Partial Scoring',\n // this will turn off partial scoring toggle in the settings tab by default for the interaction\n // as we'd like partial scoring to be controlled from the environment entirely\n // if any other consumers would like to enable it for themselves, they can do so from their model directly.\n settings: false\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type'\n },\n partA: cloneDeep(defaultConfig),\n partB: cloneDeep(defaultConfig),\n partLabels: {\n settings: true,\n label: 'Part Labels'\n },\n settingsPanelDisabled: true\n }\n};\n"],"file":"defaults.js"}
@@ -9,14 +9,14 @@ exports["default"] = void 0;
9
9
 
10
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
11
 
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
12
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
13
 
16
14
  var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
17
15
 
18
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
17
 
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
20
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
21
21
 
22
22
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
@@ -41,9 +41,9 @@ var _defaults2 = _interopRequireDefault(require("./defaults"));
41
41
 
42
42
  var _excluded = ["partA", "partB"];
43
43
 
44
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
44
+ 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; }
45
45
 
46
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
46
+ 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; }
47
47
 
48
48
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
49
49
 
@@ -62,7 +62,7 @@ var EbsrMCConfigure = /*#__PURE__*/function (_MultipleChoiceConfig) {
62
62
  return _super.apply(this, arguments);
63
63
  }
64
64
 
65
- return EbsrMCConfigure;
65
+ return (0, _createClass2["default"])(EbsrMCConfigure);
66
66
  }(_lib["default"]);
67
67
 
68
68
  var defineMultipleChoice = function defineMultipleChoice() {
@@ -35,9 +35,9 @@ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
35
35
 
36
36
  var _excluded = ["partA", "partB", "partialScoring", "scoringType"];
37
37
 
38
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
38
+ 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; }
39
39
 
40
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
40
+ 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; }
41
41
 
42
42
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
43
43
 
@@ -149,7 +149,9 @@ var Main = /*#__PURE__*/function (_React$Component) {
149
149
  _ref$gridColumns = _ref.gridColumns,
150
150
  gridColumnsA = _ref$gridColumns === void 0 ? {} : _ref$gridColumns,
151
151
  _ref$rationale = _ref.rationale,
152
- rationaleA = _ref$rationale === void 0 ? {} : _ref$rationale;
152
+ rationaleA = _ref$rationale === void 0 ? {} : _ref$rationale,
153
+ _ref$spellCheck = _ref.spellCheck,
154
+ spellCheckA = _ref$spellCheck === void 0 ? {} : _ref$spellCheck;
153
155
 
154
156
  var _ref2 = partB || {},
155
157
  _ref2$feedback = _ref2.feedback,
@@ -171,7 +173,9 @@ var Main = /*#__PURE__*/function (_React$Component) {
171
173
  _ref2$gridColumns = _ref2.gridColumns,
172
174
  gridColumnsB = _ref2$gridColumns === void 0 ? {} : _ref2$gridColumns,
173
175
  _ref2$rationale = _ref2.rationale,
174
- rationaleB = _ref2$rationale === void 0 ? {} : _ref2$rationale;
176
+ rationaleB = _ref2$rationale === void 0 ? {} : _ref2$rationale,
177
+ _ref2$spellCheck = _ref2.spellCheck,
178
+ spellCheckB = _ref2$spellCheck === void 0 ? {} : _ref2$spellCheck;
175
179
 
176
180
  var type = partLabelType || 'Numbers';
177
181
  var typeIsNumber = type === 'Numbers';
@@ -215,7 +219,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
215
219
  'partA.promptEnabled': promptA.settings && toggle(promptA.label),
216
220
  'partA.teacherInstructionsEnabled': teacherInstructionsA.settings && toggle(teacherInstructionsA.label),
217
221
  'partA.studentInstructionsEnabled': studentInstructionsA.settings && toggle(studentInstructionsA.label),
218
- 'partA.rationaleEnabled': rationaleA.settings && toggle(rationaleA.label)
222
+ 'partA.rationaleEnabled': rationaleA.settings && toggle(rationaleA.label),
223
+ 'partA.spellCheckEnabled': spellCheckA.settings && toggle(spellCheckA.label)
219
224
  }), (0, _defineProperty2["default"])(_ref3, "Settings ".concat(secondPart), {
220
225
  'partB.choiceMode': choiceModeB.settings && radio(choiceModeB.label, ['checkbox', 'radio']),
221
226
  'partB.choicePrefix': choicePrefixB.settings && radio(choicePrefixB.label, ['numbers', 'letters']),
@@ -227,7 +232,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
227
232
  'partB.promptEnabled': promptB.settings && toggle(promptB.label),
228
233
  'partB.teacherInstructionsEnabled': teacherInstructionsB.settings && toggle(teacherInstructionsB.label),
229
234
  'partB.studentInstructionsEnabled': studentInstructionsB.settings && toggle(studentInstructionsB.label),
230
- 'partB.rationaleEnabled': rationaleB.settings && toggle(rationaleB.label)
235
+ 'partB.rationaleEnabled': rationaleB.settings && toggle(rationaleB.label),
236
+ 'partB.spellCheckEnabled': spellCheckB.settings && toggle(spellCheckB.label)
231
237
  }), _ref3)
232
238
  })
233
239
  }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["Panel","settings","toggle","radio","dropdown","styles","theme","design","paddingTop","spacing","unit","part","display","flexDirection","padding","Main","choices","correctFound","map","choice","correct","model","key","onModelChanged","props","partA","choiceMode","removeExtraChoices","partB","classes","configuration","onConfigurationChanged","partLabelType","modelPartA","modelPartB","partialScoring","scoringType","generalConfiguration","feedback","feedbackA","choiceModeA","choicePrefix","choicePrefixA","lockChoiceOrder","lockChoiceOrderA","prompt","promptA","teacherInstructions","teacherInstructionsA","studentInstructions","studentInstructionsA","choicesLayout","choicesLayoutA","gridColumns","gridColumnsA","rationale","rationaleA","feedbackB","choiceModeB","choicePrefixB","lockChoiceOrderB","promptB","teacherInstructionsB","studentInstructionsB","choicesLayoutB","gridColumnsB","rationaleB","type","typeIsNumber","firstPart","secondPart","nrOfColumnsAvailable","length","Array","from","_","i","partLabels","label","ref","_model","React","Component","PropTypes","object","func","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { settings, layout } from '@pie-lib/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst styles = theme => ({\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n part: {\n display: 'flex',\n flexDirection: 'column',\n padding: '16px 0 32px'\n }\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n configuration: PropTypes.object,\n model: PropTypes.object,\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func\n };\n\n removeExtraChoices = (choices) => {\n let correctFound = false;\n\n return (choices || []).map(choice => {\n if (correctFound) {\n choice.correct = false;\n return choice;\n }\n\n if (choice.correct) {\n correctFound = true;\n }\n\n return choice;\n });\n }\n\n onModelChanged = (model, key) => {\n const { onModelChanged } = this.props;\n\n if (key === 'partA.choiceMode' && model.partA.choiceMode === 'radio') {\n model.partA.choices = this.removeExtraChoices(model.partA.choices);\n\n return onModelChanged(model, true);\n }\n\n if (key === 'partB.choiceMode' && model.partB.choiceMode === 'radio') {\n model.partB.choices = this.removeExtraChoices(model.partB.choices);\n\n return onModelChanged(model, true);\n }\n\n return onModelChanged(model);\n }\n\n render() {\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged\n } = this.props;\n const { partLabelType, partA: modelPartA, partB: modelPartB } = model;\n const { partA, partB, partialScoring, scoringType, ...generalConfiguration } = configuration;\n const {\n feedback: feedbackA = {},\n choiceMode: choiceModeA = {},\n choicePrefix: choicePrefixA = {},\n lockChoiceOrder: lockChoiceOrderA = {},\n prompt: promptA = {},\n teacherInstructions: teacherInstructionsA = {},\n studentInstructions: studentInstructionsA = {},\n choicesLayout: choicesLayoutA = {},\n gridColumns: gridColumnsA = {},\n rationale: rationaleA = {}\n } = partA || {};\n const {\n feedback: feedbackB = {},\n choiceMode: choiceModeB = {},\n choicePrefix: choicePrefixB = {},\n lockChoiceOrder: lockChoiceOrderB = {},\n prompt: promptB = {},\n teacherInstructions: teacherInstructionsB = {},\n studentInstructions: studentInstructionsB = {},\n choicesLayout: choicesLayoutB = {},\n gridColumns: gridColumnsB = {},\n rationale: rationaleB = {}\n } = partB || {};\n const type = partLabelType || 'Numbers';\n const typeIsNumber = type === 'Numbers';\n const firstPart = `Part ${typeIsNumber ? '1' : 'A'}`;\n const secondPart = `Part ${typeIsNumber ? '2' : 'B'}`;\n const nrOfColumnsAvailable = {\n partA: modelPartA.choices && modelPartA.choices.length ?\n Array.from({length: modelPartA.choices.length}, (_, i) => (`${i + 1}`)) : [],\n partB: modelPartB.choices && modelPartB.choices.length ?\n Array.from({length: modelPartB.choices.length}, (_, i) => (`${i + 1}`)) : [],\n };\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n onChangeModel={this.onModelChanged}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n 'Settings for both': {\n partLabels:\n generalConfiguration.partLabels.settings &&\n toggle(generalConfiguration.partLabels.label),\n partLabelType:\n model.partLabels && dropdown('', ['Numbers', 'Letters']),\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n scoringType:\n scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])\n },\n [`Settings ${firstPart}`]: {\n 'partA.choiceMode':\n choiceModeA.settings &&\n radio(choiceModeA.label, ['checkbox', 'radio']),\n 'partA.choicePrefix':\n choicePrefixA.settings &&\n radio(choicePrefixA.label, ['numbers', 'letters']),\n 'partA.lockChoiceOrder':\n lockChoiceOrderA.settings && toggle(lockChoiceOrderA.label),\n 'partA.choicesLayout':\n choicesLayoutA.settings &&\n dropdown(choicesLayoutA.label, ['vertical', 'grid', 'horizontal']),\n 'partA.gridColumns':\n choicesLayoutA.settings && modelPartA.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.partA.length > 0 &&\n dropdown(gridColumnsA.label, nrOfColumnsAvailable.partA)\n },\n [`Properties ${firstPart}`]: {\n 'partA.feedbackEnabled': feedbackA.settings &&\n toggle(feedbackA.label),\n 'partA.promptEnabled':\n promptA.settings && toggle(promptA.label),\n 'partA.teacherInstructionsEnabled':\n teacherInstructionsA.settings &&\n toggle(teacherInstructionsA.label),\n 'partA.studentInstructionsEnabled':\n studentInstructionsA.settings &&\n toggle(studentInstructionsA.label),\n 'partA.rationaleEnabled':\n rationaleA.settings && toggle(rationaleA.label)\n },\n [`Settings ${secondPart}`]: {\n 'partB.choiceMode':\n choiceModeB.settings &&\n radio(choiceModeB.label, ['checkbox', 'radio']),\n 'partB.choicePrefix':\n choicePrefixB.settings &&\n radio(choicePrefixB.label, ['numbers', 'letters']),\n 'partB.lockChoiceOrder':\n lockChoiceOrderB.settings && toggle(lockChoiceOrderB.label),\n 'partB.choicesLayout':\n choicesLayoutB.settings &&\n dropdown(choicesLayoutB.label, ['vertical', 'grid', 'horizontal']),\n 'partB.gridColumns':\n choicesLayoutB.settings && modelPartB.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.partB.length > 0 &&\n dropdown(gridColumnsB.label, nrOfColumnsAvailable.partB)\n },\n [`Properties ${secondPart}`]: {\n 'partB.feedbackEnabled':\n feedbackB.settings && toggle(feedbackB.label),\n 'partB.promptEnabled':\n promptB.settings && toggle(promptB.label),\n 'partB.teacherInstructionsEnabled':\n teacherInstructionsB.settings &&\n toggle(teacherInstructionsB.label),\n 'partB.studentInstructionsEnabled':\n studentInstructionsB.settings &&\n toggle(studentInstructionsB.label),\n 'partB.rationaleEnabled':\n rationaleB.settings && toggle(rationaleB.label)\n }\n }}\n />\n }\n >\n <div>\n <div className={classes.part}>\n {model.partLabels && <p>{firstPart}</p>}\n <ebsr-multiple-choice-configure\n id=\"A\"\n key=\"partA\"\n ref={ref => {\n if (ref) {\n // do not use destructuring to get model from props\n this.partA = ref;\n this.partA._model = cloneDeep(this.props.model.partA);\n this.partA.configuration = {\n ...partA,\n ...generalConfiguration\n };\n }\n }}\n />\n </div>\n\n <div className={classes.part}>\n {model.partLabels && <p>{secondPart}</p>}\n <ebsr-multiple-choice-configure\n id=\"B\"\n key=\"partB\"\n ref={ref => {\n if (ref) {\n // do not use destructuring to get model from props\n this.partB = ref;\n this.partB._model = cloneDeep(this.props.model.partB);\n this.partB.configuration = {\n ...partB,\n ...generalConfiguration\n };\n }\n }}\n />\n </div>\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["Panel","settings","toggle","radio","dropdown","styles","theme","design","paddingTop","spacing","unit","part","display","flexDirection","padding","Main","choices","correctFound","map","choice","correct","model","key","onModelChanged","props","partA","choiceMode","removeExtraChoices","partB","classes","configuration","onConfigurationChanged","partLabelType","modelPartA","modelPartB","partialScoring","scoringType","generalConfiguration","feedback","feedbackA","choiceModeA","choicePrefix","choicePrefixA","lockChoiceOrder","lockChoiceOrderA","prompt","promptA","teacherInstructions","teacherInstructionsA","studentInstructions","studentInstructionsA","choicesLayout","choicesLayoutA","gridColumns","gridColumnsA","rationale","rationaleA","spellCheck","spellCheckA","feedbackB","choiceModeB","choicePrefixB","lockChoiceOrderB","promptB","teacherInstructionsB","studentInstructionsB","choicesLayoutB","gridColumnsB","rationaleB","spellCheckB","type","typeIsNumber","firstPart","secondPart","nrOfColumnsAvailable","length","Array","from","_","i","partLabels","label","ref","_model","React","Component","PropTypes","object","func","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { settings, layout } from '@pie-lib/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst styles = theme => ({\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n part: {\n display: 'flex',\n flexDirection: 'column',\n padding: '16px 0 32px'\n }\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n configuration: PropTypes.object,\n model: PropTypes.object,\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func\n };\n\n removeExtraChoices = (choices) => {\n let correctFound = false;\n\n return (choices || []).map(choice => {\n if (correctFound) {\n choice.correct = false;\n return choice;\n }\n\n if (choice.correct) {\n correctFound = true;\n }\n\n return choice;\n });\n }\n\n onModelChanged = (model, key) => {\n const { onModelChanged } = this.props;\n\n if (key === 'partA.choiceMode' && model.partA.choiceMode === 'radio') {\n model.partA.choices = this.removeExtraChoices(model.partA.choices);\n\n return onModelChanged(model, true);\n }\n\n if (key === 'partB.choiceMode' && model.partB.choiceMode === 'radio') {\n model.partB.choices = this.removeExtraChoices(model.partB.choices);\n\n return onModelChanged(model, true);\n }\n\n return onModelChanged(model);\n }\n\n render() {\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged\n } = this.props;\n const { partLabelType, partA: modelPartA, partB: modelPartB } = model;\n const { partA, partB, partialScoring, scoringType, ...generalConfiguration } = configuration;\n const {\n feedback: feedbackA = {},\n choiceMode: choiceModeA = {},\n choicePrefix: choicePrefixA = {},\n lockChoiceOrder: lockChoiceOrderA = {},\n prompt: promptA = {},\n teacherInstructions: teacherInstructionsA = {},\n studentInstructions: studentInstructionsA = {},\n choicesLayout: choicesLayoutA = {},\n gridColumns: gridColumnsA = {},\n rationale: rationaleA = {},\n spellCheck: spellCheckA = {}\n } = partA || {};\n const {\n feedback: feedbackB = {},\n choiceMode: choiceModeB = {},\n choicePrefix: choicePrefixB = {},\n lockChoiceOrder: lockChoiceOrderB = {},\n prompt: promptB = {},\n teacherInstructions: teacherInstructionsB = {},\n studentInstructions: studentInstructionsB = {},\n choicesLayout: choicesLayoutB = {},\n gridColumns: gridColumnsB = {},\n rationale: rationaleB = {},\n spellCheck: spellCheckB = {}\n } = partB || {};\n const type = partLabelType || 'Numbers';\n const typeIsNumber = type === 'Numbers';\n const firstPart = `Part ${typeIsNumber ? '1' : 'A'}`;\n const secondPart = `Part ${typeIsNumber ? '2' : 'B'}`;\n const nrOfColumnsAvailable = {\n partA: modelPartA.choices && modelPartA.choices.length ?\n Array.from({length: modelPartA.choices.length}, (_, i) => (`${i + 1}`)) : [],\n partB: modelPartB.choices && modelPartB.choices.length ?\n Array.from({length: modelPartB.choices.length}, (_, i) => (`${i + 1}`)) : [],\n };\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n onChangeModel={this.onModelChanged}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n 'Settings for both': {\n partLabels:\n generalConfiguration.partLabels.settings &&\n toggle(generalConfiguration.partLabels.label),\n partLabelType:\n model.partLabels && dropdown('', ['Numbers', 'Letters']),\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n scoringType:\n scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])\n },\n [`Settings ${firstPart}`]: {\n 'partA.choiceMode':\n choiceModeA.settings &&\n radio(choiceModeA.label, ['checkbox', 'radio']),\n 'partA.choicePrefix':\n choicePrefixA.settings &&\n radio(choicePrefixA.label, ['numbers', 'letters']),\n 'partA.lockChoiceOrder':\n lockChoiceOrderA.settings && toggle(lockChoiceOrderA.label),\n 'partA.choicesLayout':\n choicesLayoutA.settings &&\n dropdown(choicesLayoutA.label, ['vertical', 'grid', 'horizontal']),\n 'partA.gridColumns':\n choicesLayoutA.settings && modelPartA.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.partA.length > 0 &&\n dropdown(gridColumnsA.label, nrOfColumnsAvailable.partA)\n },\n [`Properties ${firstPart}`]: {\n 'partA.feedbackEnabled': feedbackA.settings &&\n toggle(feedbackA.label),\n 'partA.promptEnabled':\n promptA.settings && toggle(promptA.label),\n 'partA.teacherInstructionsEnabled':\n teacherInstructionsA.settings &&\n toggle(teacherInstructionsA.label),\n 'partA.studentInstructionsEnabled':\n studentInstructionsA.settings &&\n toggle(studentInstructionsA.label),\n 'partA.rationaleEnabled':\n rationaleA.settings && toggle(rationaleA.label),\n 'partA.spellCheckEnabled':\n spellCheckA.settings && toggle(spellCheckA.label),\n },\n [`Settings ${secondPart}`]: {\n 'partB.choiceMode':\n choiceModeB.settings &&\n radio(choiceModeB.label, ['checkbox', 'radio']),\n 'partB.choicePrefix':\n choicePrefixB.settings &&\n radio(choicePrefixB.label, ['numbers', 'letters']),\n 'partB.lockChoiceOrder':\n lockChoiceOrderB.settings && toggle(lockChoiceOrderB.label),\n 'partB.choicesLayout':\n choicesLayoutB.settings &&\n dropdown(choicesLayoutB.label, ['vertical', 'grid', 'horizontal']),\n 'partB.gridColumns':\n choicesLayoutB.settings && modelPartB.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.partB.length > 0 &&\n dropdown(gridColumnsB.label, nrOfColumnsAvailable.partB)\n },\n [`Properties ${secondPart}`]: {\n 'partB.feedbackEnabled':\n feedbackB.settings && toggle(feedbackB.label),\n 'partB.promptEnabled':\n promptB.settings && toggle(promptB.label),\n 'partB.teacherInstructionsEnabled':\n teacherInstructionsB.settings &&\n toggle(teacherInstructionsB.label),\n 'partB.studentInstructionsEnabled':\n studentInstructionsB.settings &&\n toggle(studentInstructionsB.label),\n 'partB.rationaleEnabled':\n rationaleB.settings && toggle(rationaleB.label),\n 'partB.spellCheckEnabled':\n spellCheckB.settings && toggle(spellCheckB.label),\n }\n }}\n />\n }\n >\n <div>\n <div className={classes.part}>\n {model.partLabels && <p>{firstPart}</p>}\n <ebsr-multiple-choice-configure\n id=\"A\"\n key=\"partA\"\n ref={ref => {\n if (ref) {\n // do not use destructuring to get model from props\n this.partA = ref;\n this.partA._model = cloneDeep(this.props.model.partA);\n this.partA.configuration = {\n ...partA,\n ...generalConfiguration\n };\n }\n }}\n />\n </div>\n\n <div className={classes.part}>\n {model.partLabels && <p>{secondPart}</p>}\n <ebsr-multiple-choice-configure\n id=\"B\"\n key=\"partB\"\n ref={ref => {\n if (ref) {\n // do not use destructuring to get model from props\n this.partB = ref;\n this.partB._model = cloneDeep(this.props.model.partB);\n this.partB.configuration = {\n ...partB,\n ...generalConfiguration\n };\n }\n }}\n />\n </div>\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
@@ -10,7 +10,7 @@
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@pie-element/multiple-choice": "^6.1.10",
12
12
  "@pie-framework/pie-configure-events": "^1.2.0",
13
- "@pie-lib/config-ui": "^10.10.20",
13
+ "@pie-lib/config-ui": "^10.10.24",
14
14
  "lodash": "^4.17.15",
15
15
  "prop-types": "^15.6.2",
16
16
  "react": "^16.8.1",
@@ -13,6 +13,7 @@ Object {
13
13
  "promptEnabled": true,
14
14
  "rationale": "",
15
15
  "rationaleEnabled": true,
16
+ "spellCheckEnabled": true,
16
17
  "studentInstructionsEnabled": true,
17
18
  "teacherInstructions": "",
18
19
  "teacherInstructionsEnabled": true,
@@ -28,6 +29,7 @@ Object {
28
29
  "promptEnabled": true,
29
30
  "rationale": "",
30
31
  "rationaleEnabled": true,
32
+ "spellCheckEnabled": true,
31
33
  "studentInstructionsEnabled": true,
32
34
  "teacherInstructions": "",
33
35
  "teacherInstructionsEnabled": true,
@@ -51,6 +53,7 @@ Object {
51
53
  "promptEnabled": true,
52
54
  "rationale": "foo",
53
55
  "rationaleEnabled": true,
56
+ "spellCheckEnabled": true,
54
57
  "studentInstructionsEnabled": true,
55
58
  "teacherInstructions": "ti",
56
59
  "teacherInstructionsEnabled": true,
@@ -66,6 +69,7 @@ Object {
66
69
  "promptEnabled": true,
67
70
  "rationale": "",
68
71
  "rationaleEnabled": true,
72
+ "spellCheckEnabled": true,
69
73
  "studentInstructionsEnabled": true,
70
74
  "teacherInstructions": "",
71
75
  "teacherInstructionsEnabled": true,
@@ -47,6 +47,11 @@ const defaultConfig = {
47
47
  gridColumns: {
48
48
  label: 'Grid columns',
49
49
  },
50
+ spellCheck: {
51
+ label: 'Spellcheck',
52
+ settings:false,
53
+ enabled:true
54
+ },
50
55
  };
51
56
 
52
57
  const partModel = base => ({
@@ -61,6 +66,7 @@ const partModel = base => ({
61
66
  rationale: '',
62
67
  teacherInstructionsEnabled: true,
63
68
  studentInstructionsEnabled: true,
69
+ spellCheckEnabled:true,
64
70
  choicesLayout: 'vertical',
65
71
  gridColumns: '2',
66
72
  ...base
@@ -80,7 +80,8 @@ export class Main extends React.Component {
80
80
  studentInstructions: studentInstructionsA = {},
81
81
  choicesLayout: choicesLayoutA = {},
82
82
  gridColumns: gridColumnsA = {},
83
- rationale: rationaleA = {}
83
+ rationale: rationaleA = {},
84
+ spellCheck: spellCheckA = {}
84
85
  } = partA || {};
85
86
  const {
86
87
  feedback: feedbackB = {},
@@ -92,7 +93,8 @@ export class Main extends React.Component {
92
93
  studentInstructions: studentInstructionsB = {},
93
94
  choicesLayout: choicesLayoutB = {},
94
95
  gridColumns: gridColumnsB = {},
95
- rationale: rationaleB = {}
96
+ rationale: rationaleB = {},
97
+ spellCheck: spellCheckB = {}
96
98
  } = partB || {};
97
99
  const type = partLabelType || 'Numbers';
98
100
  const typeIsNumber = type === 'Numbers';
@@ -155,7 +157,9 @@ export class Main extends React.Component {
155
157
  studentInstructionsA.settings &&
156
158
  toggle(studentInstructionsA.label),
157
159
  'partA.rationaleEnabled':
158
- rationaleA.settings && toggle(rationaleA.label)
160
+ rationaleA.settings && toggle(rationaleA.label),
161
+ 'partA.spellCheckEnabled':
162
+ spellCheckA.settings && toggle(spellCheckA.label),
159
163
  },
160
164
  [`Settings ${secondPart}`]: {
161
165
  'partB.choiceMode':
@@ -186,7 +190,9 @@ export class Main extends React.Component {
186
190
  studentInstructionsB.settings &&
187
191
  toggle(studentInstructionsB.label),
188
192
  'partB.rationaleEnabled':
189
- rationaleB.settings && toggle(rationaleB.label)
193
+ rationaleB.settings && toggle(rationaleB.label),
194
+ 'partB.spellCheckEnabled':
195
+ spellCheckB.settings && toggle(spellCheckB.label),
190
196
  }
191
197
  }}
192
198
  />
@@ -5,9 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.createDefaultModel = exports.createCorrectResponseSession = void 0;
8
9
  exports.model = model;
10
+ exports.normalize = void 0;
9
11
  exports.outcome = outcome;
10
- exports.createCorrectResponseSession = exports.createDefaultModel = exports.normalize = void 0;
11
12
 
12
13
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
14
 
@@ -29,9 +30,9 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
29
30
 
30
31
  var _excluded = ["partA", "partB"];
31
32
 
32
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
33
+ 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; }
33
34
 
34
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
+ 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; }
35
36
 
36
37
  var prepareChoice = function prepareChoice(model, env, defaultFeedback) {
37
38
  return function (choice) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["prepareChoice","model","env","defaultFeedback","choice","out","label","value","role","mode","rationale","rationaleEnabled","correct","feedbackEnabled","feedbackType","feedback","type","parsePart","part","key","session","Object","assign","incorrect","choices","map","disabled","complete","min","filter","c","length","responseCorrect","undefined","normalize","partA","partB","question","partLabels","partLabelType","defaults","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","gridColumns","choicesLayout","verticalMode","updateSession","normalizedQuestion","shuffledValues","us","id","element","update","Promise","resolve","partASession","partALockChoiceOrder","partAChoices","partBChoices","partBSession","partBLockChoiceOrder","e","console","error","partLabel","teacherInstructions","prompt","createDefaultModel","isCorrect","getScore","config","sessionPart","maxScore","sessionPartValue","chosen","find","v","correctAndNotChosen","incorrectAndChosen","correctChoices","reduce","total","partialScoring","parseFloat","toFixed","outcome","score","scoreA","scoreB","empty","max","returnPartCorrect","answers","forEach","i","push","createCorrectResponseSession","partACorrect","partBCorrect"],"mappings":"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","sourcesContent":["import defaults from './defaults';\nimport { lockChoices, getShuffledChoices } from '@pie-lib/controller-utils';\nimport { isResponseCorrect } from './utils';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\n\nconst prepareChoice = (model, env, defaultFeedback) => choice => {\n const out = {\n label: choice.label,\n value: choice.value\n };\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n out.rationale = model.rationaleEnabled ? choice.rationale : null;\n } else {\n out.rationale = null;\n }\n\n if (env.mode === 'evaluate') {\n out.correct = !!choice.correct;\n\n if (model.feedbackEnabled) {\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback[choice.correct ? 'correct' : 'incorrect'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n }\n\n return out;\n};\n\nconst parsePart = (part, key, session, env) => {\n const defaultFeedback = Object.assign(\n { correct: 'Correct', incorrect: 'Incorrect' },\n part.defaultFeedback\n );\n\n let choices = part.choices\n ? part.choices.map(prepareChoice(part, env, defaultFeedback))\n : [];\n\n return {\n ...part,\n choices,\n disabled: env.mode !== 'gather',\n complete: {\n min: part.choices.filter(c => c.correct).length\n },\n responseCorrect:\n env.mode === 'evaluate'\n ? isResponseCorrect(part, key, session)\n : undefined\n };\n};\n\nexport const normalize = ({ partA = {}, partB = {}, ...question }) => ({\n partLabels: true,\n partLabelType: 'Letters',\n ...question,\n partA: {\n ...defaults.partA,\n rationaleEnabled: true,\n feedbackEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n gridColumns: '2',\n ...partA,\n choicesLayout: partA.choicesLayout || (partA.verticalMode === false && 'horizontal') || 'vertical'\n },\n partB: {\n ...defaults.partB,\n rationaleEnabled: true,\n promptEnabled: true,\n feedbackEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n gridColumns: '2',\n ...partB,\n choicesLayout: partB.choicesLayout || (partB.verticalMode === false && 'horizontal') || 'vertical'\n }\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 async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n const partA = parsePart(normalizedQuestion.partA, 'partA', session, env);\n const partB = parsePart(normalizedQuestion.partB, 'partB', session, env);\n\n const shuffledValues = {};\n\n const us = part => (id, element, update) =>\n new Promise(resolve => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n\n const partASession = get(session, 'value.partA');\n const partALockChoiceOrder = lockChoices(normalizedQuestion.partA, partASession, env);\n\n const { choices: partAChoices } = partA || {};\n const { choices: partBChoices } = partB || {};\n\n if (!partALockChoiceOrder && partAChoices && partAChoices.length) {\n partA.choices = await getShuffledChoices(\n partAChoices,\n { shuffledValues: (session.shuffledValues || {}).partA },\n us('partA'),\n 'value'\n );\n }\n\n const partBSession = get(session, 'value.partB');\n const partBLockChoiceOrder = lockChoices(normalizedQuestion.partB, partBSession, env);\n\n if (!partBLockChoiceOrder && partBChoices && partBChoices.length) {\n partB.choices = await getShuffledChoices(\n partBChoices,\n { shuffledValues: (session.shuffledValues || {}).partB },\n us('partB'),\n 'value'\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues\n }).catch(e => {\n console.error('update session failed', e);\n });\n }\n }\n\n if (normalizedQuestion.partLabels) {\n partA.partLabel =\n normalizedQuestion.partLabelType === 'Letters' ? 'Part A' : 'Part 1';\n partB.partLabel =\n normalizedQuestion.partLabelType === 'Letters' ? 'Part B' : 'Part 2';\n } else {\n partA.partLabel = undefined;\n partB.partLabel = undefined;\n }\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n partA.teacherInstructions = normalizedQuestion.partA\n .teacherInstructionsEnabled\n ? normalizedQuestion.partA.teacherInstructions\n : null;\n partB.teacherInstructions = normalizedQuestion.partB\n .teacherInstructionsEnabled\n ? normalizedQuestion.partB.teacherInstructions\n : null;\n } else {\n partA.teacherInstructions = null;\n partB.teacherInstructions = null;\n }\n\n partA.prompt = normalizedQuestion.partA.promptEnabled\n ? normalizedQuestion.partA.prompt\n : null;\n partB.prompt = normalizedQuestion.partB.promptEnabled\n ? normalizedQuestion.partB.prompt\n : null;\n\n return new Promise(resolve => {\n resolve({\n disabled: env.mode !== 'gather',\n mode: env.mode,\n partA,\n partB\n });\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise(resolve => {\n resolve({\n ...defaults,\n ...model\n });\n });\n\nconst isCorrect = c => c.correct === true;\n\nconst getScore = (config, sessionPart, key) => {\n const { choices = [] } = (config && config[key]) || {};\n const maxScore = choices.length;\n const { value: sessionPartValue } = sessionPart || {};\n\n const chosen = c => !!(sessionPartValue || []).find(v => v === c.value);\n const correctAndNotChosen = c => isCorrect(c) && !chosen(c);\n const incorrectAndChosen = c => !isCorrect(c) && chosen(c);\n const correctChoices = choices.reduce((total, choice) => {\n if (correctAndNotChosen(choice) || incorrectAndChosen(choice)) {\n return total - 1;\n } else {\n return total;\n }\n }, choices.length);\n\n // determine score for a part\n if (!config.partialScoring && correctChoices < maxScore) {\n return 0;\n }\n\n return parseFloat(maxScore ? (correctChoices / maxScore).toFixed(2) : 0);\n};\n\nexport function outcome(config, session) {\n return new Promise(resolve => {\n const { value } = session || {};\n\n if (!session || !value) {\n resolve({ score: 0, scoreA: 0, scoreB: 0, empty: true });\n }\n\n if (value) {\n const { partA, partB } = value || {};\n\n const scoreA = getScore(config, partA, 'partA');\n const scoreB = getScore(config, partB, 'partB');\n\n if (!config.partialScoring) {\n // The EBSR item is worth 1 point\n // That point is awarded if and only if both parts are fully correct, otherwise no points are awarded\n resolve({ score: (scoreA === 1 && scoreB === 1) ? 1 : 0, scoreA, scoreB, max: 1 });\n } else {\n // The EBSR item is worth 2 points\n if (scoreA === 1) {\n if (scoreB === 1) {\n // If Part A and Part B are both correct, 2 points are awarded\n resolve({ score: 2, scoreA, scoreB, max: 2 });\n } else {\n // If Part A is correct and part B is incorrect, 1 point is awarded\n resolve({ score: 1, scoreA, scoreB, max: 2 });\n }\n } else {\n // For all other combinations, no points are awarded\n resolve({ score: 0, scoreA, scoreB, max: 2 });\n }\n }\n }\n });\n}\n\nconst returnPartCorrect = choices => {\n let answers = [];\n\n choices.forEach(i => {\n const { correct, value } = i;\n if (correct) {\n answers.push(value);\n }\n });\n return answers;\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise(resolve => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { partA, partB } = question;\n\n const partACorrect = returnPartCorrect(partA.choices);\n const partBCorrect = returnPartCorrect(partB.choices);\n\n resolve({\n value: {\n partA: {\n id: 'partA',\n value: partACorrect\n },\n partB: {\n id: 'partB',\n value: partBCorrect\n }\n },\n id: '1'\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["prepareChoice","model","env","defaultFeedback","choice","out","label","value","role","mode","rationale","rationaleEnabled","correct","feedbackEnabled","feedbackType","feedback","type","parsePart","part","key","session","Object","assign","incorrect","choices","map","disabled","complete","min","filter","c","length","responseCorrect","undefined","normalize","partA","partB","question","partLabels","partLabelType","defaults","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","gridColumns","choicesLayout","verticalMode","updateSession","normalizedQuestion","shuffledValues","us","id","element","update","Promise","resolve","partASession","partALockChoiceOrder","partAChoices","partBChoices","partBSession","partBLockChoiceOrder","e","console","error","partLabel","teacherInstructions","prompt","createDefaultModel","isCorrect","getScore","config","sessionPart","maxScore","sessionPartValue","chosen","find","v","correctAndNotChosen","incorrectAndChosen","correctChoices","reduce","total","partialScoring","parseFloat","toFixed","outcome","score","scoreA","scoreB","empty","max","returnPartCorrect","answers","forEach","i","push","createCorrectResponseSession","partACorrect","partBCorrect"],"mappings":"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","sourcesContent":["import defaults from './defaults';\nimport { lockChoices, getShuffledChoices } from '@pie-lib/controller-utils';\nimport { isResponseCorrect } from './utils';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\n\nconst prepareChoice = (model, env, defaultFeedback) => choice => {\n const out = {\n label: choice.label,\n value: choice.value\n };\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n out.rationale = model.rationaleEnabled ? choice.rationale : null;\n } else {\n out.rationale = null;\n }\n\n if (env.mode === 'evaluate') {\n out.correct = !!choice.correct;\n\n if (model.feedbackEnabled) {\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback[choice.correct ? 'correct' : 'incorrect'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n }\n\n return out;\n};\n\nconst parsePart = (part, key, session, env) => {\n const defaultFeedback = Object.assign(\n { correct: 'Correct', incorrect: 'Incorrect' },\n part.defaultFeedback\n );\n\n let choices = part.choices\n ? part.choices.map(prepareChoice(part, env, defaultFeedback))\n : [];\n\n return {\n ...part,\n choices,\n disabled: env.mode !== 'gather',\n complete: {\n min: part.choices.filter(c => c.correct).length\n },\n responseCorrect:\n env.mode === 'evaluate'\n ? isResponseCorrect(part, key, session)\n : undefined\n };\n};\n\nexport const normalize = ({ partA = {}, partB = {}, ...question }) => ({\n partLabels: true,\n partLabelType: 'Letters',\n ...question,\n partA: {\n ...defaults.partA,\n rationaleEnabled: true,\n feedbackEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n gridColumns: '2',\n ...partA,\n choicesLayout: partA.choicesLayout || (partA.verticalMode === false && 'horizontal') || 'vertical'\n },\n partB: {\n ...defaults.partB,\n rationaleEnabled: true,\n promptEnabled: true,\n feedbackEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n gridColumns: '2',\n ...partB,\n choicesLayout: partB.choicesLayout || (partB.verticalMode === false && 'horizontal') || 'vertical'\n }\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 async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n const partA = parsePart(normalizedQuestion.partA, 'partA', session, env);\n const partB = parsePart(normalizedQuestion.partB, 'partB', session, env);\n\n const shuffledValues = {};\n\n const us = part => (id, element, update) =>\n new Promise(resolve => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n\n const partASession = get(session, 'value.partA');\n const partALockChoiceOrder = lockChoices(normalizedQuestion.partA, partASession, env);\n\n const { choices: partAChoices } = partA || {};\n const { choices: partBChoices } = partB || {};\n\n if (!partALockChoiceOrder && partAChoices && partAChoices.length) {\n partA.choices = await getShuffledChoices(\n partAChoices,\n { shuffledValues: (session.shuffledValues || {}).partA },\n us('partA'),\n 'value'\n );\n }\n\n const partBSession = get(session, 'value.partB');\n const partBLockChoiceOrder = lockChoices(normalizedQuestion.partB, partBSession, env);\n\n if (!partBLockChoiceOrder && partBChoices && partBChoices.length) {\n partB.choices = await getShuffledChoices(\n partBChoices,\n { shuffledValues: (session.shuffledValues || {}).partB },\n us('partB'),\n 'value'\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues\n }).catch(e => {\n console.error('update session failed', e);\n });\n }\n }\n\n if (normalizedQuestion.partLabels) {\n partA.partLabel =\n normalizedQuestion.partLabelType === 'Letters' ? 'Part A' : 'Part 1';\n partB.partLabel =\n normalizedQuestion.partLabelType === 'Letters' ? 'Part B' : 'Part 2';\n } else {\n partA.partLabel = undefined;\n partB.partLabel = undefined;\n }\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n partA.teacherInstructions = normalizedQuestion.partA\n .teacherInstructionsEnabled\n ? normalizedQuestion.partA.teacherInstructions\n : null;\n partB.teacherInstructions = normalizedQuestion.partB\n .teacherInstructionsEnabled\n ? normalizedQuestion.partB.teacherInstructions\n : null;\n } else {\n partA.teacherInstructions = null;\n partB.teacherInstructions = null;\n }\n\n partA.prompt = normalizedQuestion.partA.promptEnabled\n ? normalizedQuestion.partA.prompt\n : null;\n partB.prompt = normalizedQuestion.partB.promptEnabled\n ? normalizedQuestion.partB.prompt\n : null;\n\n return new Promise(resolve => {\n resolve({\n disabled: env.mode !== 'gather',\n mode: env.mode,\n partA,\n partB\n });\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise(resolve => {\n resolve({\n ...defaults,\n ...model\n });\n });\n\nconst isCorrect = c => c.correct === true;\n\nconst getScore = (config, sessionPart, key) => {\n const { choices = [] } = (config && config[key]) || {};\n const maxScore = choices.length;\n const { value: sessionPartValue } = sessionPart || {};\n\n const chosen = c => !!(sessionPartValue || []).find(v => v === c.value);\n const correctAndNotChosen = c => isCorrect(c) && !chosen(c);\n const incorrectAndChosen = c => !isCorrect(c) && chosen(c);\n const correctChoices = choices.reduce((total, choice) => {\n if (correctAndNotChosen(choice) || incorrectAndChosen(choice)) {\n return total - 1;\n } else {\n return total;\n }\n }, choices.length);\n\n // determine score for a part\n if (!config.partialScoring && correctChoices < maxScore) {\n return 0;\n }\n\n return parseFloat(maxScore ? (correctChoices / maxScore).toFixed(2) : 0);\n};\n\nexport function outcome(config, session) {\n return new Promise(resolve => {\n const { value } = session || {};\n\n if (!session || !value) {\n resolve({ score: 0, scoreA: 0, scoreB: 0, empty: true });\n }\n\n if (value) {\n const { partA, partB } = value || {};\n\n const scoreA = getScore(config, partA, 'partA');\n const scoreB = getScore(config, partB, 'partB');\n\n if (!config.partialScoring) {\n // The EBSR item is worth 1 point\n // That point is awarded if and only if both parts are fully correct, otherwise no points are awarded\n resolve({ score: (scoreA === 1 && scoreB === 1) ? 1 : 0, scoreA, scoreB, max: 1 });\n } else {\n // The EBSR item is worth 2 points\n if (scoreA === 1) {\n if (scoreB === 1) {\n // If Part A and Part B are both correct, 2 points are awarded\n resolve({ score: 2, scoreA, scoreB, max: 2 });\n } else {\n // If Part A is correct and part B is incorrect, 1 point is awarded\n resolve({ score: 1, scoreA, scoreB, max: 2 });\n }\n } else {\n // For all other combinations, no points are awarded\n resolve({ score: 0, scoreA, scoreB, max: 2 });\n }\n }\n }\n });\n}\n\nconst returnPartCorrect = choices => {\n let answers = [];\n\n choices.forEach(i => {\n const { correct, value } = i;\n if (correct) {\n answers.push(value);\n }\n });\n return answers;\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise(resolve => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { partA, partB } = question;\n\n const partACorrect = returnPartCorrect(partA.choices);\n const partBCorrect = returnPartCorrect(partB.choices);\n\n resolve({\n value: {\n partA: {\n id: 'partA',\n value: partACorrect\n },\n partB: {\n id: 'partB',\n value: partBCorrect\n }\n },\n id: '1'\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
@@ -119,6 +119,22 @@
119
119
  }
120
120
  }
121
121
  },
122
+ "spellCheck": {
123
+ "title": "ConfigureProp",
124
+ "type": "object",
125
+ "properties": {
126
+ "settings": {
127
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
128
+ "type": "boolean",
129
+ "title": "settings"
130
+ },
131
+ "label": {
132
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
133
+ "type": "string",
134
+ "title": "label"
135
+ }
136
+ }
137
+ },
122
138
  "rationale": {
123
139
  "title": "ConfigureProp",
124
140
  "type": "object",
@@ -317,6 +333,22 @@
317
333
  }
318
334
  }
319
335
  },
336
+ "spellCheck": {
337
+ "title": "ConfigureProp",
338
+ "type": "object",
339
+ "properties": {
340
+ "settings": {
341
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
342
+ "type": "boolean",
343
+ "title": "settings"
344
+ },
345
+ "label": {
346
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
347
+ "type": "string",
348
+ "title": "label"
349
+ }
350
+ }
351
+ },
320
352
  "rationale": {
321
353
  "title": "ConfigureProp",
322
354
  "type": "object",
@@ -581,6 +613,22 @@
581
613
  }
582
614
  }
583
615
  },
616
+ "spellCheck": {
617
+ "title": "ConfigureProp",
618
+ "type": "object",
619
+ "properties": {
620
+ "settings": {
621
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
622
+ "type": "boolean",
623
+ "title": "settings"
624
+ },
625
+ "label": {
626
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
627
+ "type": "string",
628
+ "title": "label"
629
+ }
630
+ }
631
+ },
584
632
  "rationale": {
585
633
  "title": "ConfigureProp",
586
634
  "type": "object",
@@ -90,6 +90,18 @@ Indicates if the item has to be displayed in the Settings Panel
90
90
 
91
91
  Indicates the label for the item that has to be displayed in the Settings Panel
92
92
 
93
+ ## `spellCheck` (object)
94
+
95
+ Properties of the `spellCheck` object:
96
+
97
+ ### `settings` (boolean)
98
+
99
+ Indicates if the item has to be displayed in the Settings Panel
100
+
101
+ ### `label` (string)
102
+
103
+ Indicates the label for the item that has to be displayed in the Settings Panel
104
+
93
105
  ## `rationale` (object)
94
106
 
95
107
  Properties of the `rationale` object:
@@ -238,6 +250,18 @@ Indicates if the item has to be displayed in the Settings Panel
238
250
 
239
251
  Indicates the label for the item that has to be displayed in the Settings Panel
240
252
 
253
+ ## `spellCheck` (object)
254
+
255
+ Properties of the `spellCheck` object:
256
+
257
+ ### `settings` (boolean)
258
+
259
+ Indicates if the item has to be displayed in the Settings Panel
260
+
261
+ ### `label` (string)
262
+
263
+ Indicates the label for the item that has to be displayed in the Settings Panel
264
+
241
265
  ## `rationale` (object)
242
266
 
243
267
  Properties of the `rationale` object:
@@ -440,6 +464,18 @@ Indicates if the item has to be displayed in the Settings Panel
440
464
 
441
465
  Indicates the label for the item that has to be displayed in the Settings Panel
442
466
 
467
+ ### `spellCheck` (object)
468
+
469
+ Properties of the `spellCheck` object:
470
+
471
+ #### `settings` (boolean)
472
+
473
+ Indicates if the item has to be displayed in the Settings Panel
474
+
475
+ #### `label` (string)
476
+
477
+ Indicates the label for the item that has to be displayed in the Settings Panel
478
+
443
479
  ### `rationale` (object)
444
480
 
445
481
  Properties of the `rationale` object:
@@ -85,6 +85,11 @@
85
85
  "type": "boolean",
86
86
  "title": "rationaleEnabled"
87
87
  },
88
+ "spellCheckEnabled": {
89
+ "description": "Indicates if spellcheck is enabled for the author. Default value is true",
90
+ "type": "boolean",
91
+ "title": "spellCheckEnabled"
92
+ },
88
93
  "studentInstructionsEnabled": {
89
94
  "description": "Indicates if Student Instructions are enabled",
90
95
  "type": "boolean",
@@ -109,6 +114,7 @@
109
114
  "feedbackEnabled",
110
115
  "prompt",
111
116
  "rationaleEnabled",
117
+ "spellCheckEnabled",
112
118
  "studentInstructionsEnabled",
113
119
  "teacherInstructionsEnabled"
114
120
  ]
@@ -195,6 +201,11 @@
195
201
  "type": "boolean",
196
202
  "title": "rationaleEnabled"
197
203
  },
204
+ "spellCheckEnabled": {
205
+ "description": "Indicates if spellcheck is enabled for the author. Default value is true",
206
+ "type": "boolean",
207
+ "title": "spellCheckEnabled"
208
+ },
198
209
  "studentInstructionsEnabled": {
199
210
  "description": "Indicates if Student Instructions are enabled",
200
211
  "type": "boolean",
@@ -219,6 +230,7 @@
219
230
  "feedbackEnabled",
220
231
  "prompt",
221
232
  "rationaleEnabled",
233
+ "spellCheckEnabled",
222
234
  "studentInstructionsEnabled",
223
235
  "teacherInstructionsEnabled"
224
236
  ]
@@ -387,6 +399,22 @@
387
399
  }
388
400
  }
389
401
  },
402
+ "spellCheck": {
403
+ "title": "ConfigureProp",
404
+ "type": "object",
405
+ "properties": {
406
+ "settings": {
407
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
408
+ "type": "boolean",
409
+ "title": "settings"
410
+ },
411
+ "label": {
412
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
413
+ "type": "string",
414
+ "title": "label"
415
+ }
416
+ }
417
+ },
390
418
  "rationale": {
391
419
  "title": "ConfigureProp",
392
420
  "type": "object",
@@ -567,6 +595,11 @@
567
595
  "type": "boolean",
568
596
  "title": "rationaleEnabled"
569
597
  },
598
+ "spellCheckEnabled": {
599
+ "description": "Indicates if spellcheck is enabled for the author. Default value is true",
600
+ "type": "boolean",
601
+ "title": "spellCheckEnabled"
602
+ },
570
603
  "studentInstructionsEnabled": {
571
604
  "description": "Indicates if Student Instructions are enabled",
572
605
  "type": "boolean",
@@ -591,6 +624,7 @@
591
624
  "feedbackEnabled",
592
625
  "prompt",
593
626
  "rationaleEnabled",
627
+ "spellCheckEnabled",
594
628
  "studentInstructionsEnabled",
595
629
  "teacherInstructionsEnabled"
596
630
  ]
@@ -68,6 +68,10 @@ Indicates if Feedback is enabled
68
68
 
69
69
  Indicates if Rationale are enabled
70
70
 
71
+ ## `spellCheckEnabled` (boolean, required)
72
+
73
+ Indicates if spellcheck is enabled for the author. Default value is true
74
+
71
75
  ## `studentInstructionsEnabled` (boolean, required)
72
76
 
73
77
  Indicates if Student Instructions are enabled
@@ -148,6 +152,10 @@ Indicates if Feedback is enabled
148
152
 
149
153
  Indicates if Rationale are enabled
150
154
 
155
+ ## `spellCheckEnabled` (boolean, required)
156
+
157
+ Indicates if spellcheck is enabled for the author. Default value is true
158
+
151
159
  ## `studentInstructionsEnabled` (boolean, required)
152
160
 
153
161
  Indicates if Student Instructions are enabled
@@ -290,6 +298,18 @@ Indicates if the item has to be displayed in the Settings Panel
290
298
 
291
299
  Indicates the label for the item that has to be displayed in the Settings Panel
292
300
 
301
+ ### `spellCheck` (object)
302
+
303
+ Properties of the `spellCheck` object:
304
+
305
+ #### `settings` (boolean)
306
+
307
+ Indicates if the item has to be displayed in the Settings Panel
308
+
309
+ #### `label` (string)
310
+
311
+ Indicates the label for the item that has to be displayed in the Settings Panel
312
+
293
313
  ### `rationale` (object)
294
314
 
295
315
  Properties of the `rationale` object:
@@ -428,6 +448,10 @@ Indicates if Feedback is enabled
428
448
 
429
449
  Indicates if Rationale are enabled
430
450
 
451
+ ### `spellCheckEnabled` (boolean, required)
452
+
453
+ Indicates if spellcheck is enabled for the author. Default value is true
454
+
431
455
  ### `studentInstructionsEnabled` (boolean, required)
432
456
 
433
457
  Indicates if Student Instructions are enabled
package/lib/index.js CHANGED
@@ -5,9 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = exports.isSessionComplete = void 0;
9
-
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
+ exports.isSessionComplete = exports["default"] = void 0;
11
9
 
12
10
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
11
 
@@ -15,6 +13,8 @@ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/w
15
13
 
16
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
15
 
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
18
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
19
 
20
20
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
@@ -31,9 +31,9 @@ var _get = _interopRequireDefault(require("lodash/get"));
31
31
 
32
32
  var _debug = _interopRequireDefault(require("debug"));
33
33
 
34
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
34
+ 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; }
35
35
 
36
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
36
+ 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; }
37
37
 
38
38
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
39
39
 
@@ -53,7 +53,7 @@ var EbsrMC = /*#__PURE__*/function (_MultipleChoice) {
53
53
  return _super.apply(this, arguments);
54
54
  }
55
55
 
56
- return EbsrMC;
56
+ return (0, _createClass2["default"])(EbsrMC);
57
57
  }(_multipleChoice["default"]);
58
58
 
59
59
  var defineMultipleChoice = function defineMultipleChoice() {
@@ -125,6 +125,9 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
125
125
  }
126
126
  }, {
127
127
  key: "session",
128
+ get: function get() {
129
+ return this._session;
130
+ },
128
131
  set: function set(s) {
129
132
  var _this3 = this;
130
133
 
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","mode","model","keyMode","choicePrefix","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport get from 'lodash/get';\nimport debug from 'debug';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst log = debug('pie-elements:ebsr');\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key]) {\n const { mode } = this._model;\n\n part.model = {\n ...this._model[key],\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n }\n }\n\n setPartSession(part, key) {\n if (this._session && this._model) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), complete)\n );\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","mode","model","keyMode","choicePrefix","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport get from 'lodash/get';\nimport debug from 'debug';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst log = debug('pie-elements:ebsr');\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n get session() {\n return this._session;\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key]) {\n const { mode } = this._model;\n\n part.model = {\n ...this._model[key],\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n }\n }\n\n setPartSession(part, key) {\n if (this._session && this._model) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), complete)\n );\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"file":"index.js"}
package/lib/print.js CHANGED
@@ -5,9 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = exports.isSessionComplete = void 0;
9
-
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
+ exports.isSessionComplete = exports["default"] = void 0;
11
9
 
12
10
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
11
 
@@ -15,6 +13,8 @@ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/w
15
13
 
16
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
15
 
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
18
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
19
 
20
20
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
@@ -35,9 +35,9 @@ var _get = _interopRequireDefault(require("lodash/get"));
35
35
 
36
36
  var _piePlayerEvents = require("@pie-framework/pie-player-events");
37
37
 
38
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
38
+ 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; }
39
39
 
40
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
40
+ 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; }
41
41
 
42
42
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
43
43
 
@@ -86,7 +86,7 @@ var EbsrMC = /*#__PURE__*/function (_MultipleChoice) {
86
86
  return _super.apply(this, arguments);
87
87
  }
88
88
 
89
- return EbsrMC;
89
+ return (0, _createClass2["default"])(EbsrMC);
90
90
  }(_multipleChoice["default"]);
91
91
 
92
92
  var defineMultipleChoice = function defineMultipleChoice() {
@@ -173,9 +173,7 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
173
173
  key: "setPartModel",
174
174
  value: function setPartModel(part, key) {
175
175
  if (this._model && this._model[key]) {
176
- var mode = this._model.mode;
177
176
  part.model = _objectSpread(_objectSpread({}, preparePrintModel(this._model[key], this._options)), {}, {
178
- mode: mode,
179
177
  keyMode: this._model[key].choicePrefix
180
178
  });
181
179
 
package/lib/print.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/print.js"],"names":["MC_TAG_NAME","SESSION_CHANGED","SessionChangedEvent","TYPE","log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","_options","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","o","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport debug from 'debug';\nimport get from 'lodash/get';\n\nimport {SessionChangedEvent} from '@pie-framework/pie-player-events';\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\n\nconst log = debug('pie-element:ebsr:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions = instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : model.mode;\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n this._options = null;\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key]) {\n const { mode } = this._model;\n\n part.model = {\n ...preparePrintModel(this._model[key], this._options),\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n\n if (!part._session) {\n // for print, \"set session\" is not called,\n // but ebsr needs sessions in order to render the elements,\n // so we set it here it was not set already\n part.session = {};\n }\n }\n }\n\n set options(o) {\n this._options = o;\n }\n\n setPartSession(part, key) {\n if (this._session && this._model) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), complete)\n );\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"file":"print.js"}
1
+ {"version":3,"sources":["../src/print.js"],"names":["MC_TAG_NAME","SESSION_CHANGED","SessionChangedEvent","TYPE","log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","_options","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","o","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport debug from 'debug';\nimport get from 'lodash/get';\n\nimport {SessionChangedEvent} from '@pie-framework/pie-player-events';\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\n\nconst log = debug('pie-element:ebsr:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions = instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : model.mode;\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n this._options = null;\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key]) {\n\n part.model = {\n ...preparePrintModel(this._model[key], this._options),\n keyMode: this._model[key].choicePrefix,\n };\n\n if (!part._session) {\n // for print, \"set session\" is not called,\n // but ebsr needs sessions in order to render the elements,\n // so we set it here it was not set already\n part.session = {};\n }\n }\n }\n\n set options(o) {\n this._options = o;\n }\n\n setPartSession(part, key) {\n if (this._session && this._model) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), complete)\n );\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"file":"print.js"}
@@ -1,6 +1,6 @@
1
- import {_dll_react, _dll_prop_types, _dll_material_ui__core_styles, _dll_lodash, _dll_react_dom} from "../../../@pie-lib/shared-module@^1.3.1/module/index.js";
1
+ import {_dll_react, _dll_prop_types, _dll_material_ui__core_styles, _dll_lodash, _dll_react_dom} from "../../../@pie-lib/shared-module@^1.4.9/module/index.js";
2
2
  import MultipleChoiceConfigure from '@pie-element/multiple-choice/configure/lib';
3
- import {_dll_pie_lib__config_ui} from "../../../@pie-lib/config-module@^1.0.22/module/index.js";
3
+ import {_dll_pie_lib__config_ui} from "../../../@pie-lib/config-module@^1.0.32/module/index.js";
4
4
  var lib = {};
5
5
  Object.defineProperty(lib, "__esModule", {
6
6
  value: true
@@ -112,8 +112,8 @@ class Main extends React$1.Component {
112
112
  const {classes, model, configuration, onConfigurationChanged} = this.props;
113
113
  const {partLabelType, partA: modelPartA, partB: modelPartB} = model;
114
114
  const {partA, partB, partialScoring, scoringType, ...generalConfiguration} = configuration;
115
- const {feedback: feedbackA = {}, choiceMode: choiceModeA = {}, choicePrefix: choicePrefixA = {}, lockChoiceOrder: lockChoiceOrderA = {}, prompt: promptA = {}, teacherInstructions: teacherInstructionsA = {}, studentInstructions: studentInstructionsA = {}, choicesLayout: choicesLayoutA = {}, gridColumns: gridColumnsA = {}, rationale: rationaleA = {}} = partA || ({});
116
- const {feedback: feedbackB = {}, choiceMode: choiceModeB = {}, choicePrefix: choicePrefixB = {}, lockChoiceOrder: lockChoiceOrderB = {}, prompt: promptB = {}, teacherInstructions: teacherInstructionsB = {}, studentInstructions: studentInstructionsB = {}, choicesLayout: choicesLayoutB = {}, gridColumns: gridColumnsB = {}, rationale: rationaleB = {}} = partB || ({});
115
+ const {feedback: feedbackA = {}, choiceMode: choiceModeA = {}, choicePrefix: choicePrefixA = {}, lockChoiceOrder: lockChoiceOrderA = {}, prompt: promptA = {}, teacherInstructions: teacherInstructionsA = {}, studentInstructions: studentInstructionsA = {}, choicesLayout: choicesLayoutA = {}, gridColumns: gridColumnsA = {}, rationale: rationaleA = {}, spellCheck: spellCheckA = {}} = partA || ({});
116
+ const {feedback: feedbackB = {}, choiceMode: choiceModeB = {}, choicePrefix: choicePrefixB = {}, lockChoiceOrder: lockChoiceOrderB = {}, prompt: promptB = {}, teacherInstructions: teacherInstructionsB = {}, studentInstructions: studentInstructionsB = {}, choicesLayout: choicesLayoutB = {}, gridColumns: gridColumnsB = {}, rationale: rationaleB = {}, spellCheck: spellCheckB = {}} = partB || ({});
117
117
  const type = partLabelType || 'Numbers';
118
118
  const typeIsNumber = type === 'Numbers';
119
119
  const firstPart = `Part ${typeIsNumber ? '1' : 'A'}`;
@@ -131,7 +131,7 @@ class Main extends React$1.Component {
131
131
  __self: this,
132
132
  __source: {
133
133
  fileName: _jsxFileName,
134
- lineNumber: 109
134
+ lineNumber: 111
135
135
  }
136
136
  }, React$1.createElement(layout.ConfigLayout, {
137
137
  settings: React$1.createElement(Panel, {
@@ -158,7 +158,8 @@ class Main extends React$1.Component {
158
158
  'partA.promptEnabled': promptA.settings && toggle(promptA.label),
159
159
  'partA.teacherInstructionsEnabled': teacherInstructionsA.settings && toggle(teacherInstructionsA.label),
160
160
  'partA.studentInstructionsEnabled': studentInstructionsA.settings && toggle(studentInstructionsA.label),
161
- 'partA.rationaleEnabled': rationaleA.settings && toggle(rationaleA.label)
161
+ 'partA.rationaleEnabled': rationaleA.settings && toggle(rationaleA.label),
162
+ 'partA.spellCheckEnabled': spellCheckA.settings && toggle(spellCheckA.label)
162
163
  },
163
164
  [`Settings ${secondPart}`]: {
164
165
  'partB.choiceMode': choiceModeB.settings && radio(choiceModeB.label, ['checkbox', 'radio']),
@@ -172,38 +173,39 @@ class Main extends React$1.Component {
172
173
  'partB.promptEnabled': promptB.settings && toggle(promptB.label),
173
174
  'partB.teacherInstructionsEnabled': teacherInstructionsB.settings && toggle(teacherInstructionsB.label),
174
175
  'partB.studentInstructionsEnabled': studentInstructionsB.settings && toggle(studentInstructionsB.label),
175
- 'partB.rationaleEnabled': rationaleB.settings && toggle(rationaleB.label)
176
+ 'partB.rationaleEnabled': rationaleB.settings && toggle(rationaleB.label),
177
+ 'partB.spellCheckEnabled': spellCheckB.settings && toggle(spellCheckB.label)
176
178
  }
177
179
  },
178
180
  __self: this,
179
181
  __source: {
180
182
  fileName: _jsxFileName,
181
- lineNumber: 112
183
+ lineNumber: 114
182
184
  }
183
185
  }),
184
186
  __self: this,
185
187
  __source: {
186
188
  fileName: _jsxFileName,
187
- lineNumber: 110
189
+ lineNumber: 112
188
190
  }
189
191
  }, React$1.createElement('div', {
190
192
  __self: this,
191
193
  __source: {
192
194
  fileName: _jsxFileName,
193
- lineNumber: 195
195
+ lineNumber: 201
194
196
  }
195
197
  }, React$1.createElement('div', {
196
198
  className: classes.part,
197
199
  __self: this,
198
200
  __source: {
199
201
  fileName: _jsxFileName,
200
- lineNumber: 196
202
+ lineNumber: 202
201
203
  }
202
204
  }, model.partLabels && React$1.createElement('p', {
203
205
  __self: this,
204
206
  __source: {
205
207
  fileName: _jsxFileName,
206
- lineNumber: 197
208
+ lineNumber: 203
207
209
  }
208
210
  }, firstPart), React$1.createElement('ebsr-multiple-choice-configure', {
209
211
  id: "A",
@@ -221,20 +223,20 @@ class Main extends React$1.Component {
221
223
  __self: this,
222
224
  __source: {
223
225
  fileName: _jsxFileName,
224
- lineNumber: 198
226
+ lineNumber: 204
225
227
  }
226
228
  })), React$1.createElement('div', {
227
229
  className: classes.part,
228
230
  __self: this,
229
231
  __source: {
230
232
  fileName: _jsxFileName,
231
- lineNumber: 215
233
+ lineNumber: 221
232
234
  }
233
235
  }, model.partLabels && React$1.createElement('p', {
234
236
  __self: this,
235
237
  __source: {
236
238
  fileName: _jsxFileName,
237
- lineNumber: 216
239
+ lineNumber: 222
238
240
  }
239
241
  }, secondPart), React$1.createElement('ebsr-multiple-choice-configure', {
240
242
  id: "B",
@@ -252,7 +254,7 @@ class Main extends React$1.Component {
252
254
  __self: this,
253
255
  __source: {
254
256
  fileName: _jsxFileName,
255
- lineNumber: 217
257
+ lineNumber: 223
256
258
  }
257
259
  })))));
258
260
  }
@@ -306,6 +308,11 @@ const defaultConfig = {
306
308
  },
307
309
  gridColumns: {
308
310
  label: 'Grid columns'
311
+ },
312
+ spellCheck: {
313
+ label: 'Spellcheck',
314
+ settings: false,
315
+ enabled: true
309
316
  }
310
317
  };
311
318
  const partModel = base => ({
@@ -320,6 +327,7 @@ const partModel = base => ({
320
327
  rationale: '',
321
328
  teacherInstructionsEnabled: true,
322
329
  studentInstructionsEnabled: true,
330
+ spellCheckEnabled: true,
323
331
  choicesLayout: 'vertical',
324
332
  gridColumns: '2',
325
333
  ...base
package/module/element.js CHANGED
@@ -1,5 +1,5 @@
1
- import {_dll_prop_types, _dll_react_dom, _dll_react, _dll_material_ui__core_styles, _dll_pie_lib__render_ui, _dll_material_ui__core, _dll_classnames, _dll_pie_lib__correct_answer_toggle, _dll_lodash, _dll_debug} from "../../../@pie-lib/shared-module@^1.3.1/module/index.js";
2
- import {_dll_pie_lib__math_rendering} from "../../../@pie-lib/math-rendering-module@^1.0.24/module/index.js";
1
+ import {_dll_prop_types, _dll_react_dom, _dll_react, _dll_material_ui__core_styles, _dll_pie_lib__render_ui, _dll_material_ui__core, _dll_classnames, _dll_pie_lib__correct_answer_toggle, _dll_lodash, _dll_debug} from "../../../@pie-lib/shared-module@^1.4.9/module/index.js";
2
+ import {_dll_pie_lib__math_rendering} from "../../../@pie-lib/math-rendering-module@^1.0.34/module/index.js";
3
3
  function getDefaultExportFromCjs(x) {
4
4
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
5
5
  }
@@ -71,8 +71,7 @@ var interopRequireDefault = {
71
71
  "default": obj
72
72
  };
73
73
  }
74
- module.exports = _interopRequireDefault;
75
- (module.exports["default"] = module.exports, module.exports.__esModule = true);
74
+ (module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports);
76
75
  })(interopRequireDefault);
77
76
  getDefaultExportFromCjs(interopRequireDefault.exports);
78
77
  var hasClass = {
@@ -2094,6 +2093,9 @@ class Ebsr extends HTMLElement {
2094
2093
  this.setPartSession(this.partB, 'partB');
2095
2094
  });
2096
2095
  }
2096
+ get session() {
2097
+ return this._session;
2098
+ }
2097
2099
  setPartModel(part, key) {
2098
2100
  if (this._model && this._model[key]) {
2099
2101
  const {mode} = this._model;
@@ -4,11 +4,11 @@
4
4
  "modules": [
5
5
  {
6
6
  "name": "@pie-lib/shared-module",
7
- "version": "^1.3.1"
7
+ "version": "^1.4.9"
8
8
  },
9
9
  {
10
10
  "name": "@pie-lib/math-rendering-module",
11
- "version": "^1.0.24"
11
+ "version": "^1.0.34"
12
12
  }
13
13
  ]
14
14
  }
package/module/print.js CHANGED
@@ -1,5 +1,5 @@
1
- import {_dll_prop_types, _dll_react_dom, _dll_react, _dll_material_ui__core_styles, _dll_pie_lib__render_ui, _dll_material_ui__core, _dll_classnames, _dll_pie_lib__correct_answer_toggle, _dll_lodash, _dll_debug} from "../../../@pie-lib/shared-module@^1.3.1/module/index.js";
2
- import {_dll_pie_lib__math_rendering} from "../../../@pie-lib/math-rendering-module@^1.0.24/module/index.js";
1
+ import {_dll_prop_types, _dll_react_dom, _dll_react, _dll_material_ui__core_styles, _dll_pie_lib__render_ui, _dll_material_ui__core, _dll_classnames, _dll_pie_lib__correct_answer_toggle, _dll_lodash, _dll_debug} from "../../../@pie-lib/shared-module@^1.4.9/module/index.js";
2
+ import {_dll_pie_lib__math_rendering} from "../../../@pie-lib/math-rendering-module@^1.0.34/module/index.js";
3
3
  function getDefaultExportFromCjs(x) {
4
4
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
5
5
  }
@@ -34,8 +34,7 @@ var interopRequireDefault = {
34
34
  "default": obj
35
35
  };
36
36
  }
37
- module.exports = _interopRequireDefault;
38
- (module.exports["default"] = module.exports, module.exports.__esModule = true);
37
+ (module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports);
39
38
  })(interopRequireDefault);
40
39
  getDefaultExportFromCjs(interopRequireDefault.exports);
41
40
  var hasClass = {
@@ -2119,10 +2118,8 @@ class Ebsr extends HTMLElement {
2119
2118
  }
2120
2119
  setPartModel(part, key) {
2121
2120
  if (this._model && this._model[key]) {
2122
- const {mode} = this._model;
2123
2121
  part.model = {
2124
2122
  ...preparePrintModel(this._model[key], this._options),
2125
- mode,
2126
2123
  keyMode: this._model[key].choicePrefix
2127
2124
  };
2128
2125
  if (!part._session) {
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@pie-element/ebsr",
3
- "version": "6.6.3-next.620+f85c535b4",
3
+ "version": "6.6.3-next.762+33790d251",
4
4
  "description": "",
5
5
  "repository": "pie-framework/pie-elements",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
9
  "dependencies": {
10
- "@pie-element/multiple-choice": "^5.9.3-next.620+f85c535b4",
10
+ "@pie-element/multiple-choice": "^5.9.3-next.762+33790d251",
11
11
  "@pie-framework/pie-player-events": "^0.1.0",
12
12
  "classnames": "^2.2.5",
13
13
  "debug": "^4.1.1",
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "author": "pie framework developers",
17
17
  "license": "ISC",
18
- "gitHead": "f85c535b4f7042a8af1aa0fa42d8a588c019df63",
18
+ "gitHead": "33790d25127d4a1f58ca56a6d07a1a8a89be05f8",
19
19
  "scripts": {
20
20
  "postpublish": "../../scripts/postpublish"
21
21
  },
package/src/index.js CHANGED
@@ -71,6 +71,10 @@ export default class Ebsr extends HTMLElement {
71
71
  });
72
72
  }
73
73
 
74
+ get session() {
75
+ return this._session;
76
+ }
77
+
74
78
  setPartModel(part, key) {
75
79
  if (this._model && this._model[key]) {
76
80
  const { mode } = this._model;
package/src/print.js CHANGED
@@ -114,11 +114,9 @@ export default class Ebsr extends HTMLElement {
114
114
 
115
115
  setPartModel(part, key) {
116
116
  if (this._model && this._model[key]) {
117
- const { mode } = this._model;
118
117
 
119
118
  part.model = {
120
119
  ...preparePrintModel(this._model[key], this._options),
121
- mode,
122
120
  keyMode: this._model[key].choicePrefix,
123
121
  };
124
122