@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.
- package/CHANGELOG.md +42 -0
- package/configure/CHANGELOG.md +41 -0
- package/configure/lib/defaultConfiguration.js +1 -12
- package/configure/lib/defaultConfiguration.js.map +1 -1
- package/configure/lib/design.js +68 -456
- package/configure/lib/design.js.map +1 -1
- package/configure/lib/index.js +1 -7
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/utils.js +2 -26
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +4 -2
- package/controller/CHANGELOG.md +40 -0
- package/controller/lib/index.js +2 -3
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +3 -2
- package/docs/demo/generate.js +44 -101
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/main.js +10 -44
- package/lib/main.js.map +1 -1
- package/lib/print.js +1 -1
- package/lib/print.js.map +1 -1
- package/module/configure.js +79560 -8795
- package/module/controller.js +112 -1056
- package/module/demo.js +44 -101
- package/module/element.js +6345 -7932
- package/module/manifest.json +0 -4
- package/module/print-demo.js +44 -101
- package/module/print.js +6345 -7932
- package/package.json +5 -2
- package/configure/lib/__tests__/design.test.js +0 -214
- package/controller/lib/__tests__/index.test.js +0 -833
- package/lib/__tests__/index.test.js +0 -91
- package/lib/__tests__/main.test.js +0 -83
package/configure/lib/design.js
CHANGED
|
@@ -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/
|
|
36
|
+
var _textSelect = require("@pie-lib/text-select");
|
|
37
37
|
|
|
38
|
-
var _configUi = require("@pie-lib/
|
|
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/
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
373
|
-
|
|
374
|
-
this.setState((_this$setState = {
|
|
159
|
+
this.setState({
|
|
375
160
|
text: model.text
|
|
376
|
-
}
|
|
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
|
-
|
|
518
|
-
|
|
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
|
|
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
|
|
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(
|
|
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
|
-
},
|
|
723
|
-
className: classes.
|
|
724
|
-
|
|
725
|
-
|
|
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
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
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
|
-
})
|
|
733
|
-
className: classes.
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
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
|
|
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);
|