@pie-element/select-text 9.6.2-beta.1 → 9.6.2-beta.2

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.
@@ -33,9 +33,9 @@ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
33
33
 
34
34
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
35
35
 
36
- var _textSelect = require("@pie-lib/pie-toolbox/text-select");
36
+ var _textSelect = require("@pie-lib/text-select");
37
37
 
38
- var _configUi = require("@pie-lib/pie-toolbox/config-ui");
38
+ var _configUi = require("@pie-lib/config-ui");
39
39
 
40
40
  var _Chip = _interopRequireDefault(require("@material-ui/core/Chip"));
41
41
 
@@ -43,28 +43,12 @@ var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
43
43
 
44
44
  var _debug = _interopRequireDefault(require("debug"));
45
45
 
46
- var _editableHtml = require("@pie-lib/pie-toolbox/editable-html");
47
-
48
- var _mathRendering = require("@pie-lib/pie-toolbox/math-rendering");
46
+ var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
49
47
 
50
48
  var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
51
49
 
52
50
  var _utils = require("./utils");
53
51
 
54
- var _classnames = _interopRequireDefault(require("classnames"));
55
-
56
- var _Switch = _interopRequireDefault(require("@material-ui/core/Switch"));
57
-
58
- var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
59
-
60
- var _reactDom = _interopRequireDefault(require("react-dom"));
61
-
62
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
63
-
64
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
65
-
66
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
67
-
68
52
  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; }
69
53
 
70
54
  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; }
@@ -95,12 +79,7 @@ var Design = /*#__PURE__*/function (_React$Component) {
95
79
  u.tokens = [];
96
80
  });
97
81
  }, 200));
98
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeText", function (text) {
99
- _this.updateText(text);
100
-
101
- _this.clearTokens();
102
- });
103
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeTextEvent", function (event) {
82
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeText", function (event) {
104
83
  return _this.updateText(event.target.value);
105
84
  });
106
85
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeTokens", function (tokens, mode) {
@@ -114,14 +93,6 @@ var Design = /*#__PURE__*/function (_React$Component) {
114
93
  u.maxSelections = Math.max(max, correctTokenCount);
115
94
  });
116
95
  });
117
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeTokenizedText", function (text) {
118
- _this.apply(function (u) {
119
- u.tokenizedText = text; // const correctTokenCount = tokens.filter((t) => t.correct).length;
120
- // const max = isFinite(u.maxSelections) ? u.maxSelections : 0;
121
- //
122
- // u.maxSelections = Math.max(max, correctTokenCount);
123
- });
124
- });
125
96
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMaxSelections", function (event, max) {
126
97
  _this.apply(function (u) {
127
98
  return u.maxSelections = max;
@@ -172,193 +143,9 @@ var Design = /*#__PURE__*/function (_React$Component) {
172
143
  rationale: rationale
173
144
  }));
174
145
  });
