@pie-element/select-text 6.5.3-next.546 → 6.5.3-next.549

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.
@@ -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 _textSelect = require("@pie-lib/text-select");
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
- var newText = (0, _textSelect.prepareText)(newModel.text);
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","newText","text","unpreparedText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAKA;;AACA;;;;;;;;;;IAEqBA,mB;;;;;AAenB,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;;;kDA9E8Cc,W;;;iCAA5B9B,mB,wBACS,YAAgB;AAAA,MAAfoB,KAAe,uEAAP,EAAO;;AAC1C,MAAMW,QAAQ,mCACT3B,iCAAcgB,KADL,GAETA,KAFS,CAAd;;AAIA,MAAMY,OAAO,GAAG,6BAAYD,QAAQ,CAACE,IAArB,CAAhB;AAEA,yCACKF,QADL;AAEEG,IAAAA,cAAc,EAAEH,QAAQ,CAACE,IAF3B;AAGEA,IAAAA,IAAI,EAAED;AAHR;AAKD,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 { prepareText } from '@pie-lib/text-select';\n\nexport default class SelectTextConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const newModel = {\n ...defaultValues.model,\n ...model\n };\n const newText = prepareText(newModel.text);\n\n return {\n ...newModel,\n unpreparedText: newModel.text,\n text: newText\n };\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"}
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,94 @@
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 _react = _interopRequireDefault(require("react"));
13
+
14
+ 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; }
15
+
16
+ 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; }
17
+
18
+ var createElementFromHTML = function createElementFromHTML() {
19
+ var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
20
+ var div = document.createElement('div');
21
+ div.innerHTML = htmlString.trim();
22
+ return div;
23
+ };
24
+
25
+ var parseBrs = function parseBrs(dom) {
26
+ var brs = dom.querySelectorAll('br');
27
+ brs.forEach(function (br) {
28
+ return br.replaceWith('\n');
29
+ });
30
+ dom.innerHTML = dom.innerHTML.replace(/\n\n/g, '\n');
31
+ };
32
+
33
+ var parseParagraph = function parseParagraph(paragraph, end) {
34
+ if (end) {
35
+ return paragraph.innerHTML;
36
+ }
37
+
38
+ return "".concat(paragraph.innerHTML, "\n\n");
39
+ };
40
+
41
+ var parseParagraphs = function parseParagraphs(dom) {
42
+ var paragraphs = dom.querySelectorAll('div[separator=true]'); // separate variable for easily debugging, if needed
43
+
44
+ var str = '';
45
+ paragraphs.forEach(function (par, index) {
46
+ str += parseParagraph(par, index === paragraphs.length - 1);
47
+ });
48
+ return str || null;
49
+ };
50
+
51
+ var prepareText = function prepareText(text) {
52
+ var txtDom = createElementFromHTML(text);
53
+ var allDomElements = Array.from(txtDom.querySelectorAll('*'));
54
+
55
+ if (txtDom.querySelectorAll('div').length === 0) {
56
+ var div = document.createElement('div');
57
+ div.innerHTML = "<div separator='true'>".concat(txtDom.innerHTML, "</div>");
58
+ txtDom = div;
59
+ } // if no dom elements, we just return the text
60
+
61
+
62
+ if (allDomElements.length === 0) {
63
+ return text;
64
+ }
65
+
66
+ parseBrs(txtDom);
67
+ return parseParagraphs(txtDom);
68
+ };
69
+
70
+ var _default = function _default(model) {
71
+ // parsing
72
+ var modelText = prepareText(model.text);
73
+ return _objectSpread(_objectSpread({}, model), {}, {
74
+ tokens: (model.tokens || []).map(function (token) {
75
+ var tokenText = prepareText(model.text.slice(token.start, token.end));
76
+
77
+ if (!tokenText) {
78
+ return token;
79
+ }
80
+
81
+ var newStart = modelText.indexOf(tokenText);
82
+ var newEnd = newStart + tokenText.length;
83
+ return _objectSpread(_objectSpread({}, token), {}, {
84
+ text: tokenText,
85
+ start: newStart,
86
+ end: newEnd
87
+ });
88
+ }),
89
+ text: modelText
90
+ });
91
+ };
92
+
93
+ exports["default"] = _default;
94
+ //# 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","tokens","map","token","tokenText","slice","start","newStart","indexOf","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 var allDomElements = Array.from(txtDom.querySelectorAll('*'));\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\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\n return {\n ...model,\n tokens: (model.tokens || []).map(token => {\n const tokenText = prepareText(model.text.slice(token.start, token.end));\n\n if (!tokenText) {\n return token;\n }\n\n const newStart = modelText.indexOf(tokenText);\n const newEnd = newStart + tokenText.length;\n\n return {\n ...token,\n text: tokenText,\n start: newStart,\n end: newEnd\n };\n }),\n text: modelText\n }\n}\n"],"file":"utils.js"}
@@ -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,48 @@ 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(simpleItem));
252
+ };
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 showCorrectAnswer = this.state.showCorrectAnswer;
105
-
106
- if (!model.unpreparedText) {
107
- this.updateText();
108
- }
98
+ var _this$state = this.state,
99
+ showCorrectAnswer = _this$state.showCorrectAnswer,
100
+ model = _this$state.model; // const model = generateTokens(this.props.model)
109
101
 
