@pie-element/hotspot 9.0.0 → 9.0.1-esm.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.
- package/configure/package.json +1 -1
- package/controller/package.json +1 -1
- package/esm/controller.js +398 -0
- package/esm/controller.js.map +1 -0
- package/package.json +10 -3
package/configure/package.json
CHANGED
package/controller/package.json
CHANGED
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import isEmpty from 'lodash/isEmpty';
|
|
3
|
+
import { partialScoring } from '@pie-lib/controller-utils';
|
|
4
|
+
import isEqual from 'lodash/isEqual';
|
|
5
|
+
|
|
6
|
+
function ownKeys(object, enumerableOnly) {
|
|
7
|
+
var keys = Object.keys(object);
|
|
8
|
+
|
|
9
|
+
if (Object.getOwnPropertySymbols) {
|
|
10
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
11
|
+
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
12
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
13
|
+
})), keys.push.apply(keys, symbols);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return keys;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function _objectSpread2(target) {
|
|
20
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
21
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
22
|
+
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
23
|
+
_defineProperty(target, key, source[key]);
|
|
24
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
25
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return target;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function _defineProperty(obj, key, value) {
|
|
33
|
+
if (key in obj) {
|
|
34
|
+
Object.defineProperty(obj, key, {
|
|
35
|
+
value: value,
|
|
36
|
+
enumerable: true,
|
|
37
|
+
configurable: true,
|
|
38
|
+
writable: true
|
|
39
|
+
});
|
|
40
|
+
} else {
|
|
41
|
+
obj[key] = value;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
48
|
+
if (source == null) return {};
|
|
49
|
+
var target = {};
|
|
50
|
+
var sourceKeys = Object.keys(source);
|
|
51
|
+
var key, i;
|
|
52
|
+
|
|
53
|
+
for (i = 0; i < sourceKeys.length; i++) {
|
|
54
|
+
key = sourceKeys[i];
|
|
55
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
56
|
+
target[key] = source[key];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return target;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function _objectWithoutProperties(source, excluded) {
|
|
63
|
+
if (source == null) return {};
|
|
64
|
+
|
|
65
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
66
|
+
|
|
67
|
+
var key, i;
|
|
68
|
+
|
|
69
|
+
if (Object.getOwnPropertySymbols) {
|
|
70
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
71
|
+
|
|
72
|
+
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
73
|
+
key = sourceSymbolKeys[i];
|
|
74
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
75
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
76
|
+
target[key] = source[key];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return target;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
var getCorrectResponse = choices => choices.filter(c => c.correct).map(c => c.id).sort();
|
|
84
|
+
var isResponseCorrect = (question, session) => {
|
|
85
|
+
var {
|
|
86
|
+
shapes: {
|
|
87
|
+
rectangles = [],
|
|
88
|
+
polygons = [],
|
|
89
|
+
circles = []
|
|
90
|
+
}
|
|
91
|
+
} = question;
|
|
92
|
+
var choices = [...rectangles, ...polygons, ...circles];
|
|
93
|
+
var correctResponseIds = getCorrectResponse(choices);
|
|
94
|
+
|
|
95
|
+
if (!session || isEmpty(session)) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (session.answers && session.answers.length) {
|
|
100
|
+
var answerIds = (session.answers || []).map(a => a.id);
|
|
101
|
+
return isEqual(answerIds.sort(), correctResponseIds);
|
|
102
|
+
} else if (!(correctResponseIds && correctResponseIds.length)) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return false;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
var defaults = {
|
|
110
|
+
dimensions: {
|
|
111
|
+
height: 0,
|
|
112
|
+
width: 0
|
|
113
|
+
},
|
|
114
|
+
hotspotColor: 'rgba(137, 183, 244, 0.25)',
|
|
115
|
+
hotspotList: ['rgba(137, 183, 244, 0.25)'],
|
|
116
|
+
imageUrl: '',
|
|
117
|
+
multipleCorrect: true,
|
|
118
|
+
outlineColor: 'blue',
|
|
119
|
+
outlineList: ['blue'],
|
|
120
|
+
partialScoring: false,
|
|
121
|
+
prompt: '',
|
|
122
|
+
promptEnabled: true,
|
|
123
|
+
rationaleEnabled: true,
|
|
124
|
+
shapes: {
|
|
125
|
+
rectangles: [],
|
|
126
|
+
polygons: [],
|
|
127
|
+
circles: []
|
|
128
|
+
},
|
|
129
|
+
strokeWidth: 5,
|
|
130
|
+
studentInstructionsEnabled: true,
|
|
131
|
+
teacherInstructions: '',
|
|
132
|
+
teacherInstructionsEnabled: true,
|
|
133
|
+
toolbarEditorPosition: 'bottom'
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
var _excluded = ["index", "correct"],
|
|
137
|
+
_excluded2 = ["index", "correct"],
|
|
138
|
+
_excluded3 = ["index", "correct"];
|
|
139
|
+
var log = debug('pie-elements:hotspot:controller');
|
|
140
|
+
var normalize = question => _objectSpread2(_objectSpread2({}, defaults), question);
|
|
141
|
+
function model(question, session, env) {
|
|
142
|
+
var normalizedQuestion = normalize(question);
|
|
143
|
+
var {
|
|
144
|
+
imageUrl,
|
|
145
|
+
dimensions,
|
|
146
|
+
hotspotColor,
|
|
147
|
+
hoverOutlineColor,
|
|
148
|
+
selectedHotspotColor,
|
|
149
|
+
multipleCorrect,
|
|
150
|
+
outlineColor,
|
|
151
|
+
partialScoring,
|
|
152
|
+
prompt,
|
|
153
|
+
shapes,
|
|
154
|
+
language,
|
|
155
|
+
fontSizeFactor,
|
|
156
|
+
autoplayAudioEnabled,
|
|
157
|
+
completeAudioEnabled,
|
|
158
|
+
customAudioButton
|
|
159
|
+
} = normalizedQuestion;
|
|
160
|
+
var {
|
|
161
|
+
rectangles,
|
|
162
|
+
polygons,
|
|
163
|
+
circles
|
|
164
|
+
} = shapes || {};
|
|
165
|
+
var shouldIncludeCorrectResponse = env.mode === 'evaluate' || env.role === 'instructor' && env.mode === 'view';
|
|
166
|
+
return new Promise(resolve => {
|
|
167
|
+
var out = {
|
|
168
|
+
disabled: env.mode !== 'gather',
|
|
169
|
+
mode: env.mode,
|
|
170
|
+
dimensions,
|
|
171
|
+
imageUrl,
|
|
172
|
+
outlineColor,
|
|
173
|
+
hotspotColor,
|
|
174
|
+
hoverOutlineColor,
|
|
175
|
+
selectedHotspotColor,
|
|
176
|
+
multipleCorrect,
|
|
177
|
+
partialScoring,
|
|
178
|
+
language,
|
|
179
|
+
fontSizeFactor,
|
|
180
|
+
autoplayAudioEnabled,
|
|
181
|
+
completeAudioEnabled,
|
|
182
|
+
customAudioButton,
|
|
183
|
+
shapes: _objectSpread2(_objectSpread2({}, shapes), {}, {
|
|
184
|
+
// eslint-disable-next-line no-unused-vars
|
|
185
|
+
rectangles: (rectangles || []).map(_ref => {
|
|
186
|
+
var {
|
|
187
|
+
index,
|
|
188
|
+
correct
|
|
189
|
+
} = _ref,
|
|
190
|
+
rectProps = _objectWithoutProperties(_ref, _excluded);
|
|
191
|
+
|
|
192
|
+
return shouldIncludeCorrectResponse ? _objectSpread2({
|
|
193
|
+
correct
|
|
194
|
+
}, rectProps) : _objectSpread2({}, rectProps);
|
|
195
|
+
}),
|
|
196
|
+
// eslint-disable-next-line no-unused-vars
|
|
197
|
+
polygons: (polygons || []).map(_ref2 => {
|
|
198
|
+
var {
|
|
199
|
+
index,
|
|
200
|
+
correct
|
|
201
|
+
} = _ref2,
|
|
202
|
+
polyProps = _objectWithoutProperties(_ref2, _excluded2);
|
|
203
|
+
|
|
204
|
+
return shouldIncludeCorrectResponse ? _objectSpread2({
|
|
205
|
+
correct
|
|
206
|
+
}, polyProps) : _objectSpread2({}, polyProps);
|
|
207
|
+
}),
|
|
208
|
+
// eslint-disable-next-line no-unused-vars
|
|
209
|
+
circles: (circles || []).map(_ref3 => {
|
|
210
|
+
var {
|
|
211
|
+
index,
|
|
212
|
+
correct
|
|
213
|
+
} = _ref3,
|
|
214
|
+
circleProps = _objectWithoutProperties(_ref3, _excluded3);
|
|
215
|
+
|
|
216
|
+
return shouldIncludeCorrectResponse ? _objectSpread2({
|
|
217
|
+
correct
|
|
218
|
+
}, circleProps) : _objectSpread2({}, circleProps);
|
|
219
|
+
})
|
|
220
|
+
}),
|
|
221
|
+
responseCorrect: env.mode === 'evaluate' ? isResponseCorrect(normalizedQuestion, session) : undefined,
|
|
222
|
+
extraCSSRules: normalizedQuestion.extraCSSRules
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
226
|
+
out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
227
|
+
out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
|
|
228
|
+
} else {
|
|
229
|
+
out.rationale = null;
|
|
230
|
+
out.teacherInstructions = null;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
out.prompt = normalizedQuestion.promptEnabled ? prompt : null;
|
|
234
|
+
out.strokeWidth = normalizedQuestion.strokeWidth;
|
|
235
|
+
resolve(out);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
var createDefaultModel = function createDefaultModel() {
|
|
239
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
240
|
+
return new Promise(resolve => {
|
|
241
|
+
resolve(_objectSpread2(_objectSpread2({}, defaults), model));
|
|
242
|
+
});
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
var getScore = function getScore(config, session) {
|
|
246
|
+
var env = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
247
|
+
var {
|
|
248
|
+
answers
|
|
249
|
+
} = session || {};
|
|
250
|
+
|
|
251
|
+
if (!config.shapes || !config.shapes.rectangles && !config.shapes.polygons && !config.shapes.circles) {
|
|
252
|
+
return 0;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
var {
|
|
256
|
+
shapes: {
|
|
257
|
+
rectangles = [],
|
|
258
|
+
polygons = [],
|
|
259
|
+
circles = []
|
|
260
|
+
} = {}
|
|
261
|
+
} = config;
|
|
262
|
+
var partialScoringEnabled = partialScoring.enabled(config, env);
|
|
263
|
+
|
|
264
|
+
if (!partialScoringEnabled) {
|
|
265
|
+
return isResponseCorrect(config, session) ? 1 : 0;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
var correctAnswers = 0;
|
|
269
|
+
var selectedChoices = 0;
|
|
270
|
+
var choices = [...rectangles, ...polygons, ...circles];
|
|
271
|
+
var correctChoices = choices.filter(choice => choice.correct);
|
|
272
|
+
choices.forEach(shape => {
|
|
273
|
+
var selected = answers && answers.filter(answer => answer.id === shape.id)[0];
|
|
274
|
+
var correctlySelected = shape.correct && selected;
|
|
275
|
+
|
|
276
|
+
if (selected) {
|
|
277
|
+
selectedChoices += 1;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (correctlySelected) {
|
|
281
|
+
correctAnswers += 1;
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
var extraAnswers = selectedChoices > correctChoices.length ? selectedChoices - correctChoices.length : 0;
|
|
285
|
+
var total = correctChoices.length === 0 ? 1 : correctChoices.length;
|
|
286
|
+
var str = ((correctAnswers - extraAnswers) / total).toFixed(2);
|
|
287
|
+
return str < 0 ? 0 : parseFloat(str);
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
function outcome(config, session) {
|
|
291
|
+
var env = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
292
|
+
return new Promise(resolve => {
|
|
293
|
+
log('outcome...');
|
|
294
|
+
|
|
295
|
+
if (!session || isEmpty(session)) {
|
|
296
|
+
resolve({
|
|
297
|
+
score: 0,
|
|
298
|
+
empty: true
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (session.answers) {
|
|
303
|
+
var score = getScore(config, session, env);
|
|
304
|
+
resolve({
|
|
305
|
+
score
|
|
306
|
+
});
|
|
307
|
+
} else {
|
|
308
|
+
resolve({
|
|
309
|
+
score: 0,
|
|
310
|
+
empty: true
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
var returnShapesCorrect = shapes => {
|
|
317
|
+
var answers = [];
|
|
318
|
+
shapes.forEach(i => {
|
|
319
|
+
var {
|
|
320
|
+
correct,
|
|
321
|
+
id
|
|
322
|
+
} = i;
|
|
323
|
+
|
|
324
|
+
if (correct) {
|
|
325
|
+
answers.push({
|
|
326
|
+
id
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
return answers;
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
var createCorrectResponseSession = (question, env) => {
|
|
334
|
+
return new Promise(resolve => {
|
|
335
|
+
if (env.mode !== 'evaluate' && env.role === 'instructor') {
|
|
336
|
+
var {
|
|
337
|
+
shapes: {
|
|
338
|
+
rectangles = [],
|
|
339
|
+
circles = [],
|
|
340
|
+
polygons = {}
|
|
341
|
+
} = {}
|
|
342
|
+
} = question;
|
|
343
|
+
var rectangleCorrect = returnShapesCorrect(rectangles);
|
|
344
|
+
var polygonsCorrect = returnShapesCorrect(polygons);
|
|
345
|
+
var circlesCorrect = returnShapesCorrect(circles);
|
|
346
|
+
resolve({
|
|
347
|
+
answers: [...rectangleCorrect, ...polygonsCorrect, ...circlesCorrect],
|
|
348
|
+
id: '1'
|
|
349
|
+
});
|
|
350
|
+
} else {
|
|
351
|
+
resolve(null);
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
}; // remove all html tags
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
var getContent = html => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');
|
|
358
|
+
|
|
359
|
+
var validate = function validate() {
|
|
360
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
361
|
+
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
362
|
+
var {
|
|
363
|
+
shapes
|
|
364
|
+
} = model;
|
|
365
|
+
var {
|
|
366
|
+
minShapes = 2,
|
|
367
|
+
maxShapes,
|
|
368
|
+
maxSelections
|
|
369
|
+
} = config;
|
|
370
|
+
var errors = {};
|
|
371
|
+
['teacherInstructions', 'prompt', 'rationale'].forEach(field => {
|
|
372
|
+
var _config$field;
|
|
373
|
+
|
|
374
|
+
if ((_config$field = config[field]) !== null && _config$field !== void 0 && _config$field.required && !getContent(model[field])) {
|
|
375
|
+
errors[field] = 'This field is required.';
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
var allShapes = Object.values(shapes || {}).reduce((acc, shape) => [...acc, ...shape], []);
|
|
379
|
+
var nbOfSelections = (allShapes || []).reduce((acc, shape) => shape.correct ? acc + 1 : acc, 0);
|
|
380
|
+
var nbOfShapes = (allShapes || []).length;
|
|
381
|
+
|
|
382
|
+
if (nbOfShapes < minShapes) {
|
|
383
|
+
errors.shapes = "There should be at least ".concat(minShapes, " shapes defined.");
|
|
384
|
+
} else if (nbOfShapes > maxShapes) {
|
|
385
|
+
errors.shapes = "No more than ".concat(maxShapes, " shapes should be defined.");
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
if (nbOfSelections < 1) {
|
|
389
|
+
errors.selections = 'There should be at least 1 shape selected.';
|
|
390
|
+
} else if (nbOfSelections > maxSelections) {
|
|
391
|
+
errors.selections = "No more than ".concat(maxSelections, " shapes should be selected.");
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
return errors;
|
|
395
|
+
};
|
|
396
|
+
|
|
397
|
+
export { createCorrectResponseSession, createDefaultModel, model, normalize, outcome, validate };
|
|
398
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sources":["../controller/src/utils.js","../controller/src/defaults.js","../controller/src/index.js"],"sourcesContent":["import isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\n\nexport const getCorrectResponse = (choices) =>\n choices\n .filter((c) => c.correct)\n .map((c) => c.id)\n .sort();\n\nexport const isResponseCorrect = (question, session) => {\n const {\n shapes: { rectangles = [], polygons = [], circles = [] },\n } = question;\n const choices = [...rectangles, ...polygons, ...circles];\n let correctResponseIds = getCorrectResponse(choices);\n\n if (!session || isEmpty(session)) {\n return false;\n }\n\n if (session.answers && session.answers.length) {\n let answerIds = (session.answers || []).map((a) => a.id);\n\n return isEqual(answerIds.sort(), correctResponseIds);\n } else if (!(correctResponseIds && correctResponseIds.length)) {\n return true;\n }\n\n return false;\n};\n","export default {\n dimensions: { height: 0, width: 0 },\n hotspotColor: 'rgba(137, 183, 244, 0.25)',\n hotspotList: ['rgba(137, 183, 244, 0.25)'],\n imageUrl: '',\n multipleCorrect: true,\n outlineColor: 'blue',\n outlineList: ['blue'],\n partialScoring: false,\n prompt: '',\n promptEnabled: true,\n rationaleEnabled: true,\n shapes: { rectangles: [], polygons: [], circles: [] },\n strokeWidth: 5,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n};\n","import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nimport { isResponseCorrect } from './utils';\n\nimport defaults from './defaults';\n\nconst log = debug('pie-elements:hotspot:controller');\n\nexport const normalize = (question) => ({\n ...defaults,\n ...question,\n});\n\nexport function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n const {\n imageUrl,\n dimensions,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n multipleCorrect,\n outlineColor,\n partialScoring,\n prompt,\n shapes,\n language,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton,\n } = normalizedQuestion;\n const { rectangles, polygons, circles } = shapes || {};\n\n const shouldIncludeCorrectResponse = env.mode === 'evaluate' || (env.role === 'instructor' && env.mode === 'view');\n\n return new Promise((resolve) => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n dimensions,\n imageUrl,\n outlineColor,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n multipleCorrect,\n partialScoring,\n language,\n fontSizeFactor,\n autoplayAudioEnabled,\n completeAudioEnabled,\n customAudioButton,\n shapes: {\n ...shapes,\n // eslint-disable-next-line no-unused-vars\n rectangles: (rectangles || []).map(({ index, correct, ...rectProps }) =>\n shouldIncludeCorrectResponse ? { correct, ...rectProps } : { ...rectProps },\n ),\n // eslint-disable-next-line no-unused-vars\n polygons: (polygons || []).map(({ index, correct, ...polyProps }) =>\n shouldIncludeCorrectResponse ? { correct, ...polyProps } : { ...polyProps },\n ),\n // eslint-disable-next-line no-unused-vars\n circles: (circles || []).map(({ index, correct, ...circleProps }) =>\n shouldIncludeCorrectResponse ? { correct, ...circleProps } : { ...circleProps },\n ),\n },\n responseCorrect: env.mode === 'evaluate' ? isResponseCorrect(normalizedQuestion, session) : undefined,\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 out.prompt = normalizedQuestion.promptEnabled ? prompt : null;\n out.strokeWidth = normalizedQuestion.strokeWidth;\n\n resolve(out);\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nconst getScore = (config, session, env = {}) => {\n const { answers } = session || {};\n\n if (!config.shapes || (!config.shapes.rectangles && !config.shapes.polygons && !config.shapes.circles)) {\n return 0;\n }\n\n const { shapes: { rectangles = [], polygons = [], circles = [] } = {} } = config;\n const partialScoringEnabled = partialScoring.enabled(config, env);\n\n if (!partialScoringEnabled) {\n return isResponseCorrect(config, session) ? 1 : 0;\n }\n\n let correctAnswers = 0;\n let selectedChoices = 0;\n\n const choices = [...rectangles, ...polygons, ...circles];\n\n const correctChoices = choices.filter((choice) => choice.correct);\n\n choices.forEach((shape) => {\n const selected = answers && answers.filter((answer) => answer.id === shape.id)[0];\n const correctlySelected = shape.correct && selected;\n\n if (selected) {\n selectedChoices += 1;\n }\n\n if (correctlySelected) {\n correctAnswers += 1;\n }\n });\n\n const extraAnswers = selectedChoices > correctChoices.length ? selectedChoices - correctChoices.length : 0;\n\n const total = correctChoices.length === 0 ? 1 : correctChoices.length;\n const str = ((correctAnswers - extraAnswers) / total).toFixed(2);\n\n return str < 0 ? 0 : parseFloat(str);\n};\n\nexport function outcome(config, session, env = {}) {\n return new Promise((resolve) => {\n log('outcome...');\n\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n if (session.answers) {\n const score = getScore(config, session, env);\n resolve({ score });\n } else {\n resolve({ score: 0, empty: true });\n }\n });\n}\n\nconst returnShapesCorrect = (shapes) => {\n let answers = [];\n\n shapes.forEach((i) => {\n const { correct, id } = i;\n if (correct) {\n answers.push({ id });\n }\n });\n return answers;\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { shapes: { rectangles = [], circles = [], polygons = {} } = {} } = question;\n\n const rectangleCorrect = returnShapesCorrect(rectangles);\n const polygonsCorrect = returnShapesCorrect(polygons);\n const circlesCorrect = returnShapesCorrect(circles);\n\n resolve({\n answers: [...rectangleCorrect, ...polygonsCorrect, ...circlesCorrect],\n id: '1',\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 { shapes } = model;\n const { minShapes = 2, maxShapes, maxSelections } = config;\n const errors = {};\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 allShapes = Object.values(shapes || {}).reduce((acc, shape) => [...acc, ...shape], []);\n\n const nbOfSelections = (allShapes || []).reduce((acc, shape) => (shape.correct ? acc + 1 : acc), 0);\n\n const nbOfShapes = (allShapes || []).length;\n\n if (nbOfShapes < minShapes) {\n errors.shapes = `There should be at least ${minShapes} shapes defined.`;\n } else if (nbOfShapes > maxShapes) {\n errors.shapes = `No more than ${maxShapes} shapes should be defined.`;\n }\n\n if (nbOfSelections < 1) {\n errors.selections = 'There should be at least 1 shape selected.';\n } else if (nbOfSelections > maxSelections) {\n errors.selections = `No more than ${maxSelections} shapes should be selected.`;\n }\n\n return errors;\n};\n"],"names":["getCorrectResponse","choices","filter","c","correct","map","id","sort","isResponseCorrect","question","session","shapes","rectangles","polygons","circles","correctResponseIds","isEmpty","answers","length","answerIds","a","isEqual","dimensions","height","width","hotspotColor","hotspotList","imageUrl","multipleCorrect","outlineColor","outlineList","partialScoring","prompt","promptEnabled","rationaleEnabled","strokeWidth","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","log","debug","normalize","defaults","model","env","normalizedQuestion","hoverOutlineColor","selectedHotspotColor","language","fontSizeFactor","autoplayAudioEnabled","completeAudioEnabled","customAudioButton","shouldIncludeCorrectResponse","mode","role","Promise","resolve","out","disabled","index","rectProps","_objectSpread","polyProps","circleProps","responseCorrect","undefined","extraCSSRules","rationale","createDefaultModel","getScore","config","partialScoringEnabled","enabled","correctAnswers","selectedChoices","correctChoices","choice","forEach","shape","selected","answer","correctlySelected","extraAnswers","total","str","toFixed","parseFloat","outcome","score","empty","returnShapesCorrect","i","push","createCorrectResponseSession","rectangleCorrect","polygonsCorrect","circlesCorrect","getContent","html","replace","validate","minShapes","maxShapes","maxSelections","errors","field","required","allShapes","Object","values","reduce","acc","nbOfSelections","nbOfShapes","selections"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/hotspot",
|
|
3
|
-
"version": "9.0.0",
|
|
3
|
+
"version": "9.0.1-esm.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": "pie-framework/pie-elements",
|
|
6
6
|
"publishConfig": {
|
|
@@ -21,10 +21,17 @@
|
|
|
21
21
|
},
|
|
22
22
|
"author": "pie framework developers",
|
|
23
23
|
"license": "ISC",
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "8a8ab6fc8351e5021a69230889157a4a38d80e83",
|
|
25
25
|
"scripts": {
|
|
26
26
|
"postpublish": "../../scripts/postpublish"
|
|
27
27
|
},
|
|
28
28
|
"main": "lib/index.js",
|
|
29
|
-
"module": "src/index.js"
|
|
29
|
+
"module": "src/index.js",
|
|
30
|
+
"exports": {
|
|
31
|
+
"./controller": {
|
|
32
|
+
"import": "./esm/controller.js",
|
|
33
|
+
"require": "./controller/lib/index.js",
|
|
34
|
+
"default": "./esm/controller.js"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
30
37
|
}
|