175
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "createDOMAnnotation", function (elems, annotation) {
176
- var classes = _this.props.classes;
177
- var id = annotation.id;
178
- (elems || []).forEach(function (elem) {
179
- elem.dataset.id = id;
180
- elem.className = (0, _classnames["default"])(classes.token); // elem.onclick = !disabled && this.handleClick;
181
- // elem.onmouseover = this.handleHover;
182
- // elem.onmouseout = this.handleCancelHover;
183
- });
184
- });
185
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "createNewAnnotation", function (selectedElems, selectionDetails) {
186
- var annotation = _objectSpread({
187
- id: [selectionDetails.start, selectionDetails.end, new Date().getTime()].join('-')
188
- }, selectionDetails);
189
-
190
- _this.createDOMAnnotation(selectedElems, annotation);
191
-
192
- return annotation;
193
- });
194
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "wrapSentencesInSpans", function (html) {
195
- var onClickHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
196
- var classes = _this.props.classes;
197
- var container = document.createElement('div');
198
- container.innerHTML = html;
199
-
200
- var splitSentences = function splitSentences(text) {
201
- // Match sentences ending with punctuation:
202
- // "." or "!" or "?"
203
- var pattern = /([^.!?]+[.!?]+[\s"]*)|([^.!?]+$)/g;
204
- var matches = text.match(pattern);
205
- return matches || [];
206
- };
207
-
208
- var processNode = function processNode(node) {
209
- if (node.nodeType === Node.TEXT_NODE) {
210
- var sentences = splitSentences(node.textContent);
211
- var fragment = document.createDocumentFragment();
212
-
213
- var _iterator = _createForOfIteratorHelper(sentences),
214
- _step;
215
-
216
- try {
217
- var _loop = function _loop() {
218
- var sentence = _step.value;
219
-
220
- if (sentence.trim()) {
221
- var span = document.createElement('span');
222
- span.textContent = sentence;
223
- span.className = (0, _classnames["default"])(classes.token);
224
-
225
- if (onClickHandler) {
226
- span.addEventListener('click', function (e) {
227
- onClickHandler(e, sentence);
228
- });
229
- }
230
-
231
- fragment.appendChild(span);
232
- } else {
233
- fragment.appendChild(document.createTextNode(sentence));
234
- }
235
- };
236
-
237
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
238
- _loop();
239
- }
240
- } catch (err) {
241
- _iterator.e(err);
242
- } finally {
243
- _iterator.f();
244
- }
245
-
246
- node.replaceWith(fragment);
247
- } else if (node.nodeType === Node.ELEMENT_NODE) {
248
- Array.from(node.childNodes).forEach(processNode);
249
- }
250
- };
251
-
252
- Array.from(container.childNodes).forEach(processNode);
253
- return container;
254
- });
255
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleSelection", function (event) {
256
- var selection = window.getSelection(); // prevent unwanted selections
257
-
258
- if (event.detail > 2) {
259
- (0, _utils.clearSelection)();
260
- return;
261
- }
262
-
263
- if (selection && selection.rangeCount > 0) {
264
- _this.wrapSelectionInSpan(selection);
265
-
266
- (0, _utils.clearSelection)();
267
-
268
- if (_this.textRef) {
269
- var content = _this.textRef.getHTML();
270
-
271
- _this.changeTokenizedText(content); // this.setState({ tokenizedText: content });
272
-
273
- }
274
- }
275
- });
276
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleTokenClick", function (event) {
277
- var correctMode = _this.state.correctMode;
278
-
279
- if (!correctMode) {
280
- return;
281
- }
282
-
283
- event.target.classList.toggle('correct');
284
- });
285
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "clearTokens", function () {
286
- var model = _this.props.model;
287
-
288
- if (_this.textRef) {
289
- var container = document.createElement('div');
290
- container.innerHTML = model.text; // Remove all children and add new content
291
-
292
- _this.textRef.innerHTML = '';
293
-
294
- _this.textRef.appendChild(container);
295
- }
296
-
297
- _this.changeTokenizedText(model.text);
298
-
299
- _this.setState({
300
- tokenizedText: model.text
301
- });
302
- });
303
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "selectWords", function () {
304
- var text = _this.state.text;
305
-
306
- _this.clearTokens();
307
-
308
- var tokenized = _this.wrapWordsInSpans(text, function (e) {
309
- return _this.handleTokenClick(e);
310
- });
311
-
312
- console.log('words:', tokenized);
313
-
314
- _this.changeTokenizedText(tokenized);
315
-
316
- _this.setState({
317
- tokenizedText: tokenized
318
- });
319
- });
320
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "selectSentences", function () {
321
- var text = _this.state.text;
322
-
323
- _this.clearTokens();
324
-
325
- var container = _this.wrapSentencesInSpans(text); // Remove all children and add new content
326
-
327
-
328
- _this.textRef.innerHTML = '';
329
-
330
- _this.textRef.appendChild(container);
331
-
332
- var tokenized = container.innerHTML;
333
- console.log('sentences:', tokenized);
334
-
335
- _this.changeTokenizedText(tokenized); // this.setState({ tokenizedText: tokenized });
336
-
337
- });
338
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "selectParagraphs", function () {
339
- var text = _this.state.text;
340
-
341
- _this.clearTokens();
342
-
343
- var container = _this.wrapParagraphContentInSpan(text); // Remove all children and add new content
344
-
345
-
346
- _this.textRef.innerHTML = '';
347
-
348
- _this.textRef.appendChild(container);
349
-
350
- var tokenized = container.innerHTML;
351
- console.log('paragraphs:', tokenized);
352
-
353
- _this.changeTokenizedText(tokenized); // this.setState({ tokenizedText: tokenized });
354
-
355
- });
356
146
  var _model = _this.props.model;
357
147
  _this.state = {
358
- correctMode: false,
359
- selectMode: false,
360
- text: _model && _model.text || '',
361
- tokenizedText: _model && _model.token || ''
148
+ text: _model && _model.text || ''
362
149
  };
363
150
  return _this;
