@pie-element/select-text 6.5.3-next.542 → 6.5.3-next.550
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/configure/lib/index.js +2 -6
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/utils.js +116 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +3 -3
- package/docs/demo/generate.js +415 -4
- package/lib/main.js +13 -21
- package/lib/main.js.map +1 -1
- package/lib/utils.js +116 -0
- package/lib/utils.js.map +1 -0
- package/package.json +2 -2
package/configure/lib/index.js
CHANGED
|
@@ -31,7 +31,7 @@ var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
|
|
|
31
31
|
|
|
32
32
|
var _defaultConfiguration = _interopRequireDefault(require("./defaultConfiguration"));
|
|
33
33
|
|
|
34
|
-
var
|
|
34
|
+
var _utils = _interopRequireDefault(require("./utils"));
|
|
35
35
|
|
|
36
36
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
37
37
|
|
|
@@ -134,10 +134,6 @@ exports["default"] = SelectTextConfigure;
|
|
|
134
134
|
|
|
135
135
|
var newModel = _objectSpread(_objectSpread({}, _defaultConfiguration["default"].model), model);
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
return _objectSpread(_objectSpread({}, newModel), {}, {
|
|
139
|
-
unpreparedText: newModel.text,
|
|
140
|
-
text: newText
|
|
141
|
-
});
|
|
137
|
+
return (0, _utils["default"])(newModel);
|
|
142
138
|
});
|
|
143
139
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["SelectTextConfigure","_model","createDefaultModel","_configuration","defaultValues","configuration","m","render","c","dispatchEvent","ModelUpdatedEvent","handler","InsertImageEvent","src","done","DeleteImageEvent","el","React","createElement","Main","model","onModelChanged","modelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","ReactDOM","HTMLElement","newModel"
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["SelectTextConfigure","_model","createDefaultModel","_configuration","defaultValues","configuration","m","render","c","dispatchEvent","ModelUpdatedEvent","handler","InsertImageEvent","src","done","DeleteImageEvent","el","React","createElement","Main","model","onModelChanged","modelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","ReactDOM","HTMLElement","newModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAKA;;AACA;;;;;;;;;;IAEqBA,mB;;;;;AAUnB,iCAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,MAAL,GAAcD,mBAAmB,CAACE,kBAApB,EAAd;AACA,UAAKC,cAAL,GAAsBC,iCAAcC,aAApC;AAHY;AAIb;;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKL,MAAL,GAAcD,mBAAmB,CAACE,kBAApB,CAAuCI,CAAvC,CAAd;AACA,WAAKC,MAAL;AACD;;;SAED,aAAkBC,CAAlB,EAAqB;AACnB,WAAKL,cAAL,GAAsBK,CAAtB;AACA,WAAKD,MAAL;AACD;;;WAED,6BAAoB;AAClB,WAAKA,MAAL;AACD;;;WAED,sBAAaD,CAAb,EAAgB;AACd,WAAKL,MAAL,GAAcK,CAAd;AACA,WAAKG,aAAL,CAAmB,IAAIC,qCAAJ,CAAsB,KAAKT,MAA3B,CAAnB,EAAuD,IAAvD;AACA,WAAKM,MAAL;AACD;;;WAED,gCAAuBC,CAAvB,EAA0B;AACxB,WAAKL,cAAL,GAAsBK,CAAtB;;AAEA,UAAI,KAAKP,MAAT,EAAiB;AACf,aAAKQ,aAAL,CAAmB,IAAIC,qCAAJ,CAAsB,KAAKT,MAA3B,CAAnB,EAAuD,KAAvD;AACD;;AAED,WAAKM,MAAL;AACD;AAED;AACF;AACA;AACA;;;;WACE,qBAAYI,OAAZ,EAAqB;AACnB,WAAKF,aAAL,CAAmB,IAAIG,oCAAJ,CAAqBD,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKL,aAAL,CAAmB,IAAIM,oCAAJ,CAAqBF,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,kBAAS;AACP,UAAI,KAAKb,MAAT,EAAiB;AACf,YAAMe,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,kBAApB,EAA0B;AACnCC,UAAAA,KAAK,EAAE,KAAKnB,MADuB;AAEnCI,UAAAA,aAAa,EAAE,KAAKF,cAFe;AAGnCkB,UAAAA,cAAc,EAAE,KAAKC,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAHmB;AAInCC,UAAAA,sBAAsB,EAAE,KAAKA,sBAAL,CAA4BD,IAA5B,CAAiC,IAAjC,CAJW;AAKnCE,UAAAA,YAAY,EAAE;AACZC,YAAAA,GAAG,EAAE,KAAKC,WAAL,CAAiBJ,IAAjB,CAAsB,IAAtB,CADO;AAEZ,sBAAQ,KAAKK,aAAL,CAAmBL,IAAnB,CAAwB,IAAxB;AAFI;AALqB,SAA1B,CAAX;;AAWAM,6BAAStB,MAAT,CAAgBS,EAAhB,EAAoB,IAApB;AACD;AACF;;;kDAzE8Cc,W;;;iCAA5B9B,mB,wBACS,YAAgB;AAAA,MAAfoB,KAAe,uEAAP,EAAO;;AAC1C,MAAMW,QAAQ,mCACT3B,iCAAcgB,KADL,GAETA,KAFS,CAAd;;AAKA,SAAO,uBAAcW,QAAd,CAAP;AACD,C","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Main from './design';\nimport {\n DeleteImageEvent,\n InsertImageEvent,\n ModelUpdatedEvent\n} from '@pie-framework/pie-configure-events';\nimport defaultValues from './defaultConfiguration';\nimport generateModel from './utils';\n\nexport default class SelectTextConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const newModel = {\n ...defaultValues.model,\n ...model\n };\n\n return generateModel(newModel);\n };\n\n constructor() {\n super();\n this._model = SelectTextConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n set model(m) {\n this._model = SelectTextConfigure.createDefaultModel(m);\n this.render();\n }\n\n set configuration(c) {\n this._configuration = c;\n this.render();\n }\n\n connectedCallback() {\n this.render();\n }\n\n modelChanged(m) {\n this._model = m;\n this.dispatchEvent(new ModelUpdatedEvent(this._model), true);\n this.render();\n }\n\n onConfigurationChanged(c) {\n this._configuration = c;\n\n if (this._model) {\n this.dispatchEvent(new ModelUpdatedEvent(this._model), false);\n }\n\n this.render();\n }\n\n /**\n *\n * @param {done, progress, file} handler\n */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n render() {\n if (this._model) {\n const el = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.modelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this)\n }\n });\n\n ReactDOM.render(el, this);\n }\n }\n}\n"],"file":"index.js"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
|
+
|
|
16
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
+
|
|
18
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
19
|
+
|
|
20
|
+
var createElementFromHTML = function createElementFromHTML() {
|
|
21
|
+
var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
22
|
+
var div = document.createElement('div');
|
|
23
|
+
div.innerHTML = htmlString.trim();
|
|
24
|
+
return div;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
var parseBrs = function parseBrs(dom) {
|
|
28
|
+
var brs = dom.querySelectorAll('br');
|
|
29
|
+
brs.forEach(function (br) {
|
|
30
|
+
return br.replaceWith('\n');
|
|
31
|
+
});
|
|
32
|
+
dom.innerHTML = dom.innerHTML.replace(/\n\n/g, '\n');
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var parseParagraph = function parseParagraph(paragraph, end) {
|
|
36
|
+
if (end) {
|
|
37
|
+
return paragraph.innerHTML;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return ''.concat(paragraph.innerHTML, '\n\n');
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
var parseParagraphs = function parseParagraphs(dom) {
|
|
44
|
+
var paragraphs = dom.querySelectorAll('div[separator=true]'); // separate variable for easily debugging, if needed
|
|
45
|
+
|
|
46
|
+
var str = '';
|
|
47
|
+
paragraphs.forEach(function (par, index) {
|
|
48
|
+
str += parseParagraph(par, index === paragraphs.length - 1);
|
|
49
|
+
});
|
|
50
|
+
return str || null;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
var prepareText = function prepareText(text) {
|
|
54
|
+
var txtDom = createElementFromHTML(text);
|
|
55
|
+
|
|
56
|
+
if (txtDom.querySelectorAll('div').length === 0) {
|
|
57
|
+
var div = document.createElement('div');
|
|
58
|
+
div.innerHTML = '<div separator=\'true\'>'.concat(txtDom.innerHTML, '</div>');
|
|
59
|
+
txtDom = div;
|
|
60
|
+
} // if no dom elements, we just return the text
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
var allDomElements = Array.from(txtDom.querySelectorAll('*'));
|
|
64
|
+
|
|
65
|
+
if (allDomElements.length === 0) {
|
|
66
|
+
return text;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
parseBrs(txtDom);
|
|
70
|
+
return parseParagraphs(txtDom);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
var _default = function _default(model) {
|
|
74
|
+
// parsing
|
|
75
|
+
var modelText = prepareText(model.text);
|
|
76
|
+
var newTokens = (model.tokens || []).reduce(function (acc, token) {
|
|
77
|
+
var tokenText = prepareText(model.text.slice(token.start, token.end));
|
|
78
|
+
|
|
79
|
+
if (!tokenText) {
|
|
80
|
+
return token;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function getAllIndexes(arr, val) {
|
|
84
|
+
var indexes = [],
|
|
85
|
+
i = -1;
|
|
86
|
+
|
|
87
|
+
while ((i = (arr || '').indexOf(val, i + 1)) != -1) {
|
|
88
|
+
if (!(acc.filter(function (_ref) {
|
|
89
|
+
var start = _ref.start,
|
|
90
|
+
text = _ref.text;
|
|
91
|
+
return text === val && start === i;
|
|
92
|
+
}) || []).length) {
|
|
93
|
+
indexes.push(i);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return indexes;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
var indexes = getAllIndexes(modelText, tokenText);
|
|
101
|
+
var newStart = indexes[0];
|
|
102
|
+
var newEnd = newStart + tokenText.length;
|
|
103
|
+
return [].concat((0, _toConsumableArray2["default"])(acc), [_objectSpread(_objectSpread({}, token), {}, {
|
|
104
|
+
text: tokenText,
|
|
105
|
+
start: newStart,
|
|
106
|
+
end: newEnd
|
|
107
|
+
})]);
|
|
108
|
+
}, []);
|
|
109
|
+
return _objectSpread(_objectSpread({}, model), {}, {
|
|
110
|
+
tokens: newTokens,
|
|
111
|
+
text: modelText
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
exports["default"] = _default;
|
|
116
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.js"],"names":["createElementFromHTML","htmlString","arguments","length","undefined","div","document","createElement","innerHTML","trim","parseBrs","dom","brs","querySelectorAll","forEach","br","replaceWith","replace","parseParagraph","paragraph","end","concat","parseParagraphs","paragraphs","str","par","index","prepareText","text","txtDom","allDomElements","Array","from","model","modelText","newTokens","tokens","reduce","acc","token","tokenText","slice","start","getAllIndexes","arr","val","indexes","i","indexOf","filter","push","newStart","newEnd"],"mappings":"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","sourcesContent":["import React from 'react';\n\nvar createElementFromHTML = function createElementFromHTML() {\n var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n return div;\n};\n\nvar parseBrs = function parseBrs(dom) {\n var brs = dom.querySelectorAll('br');\n brs.forEach(function (br) {\n return br.replaceWith('\\n');\n });\n dom.innerHTML = dom.innerHTML.replace(/\\n\\n/g, '\\n');\n};\n\nvar parseParagraph = function parseParagraph(paragraph, end) {\n if (end) {\n return paragraph.innerHTML;\n }\n\n return ''.concat(paragraph.innerHTML, '\\n\\n');\n};\n\nvar parseParagraphs = function parseParagraphs(dom) {\n var paragraphs = dom.querySelectorAll('div[separator=true]'); // separate variable for easily debugging, if needed\n\n var str = '';\n paragraphs.forEach(function (par, index) {\n str += parseParagraph(par, index === paragraphs.length - 1);\n });\n return str || null;\n};\n\nvar prepareText = function prepareText(text) {\n var txtDom = createElementFromHTML(text);\n\n if (txtDom.querySelectorAll('div').length === 0) {\n var div = document.createElement('div');\n div.innerHTML = '<div separator=\\'true\\'>'.concat(txtDom.innerHTML, '</div>');\n txtDom = div;\n } // if no dom elements, we just return the text\n\n var allDomElements = Array.from(txtDom.querySelectorAll('*'));\n\n if (allDomElements.length === 0) {\n return text;\n }\n\n parseBrs(txtDom);\n return parseParagraphs(txtDom);\n};\n\nexport default (model) => {\n// parsing\n const modelText = prepareText(model.text);\n\n const newTokens = (model.tokens || []).reduce((acc, token) => {\n const tokenText = prepareText(model.text.slice(token.start, token.end));\n\n if (!tokenText) {\n return token;\n }\n\n function getAllIndexes(arr, val) {\n var indexes = [], i = -1;\n\n while ((i = (arr || '').indexOf(val, i + 1)) != -1) {\n if (!(acc.filter(({ start, text }) => (text === val && start === i)) || []).length) {\n indexes.push(i);\n }\n }\n\n return indexes;\n }\n\n var indexes = getAllIndexes(modelText, tokenText);\n\n const newStart = indexes[0];\n const newEnd = newStart + tokenText.length;\n\n return [\n ...acc,\n {\n ...token,\n text: tokenText,\n start: newStart,\n end: newEnd\n }\n ];\n }, []);\n\n\n return {\n ...model,\n tokens: newTokens,\n text: modelText\n }\n}\n"],"file":"utils.js"}
|
package/configure/package.json
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@material-ui/core": "^3.9.2",
|
|
10
10
|
"@pie-framework/pie-configure-events": "^1.2.0",
|
|
11
|
-
"@pie-lib/config-ui": "^10.10.
|
|
12
|
-
"@pie-lib/editable-html": "^7.17.
|
|
13
|
-
"@pie-lib/scoring-config": "^3.5.
|
|
11
|
+
"@pie-lib/config-ui": "^10.10.16",
|
|
12
|
+
"@pie-lib/editable-html": "^7.17.16",
|
|
13
|
+
"@pie-lib/scoring-config": "^3.5.145",
|
|
14
14
|
"@pie-lib/text-select": "^1.8.11",
|
|
15
15
|
"debug": "^3.1.0",
|
|
16
16
|
"lodash": "^4.17.15",
|
package/docs/demo/generate.js
CHANGED
|
@@ -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 “enemies” which Johnson wants to eliminate.</p>",
|
|
618
|
+
"rationale": "<p>In paragraph 6, Johnson refers to the “ancient enemies”—which he defines as poverty, disease, illiteracy, strife, and bigotry. In paragraph 3, he talks about this idea by explaining that he wants to “accomplish objectives which have eluded mankind;” 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,41 +73,31 @@ 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: 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: false,
|
|
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
|
|
105
|
-
|
|
106
|
-
|
|
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);
|
|
@@ -222,9 +214,9 @@ var Stateful = /*#__PURE__*/function (_React$Component2) {
|
|
|
222
214
|
}, {
|
|
223
215
|
key: "render",
|
|
224
216
|
value: function render() {
|
|
225
|
-
var _this$
|
|
226
|
-
model = _this$
|
|
227
|
-
session = _this$
|
|
217
|
+
var _this$state2 = this.state,
|
|
218
|
+
model = _this$state2.model,
|
|
219
|
+
session = _this$state2.session;
|
|
228
220
|
return /*#__PURE__*/_react["default"].createElement(StyledMain, {
|
|
229
221
|
model: model,
|
|
230
222
|
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","nextProps","classes","selectedTokens","correctAnswer","mainContainer","teacherInstructions","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: false,\n model: generateModel(props.model)\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState({\n showCorrectAnswer: false,\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 <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"}
|
package/lib/utils.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
|
+
|
|
16
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
+
|
|
18
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
19
|
+
|
|
20
|
+
var createElementFromHTML = function createElementFromHTML() {
|
|
21
|
+
var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
22
|
+
var div = document.createElement('div');
|
|
23
|
+
div.innerHTML = htmlString.trim();
|
|
24
|
+
return div;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
var parseBrs = function parseBrs(dom) {
|
|
28
|
+
var brs = dom.querySelectorAll('br');
|
|
29
|
+
brs.forEach(function (br) {
|
|
30
|
+
return br.replaceWith('\n');
|
|
31
|
+
});
|
|
32
|
+
dom.innerHTML = dom.innerHTML.replace(/\n\n/g, '\n');
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var parseParagraph = function parseParagraph(paragraph, end) {
|
|
36
|
+
if (end) {
|
|
37
|
+
return paragraph.innerHTML;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return ''.concat(paragraph.innerHTML, '\n\n');
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
var parseParagraphs = function parseParagraphs(dom) {
|
|
44
|
+
var paragraphs = dom.querySelectorAll('div[separator=true]'); // separate variable for easily debugging, if needed
|
|
45
|
+
|
|
46
|
+
var str = '';
|
|
47
|
+
paragraphs.forEach(function (par, index) {
|
|
48
|
+
str += parseParagraph(par, index === paragraphs.length - 1);
|
|
49
|
+
});
|
|
50
|
+
return str || null;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
var prepareText = function prepareText(text) {
|
|
54
|
+
var txtDom = createElementFromHTML(text);
|
|
55
|
+
|
|
56
|
+
if (txtDom.querySelectorAll('div').length === 0) {
|
|
57
|
+
var div = document.createElement('div');
|
|
58
|
+
div.innerHTML = '<div separator=\'true\'>'.concat(txtDom.innerHTML, '</div>');
|
|
59
|
+
txtDom = div;
|
|
60
|
+
} // if no dom elements, we just return the text
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
var allDomElements = Array.from(txtDom.querySelectorAll('*'));
|
|
64
|
+
|
|
65
|
+
if (allDomElements.length === 0) {
|
|
66
|
+
return text;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
parseBrs(txtDom);
|
|
70
|
+
return parseParagraphs(txtDom);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
var _default = function _default(model) {
|
|
74
|
+
// parsing
|
|
75
|
+
var modelText = prepareText(model.text);
|
|
76
|
+
var newTokens = (model.tokens || []).reduce(function (acc, token) {
|
|
77
|
+
var tokenText = prepareText(model.text.slice(token.start, token.end));
|
|
78
|
+
|
|
79
|
+
if (!tokenText) {
|
|
80
|
+
return token;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function getAllIndexes(arr, val) {
|
|
84
|
+
var indexes = [],
|
|
85
|
+
i = -1;
|
|
86
|
+
|
|
87
|
+
while ((i = (arr || '').indexOf(val, i + 1)) != -1) {
|
|
88
|
+
if (!(acc.filter(function (_ref) {
|
|
89
|
+
var start = _ref.start,
|
|
90
|
+
text = _ref.text;
|
|
91
|
+
return text === val && start === i;
|
|
92
|
+
}) || []).length) {
|
|
93
|
+
indexes.push(i);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return indexes;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
var indexes = getAllIndexes(modelText, tokenText);
|
|
101
|
+
var newStart = indexes[0];
|
|
102
|
+
var newEnd = newStart + tokenText.length;
|
|
103
|
+
return [].concat((0, _toConsumableArray2["default"])(acc), [_objectSpread(_objectSpread({}, token), {}, {
|
|
104
|
+
text: tokenText,
|
|
105
|
+
start: newStart,
|
|
106
|
+
end: newEnd
|
|
107
|
+
})]);
|
|
108
|
+
}, []);
|
|
109
|
+
return _objectSpread(_objectSpread({}, model), {}, {
|
|
110
|
+
tokens: newTokens,
|
|
111
|
+
text: modelText
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
exports["default"] = _default;
|
|
116
|
+
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.js"],"names":["createElementFromHTML","htmlString","arguments","length","undefined","div","document","createElement","innerHTML","trim","parseBrs","dom","brs","querySelectorAll","forEach","br","replaceWith","replace","parseParagraph","paragraph","end","concat","parseParagraphs","paragraphs","str","par","index","prepareText","text","txtDom","allDomElements","Array","from","model","modelText","newTokens","tokens","reduce","acc","token","tokenText","slice","start","getAllIndexes","arr","val","indexes","i","indexOf","filter","push","newStart","newEnd"],"mappings":"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","sourcesContent":["import React from 'react';\n\nvar createElementFromHTML = function createElementFromHTML() {\n var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n return div;\n};\n\nvar parseBrs = function parseBrs(dom) {\n var brs = dom.querySelectorAll('br');\n brs.forEach(function (br) {\n return br.replaceWith('\\n');\n });\n dom.innerHTML = dom.innerHTML.replace(/\\n\\n/g, '\\n');\n};\n\nvar parseParagraph = function parseParagraph(paragraph, end) {\n if (end) {\n return paragraph.innerHTML;\n }\n\n return ''.concat(paragraph.innerHTML, '\\n\\n');\n};\n\nvar parseParagraphs = function parseParagraphs(dom) {\n var paragraphs = dom.querySelectorAll('div[separator=true]'); // separate variable for easily debugging, if needed\n\n var str = '';\n paragraphs.forEach(function (par, index) {\n str += parseParagraph(par, index === paragraphs.length - 1);\n });\n return str || null;\n};\n\nvar prepareText = function prepareText(text) {\n var txtDom = createElementFromHTML(text);\n\n if (txtDom.querySelectorAll('div').length === 0) {\n var div = document.createElement('div');\n div.innerHTML = '<div separator=\\'true\\'>'.concat(txtDom.innerHTML, '</div>');\n txtDom = div;\n } // if no dom elements, we just return the text\n\n var allDomElements = Array.from(txtDom.querySelectorAll('*'));\n\n if (allDomElements.length === 0) {\n return text;\n }\n\n parseBrs(txtDom);\n return parseParagraphs(txtDom);\n};\n\nexport default (model) => {\n// parsing\n const modelText = prepareText(model.text);\n\n const newTokens = (model.tokens || []).reduce((acc, token) => {\n const tokenText = prepareText(model.text.slice(token.start, token.end));\n\n if (!tokenText) {\n return token;\n }\n\n function getAllIndexes(arr, val) {\n var indexes = [], i = -1;\n\n while ((i = (arr || '').indexOf(val, i + 1)) != -1) {\n if (!(acc.filter(({ start, text }) => (text === val && start === i)) || []).length) {\n indexes.push(i);\n }\n }\n\n return indexes;\n }\n\n var indexes = getAllIndexes(modelText, tokenText);\n\n const newStart = indexes[0];\n const newEnd = newStart + tokenText.length;\n\n return [\n ...acc,\n {\n ...token,\n text: tokenText,\n start: newStart,\n end: newEnd\n }\n ];\n }, []);\n\n\n return {\n ...model,\n tokens: newTokens,\n text: modelText\n }\n}\n"],"file":"utils.js"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "6.5.3-next.
|
|
7
|
+
"version": "6.5.3-next.550+0e4e8ca70",
|
|
8
8
|
"description": "",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.9.2",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"author": "",
|
|
21
21
|
"license": "ISC",
|
|
22
|
-
"gitHead": "
|
|
22
|
+
"gitHead": "0e4e8ca70e9e75484310685500fea56144d1f0b8",
|
|
23
23
|
"scripts": {
|
|
24
24
|
"postpublish": "../../scripts/postpublish"
|
|
25
25
|
},
|