110
102
  var selectedTokens = showCorrectAnswer ? this.correctAnswer() : session.selectedTokens;
111
103
  log('[render] selectedTokens:', selectedTokens);
@@ -222,9 +214,9 @@ var Stateful = /*#__PURE__*/function (_React$Component2) {
222
214
  }, {
223
215
  key: "render",
224
216
  value: function render() {
225
- var _this$state = this.state,
226
- model = _this$state.model,
227
- session = _this$state.session;
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,94 @@
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 _react = _interopRequireDefault(require("react"));
13
+
14
+ 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; }
15
+
16
+ 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; }
17
+
18
+ var createElementFromHTML = function createElementFromHTML() {
19
+ var htmlString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
20
+ var div = document.createElement('div');
21
+ div.innerHTML = htmlString.trim();
22
+ return div;
23
+ };
24
+
25
+ var parseBrs = function parseBrs(dom) {
26
+ var brs = dom.querySelectorAll('br');
27
+ brs.forEach(function (br) {
28
+ return br.replaceWith('\n');
29
+ });
30
+ dom.innerHTML = dom.innerHTML.replace(/\n\n/g, '\n');
31
+ };
32
+
33
+ var parseParagraph = function parseParagraph(paragraph, end) {
34
+ if (end) {
35
+ return paragraph.innerHTML;
36
+ }
37
+
38
+ return "".concat(paragraph.innerHTML, "\n\n");
39
+ };
40
+
41
+ var parseParagraphs = function parseParagraphs(dom) {
42
+ var paragraphs = dom.querySelectorAll('div[separator=true]'); // separate variable for easily debugging, if needed
43
+
44
+ var str = '';
45
+ paragraphs.forEach(function (par, index) {
46
+ str += parseParagraph(par, index === paragraphs.length - 1);
47
+ });
48
+ return str || null;
49
+ };
50
+
51
+ var prepareText = function prepareText(text) {
52
+ var txtDom = createElementFromHTML(text);
53
+ var allDomElements = Array.from(txtDom.querySelectorAll('*'));
54
+
55
+ if (txtDom.querySelectorAll('div').length === 0) {
56
+ var div = document.createElement('div');
57
+ div.innerHTML = "<div separator='true'>".concat(txtDom.innerHTML, "</div>");
58
+ txtDom = div;
59
+ } // if no dom elements, we just return the text
60
+
61
+
62
+ if (allDomElements.length === 0) {
63
+ return text;
64
+ }
65
+
66
+ parseBrs(txtDom);
67
+ return parseParagraphs(txtDom);
68
+ };
69
+
70
+ var _default = function _default(model) {
71
+ // parsing
72
+ var modelText = prepareText(model.text);
73
+ return _objectSpread(_objectSpread({}, model), {}, {
74
+ tokens: (model.tokens || []).map(function (token) {
75
+ var tokenText = prepareText(model.text.slice(token.start, token.end));
76
+
77
+ if (!tokenText) {
78
+ return token;
79
+ }
80
+
81
+ var newStart = modelText.indexOf(tokenText);
82
+ var newEnd = newStart + tokenText.length;
83
+ return _objectSpread(_objectSpread({}, token), {}, {
84
+ text: tokenText,
85
+ start: newStart,
86
+ end: newEnd
87
+ });
88
+ }),
89
+ text: modelText
90
+ });
91
+ };
92
+
93
+ exports["default"] = _default;
94
+ //# 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","tokens","map","token","tokenText","slice","start","newStart","indexOf","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 var allDomElements = Array.from(txtDom.querySelectorAll('*'));\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\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\n return {\n ...model,\n tokens: (model.tokens || []).map(token => {\n const tokenText = prepareText(model.text.slice(token.start, token.end));\n\n if (!tokenText) {\n return token;\n }\n\n const newStart = modelText.indexOf(tokenText);\n const newEnd = newStart + tokenText.length;\n\n return {\n ...token,\n text: tokenText,\n start: newStart,\n end: newEnd\n };\n }),\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.546+0e3208a3a",
7
+ "version": "6.5.3-next.549+15ec4b35f",
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": "0e3208a3a25a1a91a2144fdd7ca9c74dda16e16a",
22
+ "gitHead": "15ec4b35f6656bb2595f316d3a49af451c21450b",
23
23
  "scripts": {
24
24
  "postpublish": "../../scripts/postpublish"
25
25
  },