@pie-element/select-text 11.3.4-next.0 → 12.0.0-beta.0

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.
@@ -1 +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","generateModel","model","modelText","newTokens","tokens","reduce","acc","token","tokenText","slice","start","getStartIndex","newStartIndex","indexOf","lastToken","newStart","newEnd","oldStart","oldEnd","generateValidationMessage","config","minTokens","maxTokens","maxSelections","tokensMessage","selectionsMessage","message"],"mappings":"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","sourcesContent":["var 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 const generateModel = (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 // needed for getScore when tokens position is recalculated\n oldStart: token.start,\n oldEnd: token.end,\n },\n ];\n }, []);\n\n return {\n ...model,\n tokens: newTokens,\n text: modelText,\n };\n};\n\nexport const generateValidationMessage = (config) => {\n const { minTokens, maxTokens, maxSelections } = config;\n\n const tokensMessage =\n `\\nThere should be at least ${minTokens} ` + (maxTokens ? `and at most ${maxTokens} ` : '') + 'tokens defined.';\n\n const selectionsMessage =\n '\\nThere should be at least 1 ' +\n (maxSelections ? `and at most ${maxSelections} ` : '') +\n 'token' +\n (maxSelections ? 's' : '') +\n ' selected.';\n\n const message = 'Validation requirements:' + tokensMessage + selectionsMessage;\n\n return message;\n};\n"],"file":"utils.js"}
1
+ {"version":3,"file":"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","generateModel","model","modelText","newTokens","tokens","reduce","acc","token","tokenText","slice","start","getStartIndex","newStartIndex","indexOf","lastToken","newStart","newEnd","oldStart","oldEnd","exports","generateValidationMessage","config","minTokens","maxTokens","maxSelections","tokensMessage","selectionsMessage","message"],"sources":["../src/utils.js"],"sourcesContent":["var 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 const generateModel = (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 // needed for getScore when tokens position is recalculated\n oldStart: token.start,\n oldEnd: token.end,\n },\n ];\n }, []);\n\n return {\n ...model,\n tokens: newTokens,\n text: modelText,\n };\n};\n\nexport const generateValidationMessage = (config) => {\n const { minTokens, maxTokens, maxSelections } = config;\n\n const tokensMessage =\n `\\nThere should be at least ${minTokens} ` + (maxTokens ? `and at most ${maxTokens} ` : '') + 'tokens defined.';\n\n const selectionsMessage =\n '\\nThere should be at least 1 ' +\n (maxSelections ? `and at most ${maxSelections} ` : '') +\n 'token' +\n (maxSelections ? 's' : '') +\n ' selected.';\n\n const message = 'Validation requirements:' + tokensMessage + selectionsMessage;\n\n return message;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,21 +1,24 @@
1
1
  {
2
2
  "name": "@pie-element/select-text-configure",
3
3
  "private": true,
4
- "version": "9.3.3",
4
+ "version": "10.0.0-beta.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "dependencies": {
9
- "@material-ui/core": "^3.9.2",
9
+ "@emotion/react": "^11.14.0",
10
+ "@emotion/style": "^0.8.0",
11
+ "@mui/icons-material": "^7.3.4",
12
+ "@mui/material": "^7.3.4",
10
13
  "@pie-framework/pie-configure-events": "^1.3.0",
11
- "@pie-lib/config-ui": "11.30.2",
12
- "@pie-lib/editable-html": "11.21.2",
13
- "@pie-lib/text-select": "1.32.2",
14
+ "@pie-lib/config-ui": "11.30.4-next.0",
15
+ "@pie-lib/editable-html": "11.21.4-next.0",
16
+ "@pie-lib/text-select": "1.32.4-next.0",
14
17
  "debug": "^3.1.0",
15
18
  "lodash": "^4.17.15",
16
19
  "prop-types": "^15.6.2",
17
- "react": "^16.8.1",
18
- "react-dom": "^16.8.1"
20
+ "react": "18.2.0",
21
+ "react-dom": "18.2.0"
19
22
  },
20
23
  "author": "",
21
24
  "license": "ISC"
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
7
- var _default = {
6
+ exports.default = void 0;
7
+ var _default = exports.default = {
8
8
  feedbackEnabled: false,
9
9
  highlightChoices: false,
10
10
  maxSelections: 0,
@@ -22,5 +22,4 @@ var _default = {
22
22
  tokens: [],
23
23
  toolbarEditorPosition: 'bottom'
24
24
  };
25
- exports["default"] = _default;
26
25
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["feedbackEnabled","highlightChoices","maxSelections","mode","partialScoring","prompt","promptEnabled","rationale","rationaleEnabled","scoringType","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","text","tokens","toolbarEditorPosition"],"mappings":";;;;;;eAAe;AACbA,EAAAA,eAAe,EAAE,KADJ;AAEbC,EAAAA,gBAAgB,EAAE,KAFL;AAGbC,EAAAA,aAAa,EAAE,CAHF;AAIbC,EAAAA,IAAI,EAAE,UAJO;AAKbC,EAAAA,cAAc,EAAE,KALH;AAMbC,EAAAA,MAAM,EAAE,EANK;AAObC,EAAAA,aAAa,EAAE,IAPF;AAQbC,EAAAA,SAAS,EAAE,EARE;AASbC,EAAAA,gBAAgB,EAAE,IATL;AAUbC,EAAAA,WAAW,EAAE,MAVA;AAWbC,EAAAA,0BAA0B,EAAE,IAXf;AAYbC,EAAAA,mBAAmB,EAAE,EAZR;AAabC,EAAAA,0BAA0B,EAAE,IAbf;AAcbC,EAAAA,IAAI,EAAE,EAdO;AAebC,EAAAA,MAAM,EAAE,EAfK;AAgBbC,EAAAA,qBAAqB,EAAE;AAhBV,C","sourcesContent":["export default {\n feedbackEnabled: false,\n highlightChoices: false,\n maxSelections: 0,\n mode: 'sentence',\n partialScoring: false,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n scoringType: 'auto',\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n text: '',\n tokens: [],\n toolbarEditorPosition: 'bottom',\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"file":"defaults.js","names":["feedbackEnabled","highlightChoices","maxSelections","mode","partialScoring","prompt","promptEnabled","rationale","rationaleEnabled","scoringType","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","text","tokens","toolbarEditorPosition"],"sources":["../src/defaults.js"],"sourcesContent":["export default {\n feedbackEnabled: false,\n highlightChoices: false,\n maxSelections: 0,\n mode: 'sentence',\n partialScoring: false,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n scoringType: 'auto',\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n text: '',\n tokens: [],\n toolbarEditorPosition: 'bottom',\n};\n"],"mappings":";;;;;;iCAAe;EACbA,eAAe,EAAE,KAAK;EACtBC,gBAAgB,EAAE,KAAK;EACvBC,aAAa,EAAE,CAAC;EAChBC,IAAI,EAAE,UAAU;EAChBC,cAAc,EAAE,KAAK;EACrBC,MAAM,EAAE,EAAE;EACVC,aAAa,EAAE,IAAI;EACnBC,SAAS,EAAE,EAAE;EACbC,gBAAgB,EAAE,IAAI;EACtBC,WAAW,EAAE,MAAM;EACnBC,0BAA0B,EAAE,IAAI;EAChCC,mBAAmB,EAAE,EAAE;EACvBC,0BAA0B,EAAE,IAAI;EAChCC,IAAI,EAAE,EAAE;EACRC,MAAM,EAAE,EAAE;EACVC,qBAAqB,EAAE;AACzB,CAAC","ignoreList":[]}
@@ -1,67 +1,37 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createCorrectResponseSession = void 0;
9
8
  exports.createDefaultModel = createDefaultModel;
10
9
  exports.validate = exports.outcome = exports.normalizeSession = exports.normalize = exports.model = exports.getPartialScore = exports.getCorrectness = void 0;
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
10
  var _debug = _interopRequireDefault(require("debug"));
15
-
16
11
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
17
-
18
12
  var _feedback = require("@pie-lib/feedback");
19
-
20
13
  var _controllerUtils = require("@pie-lib/controller-utils");
21
-
22
14
  var _defaults = _interopRequireDefault(require("./defaults"));
23
-
24
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
25
-
26
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
27
-
28
- var log = (0, _debug["default"])('@pie-element:select-text:controller');
29
-
30
- var equalTokens = function equalTokens() {
31
- var token1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
32
- var token2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
33
- return (token1 === null || token1 === void 0 ? void 0 : token1.start) === (token2 === null || token2 === void 0 ? void 0 : token2.start) && (token1 === null || token1 === void 0 ? void 0 : token1.end) === (token2 === null || token2 === void 0 ? void 0 : token2.end) || // this case is used for the cases when the token's start & end were recalculated
34
- (token1 === null || token1 === void 0 ? void 0 : token1.start) === (token2 === null || token2 === void 0 ? void 0 : token2.oldStart) && (token1 === null || token1 === void 0 ? void 0 : token1.end) === (token2 === null || token2 === void 0 ? void 0 : token2.oldEnd);
35
- };
36
-
37
- var normalizeTokens = function normalizeTokens() {
38
- var tokens = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
39
- var selectedTokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
40
- var evaluateMode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
41
- return (tokens || []).map(function (token) {
42
- var isCorrect = !!token.correct; // search if correct token is missing from session
43
-
44
- var isMissing = isCorrect && !(selectedTokens || []).find(function (selectedToken) {
45
- return equalTokens(token, selectedToken);
46
- });
47
- return _objectSpread(_objectSpread({}, token), {}, {
48
- correct: evaluateMode ? isCorrect : undefined,
49
- isMissing: evaluateMode ? isMissing : undefined
50
- });
51
- });
52
- };
53
-
54
- var getCorrectness = function getCorrectness(tokens, selected) {
55
- var correct = tokens.filter(function (t) {
56
- return t.correct === true;
57
- });
58
-
15
+ const log = (0, _debug.default)('@pie-element:select-text:controller');
16
+ const equalTokens = (token1 = {}, token2 = {}) => token1?.start === token2?.start && token1?.end === token2?.end ||
17
+ // this case is used for the cases when the token's start & end were recalculated
18
+ token1?.start === token2?.oldStart && token1?.end === token2?.oldEnd;
19
+ const normalizeTokens = (tokens = [], selectedTokens = [], evaluateMode = false) => (tokens || []).map(token => {
20
+ const isCorrect = !!token.correct;
21
+ // search if correct token is missing from session
22
+ const isMissing = isCorrect && !(selectedTokens || []).find(selectedToken => equalTokens(token, selectedToken));
23
+ return {
24
+ ...token,
25
+ correct: evaluateMode ? isCorrect : undefined,
26
+ isMissing: evaluateMode ? isMissing : undefined
27
+ };
28
+ });
29
+ const getCorrectness = (tokens, selected) => {
30
+ const correct = tokens.filter(t => t.correct === true);
59
31
  if (correct.length === 0) {
60
32
  return 'unknown';
61
33
  }
62
-
63
- var correctSelected = getCorrectSelected(tokens, selected);
64
-
34
+ const correctSelected = getCorrectSelected(tokens, selected);
65
35
  if (correctSelected.length === selected.length) {
66
36
  if (correctSelected.length === correct.length) {
67
37
  return 'correct';
@@ -69,124 +39,95 @@ var getCorrectness = function getCorrectness(tokens, selected) {
69
39
  return 'partially-correct';
70
40
  }
71
41
  }
72
-
73
42
  if (correctSelected.length > 0) {
74
43
  return 'partially-correct';
75
44
  }
76
-
77
45
  return 'incorrect';
78
46
  };
79
-
80
47
  exports.getCorrectness = getCorrectness;
81
-
82
- var getCorrectSelected = function getCorrectSelected(tokens, selected) {
83
- return (selected || []).filter(function (s) {
84
- return tokens.findIndex(function (token) {
85
- return token.correct && equalTokens(token, s);
86
- }) !== -1;
87
- });
88
- };
89
-
90
- var getPartialScore = function getPartialScore(question, session, totalCorrect) {
91
- if (!session || (0, _isEmpty["default"])(session)) {
48
+ const getCorrectSelected = (tokens, selected) => (selected || []).filter(s => tokens.findIndex(token => token.correct && equalTokens(token, s)) !== -1);
49
+ const getPartialScore = (question, session, totalCorrect) => {
50
+ if (!session || (0, _isEmpty.default)(session)) {
92
51
  return 0;
93
52
  }
94
-
95
- var correctCount = getCorrectSelected(question.tokens, session.selectedTokens).length;
96
- var correctTokens = (question.tokens || []).filter(function (t) {
97
- return t.correct === true;
98
- });
99
- var extraSelected = session.selectedTokens ? session.selectedTokens.length > correctTokens.length : 0;
100
- var incorrectCount = extraSelected ? session.selectedTokens && session.selectedTokens.length - correctCount : 0;
101
- var count = correctCount - incorrectCount;
102
- var positiveCount = count < 0 ? 0 : count;
53
+ const correctCount = getCorrectSelected(question.tokens, session.selectedTokens).length;
54
+ const correctTokens = (question.tokens || []).filter(t => t.correct === true);
55
+ const extraSelected = session.selectedTokens ? session.selectedTokens.length > correctTokens.length : 0;
56
+ const incorrectCount = extraSelected ? session.selectedTokens && session.selectedTokens.length - correctCount : 0;
57
+ const count = correctCount - incorrectCount;
58
+ const positiveCount = count < 0 ? 0 : count;
103
59
  return totalCorrect.length ? parseFloat((positiveCount / totalCorrect.length).toFixed(2)) : 0;
104
60
  };
105
-
106
61
  exports.getPartialScore = getPartialScore;
107
-
108
- var outcome = function outcome(question, session, env) {
109
- return new Promise(function (resolve) {
110
- if (!session || (0, _isEmpty["default"])(session)) {
111
- resolve({
112
- score: 0,
113
- empty: true
114
- });
115
- }
116
-
117
- session = normalizeSession(session);
118
-
119
- if (env.mode !== 'evaluate') {
120
- resolve({
121
- score: undefined,
122
- completed: undefined
123
- });
124
- } else {
125
- var enabled = _controllerUtils.partialScoring.enabled(question, env, true);
126
-
127
- var totalCorrect = question.tokens.filter(function (t) {
128
- return t.correct;
129
- });
130
- var score = getPartialScore(question, session, totalCorrect);
131
- resolve({
132
- score: enabled ? score : score === 1 ? 1 : 0
133
- });
134
- }
135
- });
136
- };
137
-
62
+ const outcome = (question, session, env) => new Promise(resolve => {
63
+ if (!session || (0, _isEmpty.default)(session)) {
64
+ resolve({
65
+ score: 0,
66
+ empty: true
67
+ });
68
+ }
69
+ session = normalizeSession(session);
70
+ if (env.mode !== 'evaluate') {
71
+ resolve({
72
+ score: undefined,
73
+ completed: undefined
74
+ });
75
+ } else {
76
+ const enabled = _controllerUtils.partialScoring.enabled(question, env, true);
77
+ const totalCorrect = question.tokens.filter(t => t.correct);
78
+ const score = getPartialScore(question, session, totalCorrect);
79
+ resolve({
80
+ score: enabled ? score : score === 1 ? 1 : 0
81
+ });
82
+ }
83
+ });
138
84
  exports.outcome = outcome;
139
-
140
- function createDefaultModel() {
141
- var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
142
- return new Promise(function (resolve) {
143
- resolve(_objectSpread(_objectSpread({}, _defaults["default"]), model));
85
+ function createDefaultModel(model = {}) {
86
+ return new Promise(resolve => {
87
+ resolve({
88
+ ..._defaults.default,
89
+ ...model
90
+ });
144
91
  });
145
92
  }
146
-
147
- var normalizeSession = function normalizeSession(session) {
148
- return _objectSpread({
149
- selectedTokens: []
150
- }, session);
151
- };
152
-
93
+ const normalizeSession = session => ({
94
+ selectedTokens: [],
95
+ ...session
96
+ });
153
97
  exports.normalizeSession = normalizeSession;
154
-
155
- var normalize = function normalize(question) {
156
- return _objectSpread(_objectSpread({}, _defaults["default"]), question);
157
- };
158
-
98
+ const normalize = question => ({
99
+ ..._defaults.default,
100
+ ...question
101
+ });
159
102
  exports.normalize = normalize;
160
-
161
- var model = function model(question, session, env) {
103
+ const model = (question, session, env) => {
162
104
  session = session || {
163
105
  selectedToken: []
164
106
  };
165
107
  session.selectedTokens = session.selectedTokens || [];
166
- var normalizedQuestion = normalize(question);
167
- return new Promise(function (resolve) {
108
+ const normalizedQuestion = normalize(question);
109
+ return new Promise(resolve => {
168
110
  log('[model]', 'normalizedQuestion: ', normalizedQuestion);
169
111
  log('[model]', 'session: ', session);
170
- var tokens = normalizeTokens(normalizedQuestion.tokens, session.selectedTokens, env.mode === 'evaluate');
112
+ const tokens = normalizeTokens(normalizedQuestion.tokens, session.selectedTokens, env.mode === 'evaluate');
171
113
  log('[model] tokens:', tokens);
172
- var correctness = env.mode === 'evaluate' ? getCorrectness(normalizedQuestion.tokens, session.selectedTokens) : undefined;
173
- var fb = env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled ? (0, _feedback.getFeedbackForCorrectness)(correctness, normalizedQuestion.feedback) : Promise.resolve(undefined);
174
- fb.then(function (feedback) {
175
- var out = {
176
- tokens: tokens,
114
+ const correctness = env.mode === 'evaluate' ? getCorrectness(normalizedQuestion.tokens, session.selectedTokens) : undefined;
115
+ const fb = env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled ? (0, _feedback.getFeedbackForCorrectness)(correctness, normalizedQuestion.feedback) : Promise.resolve(undefined);
116
+ fb.then(feedback => {
117
+ const out = {
118
+ tokens,
177
119
  highlightChoices: normalizedQuestion.highlightChoices,
178
120
  prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,
179
121
  text: normalizedQuestion.text,
180
122
  disabled: env.mode !== 'gather',
181
123
  maxSelections: normalizedQuestion.maxSelections,
182
- correctness: correctness,
183
- env: env,
184
- feedback: feedback,
124
+ correctness,
125
+ env,
126
+ feedback,
185
127
  incorrect: env.mode === 'evaluate' ? correctness !== 'correct' : undefined,
186
128
  language: normalizedQuestion.language,
187
129
  extraCSSRules: normalizedQuestion.extraCSSRules
188
130
  };
189
-
190
131
  if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
191
132
  out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
192
133
  out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
@@ -194,78 +135,62 @@ var model = function model(question, session, env) {
194
135
  out.rationale = null;
195
136
  out.teacherInstructions = null;
196
137
  }
197
-
198
138
  resolve(out);
199
139
  });
200
140
  });
201
141
  };
202
-
203
142
  exports.model = model;
204
-
205
- var createCorrectResponseSession = function createCorrectResponseSession(question, env) {
206
- return new Promise(function (resolve) {
143
+ const createCorrectResponseSession = (question, env) => {
144
+ return new Promise(resolve => {
207
145
  if (env.mode !== 'evaluate' && env.role === 'instructor') {
208
- var tokens = question.tokens;
209
- var selectedTokens = tokens.filter(function (t) {
210
- return t.correct;
211
- });
146
+ const {
147
+ tokens
148
+ } = question;
149
+ const selectedTokens = tokens.filter(t => t.correct);
212
150
  resolve({
213
151
  id: '1',
214
- selectedTokens: selectedTokens
152
+ selectedTokens
215
153
  });
216
154
  } else {
217
155
  resolve(null);
218
156
  }
219
157
  });
220
- }; // remove all html tags
221
-
222
-
223
- exports.createCorrectResponseSession = createCorrectResponseSession;
224
-
225
- var getInnerText = function getInnerText(html) {
226
- return (html || '').replaceAll(/<[^>]*>/g, '');
227
- }; // remove all html tags except img, iframe and source tag for audio
228
-
229
-
230
- var getContent = function getContent(html) {
231
- return (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
232
158
  };
233
159
 
234
- var validate = function validate() {
235
- var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
236
- var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
237
- var tokens = model.tokens;
238
- var _config$minTokens = config.minTokens,
239
- minTokens = _config$minTokens === void 0 ? 2 : _config$minTokens,
240
- maxTokens = config.maxTokens,
241
- maxSelections = config.maxSelections;
242
- var errors = {};
243
- var nbOfTokens = (tokens || []).length;
244
- ['teacherInstructions', 'prompt', 'rationale'].forEach(function (field) {
245
- var _config$field;
246
-
247
- if ((_config$field = config[field]) !== null && _config$field !== void 0 && _config$field.required && !getContent(model[field])) {
160
+ // remove all html tags
161
+ exports.createCorrectResponseSession = createCorrectResponseSession;
162
+ const getInnerText = html => (html || '').replaceAll(/<[^>]*>/g, '');
163
+
164
+ // remove all html tags except img, iframe and source tag for audio
165
+ const getContent = html => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
166
+ const validate = (model = {}, config = {}) => {
167
+ const {
168
+ tokens
169
+ } = model;
170
+ const {
171
+ minTokens = 2,
172
+ maxTokens,
173
+ maxSelections
174
+ } = config;
175
+ const errors = {};
176
+ const nbOfTokens = (tokens || []).length;
177
+ ['teacherInstructions', 'prompt', 'rationale'].forEach(field => {
178
+ if (config[field]?.required && !getContent(model[field])) {
248
179
  errors[field] = 'This field is required.';
249
180
  }
250
181
  });
251
- var nbOfSelections = (tokens || []).reduce(function (acc, token) {
252
- return token.correct ? acc + 1 : acc;
253
- }, 0);
254
-
182
+ const nbOfSelections = (tokens || []).reduce((acc, token) => token.correct ? acc + 1 : acc, 0);
255
183
  if (nbOfTokens < minTokens) {
256
- errors.tokensError = "There should be at least ".concat(minTokens, " tokens defined.");
184
+ errors.tokensError = `There should be at least ${minTokens} tokens defined.`;
257
185
  } else if (nbOfTokens > maxTokens) {
258
- errors.tokensError = "No more than ".concat(maxTokens, " tokens should be defined.");
186
+ errors.tokensError = `No more than ${maxTokens} tokens should be defined.`;
259
187
  }
260
-
261
188
  if (nbOfSelections < 1) {
262
189
  errors.selectionsError = 'There should be at least 1 token selected.';
263
190
  } else if (nbOfSelections > maxSelections) {
264
- errors.selectionsError = "No more than ".concat(maxSelections, " tokens should be selected.");
191
+ errors.selectionsError = `No more than ${maxSelections} tokens should be selected.`;
265
192
  }
266
-
267
193
  return errors;
268
194
  };
269
-
270
195
  exports.validate = validate;
271
196
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","equalTokens","token1","token2","start","end","oldStart","oldEnd","normalizeTokens","tokens","selectedTokens","evaluateMode","map","token","isCorrect","correct","isMissing","find","selectedToken","undefined","getCorrectness","selected","filter","t","length","correctSelected","getCorrectSelected","s","findIndex","getPartialScore","question","session","totalCorrect","correctCount","correctTokens","extraSelected","incorrectCount","count","positiveCount","parseFloat","toFixed","outcome","env","Promise","resolve","score","empty","normalizeSession","mode","completed","enabled","partialScoring","createDefaultModel","model","defaults","normalize","normalizedQuestion","correctness","fb","feedbackEnabled","feedback","then","out","highlightChoices","prompt","promptEnabled","text","disabled","maxSelections","incorrect","language","extraCSSRules","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","minTokens","maxTokens","errors","nbOfTokens","forEach","field","required","nbOfSelections","reduce","acc","tokensError","selectionsError"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nconst log = debug('@pie-element:select-text:controller');\n\nconst equalTokens = (token1 = {}, token2 = {}) =>\n (token1?.start === token2?.start && token1?.end === token2?.end) ||\n // this case is used for the cases when the token's start & end were recalculated\n (token1?.start === token2?.oldStart && token1?.end === token2?.oldEnd);\n\nconst normalizeTokens = (tokens = [], selectedTokens = [], evaluateMode = false) =>\n (tokens || []).map((token) => {\n const isCorrect = !!token.correct;\n // search if correct token is missing from session\n const isMissing = isCorrect && !(selectedTokens || []).find((selectedToken) => equalTokens(token, selectedToken));\n\n return {\n ...token,\n correct: evaluateMode ? isCorrect : undefined,\n isMissing: evaluateMode ? isMissing : undefined,\n };\n });\n\nexport const getCorrectness = (tokens, selected) => {\n const correct = tokens.filter((t) => t.correct === true);\n\n if (correct.length === 0) {\n return 'unknown';\n }\n\n const correctSelected = getCorrectSelected(tokens, selected);\n\n if (correctSelected.length === selected.length) {\n if (correctSelected.length === correct.length) {\n return 'correct';\n } else if (correctSelected.length > 0) {\n return 'partially-correct';\n }\n }\n\n if (correctSelected.length > 0) {\n return 'partially-correct';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectSelected = (tokens, selected) =>\n (selected || []).filter((s) => tokens.findIndex((token) => token.correct && equalTokens(token, s)) !== -1);\n\nexport const getPartialScore = (question, session, totalCorrect) => {\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n const correctCount = getCorrectSelected(question.tokens, session.selectedTokens).length;\n const correctTokens = (question.tokens || []).filter((t) => t.correct === true);\n const extraSelected = session.selectedTokens ? session.selectedTokens.length > correctTokens.length : 0;\n const incorrectCount = extraSelected ? session.selectedTokens && session.selectedTokens.length - correctCount : 0;\n const count = correctCount - incorrectCount;\n const positiveCount = count < 0 ? 0 : count;\n\n return totalCorrect.length ? parseFloat((positiveCount / totalCorrect.length).toFixed(2)) : 0;\n};\n\nexport const outcome = (question, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n session = normalizeSession(session);\n\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n const enabled = partialScoring.enabled(question, env, true);\n const totalCorrect = question.tokens.filter((t) => t.correct);\n const score = getPartialScore(question, session, totalCorrect);\n resolve({\n score: enabled ? score : score === 1 ? 1 : 0,\n });\n }\n });\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({ ...defaults, ...model });\n });\n}\n\nexport const normalizeSession = (session) => ({ selectedTokens: [], ...session });\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nexport const model = (question, session, env) => {\n session = session || { selectedToken: [] };\n session.selectedTokens = session.selectedTokens || [];\n const normalizedQuestion = normalize(question);\n\n return new Promise((resolve) => {\n log('[model]', 'normalizedQuestion: ', normalizedQuestion);\n log('[model]', 'session: ', session);\n\n const tokens = normalizeTokens(normalizedQuestion.tokens, session.selectedTokens, env.mode === 'evaluate');\n log('[model] tokens:', tokens);\n\n const correctness =\n env.mode === 'evaluate' ? getCorrectness(normalizedQuestion.tokens, session.selectedTokens) : undefined;\n\n const fb =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const out = {\n tokens,\n highlightChoices: normalizedQuestion.highlightChoices,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n text: normalizedQuestion.text,\n disabled: env.mode !== 'gather',\n maxSelections: normalizedQuestion.maxSelections,\n correctness,\n env,\n feedback,\n incorrect: env.mode === 'evaluate' ? correctness !== 'correct' : undefined,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n });\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { tokens } = question;\n const selectedTokens = tokens.filter((t) => t.correct);\n\n resolve({\n id: '1',\n selectedTokens,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { tokens } = model;\n const { minTokens = 2, maxTokens, maxSelections } = config;\n const errors = {};\n const nbOfTokens = (tokens || []).length;\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const nbOfSelections = (tokens || []).reduce((acc, token) => (token.correct ? acc + 1 : acc), 0);\n\n if (nbOfTokens < minTokens) {\n errors.tokensError = `There should be at least ${minTokens} tokens defined.`;\n } else if (nbOfTokens > maxTokens) {\n errors.tokensError = `No more than ${maxTokens} tokens should be defined.`;\n }\n\n if (nbOfSelections < 1) {\n errors.selectionsError = 'There should be at least 1 token selected.';\n } else if (nbOfSelections > maxSelections) {\n errors.selectionsError = `No more than ${maxSelections} tokens should be selected.`;\n }\n\n return errors;\n};\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["_debug","_interopRequireDefault","require","_isEmpty","_feedback","_controllerUtils","_defaults","log","debug","equalTokens","token1","token2","start","end","oldStart","oldEnd","normalizeTokens","tokens","selectedTokens","evaluateMode","map","token","isCorrect","correct","isMissing","find","selectedToken","undefined","getCorrectness","selected","filter","t","length","correctSelected","getCorrectSelected","exports","s","findIndex","getPartialScore","question","session","totalCorrect","isEmpty","correctCount","correctTokens","extraSelected","incorrectCount","count","positiveCount","parseFloat","toFixed","outcome","env","Promise","resolve","score","empty","normalizeSession","mode","completed","enabled","partialScoring","createDefaultModel","model","defaults","normalize","normalizedQuestion","correctness","fb","feedbackEnabled","getFeedbackForCorrectness","feedback","then","out","highlightChoices","prompt","promptEnabled","text","disabled","maxSelections","incorrect","language","extraCSSRules","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","minTokens","maxTokens","errors","nbOfTokens","forEach","field","required","nbOfSelections","reduce","acc","tokensError","selectionsError"],"sources":["../src/index.js"],"sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nconst log = debug('@pie-element:select-text:controller');\n\nconst equalTokens = (token1 = {}, token2 = {}) =>\n (token1?.start === token2?.start && token1?.end === token2?.end) ||\n // this case is used for the cases when the token's start & end were recalculated\n (token1?.start === token2?.oldStart && token1?.end === token2?.oldEnd);\n\nconst normalizeTokens = (tokens = [], selectedTokens = [], evaluateMode = false) =>\n (tokens || []).map((token) => {\n const isCorrect = !!token.correct;\n // search if correct token is missing from session\n const isMissing = isCorrect && !(selectedTokens || []).find((selectedToken) => equalTokens(token, selectedToken));\n\n return {\n ...token,\n correct: evaluateMode ? isCorrect : undefined,\n isMissing: evaluateMode ? isMissing : undefined,\n };\n });\n\nexport const getCorrectness = (tokens, selected) => {\n const correct = tokens.filter((t) => t.correct === true);\n\n if (correct.length === 0) {\n return 'unknown';\n }\n\n const correctSelected = getCorrectSelected(tokens, selected);\n\n if (correctSelected.length === selected.length) {\n if (correctSelected.length === correct.length) {\n return 'correct';\n } else if (correctSelected.length > 0) {\n return 'partially-correct';\n }\n }\n\n if (correctSelected.length > 0) {\n return 'partially-correct';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectSelected = (tokens, selected) =>\n (selected || []).filter((s) => tokens.findIndex((token) => token.correct && equalTokens(token, s)) !== -1);\n\nexport const getPartialScore = (question, session, totalCorrect) => {\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n const correctCount = getCorrectSelected(question.tokens, session.selectedTokens).length;\n const correctTokens = (question.tokens || []).filter((t) => t.correct === true);\n const extraSelected = session.selectedTokens ? session.selectedTokens.length > correctTokens.length : 0;\n const incorrectCount = extraSelected ? session.selectedTokens && session.selectedTokens.length - correctCount : 0;\n const count = correctCount - incorrectCount;\n const positiveCount = count < 0 ? 0 : count;\n\n return totalCorrect.length ? parseFloat((positiveCount / totalCorrect.length).toFixed(2)) : 0;\n};\n\nexport const outcome = (question, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n session = normalizeSession(session);\n\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n const enabled = partialScoring.enabled(question, env, true);\n const totalCorrect = question.tokens.filter((t) => t.correct);\n const score = getPartialScore(question, session, totalCorrect);\n resolve({\n score: enabled ? score : score === 1 ? 1 : 0,\n });\n }\n });\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({ ...defaults, ...model });\n });\n}\n\nexport const normalizeSession = (session) => ({ selectedTokens: [], ...session });\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nexport const model = (question, session, env) => {\n session = session || { selectedToken: [] };\n session.selectedTokens = session.selectedTokens || [];\n const normalizedQuestion = normalize(question);\n\n return new Promise((resolve) => {\n log('[model]', 'normalizedQuestion: ', normalizedQuestion);\n log('[model]', 'session: ', session);\n\n const tokens = normalizeTokens(normalizedQuestion.tokens, session.selectedTokens, env.mode === 'evaluate');\n log('[model] tokens:', tokens);\n\n const correctness =\n env.mode === 'evaluate' ? getCorrectness(normalizedQuestion.tokens, session.selectedTokens) : undefined;\n\n const fb =\n env.mode === 'evaluate' && normalizedQuestion.feedbackEnabled\n ? getFeedbackForCorrectness(correctness, normalizedQuestion.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const out = {\n tokens,\n highlightChoices: normalizedQuestion.highlightChoices,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n text: normalizedQuestion.text,\n disabled: env.mode !== 'gather',\n maxSelections: normalizedQuestion.maxSelections,\n correctness,\n env,\n feedback,\n incorrect: env.mode === 'evaluate' ? correctness !== 'correct' : undefined,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n });\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { tokens } = question;\n const selectedTokens = tokens.filter((t) => t.correct);\n\n resolve({\n id: '1',\n selectedTokens,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { tokens } = model;\n const { minTokens = 2, maxTokens, maxSelections } = config;\n const errors = {};\n const nbOfTokens = (tokens || []).length;\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const nbOfSelections = (tokens || []).reduce((acc, token) => (token.correct ? acc + 1 : acc), 0);\n\n if (nbOfTokens < minTokens) {\n errors.tokensError = `There should be at least ${minTokens} tokens defined.`;\n } else if (nbOfTokens > maxTokens) {\n errors.tokensError = `No more than ${maxTokens} tokens should be defined.`;\n }\n\n if (nbOfSelections < 1) {\n errors.selectionsError = 'There should be at least 1 token selected.';\n } else if (nbOfSelections > maxSelections) {\n errors.selectionsError = `No more than ${maxSelections} tokens should be selected.`;\n }\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@pie-element/select-text-controller",
3
3
  "private": true,
4
- "version": "7.3.3",
4
+ "version": "8.0.0-beta.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "dependencies": {
9
- "@pie-lib/controller-utils": "0.22.2",
10
- "@pie-lib/feedback": "0.24.1",
9
+ "@pie-lib/controller-utils": "0.22.4-next.0",
10
+ "@pie-lib/feedback": "0.24.3-next.0",
11
11
  "debug": "^3.1.0",
12
12
  "lodash": "^4.17.15"
13
13
  },