@pie-element/select-text 6.5.16 → 6.5.20

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.
@@ -132,10 +132,6 @@ And say, now, how does it seem to you?</p>`,
132
132
  );
133
133
  };
134
134
 
135
- exports.model = (id, element) => {
136
- return Object.assign({}, { id, element }, base({}));
137
- };
138
-
139
135
  exports.mathSample = (id, element) => {
140
136
  return Object.assign({}, { id, element }, mathSample({}));
141
137
  };
@@ -209,3 +205,418 @@ exports.htmlAscii = (id, element) => ({
209
205
  }]
210
206
  }
211
207
  );
208
+
209
+ const simpleItem = {
210
+ "text": "A. Almost never\n\nB. Once in a while\n\nC. Sometimes\n\nD. Often\n\nE. Almost all the time",
211
+ "tokens": [
212
+ {
213
+ "text": "A. Almost never",
214
+ "end": 15,
215
+ "start": 0,
216
+ "correct": true
217
+ },
218
+ {
219
+ "start": 17,
220
+ "end": 35,
221
+ "correct": false,
222
+ "text": "B. Once in a while"
223
+ },
224
+ {
225
+ "correct": false,
226
+ "end": 49,
227
+ "start": 37,
228
+ "text": "C. Sometimes"
229
+ },
230
+ {
231
+ "text": "D. Often",
232
+ "correct": false,
233
+ "end": 59,
234
+ "start": 51
235
+ },
236
+ {
237
+ "start": 61,
238
+ "correct": false,
239
+ "end": 83,
240
+ "text": "E. Almost all the time"
241
+ }
242
+ ],
243
+ "rationale": "<p>answers vary</p>",
244
+ "partialScoring": true,
245
+ "teacherInstructions": "",
246
+ "prompt": "<p>I got my work done right away instead of waiting until the last minute.</p>",
247
+ "maxSelections": 1,
248
+ };
249
+
250
+ exports.model = (id, element) => {
251
+ return Object.assign({}, { id, element }, base( {
252
+ "partialScoring": true,
253
+ "tokens": [
254
+ {
255
+ "correct": false,
256
+ "start": 3,
257
+ "end": 6,
258
+ "text": "Our"
259
+ },
260
+ {
261
+ "correct": false,
262
+ "start": 7,
263
+ "end": 16,
264
+ "text": "challenge"
265
+ },
266
+ {
267
+ "correct": false,
268
+ "start": 18,
269
+ "end": 21,
270
+ "text": "not"
271
+ },
272
+ {
273
+ "correct": false,
274
+ "start": 22,
275
+ "end": 30,
276
+ "text": "tomorrow"
277
+ },
278
+ {
279
+ "correct": false,
280
+ "start": 31,
281
+ "end": 34,
282
+ "text": "but"
283
+ },
284
+ {
285
+ "correct": false,
286
+ "start": 35,
287
+ "end": 40,
288
+ "text": "today"
289
+ },
290
+ {
291
+ "correct": false,
292
+ "start": 42,
293
+ "end": 44,
294
+ "text": "is"
295
+ },
296
+ {
297
+ "correct": false,
298
+ "start": 45,
299
+ "end": 47,
300
+ "text": "to"
301
+ },
302
+ {
303
+ "correct": false,
304
+ "start": 48,
305
+ "end": 58,
306
+ "text": "accomplish"
307
+ },
308
+ {
309
+ "correct": false,
310
+ "start": 59,
311
+ "end": 69,
312
+ "text": "objectives"
313
+ },
314
+ {
315
+ "correct": false,
316
+ "start": 70,
317
+ "end": 75,
318
+ "text": "which"
319
+ },
320
+ {
321
+ "correct": false,
322
+ "start": 76,
323
+ "end": 80,
324
+ "text": "have"
325
+ },
326
+ {
327
+ "correct": false,
328
+ "start": 81,
329
+ "end": 87,
330
+ "text": "eluded"
331
+ },
332
+ {
333
+ "correct": false,
334
+ "start": 88,
335
+ "end": 95,
336
+ "text": "mankind"
337
+ },
338
+ {
339
+ "correct": false,
340
+ "start": 96,
341
+ "end": 101,
342
+ "text": "since"
343
+ },
344
+ {
345
+ "correct": false,
346
+ "start": 102,
347
+ "end": 105,
348
+ "text": "the"
349
+ },
350
+ {
351
+ "correct": false,
352
+ "start": 106,
353
+ "end": 115,
354
+ "text": "beginning"
355
+ },
356
+ {
357
+ "correct": false,
358
+ "start": 116,
359
+ "end": 118,
360
+ "text": "of"
361
+ },
362
+ {
363
+ "correct": false,
364
+ "start": 119,
365
+ "end": 123,
366
+ "text": "time"
367
+ },
368
+ {
369
+ "correct": false,
370
+ "start": 125,
371
+ "end": 127,
372
+ "text": "We"
373
+ },
374
+ {
375
+ "correct": false,
376
+ "start": 128,
377
+ "end": 132,
378
+ "text": "must"
379
+ },
380
+ {
381
+ "correct": false,
382
+ "start": 133,
383
+ "end": 138,
384
+ "text": "bring"
385
+ },
386
+ {
387
+ "correct": false,
388
+ "start": 139,
389
+ "end": 144,
390
+ "text": "equal"
391
+ },
392
+ {
393
+ "correct": false,
394
+ "start": 145,
395
+ "end": 152,
396
+ "text": "justice"
397
+ },
398
+ {
399
+ "correct": false,
400
+ "start": 153,
401
+ "end": 155,
402
+ "text": "to"
403
+ },
404
+ {
405
+ "correct": false,
406
+ "start": 156,
407
+ "end": 159,
408
+ "text": "all"
409
+ },
410
+ {
411
+ "correct": false,
412
+ "start": 160,
413
+ "end": 163,
414
+ "text": "our"
415
+ },
416
+ {
417
+ "correct": false,
418
+ "start": 164,
419
+ "end": 172,
420
+ "text": "citizens"
421
+ },
422
+ {
423
+ "correct": false,
424
+ "start": 174,
425
+ "end": 176,
426
+ "text": "We"
427
+ },
428
+ {
429
+ "correct": false,
430
+ "start": 177,
431
+ "end": 181,
432
+ "text": "must"
433
+ },
434
+ {
435
+ "correct": false,
436
+ "start": 182,
437
+ "end": 189,
438
+ "text": "abolish"
439
+ },
440
+ {
441
+ "correct": false,
442
+ "start": 190,
443
+ "end": 195,
444
+ "text": "human"
445
+ },
446
+ {
447
+ "correct": true,
448
+ "start": 196,
449
+ "end": 203,
450
+ "text": "poverty"
451
+ },
452
+ {
453
+ "correct": false,
454
+ "start": 205,
455
+ "end": 207,
456
+ "text": "We"
457
+ },
458
+ {
459
+ "correct": false,
460
+ "start": 208,
461
+ "end": 212,
462
+ "text": "must"
463
+ },
464
+ {
465
+ "correct": false,
466
+ "start": 213,
467
+ "end": 222,
468
+ "text": "eradicate"
469
+ },
470
+ {
471
+ "correct": false,
472
+ "start": 223,
473
+ "end": 230,
474
+ "text": "killing"
475
+ },
476
+ {
477
+ "correct": false,
478
+ "start": 231,
479
+ "end": 234,
480
+ "text": "and"
481
+ },
482
+ {
483
+ "correct": false,
484
+ "start": 235,
485
+ "end": 244,
486
+ "text": "crippling"
487
+ },
488
+ {
489
+ "correct": true,
490
+ "start": 245,
491
+ "end": 252,
492
+ "text": "disease"
493
+ },
494
+ {
495
+ "correct": false,
496
+ "start": 253,
497
+ "end": 256,
498
+ "text": "and"
499
+ },
500
+ {
501
+ "correct": false,
502
+ "start": 257,
503
+ "end": 265,
504
+ "text": "lengthen"
505
+ },
506
+ {
507
+ "correct": false,
508
+ "start": 266,
509
+ "end": 269,
510
+ "text": "the"
511
+ },
512
+ {
513
+ "correct": false,
514
+ "start": 270,
515
+ "end": 274,
516
+ "text": "span"
517
+ },
518
+ {
519
+ "correct": false,
520
+ "start": 275,
521
+ "end": 277,
522
+ "text": "of"
523
+ },
524
+ {
525
+ "correct": false,
526
+ "start": 278,
527
+ "end": 282,
528
+ "text": "life"
529
+ },
530
+ {
531
+ "correct": false,
532
+ "start": 283,
533
+ "end": 285,
534
+ "text": "to"
535
+ },
536
+ {
537
+ "correct": false,
538
+ "start": 286,
539
+ "end": 289,
540
+ "text": "100"
541
+ },
542
+ {
543
+ "correct": false,
544
+ "start": 290,
545
+ "end": 292,
546
+ "text": "or"
547
+ },
548
+ {
549
+ "correct": false,
550
+ "start": 293,
551
+ "end": 296,
552
+ "text": "200"
553
+ },
554
+ {
555
+ "correct": false,
556
+ "start": 297,
557
+ "end": 302,
558
+ "text": "years"
559
+ },
560
+ {
561
+ "correct": false,
562
+ "start": 304,
563
+ "end": 306,
564
+ "text": "We"
565
+ },
566
+ {
567
+ "correct": false,
568
+ "start": 307,
569
+ "end": 311,
570
+ "text": "must"
571
+ },
572
+ {
573
+ "correct": false,
574
+ "start": 312,
575
+ "end": 321,
576
+ "text": "eliminate"
577
+ },
578
+ {
579
+ "correct": true,
580
+ "start": 322,
581
+ "end": 332,
582
+ "text": "illiteracy"
583
+ },
584
+ {
585
+ "correct": false,
586
+ "start": 333,
587
+ "end": 338,
588
+ "text": "among"
589
+ },
590
+ {
591
+ "correct": false,
592
+ "start": 339,
593
+ "end": 342,
594
+ "text": "all"
595
+ },
596
+ {
597
+ "correct": false,
598
+ "start": 343,
599
+ "end": 345,
600
+ "text": "of"
601
+ },
602
+ {
603
+ "correct": false,
604
+ "start": 346,
605
+ "end": 349,
606
+ "text": "our"
607
+ },
608
+ {
609
+ "correct": false,
610
+ "start": 350,
611
+ "end": 356,
612
+ "text": "people"
613
+ }
614
+ ],
615
+ // "id": "0",
616
+ "text": "<p>Our challenge, not tomorrow but today, is to accomplish objectives which have eluded mankind since the beginning of time. We must bring equal justice to all our citizens. We must abolish human poverty. We must eradicate killing and crippling disease and lengthen the span of life to 100 or 200 years. We must eliminate illiteracy among all of our people.</p>\n",
617
+ "prompt": "<p>Select the <span class=\"relative-emphasis\">three</span> words from below that specifically describe the &#8220;enemies&#8221; which Johnson wants to eliminate.</p>",
618
+ "rationale": "<p>In paragraph 6, Johnson refers to the &#8220;ancient enemies&#8221;&#8212;which he defines as poverty, disease, illiteracy, strife, and bigotry. In paragraph 3, he talks about this idea by explaining that he wants to &#8220;accomplish objectives which have eluded mankind;&#8221; that is, to eliminate these enemies.</p>",
619
+ // "element": "select-text",
620
+ "maxSelections": 3
621
+ } ));
622
+ };
package/lib/main.js CHANGED
@@ -33,6 +33,8 @@ var _renderUi = require("@pie-lib/render-ui");
33
33
 
34
34
  var _styles = require("@material-ui/core/styles");
35
35
 
36
+ var _utils = _interopRequireDefault(require("./utils"));
37
+
36
38
  var _debug = _interopRequireDefault(require("debug"));
37
39
 
38
40
  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; }
@@ -71,47 +73,37 @@ var Main = /*#__PURE__*/function (_React$Component) {
71
73
  return t.correct;
72
74
  });
73
75
  });
74
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateText", function () {
75
- var model = _this.props.model;
76
-
77
- var oldModel = _objectSpread({}, model);
78
-
79
- var newText = (0, _textSelect.prepareText)(oldModel.text);
80
- model.unpreparedText = oldModel.text;
81
- model.text = newText;
82
- });
83
76
  _this.state = {
84
- showCorrectAnswer: false
77
+ showCorrectAnswer: _this.props.model.alwaysShowCorrect || false,
78
+ model: (0, _utils["default"])(props.model)
85
79
  };
86
80
  return _this;
87
81
  }
88
82
 
89
83
  (0, _createClass2["default"])(Main, [{
90
84
  key: "UNSAFE_componentWillReceiveProps",
91
- value: function UNSAFE_componentWillReceiveProps() {
85
+ value: function UNSAFE_componentWillReceiveProps(nextProps) {
92
86
  this.setState({
93
- showCorrectAnswer: false
87
+ showCorrectAnswer: !!nextProps.model.alwaysShowCorrect,
88
+ model: (0, _utils["default"])(nextProps.model)
94
89
  });
95
90
  }
96
91
  }, {
97
92
  key: "render",
98
93
  value: function render() {
99
94
  var _this$props = this.props,
100
- model = _this$props.model,
101
95
  session = _this$props.session,
102
96
  onSelectionChange = _this$props.onSelectionChange,
103
97
  classes = _this$props.classes;
104
- var showCorrectAnswer = this.state.showCorrectAnswer;
105
-
106
- if (!model.unpreparedText) {
107
- this.updateText();
108
- }
98
+ var _this$state = this.state,
99
+ showCorrectAnswer = _this$state.showCorrectAnswer,
100
+ model = _this$state.model; // const model = generateTokens(this.props.model)
109
101
 
110
102
  var selectedTokens = showCorrectAnswer ? this.correctAnswer() : session.selectedTokens;
111
103
  log('[render] selectedTokens:', selectedTokens);
112
104
  return /*#__PURE__*/_react["default"].createElement("div", {
113
105
  className: classes.mainContainer
114
- }, model.teacherInstructions && (0, _renderUi.hasText)(model.teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
106
+ }, model.teacherInstructions && (0, _renderUi.hasText)(model.teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !model.animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
115
107
  labels: {
116
108
  hidden: 'Show Teacher Instructions',
117
109
  visible: 'Hide Teacher Instructions'
@@ -119,11 +111,13 @@ var Main = /*#__PURE__*/function (_React$Component) {
119
111
  className: classes.collapsible
120
112
  }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
121
113
  prompt: model.teacherInstructions
122
- })), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement("div", {
114
+ })) : /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
115
+ prompt: model.teacherInstructions
116
+ }), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement("div", {
123
117
  className: classes.prompt
124
118
  }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
125
119
  prompt: model.prompt
126
- })), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
120
+ })), !model.alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
127
121
  show: model.disabled && model.incorrect,
128
122
  toggled: showCorrectAnswer,
129
123
  onToggle: this.toggleShowCorrect
@@ -135,14 +129,17 @@ var Main = /*#__PURE__*/function (_React$Component) {
135
129
  selectedTokens: selectedTokens,
136
130
  onChange: onSelectionChange,
137
131
  highlightChoices: model.highlightChoices,
138
- maxNoOfSelections: model.maxSelections
139
- }), model.rationale && (0, _renderUi.hasText)(model.rationale) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
132
+ maxNoOfSelections: model.maxSelections,
133
+ animationsDisabled: model.animationsDisabled
134
+ }), model.rationale && (0, _renderUi.hasText)(model.rationale) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !model.animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, (0, _defineProperty2["default"])({
140
135
  labels: {
141
136
  hidden: 'Show Rationale',
142
137
  visible: 'Hide Rationale'
143
138
  },
144
139
  className: classes.collapsible
145
- }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
140
+ }, "className", classes.collapsible), /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
141
+ prompt: model.rationale
142
+ })) : /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
146
143
  prompt: model.rationale
147
144
  })), model.correctness && model.feedback && !showCorrectAnswer && /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
148
145
  correctness: model.correctness,
@@ -222,9 +219,9 @@ var Stateful = /*#__PURE__*/function (_React$Component2) {
222
219
  }, {
223
220
  key: "render",
224
221
  value: function render() {
225
- var _this$state = this.state,
226
- model = _this$state.model,
227
- session = _this$state.session;
222
+ var _this$state2 = this.state,
223
+ model = _this$state2.model,
224
+ session = _this$state2.session;
228
225
  return /*#__PURE__*/_react["default"].createElement(StyledMain, {
229
226
  model: model,
230
227
  session: session,
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["log","Types","model","PropTypes","object","session","onSelectionChange","func","isRequired","Main","props","setState","showCorrectAnswer","state","tokens","filter","t","correct","oldModel","newText","text","unpreparedText","classes","updateText","selectedTokens","correctAnswer","mainContainer","teacherInstructions","hidden","visible","collapsible","prompt","disabled","incorrect","toggleShowCorrect","textSelect","highlightChoices","maxSelections","rationale","correctness","feedback","React","Component","StyledMain","theme","paddingLeft","spacing","unit","paddingRight","paddingBottom","color","backgroundColor","background","marginBottom","marginTop","whiteSpace","verticalAlign","paddingTop","Stateful","nextProps","change"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TextSelect, prepareText } from '@pie-lib/text-select';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport {color, Feedback, Collapsible, hasText, PreviewPrompt} from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:select-text');\n\nconst Types = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSelectionChange: PropTypes.func.isRequired\n};\n\nexport class Main extends React.Component {\n static propTypes = { ...Types, classes: PropTypes.object.isRequired };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrectAnswer: false\n };\n }\n\n UNSAFE_componentWillReceiveProps() {\n this.setState({ showCorrectAnswer: false });\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n correctAnswer = () => {\n const { model } = this.props;\n\n return model.tokens.filter(t => t.correct);\n };\n\n updateText = () => {\n const { model } = this.props;\n\n const oldModel = {\n ...model\n };\n const newText = prepareText(oldModel.text);\n\n model.unpreparedText = oldModel.text;\n model.text = newText;\n };\n\n render() {\n const { model, session, onSelectionChange, classes } = this.props;\n const { showCorrectAnswer } = this.state;\n\n if(!model.unpreparedText) {\n this.updateText();\n }\n\n const selectedTokens = showCorrectAnswer\n ? this.correctAnswer()\n : session.selectedTokens;\n\n log('[render] selectedTokens:', selectedTokens);\n\n return (\n <div className={classes.mainContainer}>\n {\n model.teacherInstructions && hasText(model.teacherInstructions) && (\n <React.Fragment>\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </Collapsible>\n <br />\n </React.Fragment>\n )\n }\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt} />\n </div>\n <CorrectAnswerToggle\n show={model.disabled && model.incorrect}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n <TextSelect\n className={classes.textSelect}\n disabled={model.disabled}\n text={model.text}\n tokens={model.tokens}\n selectedTokens={selectedTokens}\n onChange={onSelectionChange}\n highlightChoices={model.highlightChoices}\n maxNoOfSelections={model.maxSelections}\n />\n {\n model.rationale && hasText(model.rationale) && (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n )\n }\n {model.correctness && model.feedback && !showCorrectAnswer && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n </div>\n );\n }\n}\n\nconst StyledMain = withStyles(theme => ({\n mainContainer: {\n paddingLeft: theme.spacing.unit,\n paddingRight: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background()\n },\n textSelect: {\n marginBottom: theme.spacing.unit,\n marginTop: theme.spacing.unit,\n whiteSpace: 'normal'\n },\n prompt: {\n verticalAlign: 'middle',\n marginBottom: theme.spacing.unit\n },\n collapsible: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 3\n }\n}))(Main);\n\nexport default class Stateful extends React.Component {\n static propTypes = Types;\n\n constructor(props) {\n super(props);\n this.state = {\n model: props.model,\n session: props.session\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ model: nextProps.model, session: nextProps.session });\n }\n\n change = selectedTokens => {\n const session = { ...this.state.session, selectedTokens };\n this.setState({ session }, () => {\n this.props.onSelectionChange(this.state.session.selectedTokens);\n });\n };\n\n render() {\n const { model, session } = this.state;\n return (\n <StyledMain\n model={model}\n session={session}\n onSelectionChange={this.change}\n />\n );\n }\n}\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["log","Types","model","PropTypes","object","session","onSelectionChange","func","isRequired","Main","props","setState","showCorrectAnswer","state","tokens","filter","t","correct","alwaysShowCorrect","nextProps","classes","selectedTokens","correctAnswer","mainContainer","teacherInstructions","animationsDisabled","hidden","visible","collapsible","prompt","disabled","incorrect","toggleShowCorrect","textSelect","text","highlightChoices","maxSelections","rationale","correctness","feedback","React","Component","StyledMain","theme","paddingLeft","spacing","unit","paddingRight","paddingBottom","color","backgroundColor","background","marginBottom","marginTop","whiteSpace","verticalAlign","paddingTop","Stateful","change"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TextSelect } from '@pie-lib/text-select';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { color, Feedback, Collapsible, hasText, PreviewPrompt } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport generateModel from './utils';\n\nimport debug from 'debug';\n\nconst log = debug('@pie-ui:select-text');\n\nconst Types = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSelectionChange: PropTypes.func.isRequired\n};\n\nexport class Main extends React.Component {\n static propTypes = { ...Types, classes: PropTypes.object.isRequired };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrectAnswer: this.props.model.alwaysShowCorrect || false,\n model: generateModel(props.model)\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({\n showCorrectAnswer: !!nextProps.model.alwaysShowCorrect,\n model: generateModel(nextProps.model)\n });\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n correctAnswer = () => {\n const { model } = this.props;\n\n return model.tokens.filter(t => t.correct);\n };\n\n render() {\n const { session, onSelectionChange, classes } = this.props;\n const { showCorrectAnswer, model } = this.state;\n\n // const model = generateTokens(this.props.model)\n\n const selectedTokens = showCorrectAnswer\n ? this.correctAnswer()\n : session.selectedTokens;\n\n log('[render] selectedTokens:', selectedTokens);\n\n return (\n <div className={classes.mainContainer}>\n {\n model.teacherInstructions && hasText(model.teacherInstructions) && (\n <React.Fragment>\n {!model.animationsDisabled ? <Collapsible\n labels={{hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions'}}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.teacherInstructions}/>\n\n </Collapsible>\n : <PreviewPrompt prompt={model.teacherInstructions}/>}\n\n <br />\n </React.Fragment>\n )\n }\n <div className={classes.prompt}>\n <PreviewPrompt prompt={model.prompt}/>\n </div>\n {!model.alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={model.disabled && model.incorrect}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n )}\n <TextSelect\n className={classes.textSelect}\n disabled={model.disabled}\n text={model.text}\n tokens={model.tokens}\n selectedTokens={selectedTokens}\n onChange={onSelectionChange}\n highlightChoices={model.highlightChoices}\n maxNoOfSelections={model.maxSelections}\n animationsDisabled={model.animationsDisabled}\n />\n {\n model.rationale && hasText(model.rationale) && (\n <React.Fragment>\n {!model.animationsDisabled ? <Collapsible\n labels={{hidden: 'Show Rationale', visible: 'Hide Rationale'}} className={classes.collapsible}\n className={classes.collapsible}\n >\n <PreviewPrompt prompt={model.rationale}/>\n </Collapsible>\n : <PreviewPrompt prompt={model.rationale}/>\n }\n </React.Fragment>)\n }\n {model.correctness && model.feedback && !showCorrectAnswer && (\n <Feedback correctness={model.correctness} feedback={model.feedback}/>\n )}\n </div>\n );\n }\n}\n\nconst StyledMain = withStyles(theme => ({\n mainContainer: {\n paddingLeft: theme.spacing.unit,\n paddingRight: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background()\n },\n textSelect: {\n marginBottom: theme.spacing.unit,\n marginTop: theme.spacing.unit,\n whiteSpace: 'normal'\n },\n prompt: {\n verticalAlign: 'middle',\n marginBottom: theme.spacing.unit\n },\n collapsible: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 3\n }\n}))(Main);\n\nexport default class Stateful extends React.Component {\n static propTypes = Types;\n\n constructor(props) {\n super(props);\n this.state = {\n model: props.model,\n session: props.session\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({ model: nextProps.model, session: nextProps.session });\n }\n\n change = selectedTokens => {\n const session = { ...this.state.session, selectedTokens };\n this.setState({ session }, () => {\n this.props.onSelectionChange(this.state.session.selectedTokens);\n });\n };\n\n render() {\n const { model, session } = this.state;\n return (\n <StyledMain\n model={model}\n session={session}\n onSelectionChange={this.change}\n />\n );\n }\n}\n"],"file":"main.js"}