@pie-element/select-text 6.5.23 → 6.5.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [6.5.26](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.25...@pie-element/select-text@6.5.26) (2022-03-28)
7
+
8
+ **Note:** Version bump only for package @pie-element/select-text
9
+
10
+
11
+
12
+
13
+
14
+ ## [6.5.25](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.24...@pie-element/select-text@6.5.25) (2022-03-22)
15
+
16
+ **Note:** Version bump only for package @pie-element/select-text
17
+
18
+
19
+
20
+
21
+
22
+ ## [6.5.24](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.23...@pie-element/select-text@6.5.24) (2022-03-08)
23
+
24
+ **Note:** Version bump only for package @pie-element/select-text
25
+
26
+
27
+
28
+
29
+
6
30
  ## [6.5.23](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.22...@pie-element/select-text@6.5.23) (2022-03-08)
7
31
 
8
32
  **Note:** Version bump only for package @pie-element/select-text
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.2.22](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.21...@pie-element/select-text-configure@5.2.22) (2022-03-28)
7
+
8
+ **Note:** Version bump only for package @pie-element/select-text-configure
9
+
10
+
11
+
12
+
13
+
14
+ ## [5.2.21](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.20...@pie-element/select-text-configure@5.2.21) (2022-03-22)
15
+
16
+ **Note:** Version bump only for package @pie-element/select-text-configure
17
+
18
+
19
+
20
+
21
+
22
+ ## [5.2.20](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.19...@pie-element/select-text-configure@5.2.20) (2022-03-08)
23
+
24
+ **Note:** Version bump only for package @pie-element/select-text-configure
25
+
26
+
27
+
28
+
29
+
6
30
  ## [5.2.19](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.18...@pie-element/select-text-configure@5.2.19) (2022-03-08)
7
31
 
8
32
  **Note:** Version bump only for package @pie-element/select-text-configure
@@ -79,6 +79,11 @@ var _default = {
79
79
  settings: true,
80
80
  label: 'Feedback'
81
81
  },
