@pie-element/select-text 6.5.19 → 6.5.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [6.5.20](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.19...@pie-element/select-text@6.5.20) (2022-02-04)
7
+
8
+ **Note:** Version bump only for package @pie-element/select-text
9
+
10
+
11
+
12
+
13
+
6
14
  ## [6.5.19](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text@6.5.18...@pie-element/select-text@6.5.19) (2022-01-24)
7
15
 
8
16
 
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.2.16](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.15...@pie-element/select-text-configure@5.2.16) (2022-02-04)
7
+
8
+ **Note:** Version bump only for package @pie-element/select-text-configure
9
+
10
+
11
+
12
+
13
+
6
14
  ## [5.2.15](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-configure@5.2.14...@pie-element/select-text-configure@5.2.15) (2022-01-24)
7
15
 
8
16
  **Note:** Version bump only for package @pie-element/select-text-configure
@@ -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,103 @@
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 parseParagraph = function parseParagraph(paragraph, end) {
28
+ if (end) {
29
+ return paragraph.innerHTML;
30
+ }
31
+
32
+ return ''.concat(paragraph.innerHTML, '\n\n');
33
+ };
34
+
35
+ var parseParagraphs = function parseParagraphs(dom) {
36
+ var paragraphs = dom.querySelectorAll('div[separator=true]'); // separate variable for easily debugging, if needed
37
+
38
+ var str = '';
39
+ paragraphs.forEach(function (par, index) {
40
+ str += parseParagraph(par, index === paragraphs.length - 1);
41
+ });
42
+ return str || null;
43
+ };
44
+
45
+ var prepareText = function prepareText(text) {
46
+ var txtDom = createElementFromHTML(text);
47
+ var div = document.createElement('div');
48
+ div.innerHTML = '<div separator=\'true\'>'.concat(txtDom.innerHTML, '</div>');
49
+ txtDom = div;
50
+ var allDomElements = Array.from(txtDom.querySelectorAll('*'));
51
+
52
+ if (allDomElements.length === 0) {
53
+ return text;
54
+ }
55
+
56
+ return parseParagraphs(txtDom);
57
+ };
58
+
59
+ var _default = function _default(model) {
60
+ if (!model) return model; // parsing
61
+
62
+ var modelText = prepareText(model.text || '');
63
+ var newTokens = (model.tokens || []).reduce(function (acc) {
64
+ var token = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
65
+ var tokenText = prepareText((model.text || '').slice(token.start, token.end));
66
+
67
+ if (!tokenText) {
68
+ return [].concat((0, _toConsumableArray2["default"])(acc), [token]);
69
+ }
70
+
71
+ var getStartIndex = function getStartIndex(start) {
72
+ var length = start;
73
+
74
+ while (length >= 0) {
75
+ var newStartIndex = modelText.slice(length).indexOf(tokenText);
76
+
77
+ if (newStartIndex >= 0) {
78
+ return newStartIndex + length;
79
+ }
80
+
81
+ length--;
82
+ }
83
+
84
+ return 0;
85
+ };
86
+
87
+ var lastToken = acc[acc.length - 1];
88
+ var newStart = getStartIndex(lastToken ? lastToken.end : token.start);
89
+ var newEnd = newStart + tokenText.length;
90
+ return [].concat((0, _toConsumableArray2["default"])(acc), [_objectSpread(_objectSpread({}, token), {}, {
91
+ text: tokenText,
92
+ start: newStart,
93
+ end: newEnd
94
+ })]);
95
+ }, []);
96
+ return _objectSpread(_objectSpread({}, model), {}, {
97
+ tokens: newTokens,
98
+ text: modelText
99
+ });
100
+ };
101
+
102
+ exports["default"] = _default;
103
+ //# 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","parseParagraph","paragraph","end","concat","parseParagraphs","dom","paragraphs","querySelectorAll","str","forEach","par","index","prepareText","text","txtDom","allDomElements","Array","from","model","modelText","newTokens","tokens","reduce","acc","token","tokenText","slice","start","getStartIndex","newStartIndex","indexOf","lastToken","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 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 var div = document.createElement('div');\n div.innerHTML = '<div separator=\\'true\\'>'.concat(txtDom.innerHTML, '</div>');\n txtDom = div;\n\n var allDomElements = Array.from(txtDom.querySelectorAll('*'));\n\n if (allDomElements.length === 0) {\n return text;\n }\n\n return parseParagraphs(txtDom);\n};\n\nexport default (model) => {\n if (!model) return model;\n\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 [...acc, token];\n }\n\n const getStartIndex = (start) => {\n let length = start;\n\n while (length >= 0) {\n let newStartIndex = modelText.slice(length).indexOf(tokenText);\n\n if (newStartIndex >= 0) {\n return newStartIndex + length;\n }\n\n length--;\n }\n\n return 0;\n };\n\n const lastToken = acc[acc.length - 1];\n const newStart = getStartIndex(lastToken ? lastToken.end : token.start);\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"}
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@pie-element/select-text-configure",
3
3
  "private": true,