364
151
  }
@@ -369,160 +156,17 @@ var Design = /*#__PURE__*/function (_React$Component) {
369
156
  var model = nProps.model;
370
157
 
371
158
  if (model && model.text) {
372
- var _this$setState;
373
-
374
- this.setState((_this$setState = {
159
+ this.setState({
375
160
  text: model.text
376
- }, (0, _defineProperty2["default"])(_this$setState, "text", model.text), (0, _defineProperty2["default"])(_this$setState, "tokenizedText", model.tokenizedText || model.text), _this$setState)); // model.tokens.forEach((annotation) => {
377
- // console.log('annotation', annotation);
378
- // const [domStart, domEnd] = getDOMNodes(annotation.start, annotation.end, this.textRef);
379
- // console.log('domStart, domEnd', domStart, domEnd);
380
- //
381
- // if (domStart && domEnd) {
382
- // const range = document.createRange();
383
- //
384
- // range.setStart(domStart.node, domStart.offset);
385
- // range.setEnd(domEnd.node, domEnd.offset);
386
- //
387
- // const spans = wrapRange(range);
388
- //
389
- // this.createDOMAnnotation(spans, annotation);
390
- // }
391
- // });
161
+ });
392
162
  }
393
163
  }
394
- }, {
395
- key: "componentDidUpdate",
396
- value: function componentDidUpdate() {
397
- // console.log('UPDATED');
398
- // console.log('this.state.text', this.state.text);
399
- //eslint-disable-next-line
400
- var domNode = _reactDom["default"].findDOMNode(this);
401
-
402
- (0, _mathRendering.renderMath)(domNode);
403
- }
404
- }, {
405
- key: "wrapWordsInSpans",
406
- value: // addAnnotation = (type) => {
407
- // const { annotations, onChange } = this.props;
408
- // const annotation = this.createNewAnnotation('', type);
409
- // const labelElem = getLabelElement(annotation.id);
410
- //
411
- // annotations.push(annotation);
412
- //
413
- // this.setState({
414
- // openedMenu: false,
415
- // openedEditor: true,
416
- // annotationIndex: annotations.length - 1,
417
- // annotation,
418
- // labelElem,
419
- // });
420
- //
421
- // onChange(annotations);
422
- // };
423
- // new functionalities
424
- function wrapWordsInSpans(html, onClick) {
425
- var classes = this.props.classes;
426
- var container = document.createElement('div');
427
- container.innerHTML = html;
428
-
429
- var processNode = function processNode(node) {
430
- if (node.nodeType === Node.TEXT_NODE) {
431
- var words = node.textContent.split(/(\s+|\b)/); // split by word boundaries + spaces
432
-
433
- var fragment = document.createDocumentFragment();
434
-
435
- var _iterator2 = _createForOfIteratorHelper(words),
436
- _step2;
437
-
438
- try {
439
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
440
- var word = _step2.value;
441
-
442
- if (word.trim()) {
443
- var span = document.createElement('span');
444
- span.className = (0, _classnames["default"])(classes.token);
445
- span.addEventListener('click', function (e) {
446
- return onClick(e);
447
- });
448
- span.textContent = word;
449
- fragment.appendChild(span);
450
- } else {
451
- fragment.appendChild(document.createTextNode(word));
452
- }
453
- }
454
- } catch (err) {
455
- _iterator2.e(err);
456
- } finally {
457
- _iterator2.f();
458
- }
459
-
460
- node.replaceWith(fragment);
461
- } else if (node.nodeType === Node.ELEMENT_NODE) {
462
- Array.from(node.childNodes).forEach(processNode);
463
- }
464
- };
465
-
466
- Array.from(container.childNodes).forEach(processNode);
467
- return container.innerHTML;
468
- }
469
- }, {
470
- key: "wrapParagraphContentInSpan",
471
- value: function wrapParagraphContentInSpan(html) {
472
- var _this2 = this;
473
-
474
- var classes = this.props.classes;
475
- var container = document.createElement('div');
476
- container.innerHTML = html;
477
- container.querySelectorAll('p').forEach(function (p) {
478
- var span = document.createElement('span');
479
- span.className = (0, _classnames["default"])(classes.token);
480
- span.addEventListener('click', _this2.handleTokenClick); // Move all children of <p> into the span
481
-
482
- while (p.firstChild) {
483
- span.appendChild(p.firstChild);
484
- }
485
-
486
- p.appendChild(span);
487
- });
488
- return container;
489
- }
490
- }, {
491
- key: "wrapSelectionInSpan",
492
- value: function wrapSelectionInSpan(selection) {
493
- var classes = this.props.classes;
494
- var range = selection.getRangeAt(0);
495
-
496
- if (range.collapsed) {
497
- console.log('Selection is collapsed (no text selected).');
498
- return;
499
- } // Extract the contents of the selection
500
-
501
-
502
- var contents = range.extractContents(); // Create the span wrapper
503
-
504
- var span = document.createElement('span');
505
- span.className = (0, _classnames["default"])(classes.token);
506
- span.addEventListener('click', this.handleTokenClick);
507
- span.appendChild(contents); // Insert back into the DOM
508
-
509
- range.insertNode(span); // Collapse the selection
510
-
511
- selection.removeAllRanges();
512
- }
513
164
  }, {
514
165
  key: "render",
515
166
  value: function render() {
516
- var _configuration$teache,
517
- _configuration$prompt,
518
- _this3 = this,
519
- _configuration$ration;
520
-
521
- var _this$state = this.state,
522
- textValue = _this$state.text,
523
- correctMode = _this$state.correctMode,
524
- selectMode = _this$state.selectMode,
525
- tokenizedText = _this$state.tokenizedText;
167
+ var _configuration$teache, _configuration$prompt, _configuration$ration;
168
+
169
+ var textValue = this.state.text;
526
170
  var _this$props6 = this.props,
527
171
  classes = _this$props6.classes,
528
172
  configuration = _this$props6.configuration,
@@ -648,7 +292,7 @@ var Design = /*#__PURE__*/function (_React$Component) {
648
292
  }, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
649
293
  label: teacherInstructions.label,
650
294
  className: classes.promptHolder
651
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
295
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
652
296
  className: classes.prompt,
653
297
  markup: model.teacherInstructions || '',
654
298
  onChange: this.onTeacherInstructionsChanged,
@@ -672,7 +316,7 @@ var Design = /*#__PURE__*/function (_React$Component) {
672
316
  }, teacherInstructionsError)), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