82
+ spellCheck: {
83
+ label: 'Spellcheck',
84
+ settings: false,
85
+ enabled: true
86
+ },
82
87
  partialScoring: {
83
88
  settings: false,
84
89
  label: 'Allow Partial Scoring'
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaultConfiguration.js"],"names":["tokens","text","start","end","model","highlightChoices","partialScoring","maxSelections","mode","prompt","scoringType","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","configuration","selectionCount","settings","label","correctAnswer","selections","rationale","studentInstructions","teacherInstructions","feedback"],"mappings":";;;;;;;AAAA,IAAMA,MAAM,GAAG,SAATA,MAAS;AAAA,SAAM,CACnB;AACEC,IAAAA,IAAI,EAAE,EADR;AAEEC,IAAAA,KAAK,EAAE,CAFT;AAGEC,IAAAA,GAAG,EAAE;AAHP,GADmB,CAAN;AAAA,CAAf;;eAQe;AACbC,EAAAA,KAAK,EAAE;AACLC,IAAAA,gBAAgB,EAAE,KADb;AAELC,IAAAA,cAAc,EAAE,KAFX;AAGLC,IAAAA,aAAa,EAAE,CAHV;AAILC,IAAAA,IAAI,EAAE,UAJD;AAKLC,IAAAA,MAAM,EAAE,2BALH;AAMLR,IAAAA,IAAI,EAAE,EAND;AAOLD,IAAAA,MAAM,EAAEA,MAAM,EAPT;AAQLU,IAAAA,WAAW,EAAE,MARR;AASLC,IAAAA,eAAe,EAAE,IATZ;AAULC,IAAAA,gBAAgB,EAAE,IAVb;AAWLC,IAAAA,aAAa,EAAE,IAXV;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,qBAAqB,EAAE;AAdlB,GADM;AAiBbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,cAAc,EAAE;AACdC,MAAAA,QAAQ,EAAE,IADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KADH;AAKbC,IAAAA,aAAa,EAAE;AACbF,MAAAA,QAAQ,EAAE,IADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KALF;AASbE,IAAAA,UAAU,EAAE;AACVH,MAAAA,QAAQ,EAAE,IADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KATC;AAabf,IAAAA,gBAAgB,EAAE;AAChBc,MAAAA,QAAQ,EAAE,IADM;AAEhBC,MAAAA,KAAK,EAAE;AAFS,KAbL;AAiBbG,IAAAA,SAAS,EAAE;AACTJ,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KAjBE;AAqBbV,IAAAA,WAAW,EAAE;AACXS,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KArBA;AAyBbI,IAAAA,mBAAmB,EAAE;AACnBL,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAzBR;AA6BbK,IAAAA,mBAAmB,EAAE;AACnBN,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KA7BR;AAiCbX,IAAAA,MAAM,EAAE;AACNW,MAAAA,KAAK,EAAE,QADD;AAEND,MAAAA,QAAQ,EAAE;AAFJ,KAjCK;AAqCblB,IAAAA,IAAI,EAAE;AACJkB,MAAAA,QAAQ,EAAE,IADN;AAEJC,MAAAA,KAAK,EAAE;AAFH,KArCO;AAyCbpB,IAAAA,MAAM,EAAE;AACNmB,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KAzCK;AA6CbM,IAAAA,QAAQ,EAAE;AACRP,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KA7CG;AAiDbd,IAAAA,cAAc,EAAE;AACda,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAjDH;AAqDbZ,IAAAA,IAAI,EAAE;AACJW,MAAAA,QAAQ,EAAE,IADN;AAEJC,MAAAA,KAAK,EAAE;AAFH;AArDO;AAjBF,C","sourcesContent":["const tokens = () => [\n {\n text: '',\n start: 0,\n end: 0\n }\n];\n\nexport default {\n model: {\n highlightChoices: false,\n partialScoring: false,\n maxSelections: 2,\n mode: 'sentence',\n prompt: 'Question Prompt goes here',\n text: '',\n tokens: tokens(),\n scoringType: 'auto',\n feedbackEnabled: true,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom'\n },\n configuration: {\n selectionCount: {\n settings: true,\n label: 'Selection count'\n },\n correctAnswer: {\n settings: true,\n label: 'Correct Answers'\n },\n selections: {\n settings: true,\n label: 'Selections Available'\n },\n highlightChoices: {\n settings: true,\n label: 'Highlight choices'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type'\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n prompt: {\n label: 'Prompt',\n settings: true\n },\n text: {\n settings: true,\n label: 'Content'\n },\n tokens: {\n settings: true,\n label: 'Tokens'\n },\n feedback: {\n settings: true,\n label: 'Feedback'\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n mode: {\n settings: true,\n label: 'Mode'\n }\n }\n};\n"],"file":"defaultConfiguration.js"}
1
+ {"version":3,"sources":["../src/defaultConfiguration.js"],"names":["tokens","text","start","end","model","highlightChoices","partialScoring","maxSelections","mode","prompt","scoringType","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","configuration","selectionCount","settings","label","correctAnswer","selections","rationale","studentInstructions","teacherInstructions","feedback","spellCheck","enabled"],"mappings":";;;;;;;AAAA,IAAMA,MAAM,GAAG,SAATA,MAAS;AAAA,SAAM,CACnB;AACEC,IAAAA,IAAI,EAAE,EADR;AAEEC,IAAAA,KAAK,EAAE,CAFT;AAGEC,IAAAA,GAAG,EAAE;AAHP,GADmB,CAAN;AAAA,CAAf;;eAQe;AACbC,EAAAA,KAAK,EAAE;AACLC,IAAAA,gBAAgB,EAAE,KADb;AAELC,IAAAA,cAAc,EAAE,KAFX;AAGLC,IAAAA,aAAa,EAAE,CAHV;AAILC,IAAAA,IAAI,EAAE,UAJD;AAKLC,IAAAA,MAAM,EAAE,2BALH;AAMLR,IAAAA,IAAI,EAAE,EAND;AAOLD,IAAAA,MAAM,EAAEA,MAAM,EAPT;AAQLU,IAAAA,WAAW,EAAE,MARR;AASLC,IAAAA,eAAe,EAAE,IATZ;AAULC,IAAAA,gBAAgB,EAAE,IAVb;AAWLC,IAAAA,aAAa,EAAE,IAXV;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,qBAAqB,EAAE;AAdlB,GADM;AAiBbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,cAAc,EAAE;AACdC,MAAAA,QAAQ,EAAE,IADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KADH;AAKbC,IAAAA,aAAa,EAAE;AACbF,MAAAA,QAAQ,EAAE,IADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KALF;AASbE,IAAAA,UAAU,EAAE;AACVH,MAAAA,QAAQ,EAAE,IADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KATC;AAabf,IAAAA,gBAAgB,EAAE;AAChBc,MAAAA,QAAQ,EAAE,IADM;AAEhBC,MAAAA,KAAK,EAAE;AAFS,KAbL;AAiBbG,IAAAA,SAAS,EAAE;AACTJ,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KAjBE;AAqBbV,IAAAA,WAAW,EAAE;AACXS,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KArBA;AAyBbI,IAAAA,mBAAmB,EAAE;AACnBL,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAzBR;AA6BbK,IAAAA,mBAAmB,EAAE;AACnBN,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KA7BR;AAiCbX,IAAAA,MAAM,EAAE;AACNW,MAAAA,KAAK,EAAE,QADD;AAEND,MAAAA,QAAQ,EAAE;AAFJ,KAjCK;AAqCblB,IAAAA,IAAI,EAAE;AACJkB,MAAAA,QAAQ,EAAE,IADN;AAEJC,MAAAA,KAAK,EAAE;AAFH,KArCO;AAyCbpB,IAAAA,MAAM,EAAE;AACNmB,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KAzCK;AA6CbM,IAAAA,QAAQ,EAAE;AACRP,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KA7CG;AAiDbO,IAAAA,UAAU,EAAE;AACVP,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAC,KAFC;AAGVS,MAAAA,OAAO,EAAC;AAHE,KAjDC;AAsDbtB,IAAAA,cAAc,EAAE;AACda,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAtDH;AA0DbZ,IAAAA,IAAI,EAAE;AACJW,MAAAA,QAAQ,EAAE,IADN;AAEJC,MAAAA,KAAK,EAAE;AAFH;AA1DO;AAjBF,C","sourcesContent":["const tokens = () => [\n {\n text: '',\n start: 0,\n end: 0\n }\n];\n\nexport default {\n model: {\n highlightChoices: false,\n partialScoring: false,\n maxSelections: 2,\n mode: 'sentence',\n prompt: 'Question Prompt goes here',\n text: '',\n tokens: tokens(),\n scoringType: 'auto',\n feedbackEnabled: true,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom'\n },\n configuration: {\n selectionCount: {\n settings: true,\n label: 'Selection count'\n },\n correctAnswer: {\n settings: true,\n label: 'Correct Answers'\n },\n selections: {\n settings: true,\n label: 'Selections Available'\n },\n highlightChoices: {\n settings: true,\n label: 'Highlight choices'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type'\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n prompt: {\n label: 'Prompt',\n settings: true\n },\n text: {\n settings: true,\n label: 'Content'\n },\n tokens: {\n settings: true,\n label: 'Tokens'\n },\n feedback: {\n settings: true,\n label: 'Feedback'\n },\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n mode: {\n settings: true,\n label: 'Mode'\n }\n }\n};\n"],"file":"defaultConfiguration.js"}
@@ -43,9 +43,9 @@ var _debug = _interopRequireDefault(require("debug"));
43
43
 
44
44
  var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
45
45
 
46
- 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; }
46
+ 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; }
47
47
 