4
- "version": "5.2.15",
4
+ "version": "5.2.16",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
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.16",
12
- "@pie-lib/editable-html": "^7.17.16",
13
- "@pie-lib/scoring-config": "^3.5.145",
14
- "@pie-lib/text-select": "^1.8.11",
11
+ "@pie-lib/config-ui": "^10.10.18",
12
+ "@pie-lib/editable-html": "^7.17.18",
13
+ "@pie-lib/scoring-config": "^3.5.147",
14
+ "@pie-lib/text-select": "^1.8.12",
15
15
  "debug": "^3.1.0",
16
16
  "lodash": "^4.17.15",
17
17
  "prop-types": "^15.6.2",
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.1.28](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-controller@4.1.27...@pie-element/select-text-controller@4.1.28) (2022-02-04)
7
+
8
+ **Note:** Version bump only for package @pie-element/select-text-controller
9
+
10
+
11
+
12
+
13
+
6
14
  ## [4.1.26](https://github.com/pie-framework/pie-elements/compare/@pie-element/select-text-controller@4.1.25...@pie-element/select-text-controller@4.1.26) (2021-12-13)
7
15
 
8
16
  **Note:** Version bump only for package @pie-element/select-text-controller
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@pie-element/select-text-controller",
3
3
  "private": true,
4
- "version": "4.1.27",
4
+ "version": "4.1.28",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "dependencies": {
9
9
  "@pie-lib/controller-utils": "^0.2.26",
10
10
  "@pie-lib/feedback": "^0.4.27",
11
- "@pie-lib/text-select": "^1.8.11",
11
+ "@pie-lib/text-select": "^1.8.12",
12
12
  "debug": "^3.1.0",
13
13
  "lodash": "^4.17.15"
14
14
  },
