@pie-element/select-text 6.5.3-next.137 → 6.5.3-next.1372
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 +323 -0
- package/configure/CHANGELOG.md +260 -0
- package/configure/lib/defaultConfiguration.js +20 -0
- package/configure/lib/defaultConfiguration.js.map +1 -1
- package/configure/lib/design.js +98 -12
- package/configure/lib/design.js.map +1 -1
- package/configure/lib/index.js +18 -8
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/utils.js +77 -27
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +6 -6
- package/controller/CHANGELOG.md +156 -0
- package/controller/lib/index.js +39 -14
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -1
- package/docs/config-schema.json +110 -0
- package/docs/config-schema.json.md +85 -1
- package/docs/demo/generate.js +99 -5
- package/docs/demo/session.js +18 -5
- package/docs/pie-schema.json +33 -0
- package/docs/pie-schema.json.md +24 -0
- package/lib/index.js +51 -3
- package/lib/index.js.map +1 -1
- package/lib/main.js +50 -30
- package/lib/main.js.map +1 -1
- package/lib/print.js +124 -0
- package/lib/print.js.map +1 -0
- package/lib/utils.js +106 -0
- package/lib/utils.js.map +1 -0
- package/package.json +11 -7
- package/controller/lib/utils.js +0 -68
- package/controller/lib/utils.js.map +0 -1
package/docs/demo/generate.js
CHANGED
|
@@ -58,7 +58,7 @@ const base = extras =>
|
|
|
58
58
|
Object.assign(
|
|
59
59
|
{},
|
|
60
60
|
{
|
|
61
|
-
highlightChoices: true,
|
|
61
|
+
// highlightChoices: true,
|
|
62
62
|
feedback: {
|
|
63
63
|
correct: {
|
|
64
64
|
type: 'default',
|
|
@@ -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,101 @@ 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
|
+
// "id": "8a808081701d693801703174fb900421",
|
|
253
|
+
'teacherInstructions': '',
|
|
254
|
+
'partialScoring': true,
|
|
255
|
+
'prompt': '<p>Select the sentence from "The Gymnast" that <span class="relative-emphasis">best</span> represents the theme.</p>',
|
|
256
|
+
'rationale': '<p>The final sentence of the passage best exemplifies the theme of the short story because Natasha's practice and determination finally pays off.</p>',
|
|
257
|
+
'tokens': [
|
|
258
|
+
{
|
|
259
|
+
'text': 'She thought about what she had to do, struggling to rein in her wild, fearful thoughts.',
|
|
260
|
+
'end': 90,
|
|
261
|
+
'start': 3,
|
|
262
|
+
'correct': false
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
'start': 449,
|
|
266
|
+
'end': 585,
|
|
267
|
+
'text': 'Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.',
|
|
268
|
+
'correct': false
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
'end': 627,
|
|
272
|
+
'correct': false,
|
|
273
|
+
'text': 'At last Natasha\'s moment arrived.',
|
|
274
|
+
'start': 594
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
'end': 743,
|
|
278
|
+
'text': 'The faces of past giants of gymnastics swam before her mind\'s eye, now razor–sharp with fierce determination.',
|
|
279
|
+
'correct': false,
|
|
280
|
+
'start': 628
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
'text': 'Suddenly, the din of the gymnasium was silent to her.',
|
|
284
|
+
'end': 997,
|
|
285
|
+
'correct': false,
|
|
286
|
+
'start': 944
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
'end': 1087,
|
|
290
|
+
'start': 998,
|
|
291
|
+
'correct': false,
|
|
292
|
+
'text': 'Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her.'
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
'correct': true,
|
|
296
|
+
'start': 1088,
|
|
297
|
+
'end': 1225,
|
|
298
|
+
'text': 'Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.'
|
|
299
|
+
}
|
|
300
|
+
],
|
|
301
|
+
// "element": "select-text",
|
|
302
|
+
'text': '<p>She thought about what she had to do, struggling to rein in her wild, fearful thoughts. Coach Cummings always said that an undisciplined mind never scored a perfect 10. Natasha wanted to please her Coach, yet sometimes his approval wasn\'t as exciting as his anger. The gymnasts were unanimous about one thing: Coach Cummings\'s fits of disapproving rage were much more humorous to witness than his infrequent, backslapping moments of high praise. Just for a hair of a moment, Natasha wondered if she really wanted a perfect 10, so weary was she of trying for but never achieving one.</p>\n\n<p>At last Natasha\'s moment arrived. The faces of past giants of gymnastics swam before her mind\'s eye, now razor–sharp with fierce determination. "I am talented. I am not afraid. I will make a perfect 10," she spoke aloud to herself, as she approached the mat, dusted her hands with chalk to prevent slippage, and returned to her starting point. Suddenly, the din of the gymnasium was silent to her. Forcing all sound out of her mind, she focused on the gleaming balance beam ahead of her. Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.</p>\n',
|
|
303
|
+
'rubricEnabled': false
|
|
304
|
+
} ));
|
|
305
|
+
};
|
package/docs/demo/session.js
CHANGED
|
@@ -2,10 +2,23 @@ module.exports = [
|
|
|
2
2
|
{
|
|
3
3
|
id: '1',
|
|
4
4
|
element: 'select-text',
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
selectedTokens: [
|
|
6
|
+
// { start: 0, end: 36 },
|
|
7
|
+
// { start: 37, end: 74 },
|
|
8
|
+
// { start: 117, end: 177 }
|
|
9
|
+
// {
|
|
10
|
+
// // "correct": true,
|
|
11
|
+
// "start": 1088,
|
|
12
|
+
// "end": 1225,
|
|
13
|
+
// "text": "Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10."
|
|
14
|
+
// },
|
|
15
|
+
// {
|
|
16
|
+
// "start": 1082,
|
|
17
|
+
// "end": 1219,
|
|
18
|
+
// "text": "Taking a deep breath, Natasha made her graceful, yet powerful approach, mounted the beam flawlessly, and...executed her first perfect 10.",
|
|
19
|
+
// "oldStart": 1088,
|
|
20
|
+
// "oldEnd": 1225
|
|
21
|
+
// }
|
|
22
|
+
]
|
|
10
23
|
}
|
|
11
24
|
];
|
package/docs/pie-schema.json
CHANGED
|
@@ -289,6 +289,11 @@
|
|
|
289
289
|
"type": "boolean",
|
|
290
290
|
"title": "teacherInstructionsEnabled"
|
|
291
291
|
},
|
|
292
|
+
"spellCheckEnabled": {
|
|
293
|
+
"description": "Indicates if spellcheck is enabled",
|
|
294
|
+
"type": "boolean",
|
|
295
|
+
"title": "spellCheckEnabled"
|
|
296
|
+
},
|
|
292
297
|
"toolbarEditorPosition": {
|
|
293
298
|
"description": "Indicates the editor's toolbar position which can be 'bottom' or 'top'",
|
|
294
299
|
"default": ": 'bottom'",
|
|
@@ -299,6 +304,11 @@
|
|
|
299
304
|
"type": "string",
|
|
300
305
|
"title": "toolbarEditorPosition"
|
|
301
306
|
},
|
|
307
|
+
"rubricEnabled": {
|
|
308
|
+
"description": "Indicates if Rubric is enabled",
|
|
309
|
+
"type": "boolean",
|
|
310
|
+
"title": "rubricEnabled"
|
|
311
|
+
},
|
|
302
312
|
"id": {
|
|
303
313
|
"description": "Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.",
|
|
304
314
|
"type": "string",
|
|
@@ -316,6 +326,8 @@
|
|
|
316
326
|
"id",
|
|
317
327
|
"prompt",
|
|
318
328
|
"rationaleEnabled",
|
|
329
|
+
"rubricEnabled",
|
|
330
|
+
"spellCheckEnabled",
|
|
319
331
|
"studentInstructionsEnabled",
|
|
320
332
|
"teacherInstructionsEnabled",
|
|
321
333
|
"text",
|
|
@@ -338,6 +350,27 @@
|
|
|
338
350
|
}
|
|
339
351
|
}
|
|
340
352
|
},
|
|
353
|
+
"ConfigureMaxImageDimensionsProp": {
|
|
354
|
+
"title": "ConfigureMaxImageDimensionsProp",
|
|
355
|
+
"type": "object",
|
|
356
|
+
"properties": {
|
|
357
|
+
"teacherInstructions": {
|
|
358
|
+
"description": "Indicates the max dimension for images in teacher instructions",
|
|
359
|
+
"type": "number",
|
|
360
|
+
"title": "teacherInstructions"
|
|
361
|
+
},
|
|
362
|
+
"prompt": {
|
|
363
|
+
"description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
|
|
364
|
+
"type": "number",
|
|
365
|
+
"title": "prompt"
|
|
366
|
+
},
|
|
367
|
+
"rationale": {
|
|
368
|
+
"description": "Indicates the max dimension for images in rationale",
|
|
369
|
+
"type": "number",
|
|
370
|
+
"title": "rationale"
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
},
|
|
341
374
|
"ComplexFeedbackType": {
|
|
342
375
|
"title": "ComplexFeedbackType",
|
|
343
376
|
"type": "object",
|
package/docs/pie-schema.json.md
CHANGED
|
@@ -117,6 +117,10 @@ Indicates if Student Instructions are enabled
|
|
|
117
117
|
|
|
118
118
|
Indicates if Teacher Instructions are enabled
|
|
119
119
|
|
|
120
|
+
# `spellCheckEnabled` (boolean, required)
|
|
121
|
+
|
|
122
|
+
Indicates if spellcheck is enabled
|
|
123
|
+
|
|
120
124
|
# `toolbarEditorPosition` (string, enum)
|
|
121
125
|
|
|
122
126
|
Indicates the editor's toolbar position which can be 'bottom' or 'top'
|
|
@@ -128,6 +132,10 @@ This element must be one of the following enum values:
|
|
|
128
132
|
|
|
129
133
|
Default: `": 'bottom'"`
|
|
130
134
|
|
|
135
|
+
# `rubricEnabled` (boolean, required)
|
|
136
|
+
|
|
137
|
+
Indicates if Rubric is enabled
|
|
138
|
+
|
|
131
139
|
# `id` (string, required)
|
|
132
140
|
|
|
133
141
|
Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.
|
|
@@ -154,6 +162,22 @@ Indicates if the item has to be displayed in the Settings Panel
|
|
|
154
162
|
|
|
155
163
|
Indicates the label for the item that has to be displayed in the Settings Panel
|
|
156
164
|
|
|
165
|
+
## `ConfigureMaxImageDimensionsProp` (object)
|
|
166
|
+
|
|
167
|
+
Properties of the `ConfigureMaxImageDimensionsProp` object:
|
|
168
|
+
|
|
169
|
+
### `teacherInstructions` (number)
|
|
170
|
+
|
|
171
|
+
Indicates the max dimension for images in teacher instructions
|
|
172
|
+
|
|
173
|
+
### `prompt` (number)
|
|
174
|
+
|
|
175
|
+
Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
|
|
176
|
+
|
|
177
|
+
### `rationale` (number)
|
|
178
|
+
|
|
179
|
+
Indicates the max dimension for images in rationale
|
|
180
|
+
|
|
157
181
|
## `ComplexFeedbackType` (object)
|
|
158
182
|
|
|
159
183
|
Properties of the `ComplexFeedbackType` object:
|
package/lib/index.js
CHANGED
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
10
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
13
|
|
|
12
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -29,9 +31,15 @@ var _main = _interopRequireDefault(require("./main"));
|
|
|
29
31
|
|
|
30
32
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
31
33
|
|
|
34
|
+
var _utils = _interopRequireDefault(require("./utils"));
|
|
35
|
+
|
|
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
|
+
|
|
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
|
+
|
|
32
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); }; }
|
|
33
41
|
|
|
34
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
42
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
35
43
|
|
|
36
44
|
var SelectText = /*#__PURE__*/function (_HTMLElement) {
|
|
37
45
|
(0, _inherits2["default"])(SelectText, _HTMLElement);
|
|
@@ -52,9 +60,49 @@ var SelectText = /*#__PURE__*/function (_HTMLElement) {
|
|
|
52
60
|
}
|
|
53
61
|
}, {
|
|
54
62
|
key: "session",
|
|
63
|
+
get: function get() {
|
|
64
|
+
return this._session;
|
|
65
|
+
},
|
|
55
66
|
set: function set(s) {
|
|
56
67
|
this._session = s;
|
|
57
68
|
|
|
69
|
+
if (this._model) {
|
|
70
|
+
var generatedModel = (0, _utils["default"])(this._model) || {};
|
|
71
|
+
var tokens = generatedModel.tokens;
|
|
72
|
+
|
|
73
|
+
var _ref = s || {},
|
|
74
|
+
selectedTokens = _ref.selectedTokens;
|
|
75
|
+
|
|
76
|
+
selectedTokens = selectedTokens || []; // This case was introduced mostly for createCorrectSession:
|
|
77
|
+
// make sure initial session tokens are parsed and have correct start and end (according to the regenerated model)
|
|
78
|
+
|
|
79
|
+
var selectedTokenExistsInGeneratedTokens = function selectedTokenExistsInGeneratedTokens(s) {
|
|
80
|
+
return tokens.find(function (_ref2) {
|
|
81
|
+
var tStart = _ref2.start,
|
|
82
|
+
tEnd = _ref2.end;
|
|
83
|
+
return s.start === tStart && s.end === tEnd;
|
|
84
|
+
});
|
|
85
|
+
}; // check if ALL the selectedTokens have the correct start and end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
var allAreCorrect = selectedTokens.reduce(function (acc, selectedToken) {
|
|
89
|
+
return acc && selectedTokenExistsInGeneratedTokens(selectedToken);
|
|
90
|
+
}, true);
|
|
91
|
+
|
|
92
|
+
if (!allAreCorrect) {
|
|
93
|
+
// otherwise, make sure to parse selectedTokens as well
|
|
94
|
+
var _generatedModel = (0, _utils["default"])(_objectSpread(_objectSpread({}, this._model), {}, {
|
|
95
|
+
tokens: selectedTokens
|
|
96
|
+
})) || {};
|
|
97
|
+
|
|
98
|
+
var _tokens = _generatedModel.tokens;
|
|
99
|
+
|
|
100
|
+
if (_tokens) {
|
|
101
|
+
this._session.selectedTokens = _tokens;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
58
106
|
if (!Array.isArray(this._session.selectedTokens)) {
|
|
59
107
|
this._session.selectedTokens = [];
|
|
60
108
|
}
|
|
@@ -64,8 +112,8 @@ var SelectText = /*#__PURE__*/function (_HTMLElement) {
|
|
|
64
112
|
}, {
|
|
65
113
|
key: "isSessionComplete",
|
|
66
114
|
value: function isSessionComplete() {
|
|
67
|
-
var
|
|
68
|
-
selectedTokens =
|
|
115
|
+
var _ref3 = this._session || {},
|
|
116
|
+
selectedTokens = _ref3.selectedTokens;
|
|
69
117
|
|
|
70
118
|
return Array.isArray(selectedTokens) && selectedTokens.length > 0;
|
|
71
119
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["SelectText","m","_model","render","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isSessionComplete","undefined","
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["SelectText","m","_model","render","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isSessionComplete","undefined","_session","s","generatedModel","tokens","selectedTokens","selectedTokenExistsInGeneratedTokens","find","tStart","start","tEnd","end","allAreCorrect","reduce","acc","selectedToken","Array","isArray","length","selection","SessionChangedEvent","el","React","createElement","Main","model","session","onSelectionChange","selectionChanged","bind","ReactDOM","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n SessionChangedEvent,\n ModelSetEvent\n} from '@pie-framework/pie-player-events';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport generateModel from './utils';\n\nexport default class SelectText extends HTMLElement {\n constructor() {\n super();\n }\n\n set model(m) {\n this._model = m;\n\n this.render();\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n this.isSessionComplete(),\n this._model !== undefined\n )\n );\n }\n\n set session(s) {\n this._session = s;\n\n if (this._model) {\n const generatedModel = generateModel(this._model) || {};\n const { tokens } = generatedModel;\n let { selectedTokens } = s || {};\n\n selectedTokens = selectedTokens || [];\n\n // This case was introduced mostly for createCorrectSession:\n // make sure initial session tokens are parsed and have correct start and end (according to the regenerated model)\n const selectedTokenExistsInGeneratedTokens = s => tokens.find(({ start: tStart, end: tEnd }) => s.start === tStart && s.end === tEnd);\n\n // check if ALL the selectedTokens have the correct start and end\n const allAreCorrect = selectedTokens.reduce((acc, selectedToken) => acc && selectedTokenExistsInGeneratedTokens(selectedToken), true);\n\n if (!allAreCorrect) {\n // otherwise, make sure to parse selectedTokens as well\n const generatedModel = generateModel({ ...this._model, tokens: selectedTokens }) || {};\n const { tokens } = generatedModel;\n\n if (tokens) {\n this._session.selectedTokens = tokens;\n }\n }\n }\n\n\n if (!Array.isArray(this._session.selectedTokens)) {\n this._session.selectedTokens = [];\n }\n this.render();\n }\n\n get session() {\n return this._session;\n }\n\n isSessionComplete() {\n const { selectedTokens } = this._session || {};\n return Array.isArray(selectedTokens) && selectedTokens.length > 0;\n }\n\n selectionChanged(selection) {\n this._session.selectedTokens = selection;\n\n this.dispatchEvent(\n new SessionChangedEvent(\n this.tagName.toLowerCase(),\n this.isSessionComplete()\n )\n );\n }\n\n connectedCallback() {\n this.render();\n }\n\n render() {\n if (this._model && this._session) {\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSelectionChange: this.selectionChanged.bind(this)\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n }\n}\n"],"file":"index.js"}
|
package/lib/main.js
CHANGED
|
@@ -33,15 +33,17 @@ 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
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
40
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
39
41
|
|
|
40
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
42
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
41
43
|
|
|
42
44
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
43
45
|
|
|
44
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
46
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
45
47
|
|
|
46
48
|
var log = (0, _debug["default"])('@pie-ui:select-text');
|
|
47
49
|
var Types = {
|
|
@@ -66,53 +68,55 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
66
68
|
});
|
|
67
69
|
});
|
|
68
70
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "correctAnswer", function () {
|
|
69
|
-
var model = _this.
|
|
71
|
+
var model = _this.state.model;
|
|
70
72
|
return model.tokens.filter(function (t) {
|
|
71
73
|
return t.correct;
|
|
72
74
|
});
|
|
73
75
|
});
|
|
74
76
|
_this.state = {
|
|
75
|
-
showCorrectAnswer: false
|
|
77
|
+
showCorrectAnswer: _this.props.model.alwaysShowCorrect || false,
|
|
78
|
+
model: (0, _utils["default"])(props.model)
|
|
76
79
|
};
|
|
77
80
|
return _this;
|
|
78
81
|
}
|
|
79
82
|
|
|
80
83
|
(0, _createClass2["default"])(Main, [{
|
|
81
84
|
key: "UNSAFE_componentWillReceiveProps",
|
|
82
|
-
value: function UNSAFE_componentWillReceiveProps() {
|
|
85
|
+
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
83
86
|
this.setState({
|
|
84
|
-
showCorrectAnswer:
|
|
87
|
+
showCorrectAnswer: !!nextProps.model.alwaysShowCorrect,
|
|
88
|
+
model: (0, _utils["default"])(nextProps.model)
|
|
85
89
|
});
|
|
86
90
|
}
|
|
87
91
|
}, {
|
|
88
92
|
key: "render",
|
|
89
93
|
value: function render() {
|
|
90
94
|
var _this$props = this.props,
|
|
91
|
-
model = _this$props.model,
|
|
92
95
|
session = _this$props.session,
|
|
93
96
|
onSelectionChange = _this$props.onSelectionChange,
|
|
94
97
|
classes = _this$props.classes;
|
|
95
|
-
var
|
|
98
|
+
var _this$state = this.state,
|
|
99
|
+
showCorrectAnswer = _this$state.showCorrectAnswer,
|
|
100
|
+
model = _this$state.model;
|
|
96
101
|
var selectedTokens = showCorrectAnswer ? this.correctAnswer() : session.selectedTokens;
|
|
97
102
|
log('[render] selectedTokens:', selectedTokens);
|
|
98
103
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
99
104
|
className: classes.mainContainer
|
|
100
|
-
}, model.teacherInstructions && (0, _renderUi.hasText)(model.teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
105
|
+
}, model.teacherInstructions && (0, _renderUi.hasText)(model.teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !model.animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
|
|
101
106
|
labels: {
|
|
102
107
|
hidden: 'Show Teacher Instructions',
|
|
103
108
|
visible: 'Hide Teacher Instructions'
|
|
104
109
|
},
|
|
105
110
|
className: classes.collapsible
|
|
106
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
})
|
|
111
|
-
className: classes.prompt
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
111
|
+
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
112
|
+
prompt: model.teacherInstructions
|
|
113
|
+
})) : /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
114
|
+
prompt: model.teacherInstructions
|
|
115
|
+
}), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement("div", {
|
|
116
|
+
className: classes.prompt
|
|
117
|
+
}, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
118
|
+
prompt: model.prompt
|
|
119
|
+
})), !model.alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
|
|
116
120
|
show: model.disabled && model.incorrect,
|
|
117
121
|
toggled: showCorrectAnswer,
|
|
118
122
|
onToggle: this.toggleShowCorrect
|
|
@@ -122,19 +126,35 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
122
126
|
text: model.text,
|
|
123
127
|
tokens: model.tokens,
|
|
124
128
|
selectedTokens: selectedTokens,
|
|
125
|
-
onChange:
|
|
129
|
+
onChange: function onChange(selection) {
|
|
130
|
+
var newSelections = selection.map(function (select) {
|
|
131
|
+
var token = model.tokens.find(function (_ref) {
|
|
132
|
+
var start = _ref.start,
|
|
133
|
+
end = _ref.end;
|
|
134
|
+
return select.start === start && select.end === end;
|
|
135
|
+
}); // needed for getScore when tokens position is recalculated, to keep oldStart and oldEnd
|
|
136
|
+
|
|
137
|
+
if (token) {
|
|
138
|
+
return token;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return select;
|
|
142
|
+
});
|
|
143
|
+
onSelectionChange(newSelections);
|
|
144
|
+
},
|
|
126
145
|
highlightChoices: model.highlightChoices,
|
|
127
|
-
maxNoOfSelections: model.maxSelections
|
|
128
|
-
|
|
146
|
+
maxNoOfSelections: model.maxSelections,
|
|
147
|
+
animationsDisabled: model.animationsDisabled
|
|
148
|
+
}), 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"])({
|
|
129
149
|
labels: {
|
|
130
150
|
hidden: 'Show Rationale',
|
|
131
151
|
visible: 'Hide Rationale'
|
|
132
152
|
},
|
|
133
153
|
className: classes.collapsible
|
|
134
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
154
|
+
}, "className", classes.collapsible), /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
155
|
+
prompt: model.rationale
|
|
156
|
+
})) : /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
|
|
157
|
+
prompt: model.rationale
|
|
138
158
|
})), model.correctness && model.feedback && !showCorrectAnswer && /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
|
|
139
159
|
correctness: model.correctness,
|
|
140
160
|
feedback: model.feedback
|
|
@@ -213,9 +233,9 @@ var Stateful = /*#__PURE__*/function (_React$Component2) {
|
|
|
213
233
|
}, {
|
|
214
234
|
key: "render",
|
|
215
235
|
value: function render() {
|
|
216
|
-
var _this$
|
|
217
|
-
model = _this$
|
|
218
|
-
session = _this$
|
|
236
|
+
var _this$state2 = this.state,
|
|
237
|
+
model = _this$state2.model,
|
|
238
|
+
session = _this$state2.session;
|
|
219
239
|
return /*#__PURE__*/_react["default"].createElement(StyledMain, {
|
|
220
240
|
model: model,
|
|
221
241
|
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","classes","selectedTokens","correctAnswer","mainContainer","teacherInstructions","hidden","visible","collapsible","__html","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","nextProps","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 } 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 return model.tokens.filter(t => t.correct);\n };\n\n render() {\n const { model, session, onSelectionChange, classes } = this.props;\n const { showCorrectAnswer } = this.state;\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 <div dangerouslySetInnerHTML={{ __html: model.teacherInstructions }}/>\n </Collapsible>\n <br />\n </React.Fragment>\n )\n }\n <div\n className={classes.prompt}\n dangerouslySetInnerHTML={{ __html: model.prompt }}\n />\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 <div dangerouslySetInnerHTML={{ __html: 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","selection","newSelections","map","select","token","find","start","end","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.state;\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 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={selection => {\n const newSelections = selection.map(select => {\n const token = model.tokens.find(({ start, end }) => select.start === start && select.end === end);\n\n // needed for getScore when tokens position is recalculated, to keep oldStart and oldEnd\n if (token) {\n return token;\n }\n\n return select;\n })\n\n onSelectionChange(newSelections);\n }}\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"}
|