48
- 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; }
48
+ 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; }
49
49
 
50
50
  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); }; }
51
51
 
@@ -200,6 +200,8 @@ var Design = /*#__PURE__*/function (_React$Component) {
200
200
  rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
201
201
  _ref$scoringType = _ref.scoringType,
202
202
  scoringType = _ref$scoringType === void 0 ? {} : _ref$scoringType,
203
+ _ref$spellCheck = _ref.spellCheck,
204
+ spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
203
205
  _ref$highlightChoices = _ref.highlightChoices,
204
206
  highlightChoices = _ref$highlightChoices === void 0 ? {} : _ref$highlightChoices;
205
207
 
@@ -207,6 +209,7 @@ var Design = /*#__PURE__*/function (_React$Component) {
207
209
  teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
208
210
  promptEnabled = _ref2.promptEnabled,
209
211
  rationaleEnabled = _ref2.rationaleEnabled,
212
+ spellCheckEnabled = _ref2.spellCheckEnabled,
210
213
  feedbackEnabled = _ref2.feedbackEnabled;
211
214
 
212
215
  var toolbarOpts = {};
@@ -243,6 +246,7 @@ var Design = /*#__PURE__*/function (_React$Component) {
243
246
  studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
244
247
  promptEnabled: prompt.settings && toggle(prompt.label),
245
248
  rationaleEnabled: rationale.settings && toggle(rationale.label),
249
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
246
250
  scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
247
251
  }
248
252
  }
@@ -258,7 +262,8 @@ var Design = /*#__PURE__*/function (_React$Component) {
258
262
  onChange: this.onTeacherInstructionsChanged,
259
263
  imageSupport: imageSupport,
260
264
  nonEmpty: false,
261
- toolbarOpts: toolbarOpts
265
+ toolbarOpts: toolbarOpts,
266
+ spellCheck: spellCheckEnabled
262
267
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
263
268
  label: prompt.label || '',
264
269
  className: classes.promptHolder
@@ -267,7 +272,8 @@ var Design = /*#__PURE__*/function (_React$Component) {
267
272
  markup: model.prompt,
268
273
  onChange: this.onPromptChanged,
269
274
  imageSupport: imageSupport,
270
- toolbarOpts: toolbarOpts
275
+ toolbarOpts: toolbarOpts,
276
+ spellCheck: spellCheckEnabled
271
277
  })), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
272
278
  label: rationale.label || '',
273
279
  className: classes.promptHolder
@@ -276,13 +282,15 @@ var Design = /*#__PURE__*/function (_React$Component) {
276
282
  markup: model.rationale || '',
277
283
  onChange: this.onRationaleChanged,
278
284
  imageSupport: imageSupport,
279
- toolbarOpts: toolbarOpts
285
+ toolbarOpts: toolbarOpts,
286
+ spellCheck: spellCheckEnabled
280
287
  })), text.settings && /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
281
288
  label: text.label,
282
289
  className: classes.input,
283
290
  multiline: true,
284
291
  value: textValue,
285
- onChange: this.changeText
292
+ onChange: this.changeText,
293
+ spellCheck: spellCheckEnabled
286
294
  }), tokens.settings && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
287
295
  label: tokens.label || '',