673
317
  label: prompt.label || '',
674
318
  className: classes.promptHolder
675
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
319
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
676
320
  className: classes.prompt,
677
321
  markup: model.prompt,
678
322
  onChange: this.onPromptChanged,
@@ -692,64 +336,69 @@ var Design = /*#__PURE__*/function (_React$Component) {
692
336
  mathMlOptions: mathMlOptions
693
337
  }), promptError && /*#__PURE__*/_react["default"].createElement("div", {
694
338
  className: classes.errorText
695
- }, promptError)), /*#__PURE__*/_react["default"].createElement("div", {
696
- className: classes.subheader
697
- }, "NEW functionality", /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
698
- control: /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
699
- checked: selectMode,
700
- onChange: function onChange() {
701
- _this3.setState({
702
- selectMode: !selectMode
703
- }); // renderMath(this);
704
-
705
- }
706
- }),
707
- label: "Select tokens"
708
- })), selectMode && /*#__PURE__*/_react["default"].createElement(_textSelect.Controls, {
709
- onClear: this.clearTokens,
710
- onWords: this.selectWords,
711
- onSentences: this.selectSentences,
712
- onParagraphs: this.selectParagraphs,
713
- setCorrectMode: correctMode,
714
- onToggleCorrectMode: function onToggleCorrectMode() {
715
- return _this3.setState({
716
- correctMode: !correctMode
717
- });
718
- }
719
- }), text.settings && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
339
+ }, promptError)), text.settings && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
720
340
  label: text.label || '',
721
341
  className: classes.promptHolder
722
- }, selectMode ? /*#__PURE__*/_react["default"].createElement("div", {
723
- className: classes.textContainer,
724
- ref: function ref(r) {
725
- return _this3.textRef = r;
342
+ }, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
343
+ className: classes.input,
344
+ multiline: true,
345
+ defaultValue: textValue,
346
+ onChange: this.changeText,
347
+ spellCheck: spellCheckEnabled
348
+ })), tokens.settings && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
349
+ label: tokens.label || '',
350
+ className: classes.tokenizerContainer
351
+ }, /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
352
+ classes: {
353
+ tooltip: classes.tooltip
726
354
  },