@@ -132,10 +132,6 @@ And say, now, how does it seem to you?</p>`,
132
132
  );
133
133
  };
134
134
 
135
- exports.model = (id, element) => {
136
- return Object.assign({}, { id, element }, base({}));
137
- };
138
-
139
135
  exports.mathSample = (id, element) => {
140
136
  return Object.assign({}, { id, element }, mathSample({}));
141
137
  };
@@ -209,3 +205,418 @@ exports.htmlAscii = (id, element) => ({
209
205
  }]
210
206
  }
211
207
  );
208
+
209
+ const simpleItem = {
210
+ "text": "A. Almost never\n\nB. Once in a while\n\nC. Sometimes\n\nD. Often\n\nE. Almost all the time",
211
+ "tokens": [
212
+ {
213
+ "text": "A. Almost never",
214
+ "end": 15,
215
+ "start": 0,
216
+ "correct": true
217
+ },
218
+ {
219
+ "start": 17,
220
+ "end": 35,
221
+ "correct": false,
222
+ "text": "B. Once in a while"
223
+ },
224
+ {
225
+ "correct": false,
226
+ "end": 49,
227
+ "start": 37,
228
+ "text": "C. Sometimes"
229
+ },
230
+ {
231
+ "text": "D. Often",
232
+ "correct": false,
233
+ "end": 59,
234
+ "start": 51
235
+ },
236
+ {
237
+ "start": 61,
238
+ "correct": false,
239
+ "end": 83,
240
+ "text": "E. Almost all the time"
241
+ }
242
+ ],
243
+ "rationale": "<p>answers vary</p>",
244
+ "partialScoring": true,
245
+ "teacherInstructions": "",
246
+ "prompt": "<p>I got my work done right away instead of waiting until the last minute.</p>",
247
+ "maxSelections": 1,
248
+ };
249
+
250
+ exports.model = (id, element) => {
251
+ return Object.assign({}, { id, element }, base( {
252
+ "partialScoring": true,
253
+ "tokens": [
254
+ {
255
+ "correct": false,
256
+ "start": 3,
257
+ "end": 6,
258
+ "text": "Our"
259
+ },
260
+ {
261
+ "correct": false,
262
+ "start": 7,
263
+ "end": 16,
264
+ "text": "challenge"
265
+ },
266
+ {
267
+ "correct": false,
268
+ "start": 18,
269
+ "end": 21,
270
+ "text": "not"
271
+ },
272
+ {
273
+ "correct": false,
274
+ "start": 22,
275
+ "end": 30,
276
+ "text": "tomorrow"
277
+ },
278
+ {
279
+ "correct": false,
280
+ "start": 31,
281
+ "end": 34,
282
+ "text": "but"
283
+ },
284
+ {
285
+ "correct": false,
286
+ "start": 35,
287
+ "end": 40,
288
+ "text": "today"
289
+ },
290
+ {
291
+ "correct": false,
292
+ "start": 42,
293
+ "end": 44,
294
+ "text": "is"
295
+ },
296
+ {
297
+ "correct": false,
298
+ "start": 45,
299
+ "end": 47,
300
+ "text": "to"
301
+ },
302
+ {
303
+ "correct": false,
304
+ "start": 48,
305
+ "end": 58,
306
+ "text": "accomplish"
307
+ },
308
+ {
309
+ "correct": false,
310
+ "start": 59,
311
+ "end": 69,
312
+ "text": "objectives"
313
+ },
314
+ {
315
+ "correct": false,
316
+ "start": 70,
317
+ "end": 75,
318
+ "text": "which"
319
+ },
320
+ {
321
+ "correct": false,
322
+ "start": 76,
323
+ "end": 80,
324
+ "text": "have"
325
+ },
326
+ {
327
+ "correct": false,
328
+ "start": 81,
329
+ "end": 87,
330
+ "text": "eluded"
331
+ },
332
+ {
333
+ "correct": false,
334
+ "start": 88,
335
+ "end": 95,
336
+ "text": "mankind"
337
+ },
338
+ {
339
+ "correct": false,
340
+ "start": 96,
341
+ "end": 101,
342
+ "text": "since"
343
+ },
344
+ {
345
+ "correct": false,
346
+ "start": 102,
347
+ "end": 105,
348
+ "text": "the"
349
+ },
350
+ {
351
+ "correct": false,
352
+ "start": 106,
353
+ "end": 115,
354
+ "text": "beginning"
355
+ },
356
+ {
357
+ "correct": false,
358
+ "start": 116,
359
+ "end": 118,
360
+ "text": "of"
361
+ },
362
+ {
363
+ "correct": false,
364
+ "start": 119,
365
+ "end": 123,
366
+ "text": "time"
367
+ },
368
+ {
369
+ "correct": false,
370
+ "start": 125,
371
+ "end": 127,
372
+ "text": "We"
373
+ },
374
+ {
375
+ "correct": false,
376
+ "start": 128,
377
+ "end": 132,
378
+ "text": "must"
379
+ },
380
+ {
381
+ "correct": false,
382
+ "start": 133,
383
+ "end": 138,
384
+ "text": "bring"
385
+ },
386
+ {
387
+ "correct": false,
388
+ "start": 139,
389
+ "end": 144,
390
+ "text": "equal"
391
+ },
392
+ {
393
+ "correct": false,
394
+ "start": 145,
395
+ "end": 152,
396
+ "text": "justice"
397
+ },
398
+ {
399
+ "correct": false,
400
+ "start": 153,
401
+ "end": 155,
402
+ "text": "to"
403
+ },
404
+ {
405
+ "correct": false,
406
+ "start": 156,
407
+ "end": 159,
408
+ "text": "all"
409
+ },
410
+ {
411
+ "correct": false,
412
+ "start": 160,
413
+ "end": 163,
414
+ "text": "our"
415
+ },
416
+ {
417
+ "correct": false,
418
+ "start": 164,
419
+ "end": 172,
420
+ "text": "citizens"
421
+ },
422
+ {
423
+ "correct": false,
424
+ "start": 174,
425
+ "end": 176,
426
+ "text": "We"
427
+ },
428
+ {
429
+ "correct": false,
430
+ "start": 177,
431
+ "end": 181,
432
+ "text": "must"
433
+ },
434
+ {
435
+ "correct": false,
436
+ "start": 182,
437
+ "end": 189,
438
+ "text": "abolish"
439
+ },
440
+ {
441
+ "correct": false,
442
+ "start": 190,
443
+ "end": 195,
444
+ "text": "human"
445
+ },
446
+ {
447
+ "correct": true,
448
+ "start": 196,
449
+ "end": 203,
450
+ "text": "poverty"
451
+ },
452
+ {
453
+ "correct": false,
454
+ "start": 205,
455
+ "end": 207,
456
+ "text": "We"
457
+ },
458
+ {
459
+ "correct": false,
460
+ "start": 208,
461
+ "end": 212,
462
+ "text": "must"
463
+ },
464
+ {
465
+ "correct": false,
466
+ "start": 213,
467
+ "end": 222,
468
+ "text": "eradicate"
469
+ },
470
+ {
471
+ "correct": false,
472
+ "start": 223,
473
+ "end": 230,
474
+ "text": "killing"
475
+ },
476
+ {
477
+ "correct": false,
478
+ "start": 231,
479
+ "end": 234,
480
+ "text": "and"
481
+ },
482
+ {
483
+ "correct": false,
484
+ "start": 235,
485
+ "end": 244,
486
+ "text": "crippling"
487
+ },
488
+ {
489
+ "correct": true,
490
+ "start": 245,
491
+ "end": 252,
492
+ "text": "disease"
493
+ },
494
+ {
495
+ "correct": false,
496
+ "start": 253,
497
+ "end": 256,
498
+ "text": "and"
499
+ },
500
+ {
501
+ "correct": false,
502
+ "start": 257,
503
+ "end": 265,
504
+ "text": "lengthen"
505
+ },
506
+ {
507
+ "correct": false,
508
+ "start": 266,
509
+ "end": 269,
510
+ "text": "the"
511
+ },
512
+ {
513
+ "correct": false,
514
+ "start": 270,
515
+ "end": 274,
516
+ "text": "span"
517
+ },
518
+ {
519
+ "correct": false,
520
+ "start": 275,
521
+ "end": 277,
522
+ "text": "of"
523
+ },
524
+ {
525
+ "correct": false,
526
+ "start": 278,
527
+ "end": 282,
528
+ "text": "life"
529
+ },
530
+ {
531
+ "correct": false,
532
+ "start": 283,
533
+ "end": 285,
534
+ "text": "to"
535
+ },
536
+ {
537
+ "correct": false,
538
+ "start": 286,
539
+ "end": 289,
540
+ "text": "100"
541
+ },
542
+ {
543
+ "correct": false,
544
+ "start": 290,
545
+ "end": 292,
546
+ "text": "or"
547
+ },
548
+ {
549
+ "correct": false,
550
+ "start": 293,
551
+ "end": 296,
552
+ "text": "200"
553
+ },
554
+ {
555
+ "correct": false,
556
+ "start": 297,
557
+ "end": 302,
558
+ "text": "years"
559
+ },
560
+ {
561
+ "correct": false,
562
+ "start": 304,
563
+ "end": 306,
564
+ "text": "We"
565
+ },
566
+ {
567
+ "correct": false,
568
+ "start": 307,
569
+ "end": 311,
570
+ "text": "must"
571
+ },
572
+ {
573
+ "correct": false,
574
+ "start": 312,
575
+ "end": 321,
576
+ "text": "eliminate"
577
+ },
578
+ {
579
+ "correct": true,
580
+ "start": 322,
581
+ "end": 332,
582
+ "text": "illiteracy"
583
+ },
584
+ {
585
+ "correct": false,
586
+ "start": 333,
587
+ "end": 338,
588
+ "text": "among"
589
+ },
590
+ {
591
+ "correct": false,
592
+ "start": 339,
593
+ "end": 342,
594
+ "text": "all"
595
+ },
596
+ {
597
+ "correct": false,
598
+ "start": 343,
599
+ "end": 345,
600
+ "text": "of"
601
+ },
602
+ {
603
+ "correct": false,
604
+ "start": 346,
605
+ "end": 349,
606
+ "text": "our"
607
+ },
608
+ {
609
+ "correct": false,
610
+ "start": 350,
611
+ "end": 356,
612
+ "text": "people"
613
+ }
614
+ ],
615
+ // "id": "0",
616
+ "text": "<p>Our challenge, not tomorrow but today, is to accomplish objectives which have eluded mankind since the beginning of time. We must bring equal justice to all our citizens. We must abolish human poverty. We must eradicate killing and crippling disease and lengthen the span of life to 100 or 200 years. We must eliminate illiteracy among all of our people.</p>\n",
617
+ "prompt": "<p>Select the <span class=\"relative-emphasis\">three</span> words from below that specifically describe the &#8220;enemies&#8221; which Johnson wants to eliminate.</p>",
618
+ "rationale": "<p>In paragraph 6, Johnson refers to the &#8220;ancient enemies&#8221;&#8212;which he defines as poverty, disease, illiteracy, strife, and bigotry. In paragraph 3, he talks about this idea by explaining that he wants to &#8220;accomplish objectives which have eluded mankind;&#8221; that is, to eliminate these enemies.</p>",
619
+ // "element": "select-text",
620
+ "maxSelections": 3
621
+ } ));
622
+ };