288
296
  className: classes.tokenizerContainer
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/design.jsx"],"names":["Panel","settings","toggle","radio","log","Design","props","val","apply","u","text","tokens","event","value","target","preparedText","setState","updateText","mode","correctTokenCount","filter","t","correct","length","max","isFinite","maxSelections","Math","fn","onModelChanged","model","update","feedback","partialScoring","prompt","teacherInstructions","rationale","state","nProps","textValue","classes","imageSupport","configuration","onConfigurationChanged","selections","selectionCount","correctAnswer","studentInstructions","scoringType","highlightChoices","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","feedbackEnabled","toolbarOpts","toolbarEditorPosition","position","tokensModel","Settings","label","Properties","studentInstructionsEnabled","container","promptHolder","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","input","changeText","tokenizerContainer","tokenizer","changeTokens","chip","changeMaxSelections","numberField","changeFeedback","React","Component","PropTypes","object","isRequired","func","shape","add","theme","paddingTop","spacing","unit","paddingRight","marginRight","bottom","left","right","height","content","backgroundColor","palette","primary","main","marginBottom","width","paddingBottom","marginTop","mainOpts","justifyContent","display","alignItems"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport TextField from '@material-ui/core/TextField';\nimport { withStyles } from '@material-ui/core/styles';\nimport cloneDeep from 'lodash/cloneDeep';\nimport debounce from 'lodash/debounce';\nimport { Tokenizer } from '@pie-lib/text-select';\nimport {\n InputContainer,\n NumberTextField,\n FeedbackConfig,\n settings,\n layout\n} from '@pie-lib/config-ui';\nimport Chip from '@material-ui/core/Chip';\nimport debug from 'debug';\nimport EditableHtml from '@pie-lib/editable-html';\n\nconst { Panel, toggle, radio } = settings;\n\nconst log = debug('@pie-element:select-text:configure');\n\nexport class Design extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n const { model } = this.props;\n\n this.state = {\n text: (model && model.text) || ''\n };\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const { model } = nProps;\n\n if (model && model.text) {\n this.setState({\n text: model.text\n });\n }\n }\n\n updateText = debounce(val => {\n this.apply(u => {\n u.text = val;\n u.tokens = [];\n });\n }, 200);\n\n changeText = event => {\n const value = event.target.value;\n const preparedText = value;\n\n this.setState({\n text: value\n });\n this.updateText(preparedText);\n };\n\n changeTokens = (tokens, mode) => {\n this.apply(u => {\n u.tokens = tokens;\n u.mode = mode;\n\n const correctTokenCount = tokens.filter(t => t.correct).length;\n const max = isFinite(u.maxSelections) ? u.maxSelections : 0;\n\n u.maxSelections = Math.max(max, correctTokenCount);\n });\n };\n\n changeMaxSelections = (event, max) => {\n this.apply(u => (u.maxSelections = max));\n };\n\n apply = fn => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n fn(update);\n onModelChanged(update);\n };\n\n changeFeedback = feedback => {\n this.apply(u => (u.feedback = feedback));\n };\n\n changePartialScoring = partialScoring => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n update.partialScoring = partialScoring;\n onModelChanged(update);\n };\n\n onPromptChanged = prompt => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n update.prompt = prompt;\n onModelChanged(update);\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n update.teacherInstructions = teacherInstructions;\n onModelChanged(update);\n };\n\n onRationaleChanged = rationale => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({\n ...model,\n rationale\n });\n };\n\n render() {\n const { text: textValue } = this.state;\n const {\n model,\n classes,\n imageSupport,\n onModelChanged,\n configuration,\n onConfigurationChanged\n } = this.props;\n const {\n prompt = {},\n text = {},\n tokens = {},\n mode = {},\n feedback = {},\n partialScoring = {},\n selections = {},\n selectionCount = {},\n correctAnswer = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n scoringType = {},\n highlightChoices = {}\n } = configuration || {};\n const {\n teacherInstructionsEnabled, promptEnabled, rationaleEnabled, feedbackEnabled\n } = model || {};\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n let { tokens: tokensModel } = model;\n tokensModel = tokensModel || [];\n\n log('[render] maxSelections:', model.maxSelections);\n\n return (\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => onModelChanged(model)}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n highlightChoices:\n highlightChoices.settings && toggle(highlightChoices.label),\n feedbackEnabled:\n feedback.settings && toggle(feedback.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n studentInstructionsEnabled:\n studentInstructions.settings &&\n toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n scoringType:\n scoringType.settings &&\n radio(scoringType.label, ['auto', 'rubric'])\n }\n }}\n />\n }\n >\n <div className={classes.container}>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label || ''}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label || ''}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n {text.settings && (\n <TextField\n label={text.label}\n className={classes.input}\n multiline\n value={textValue}\n onChange={this.changeText}\n />\n )}\n\n {tokens.settings && (\n <InputContainer\n label={tokens.label || ''}\n className={classes.tokenizerContainer}\n >\n <Tokenizer\n className={classes.tokenizer}\n text={model.text}\n tokens={tokensModel}\n onChange={this.changeTokens}\n />\n </InputContainer>\n )}\n\n {mode.settings && (\n <Chip\n label={`${mode.label}: ${model.mode ? model.mode : 'None'}`}\n className={classes.chip}\n />\n )}\n\n {selections.settings && (\n <Chip\n label={`${selections.label}: ${tokensModel.length}`}\n className={classes.chip}\n />\n )}\n\n {correctAnswer.settings && (\n <Chip\n label={`${correctAnswer.label}: ${\n tokensModel.filter(t => t.correct).length\n }`}\n className={classes.chip}\n />\n )}\n\n {selectionCount.settings && (\n <NumberTextField\n min={tokensModel.filter(t => t.correct).length || 0}\n label={`${selectionCount.label} (0:any)`}\n max={tokensModel.length}\n value={model.maxSelections}\n onChange={this.changeMaxSelections}\n className={classes.numberField}\n />\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig\n feedback={model.feedback}\n onChange={this.changeFeedback}\n toolbarOpts={toolbarOpts}\n />\n )}\n </div>\n </layout.ConfigLayout>\n );\n }\n}\nexport default withStyles(theme => ({\n container: {\n paddingTop: theme.spacing.unit\n },\n tokenizerContainer: {\n paddingRight: 0,\n marginRight: 0,\n '&:after': {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: '1px',\n content: '\"\"',\n backgroundColor: theme.palette.primary.main\n },\n marginBottom: theme.spacing.unit\n },\n chip: {\n marginRight: theme.spacing.unit * 2\n },\n input: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 3\n },\n tokenizer: {\n marginTop: theme.spacing.unit * 2\n },\n mainOpts: {\n width: '100%',\n justifyContent: 'space-between',\n display: 'flex',\n alignItems: 'baseline'\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n numberField: {\n width: '180px'\n }\n}))(Design);\n"],"file":"design.js"}
1
+ {"version":3,"sources":["../src/design.jsx"],"names":["Panel","settings","toggle","radio","log","Design","props","val","apply","u","text","tokens","event","value","target","preparedText","setState","updateText","mode","correctTokenCount","filter","t","correct","length","max","isFinite","maxSelections","Math","fn","onModelChanged","model","update","feedback","partialScoring","prompt","teacherInstructions","rationale","state","nProps","textValue","classes","imageSupport","configuration","onConfigurationChanged","selections","selectionCount","correctAnswer","studentInstructions","scoringType","spellCheck","highlightChoices","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","feedbackEnabled","toolbarOpts","toolbarEditorPosition","position","tokensModel","Settings","label","Properties","studentInstructionsEnabled","container","promptHolder","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","input","changeText","tokenizerContainer","tokenizer","changeTokens","chip","changeMaxSelections","numberField","changeFeedback","React","Component","PropTypes","object","isRequired","func","shape","add","theme","paddingTop","spacing","unit","paddingRight","marginRight","bottom","left","right","height","content","backgroundColor","palette","primary","main","marginBottom","width","paddingBottom","marginTop","mainOpts","justifyContent","display","alignItems"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport TextField from '@material-ui/core/TextField';\nimport { withStyles } from '@material-ui/core/styles';\nimport cloneDeep from 'lodash/cloneDeep';\nimport debounce from 'lodash/debounce';\nimport { Tokenizer } from '@pie-lib/text-select';\nimport {\n InputContainer,\n NumberTextField,\n FeedbackConfig,\n settings,\n layout\n} from '@pie-lib/config-ui';\nimport Chip from '@material-ui/core/Chip';\nimport debug from 'debug';\nimport EditableHtml from '@pie-lib/editable-html';\n\nconst { Panel, toggle, radio } = settings;\n\nconst log = debug('@pie-element:select-text:configure');\n\nexport class Design extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n const { model } = this.props;\n\n this.state = {\n text: (model && model.text) || ''\n };\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const { model } = nProps;\n\n if (model && model.text) {\n this.setState({\n text: model.text\n });\n }\n }\n\n updateText = debounce(val => {\n this.apply(u => {\n u.text = val;\n u.tokens = [];\n });\n }, 200);\n\n changeText = event => {\n const value = event.target.value;\n const preparedText = value;\n\n this.setState({\n text: value\n });\n this.updateText(preparedText);\n };\n\n changeTokens = (tokens, mode) => {\n this.apply(u => {\n u.tokens = tokens;\n u.mode = mode;\n\n const correctTokenCount = tokens.filter(t => t.correct).length;\n const max = isFinite(u.maxSelections) ? u.maxSelections : 0;\n\n u.maxSelections = Math.max(max, correctTokenCount);\n });\n };\n\n changeMaxSelections = (event, max) => {\n this.apply(u => (u.maxSelections = max));\n };\n\n apply = fn => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n fn(update);\n onModelChanged(update);\n };\n\n changeFeedback = feedback => {\n this.apply(u => (u.feedback = feedback));\n };\n\n changePartialScoring = partialScoring => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n update.partialScoring = partialScoring;\n onModelChanged(update);\n };\n\n onPromptChanged = prompt => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n update.prompt = prompt;\n onModelChanged(update);\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n const { onModelChanged, model } = this.props;\n const update = cloneDeep(model);\n\n update.teacherInstructions = teacherInstructions;\n onModelChanged(update);\n };\n\n onRationaleChanged = rationale => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({\n ...model,\n rationale\n });\n };\n\n render() {\n const { text: textValue } = this.state;\n const {\n model,\n classes,\n imageSupport,\n onModelChanged,\n configuration,\n onConfigurationChanged\n } = this.props;\n const {\n prompt = {},\n text = {},\n tokens = {},\n mode = {},\n feedback = {},\n partialScoring = {},\n selections = {},\n selectionCount = {},\n correctAnswer = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n scoringType = {},\n spellCheck = {},\n highlightChoices = {}\n } = configuration || {};\n const {\n teacherInstructionsEnabled, promptEnabled, rationaleEnabled, spellCheckEnabled, feedbackEnabled\n } = model || {};\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n let { tokens: tokensModel } = model;\n tokensModel = tokensModel || [];\n\n log('[render] maxSelections:', model.maxSelections);\n\n return (\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => onModelChanged(model)}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n highlightChoices:\n highlightChoices.settings && toggle(highlightChoices.label),\n feedbackEnabled:\n feedback.settings && toggle(feedback.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n studentInstructionsEnabled:\n studentInstructions.settings &&\n toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label),\n scoringType:\n scoringType.settings &&\n radio(scoringType.label, ['auto', 'rubric'])\n }\n }}\n />\n }\n >\n <div className={classes.container}>\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label || ''}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label || ''}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n\n {text.settings && (\n <TextField\n label={text.label}\n className={classes.input}\n multiline\n value={textValue}\n onChange={this.changeText}\n spellCheck={spellCheckEnabled}\n />\n )}\n\n {tokens.settings && (\n <InputContainer\n label={tokens.label || ''}\n className={classes.tokenizerContainer}\n >\n <Tokenizer\n className={classes.tokenizer}\n text={model.text}\n tokens={tokensModel}\n onChange={this.changeTokens}\n />\n </InputContainer>\n )}\n\n {mode.settings && (\n <Chip\n label={`${mode.label}: ${model.mode ? model.mode : 'None'}`}\n className={classes.chip}\n />\n )}\n\n {selections.settings && (\n <Chip\n label={`${selections.label}: ${tokensModel.length}`}\n className={classes.chip}\n />\n )}\n\n {correctAnswer.settings && (\n <Chip\n label={`${correctAnswer.label}: ${\n tokensModel.filter(t => t.correct).length\n }`}\n className={classes.chip}\n />\n )}\n\n {selectionCount.settings && (\n <NumberTextField\n min={tokensModel.filter(t => t.correct).length || 0}\n label={`${selectionCount.label} (0:any)`}\n max={tokensModel.length}\n value={model.maxSelections}\n onChange={this.changeMaxSelections}\n className={classes.numberField}\n />\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig\n feedback={model.feedback}\n onChange={this.changeFeedback}\n toolbarOpts={toolbarOpts}\n />\n )}\n </div>\n </layout.ConfigLayout>\n );\n }\n}\nexport default withStyles(theme => ({\n container: {\n paddingTop: theme.spacing.unit\n },\n tokenizerContainer: {\n paddingRight: 0,\n marginRight: 0,\n '&:after': {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: '1px',\n content: '\"\"',\n backgroundColor: theme.palette.primary.main\n },\n marginBottom: theme.spacing.unit\n },\n chip: {\n marginRight: theme.spacing.unit * 2\n },\n input: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 3\n },\n tokenizer: {\n marginTop: theme.spacing.unit * 2\n },\n mainOpts: {\n width: '100%',\n justifyContent: 'space-between',\n display: 'flex',\n alignItems: 'baseline'\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n numberField: {\n width: '180px'\n }\n}))(Design);\n"],"file":"design.js"}
@@ -33,9 +33,9 @@ var _defaultConfiguration = _interopRequireDefault(require("./defaultConfigurati
33
33
 
34
34
  var _utils = _interopRequireDefault(require("./utils"));
35
35
 
36
- 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; }
36
+ 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; }
37
37
 