727
- onMouseDown: selectMode && !correctMode ? _utils.clearSelection : function () {},
728
- onMouseUp: selectMode && !correctMode ? this.handleSelection : function () {},
729
- dangerouslySetInnerHTML: {
730
- __html: tokenizedText
355
+ disableFocusListener: true,
356
+ disableTouchListener: true,
357
+ placement: 'right',
358
+ title: validationMessage
359
+ }, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
360
+ fontSize: 'small',
361
+ color: 'primary',
362
+ style: {
363
+ position: 'absolute',
364
+ left: '48px',
365
+ top: '-3px'
731
366
  }
732
- }) : /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
733
- className: classes.prompt,
734
- markup: textValue,
735
- onChange: this.changeText,
736
- nonEmpty: false,
737
- disableUnderline: true,
738
- toolbarOpts: toolbarOpts,
739
- pluginProps: getPluginProps(text === null || text === void 0 ? void 0 : text.inputConfiguration),
740
- spellCheck: spellCheckEnabled,
741
- imageSupport: imageSupport,
742
- uploadSoundSupport: uploadSoundSupport,
743
- languageCharactersProps: [{
744
- language: 'spanish'
745
- }, {
746
- language: 'special'
747
- }],
748
- mathMlOptions: mathMlOptions
367
+ })), /*#__PURE__*/_react["default"].createElement(_textSelect.Tokenizer, {
368
+ className: classes.tokenizer,
369
+ text: model.text,
370
+ tokens: tokensModel,
371
+ onChange: this.changeTokens
372
+ })), tokensError && /*#__PURE__*/_react["default"].createElement("div", {
373
+ className: classes.errorText
374
+ }, tokensError), selectionsError && /*#__PURE__*/_react["default"].createElement("div", {
375
+ className: classes.errorText
376
+ }, selectionsError), /*#__PURE__*/_react["default"].createElement("div", {
377
+ className: classes.tokensDetails
378
+ }, mode.settings && /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
379
+ label: "".concat(mode.label, ": ").concat(model.mode ? model.mode : 'None'),
380
+ className: classes.chip
381
+ }), selections.settings && /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
382
+ label: "".concat(selections.label, ": ").concat(tokensModel.length),
383
+ className: classes.chip
384
+ }), correctAnswer.settings && /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
385
+ label: "".concat(correctAnswer.label, ": ").concat(tokensModel.filter(function (t) {
386
+ return t.correct;
387
+ }).length),
388
+ className: classes.chip
389
+ }), selectionCount.settings && /*#__PURE__*/_react["default"].createElement(_configUi.NumberTextField, {
390
+ min: tokensModel.filter(function (t) {
391
+ return t.correct;
392
+ }).length || 0,
393
+ label: "".concat(selectionCount.label, " (0:any)"),
394
+ max: tokensModel.length,
395
+ value: model.maxSelections,
396
+ onChange: this.changeMaxSelections,
397
+ className: classes.numberField
749
398
  })), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
750
399
  label: rationale.label || '',
751
400
  className: classes.promptHolder
752
- }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
401
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
753
402
  className: classes.prompt,
754
403
  markup: model.rationale || '',
755
404
  onChange: this.onRationaleChanged,
@@ -850,43 +499,6 @@ var _default = (0, _styles.withStyles)(function (theme) {
850
499
  fontSize: theme.typography.fontSize - 2,
851
500
  color: theme.palette.error.main,
852
501
  paddingTop: theme.spacing.unit
853
- },
854
- subheader: {
855
- paddingBottom: '8px',
856
- borderBottom: '1px solid grey',
857
- marginBottom: '16px',
858
- marginTop: '24px',
859
- display: 'flex',
860
- alignItems: 'center',
861
- justifyContent: 'space-between'
862
- },
863
- textContainer: {
864
- padding: '15px 21px',
865
- border: '1px solid #ccc',
866
- borderRadius: '4px',
867
- overflowY: 'scroll',
868
- whiteSpace: 'pre-wrap',
869
- overflowWrap: 'break-word',
870
- '& p': {
871
- margin: 0
872
- },
873
- '& span[data-latex]': {
874
- userSelect: 'none',
875
- '-webkit-user-select': 'none',
876
- '-moz-user-select': 'none',
877
- '-ms-user-select': 'none'
878
- }
879
- },
880
- token: {
881
- position: 'relative',
882
- cursor: 'pointer',
883
- backgroundColor: '#fff9c4',
884
- '&:hover': {
885
- backgroundColor: '#E5E0B0'
886
- },
887
- '&.correct': {
888
- backgroundColor: '#4caf50'
889
- }
890
502
  }
891
503
  };
892
504
  })(Design);