38
- 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; }
38
+ 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; }
39
39
 
40
40
  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); }; }
41
41
 
@@ -13,9 +13,9 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
13
13
 
14
14
  var _react = _interopRequireDefault(require("react"));
15
15
 
16
- 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; }
16
+ 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; }
17
17
 
18
- 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; }
18
+ 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; }
19
19
 
20
20
  var createElementFromHTML = function createElementFromHTML() {
21
21
  var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@pie-element/select-text-configure",
3
3
  "private": true,
4
- "version": "5.2.19",
4
+ "version": "5.2.22",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "dependencies": {
9
9
  "@material-ui/core": "^3.9.2",
10
10
  "@pie-framework/pie-configure-events": "^1.2.0",
11
- "@pie-lib/config-ui": "^10.10.22",
12
- "@pie-lib/editable-html": "^7.19.1",
13
- "@pie-lib/scoring-config": "^3.5.151",
14
- "@pie-lib/text-select": "^1.8.13",
11
+ "@pie-lib/config-ui": "^10.10.24",
12
+ "@pie-lib/editable-html": "^7.19.3",
13
+ "@pie-lib/scoring-config": "^3.5.153",
14
+ "@pie-lib/text-select": "^1.8.14",
15
15
  "debug": "^3.1.0",
16
16
  "lodash": "^4.17.15",
17
17
  "prop-types": "^15.6.2",
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.1.31](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-controller@4.1.30...@pie-element/select-text-controller@4.1.31) (2022-03-22)
7
+
8
+ **Note:** Version bump only for package @pie-element/select-text-controller
9
+
10
+
11
+
12
+
13
+
6
14
  ## [4.1.30](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-controller@4.1.29...@pie-element/select-text-controller@4.1.30) (2022-02-21)
7
15
 
8
16
  **Note:** Version bump only for package @pie-element/select-text-controller
@@ -5,8 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.createCorrectResponseSession = void 0;
8
9
  exports.createDefaultModel = createDefaultModel;
9
- exports.createCorrectResponseSession = exports.model = exports.normalize = exports.normalizeSession = exports.outcome = exports.getPartialScore = exports.getCorrectness = void 0;
10
+ exports.outcome = exports.normalizeSession = exports.normalize = exports.model = exports.getPartialScore = exports.getCorrectness = void 0;
10
11
 
11
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
13
 
@@ -20,9 +21,9 @@ var _controllerUtils = require("@pie-lib/controller-utils");
20
21
 
21
22
  var _defaults = _interopRequireDefault(require("./defaults"));
22
23
 
23
- 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; }
24
+ 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; }
24
25
 
25
- 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; }
26
+ 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; }
26
27
 
27
28
  var log = (0, _debug["default"])('@pie-element:select-text:controller');
28
29
 
@@ -68,7 +69,8 @@ exports.getCorrectness = getCorrectness;
68
69
  var getCorrectSelected = function getCorrectSelected(tokens, selected) {
69
70
  return (selected || []).filter(function (s) {
70
71
  var index = tokens.findIndex(function (c) {
71
- return c.correct && (c.start === s.start && c.end === s.end || c.start === s.oldStart && c.end === s.oldEnd);
72
+ return c.correct && (c.start === s.start && c.end === s.end || // this case is used for the cases when the token's start & end were recalculated
73
+ c.start === s.oldStart && c.end === s.oldEnd);
72
74
  });
73
75
  return index !== -1;
74
76
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","buildTokens","tokens","evaluateMode","map","t","Object","assign","correct","undefined","getCorrectness","selected","filter","length","correctSelected","getCorrectSelected","s","index","findIndex","c","start","end","oldStart","oldEnd","getCorrectCount","getPartialScore","question","session","totalCorrect","correctCount","selectedTokens","correctTokens","extraSelected","incorrectCount","count","positiveCount","parseFloat","toFixed","outcome","env","Promise","resolve","score","empty","normalizeSession","mode","completed","enabled","partialScoring","createDefaultModel","model","defaults","normalize","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","selectedToken","normalizedQuestion","correctness","fb","feedback","then","out","highlightChoices","prompt","text","disabled","maxSelections","incorrect","role","rationale","teacherInstructions","createCorrectResponseSession","id"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nconst log = debug('@pie-element:select-text:controller');\n\nconst buildTokens = (tokens, evaluateMode) => {\n tokens = tokens || [];\n\n return tokens.map((t) =>\n Object.assign(\n {},\n t,\n evaluateMode ? { correct: !!t.correct } : { correct: undefined }\n )\n );\n};\n\nexport const getCorrectness = (tokens, selected) => {\n const correct = tokens.filter((t) => t.correct === true);\n\n if (correct.length === 0) {\n return 'unknown';\n }\n\n const correctSelected = getCorrectSelected(tokens, selected);\n\n if (correctSelected.length === selected.length) {\n if (correctSelected.length === correct.length) {\n return 'correct';\n } else if (correctSelected.length > 0) {\n return 'partially-correct';\n }\n }\n\n if (correctSelected.length > 0) {\n return 'partially-correct';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectSelected = (tokens, selected) => {\n return (selected || []).filter((s) => {\n const index = tokens.findIndex((c) => {\n return c.correct &&\n (\n (c.start === s.start && c.end === s.end) ||\n // this case is used for the cases when the token's start & end were recalculated\n (c.start === s.oldStart && c.end === s.oldEnd)\n );\n });\n return index !== -1;\n });\n};\n\nconst getCorrectCount = (tokens, selected) =>\n getCorrectSelected(tokens, selected).length;\n\nexport const getPartialScore = (question, session, totalCorrect) => {\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n const correctCount = getCorrectCount(question.tokens, session.selectedTokens);\n const correctTokens = (question.tokens || []).filter((t) => t.correct === true);\n const extraSelected = session.selectedTokens ? session.selectedTokens.length > correctTokens.length : 0;\n const incorrectCount = extraSelected ? session.selectedTokens && session.selectedTokens.length - correctCount : 0;\n const count = correctCount - incorrectCount;\n const positiveCount = count < 0 ? 0 : count;\n\n return totalCorrect.length\n ? parseFloat((positiveCount / totalCorrect.length).toFixed(2))\n : 0;\n};\n\nexport const outcome = (question, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n session = normalizeSession(session);\n\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n const enabled = partialScoring.enabled(question, env, true);\n const totalCorrect = question.tokens.filter((t) => t.correct);\n const score = getPartialScore(question, session, totalCorrect);\n resolve({\n score: enabled ? score : score === 1 ? 1 : 0,\n });\n }\n });\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalizeSession = (s) => ({\n selectedTokens: [],\n ...s,\n});\n\nexport const normalize = (question) => ({\n feedbackEnabled: true,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport const model = (question, session, env) => {\n session = session || { selectedToken: [] };\n session.selectedTokens = session.selectedTokens || [];\n const normalizedQuestion = normalize(question);\n return new Promise((resolve) => {\n log('[model]', 'normalizedQuestion: ', normalizedQuestion);\n log('[model]', 'session: ', session);\n const tokens = buildTokens(\n normalizedQuestion.tokens,\n env.mode === 'evaluate'\n );\n log('tokens:', tokens);\n const correctness =\n env.mode === 'evaluate'\n ? getCorrectness(normalizedQuestion.tokens, session.selectedTokens)\n : undefined;\n\n const fb =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const out = {\n tokens,\n highlightChoices: normalizedQuestion.highlightChoices,\n prompt: normalizedQuestion.promptEnabled\n ? normalizedQuestion.prompt\n : null,\n text: normalizedQuestion.text,\n disabled: env.mode !== 'gather',\n maxSelections: normalizedQuestion.maxSelections,\n correctness,\n feedback,\n incorrect:\n env.mode === 'evaluate' ? correctness !== 'correct' : undefined,\n };\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n out.rationale = normalizedQuestion.rationaleEnabled\n ? normalizedQuestion.rationale\n : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n });\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { tokens } = question;\n const selectedTokens = tokens.filter((t) => t.correct);\n\n resolve({\n id: '1',\n selectedTokens,\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","buildTokens","tokens","evaluateMode","map","t","Object","assign","correct","undefined","getCorrectness","selected","filter","length","correctSelected","getCorrectSelected","s","index","findIndex","c","start","end","oldStart","oldEnd","getCorrectCount","getPartialScore","question","session","totalCorrect","correctCount","selectedTokens","correctTokens","extraSelected","incorrectCount","count","positiveCount","parseFloat","toFixed","outcome","env","Promise","resolve","score","empty","normalizeSession","mode","completed","enabled","partialScoring","createDefaultModel","model","defaults","normalize","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","selectedToken","normalizedQuestion","correctness","fb","feedback","then","out","highlightChoices","prompt","text","disabled","maxSelections","incorrect","role","rationale","teacherInstructions","createCorrectResponseSession","id"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nconst log = debug('@pie-element:select-text:controller');\n\nconst buildTokens = (tokens, evaluateMode) => {\n tokens = tokens || [];\n\n return tokens.map((t) =>\n Object.assign(\n {},\n t,\n evaluateMode ? { correct: !!t.correct } : { correct: undefined }\n )\n );\n};\n\nexport const getCorrectness = (tokens, selected) => {\n const correct = tokens.filter((t) => t.correct === true);\n\n if (correct.length === 0) {\n return 'unknown';\n }\n\n const correctSelected = getCorrectSelected(tokens, selected);\n\n if (correctSelected.length === selected.length) {\n if (correctSelected.length === correct.length) {\n return 'correct';\n } else if (correctSelected.length > 0) {\n return 'partially-correct';\n }\n }\n\n if (correctSelected.length > 0) {\n return 'partially-correct';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectSelected = (tokens, selected) => {\n return (selected || []).filter((s) => {\n const index = tokens.findIndex((c) => {\n return c.correct &&\n (\n (c.start === s.start && c.end === s.end) ||\n // this case is used for the cases when the token's start & end were recalculated\n (c.start === s.oldStart && c.end === s.oldEnd)\n );\n });\n return index !== -1;\n });\n};\n\nconst getCorrectCount = (tokens, selected) =>\n getCorrectSelected(tokens, selected).length;\n\nexport const getPartialScore = (question, session, totalCorrect) => {\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n const correctCount = getCorrectCount(question.tokens, session.selectedTokens);\n const correctTokens = (question.tokens || []).filter((t) => t.correct === true);\n const extraSelected = session.selectedTokens ? session.selectedTokens.length > correctTokens.length : 0;\n const incorrectCount = extraSelected ? session.selectedTokens && session.selectedTokens.length - correctCount : 0;\n const count = correctCount - incorrectCount;\n const positiveCount = count < 0 ? 0 : count;\n\n return totalCorrect.length\n ? parseFloat((positiveCount / totalCorrect.length).toFixed(2))\n : 0;\n};\n\nexport const outcome = (question, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n session = normalizeSession(session);\n\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n const enabled = partialScoring.enabled(question, env, true);\n const totalCorrect = question.tokens.filter((t) => t.correct);\n const score = getPartialScore(question, session, totalCorrect);\n resolve({\n score: enabled ? score : score === 1 ? 1 : 0,\n });\n }\n });\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalizeSession = (s) => ({\n selectedTokens: [],\n ...s,\n});\n\nexport const normalize = (question) => ({\n feedbackEnabled: true,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport const model = (question, session, env) => {\n session = session || { selectedToken: [] };\n session.selectedTokens = session.selectedTokens || [];\n const normalizedQuestion = normalize(question);\n return new Promise((resolve) => {\n log('[model]', 'normalizedQuestion: ', normalizedQuestion);\n log('[model]', 'session: ', session);\n const tokens = buildTokens(\n normalizedQuestion.tokens,\n env.mode === 'evaluate'\n );\n log('tokens:', tokens);\n const correctness =\n env.mode === 'evaluate'\n ? getCorrectness(normalizedQuestion.tokens, session.selectedTokens)\n : undefined;\n\n const fb =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const out = {\n tokens,\n highlightChoices: normalizedQuestion.highlightChoices,\n prompt: normalizedQuestion.promptEnabled\n ? normalizedQuestion.prompt\n : null,\n text: normalizedQuestion.text,\n disabled: env.mode !== 'gather',\n maxSelections: normalizedQuestion.maxSelections,\n correctness,\n feedback,\n incorrect:\n env.mode === 'evaluate' ? correctness !== 'correct' : undefined,\n };\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n out.rationale = normalizedQuestion.rationaleEnabled\n ? normalizedQuestion.rationale\n : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n });\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { tokens } = question;\n const selectedTokens = tokens.filter((t) => t.correct);\n\n resolve({\n id: '1',\n selectedTokens,\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@pie-element/select-text-controller",
3
3
  "private": true,
4
- "version": "4.1.30",
4
+ "version": "4.1.31",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "dependencies": {
9
9
  "@pie-lib/controller-utils": "^0.2.26",
10
10
  "@pie-lib/feedback": "^0.4.27",
11
- "@pie-lib/text-select": "^1.8.13",
11
+ "@pie-lib/text-select": "^1.8.14",
12
12
  "debug": "^3.1.0",
13
13
  "lodash": "^4.17.15"
14
14
  },
@@ -163,6 +163,22 @@
163
163
  }
164
164
  }
165
165
  },
166
+ "spellCheck": {
167
+ "title": "ConfigureProp",
168
+ "type": "object",
169
+ "properties": {
170
+ "settings": {
171
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
172
+ "type": "boolean",
173
+ "title": "settings"
174
+ },
175
+ "label": {
176
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
177
+ "type": "string",
178
+ "title": "label"
179
+ }
180
+ }
181
+ },
166
182
  "scoringType": {
167
183
  "title": "ConfigureProp",
168
184
  "type": "object",
@@ -122,6 +122,18 @@ Indicates if the item has to be displayed in the Settings Panel
122
122
 
123
123
  Indicates the label for the item that has to be displayed in the Settings Panel
124
124
 
125
+ # `spellCheck` (object)
126
+
127
+ Properties of the `spellCheck` object:
128
+
129
+ ## `settings` (boolean)
130
+
131
+ Indicates if the item has to be displayed in the Settings Panel
132
+
133
+ ## `label` (string)
134
+
135
+ Indicates the label for the item that has to be displayed in the Settings Panel
136
+
125
137
  # `scoringType` (object)
126
138
 
127
139
  Properties of the `scoringType` object: