@pie-element/ebsr 12.3.4-next.3 → 13.0.0-beta.1
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 +0 -11
- package/configure/CHANGELOG.md +0 -11
- package/configure/lib/defaults.js +23 -36
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +114 -202
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +188 -271
- package/configure/lib/main.js.map +1 -1
- package/configure/package.json +9 -6
- package/configure/src/__tests__/index.test.js +99 -108
- package/configure/src/index.js +13 -6
- package/configure/src/main.jsx +14 -18
- package/controller/CHANGELOG.md +0 -11
- package/controller/lib/defaults.js +20 -32
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +224 -349
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +4 -18
- package/controller/lib/utils.js.map +1 -1
- package/controller/package.json +3 -3
- package/lib/index.js +113 -181
- package/lib/index.js.map +1 -1
- package/lib/print.js +120 -204
- package/lib/print.js.map +1 -1
- package/package.json +5 -13
- package/src/__tests__/index.test.js +18 -5
- package/configure/src/__tests__/__snapshots__/index.test.js.snap +0 -83
- package/esm/configure.js +0 -12003
- package/esm/configure.js.map +0 -1
- package/esm/controller.js +0 -3358
- package/esm/controller.js.map +0 -1
- package/esm/element.js +0 -2203
- package/esm/element.js.map +0 -1
- package/esm/package.json +0 -3
- package/esm/print.js +0 -4092
- package/esm/print.js.map +0 -1
- package/module/configure.js +0 -1
- package/module/controller.js +0 -6469
- package/module/demo.js +0 -77
- package/module/element.js +0 -1
- package/module/index.html +0 -21
- package/module/manifest.json +0 -14
- package/module/print-demo.js +0 -115
- package/module/print.html +0 -18
- package/module/print.js +0 -1
package/lib/print.js
CHANGED
|
@@ -1,52 +1,24 @@
|
|
|
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
|
-
exports.isSessionComplete = exports
|
|
9
|
-
|
|
10
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
-
|
|
12
|
-
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
13
|
-
|
|
7
|
+
exports.isSessionComplete = exports.default = void 0;
|
|
14
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
9
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
27
|
-
|
|
28
10
|
var _multipleChoice = _interopRequireDefault(require("@pie-element/multiple-choice"));
|
|
29
|
-
|
|
30
11
|
var _debug = _interopRequireDefault(require("debug"));
|
|
31
|
-
|
|
32
12
|
var _get = _interopRequireDefault(require("lodash/get"));
|
|
33
|
-
|
|
34
13
|
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
35
|
-
|
|
36
14
|
var _translator = _interopRequireDefault(require("@pie-lib/translator"));
|
|
15
|
+
const MC_TAG_NAME = 'ebsr-multiple-choice';
|
|
16
|
+
const SESSION_CHANGED = _piePlayerEvents.SessionChangedEvent.TYPE;
|
|
17
|
+
const {
|
|
18
|
+
translator
|
|
19
|
+
} = _translator.default;
|
|
20
|
+
const log = (0, _debug.default)('pie-element:ebsr:print');
|
|
37
21
|
|
|
38
|
-
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; }
|
|
39
|
-
|
|
40
|
-
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; }
|
|
41
|
-
|
|
42
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
43
|
-
|
|
44
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
45
|
-
|
|
46
|
-
var MC_TAG_NAME = 'ebsr-multiple-choice';
|
|
47
|
-
var SESSION_CHANGED = _piePlayerEvents.SessionChangedEvent.TYPE;
|
|
48
|
-
var translator = _translator["default"].translator;
|
|
49
|
-
var log = (0, _debug["default"])('pie-element:ebsr:print');
|
|
50
22
|
/**
|
|
51
23
|
* Live in same package as main element - so we can access some of the shared comps!
|
|
52
24
|
*
|
|
@@ -55,8 +27,8 @@ var log = (0, _debug["default"])('pie-element:ebsr:print');
|
|
|
55
27
|
* - get configure/controller building
|
|
56
28
|
*/
|
|
57
29
|
|
|
58
|
-
|
|
59
|
-
|
|
30
|
+
const preparePrintModel = (model, opts) => {
|
|
31
|
+
const instr = opts.role === 'instructor';
|
|
60
32
|
model.prompt = model.promptEnabled !== false ? model.prompt : undefined;
|
|
61
33
|
model.teacherInstructions = instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;
|
|
62
34
|
model.showTeacherInstructions = instr;
|
|
@@ -66,8 +38,8 @@ var preparePrintModel = function preparePrintModel(model, opts) {
|
|
|
66
38
|
model.animationsDisabled = true;
|
|
67
39
|
model.lockChoiceOrder = true;
|
|
68
40
|
model.choicesLayout = model.choicesLayout || 'vertical';
|
|
69
|
-
|
|
70
|
-
model.choices = choices.map(
|
|
41
|
+
const choices = (0, _cloneDeep.default)(model.choices);
|
|
42
|
+
model.choices = choices.map(c => {
|
|
71
43
|
c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;
|
|
72
44
|
c.hideTick = instr;
|
|
73
45
|
c.feedback = undefined;
|
|
@@ -76,191 +48,135 @@ var preparePrintModel = function preparePrintModel(model, opts) {
|
|
|
76
48
|
model.keyMode = model.choicePrefix || 'letters';
|
|
77
49
|
return model;
|
|
78
50
|
};
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
(0, _inherits2["default"])(EbsrMC, _MultipleChoice);
|
|
82
|
-
|
|
83
|
-
var _super = _createSuper(EbsrMC);
|
|
84
|
-
|
|
85
|
-
function EbsrMC() {
|
|
86
|
-
(0, _classCallCheck2["default"])(this, EbsrMC);
|
|
87
|
-
return _super.apply(this, arguments);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return (0, _createClass2["default"])(EbsrMC);
|
|
91
|
-
}(_multipleChoice["default"]);
|
|
92
|
-
|
|
93
|
-
var defineMultipleChoice = function defineMultipleChoice() {
|
|
51
|
+
class EbsrMC extends _multipleChoice.default {}
|
|
52
|
+
const defineMultipleChoice = () => {
|
|
94
53
|
if (!customElements.get(MC_TAG_NAME)) {
|
|
95
54
|
customElements.define(MC_TAG_NAME, EbsrMC);
|
|
96
55
|
}
|
|
97
56
|
};
|
|
98
|
-
|
|
99
57
|
defineMultipleChoice();
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
var isSessionComplete = function isSessionComplete(session) {
|
|
106
|
-
var a = (0, _get["default"])(session, 'value.partA.value');
|
|
107
|
-
var b = (0, _get["default"])(session, 'value.partB.value');
|
|
58
|
+
const isNonEmptyArray = a => Array.isArray(a) && a.length > 0;
|
|
59
|
+
const isSessionComplete = session => {
|
|
60
|
+
const a = (0, _get.default)(session, 'value.partA.value');
|
|
61
|
+
const b = (0, _get.default)(session, 'value.partB.value');
|
|
108
62
|
return isNonEmptyArray(a) && isNonEmptyArray(b);
|
|
109
63
|
};
|
|
110
|
-
|
|
111
64
|
exports.isSessionComplete = isSessionComplete;
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
function Ebsr() {
|
|
119
|
-
var _this;
|
|
120
|
-
|
|
121
|
-
(0, _classCallCheck2["default"])(this, Ebsr);
|
|
122
|
-
_this = _super2.call(this);
|
|
123
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSessionUpdated", function (e) {
|
|
124
|
-
if (e.target === (0, _assertThisInitialized2["default"])(_this)) {
|
|
65
|
+
class Ebsr extends HTMLElement {
|
|
66
|
+
constructor() {
|
|
67
|
+
super();
|
|
68
|
+
(0, _defineProperty2.default)(this, "onSessionUpdated", e => {
|
|
69
|
+
if (e.target === this) {
|
|
125
70
|
return;
|
|
126
71
|
}
|
|
127
|
-
|
|
128
72
|
e.preventDefault();
|
|
129
73
|
e.stopImmediatePropagation();
|
|
130
|
-
|
|
131
|
-
|
|
74
|
+
const id = e.target.getAttribute('id');
|
|
132
75
|
if (id) {
|
|
133
|
-
|
|
134
|
-
|
|
76
|
+
const key = `part${id.toUpperCase()}`;
|
|
135
77
|
if (e.update) {
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
_this.dispatchSessionChanged(e.srcElement._session, key);
|
|
78
|
+
this._model[key] = e.update;
|
|
79
|
+
}
|
|
80
|
+
//TODO: accessing a private property here. The session event should contain the update in future to prevent this.
|
|
81
|
+
this.dispatchSessionChanged(e.srcElement._session, key);
|
|
141
82
|
}
|
|
142
83
|
});
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return _this;
|
|
84
|
+
this._model = {};
|
|
85
|
+
this._session = {};
|
|
86
|
+
this._options = null;
|
|
147
87
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
'partB': undefined
|
|
88
|
+
set model(m) {
|
|
89
|
+
this._model = m;
|
|
90
|
+
customElements.whenDefined(MC_TAG_NAME).then(() => {
|
|
91
|
+
this.setPartModel(this.partA, 'partA');
|
|
92
|
+
this.setPartModel(this.partB, 'partB');
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
set session(s) {
|
|
96
|
+
this._session = s;
|
|
97
|
+
customElements.whenDefined(MC_TAG_NAME).then(() => {
|
|
98
|
+
this.setPartSession(this.partA, 'partA');
|
|
99
|
+
this.setPartSession(this.partB, 'partB');
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
setPartModel(part, key) {
|
|
103
|
+
if (this._model && this._model[key] && part) {
|
|
104
|
+
let labels = {
|
|
105
|
+
'partA': undefined,
|
|
106
|
+
'partB': undefined
|
|
107
|
+
};
|
|
108
|
+
if (this._model.partLabels) {
|
|
109
|
+
const language = this._model.language;
|
|
110
|
+
labels = {
|
|
111
|
+
'partA': translator.t('ebsr.part', {
|
|
112
|
+
lng: language,
|
|
113
|
+
index: this._model.partLabelType === 'Letters' ? 'A' : '1'
|
|
114
|
+
}),
|
|
115
|
+
'partB': translator.t('ebsr.part', {
|
|
116
|
+
lng: language,
|
|
117
|
+
index: this._model.partLabelType === 'Letters' ? 'B' : '2'
|
|
118
|
+
})
|
|
180
119
|
};
|
|
181
|
-
|
|
182
|
-
if (this._model.partLabels) {
|
|
183
|
-
var language = this._model.language;
|
|
184
|
-
labels = {
|
|
185
|
-
'partA': translator.t('ebsr.part', {
|
|
186
|
-
lng: language,
|
|
187
|
-
index: this._model.partLabelType === 'Letters' ? 'A' : '1'
|
|
188
|
-
}),
|
|
189
|
-
'partB': translator.t('ebsr.part', {
|
|
190
|
-
lng: language,
|
|
191
|
-
index: this._model.partLabelType === 'Letters' ? 'B' : '2'
|
|
192
|
-
})
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
part.model = _objectSpread(_objectSpread({}, preparePrintModel(this._model[key], this._options)), {}, {
|
|
197
|
-
keyMode: this._model[key].choicePrefix,
|
|
198
|
-
partLabel: labels[key]
|
|
199
|
-
}); // pass options to enable print mode detection in multiple-choice component
|
|
200
|
-
|
|
201
|
-
part.options = this._options;
|
|
202
|
-
|
|
203
|
-
if (!part._session) {
|
|
204
|
-
// for print, "set session" is not called,
|
|
205
|
-
// but ebsr needs sessions in order to render the elements,
|
|
206
|
-
// so we set it here it was not set already
|
|
207
|
-
part.session = {};
|
|
208
|
-
}
|
|
209
120
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
};
|
|
121
|
+
part.model = {
|
|
122
|
+
...preparePrintModel(this._model[key], this._options),
|
|
123
|
+
keyMode: this._model[key].choicePrefix,
|
|
124
|
+
partLabel: labels[key]
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// pass options to enable print mode detection in multiple-choice component
|
|
128
|
+
part.options = this._options;
|
|
129
|
+
if (!part._session) {
|
|
130
|
+
// for print, "set session" is not called,
|
|
131
|
+
// but ebsr needs sessions in order to render the elements,
|
|
132
|
+
// so we set it here it was not set already
|
|
133
|
+
part.session = {};
|
|
224
134
|
}
|
|
225
135
|
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}
|
|
239
|
-
}, {
|
|
240
|
-
key: "partB",
|
|
241
|
-
get: function get() {
|
|
242
|
-
return this.querySelector("".concat(MC_TAG_NAME, "#b"));
|
|
243
|
-
}
|
|
244
|
-
}, {
|
|
245
|
-
key: "connectedCallback",
|
|
246
|
-
value: function connectedCallback() {
|
|
247
|
-
this._render();
|
|
248
|
-
|
|
249
|
-
this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);
|
|
250
|
-
}
|
|
251
|
-
}, {
|
|
252
|
-
key: "disconnectedCallback",
|
|
253
|
-
value: function disconnectedCallback() {
|
|
254
|
-
this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);
|
|
255
|
-
}
|
|
256
|
-
}, {
|
|
257
|
-
key: "_render",
|
|
258
|
-
value: function _render() {
|
|
259
|
-
this.innerHTML = "\n <div>\n <".concat(MC_TAG_NAME, " id=\"a\"></").concat(MC_TAG_NAME, ">\n <").concat(MC_TAG_NAME, " id=\"b\"></").concat(MC_TAG_NAME, ">\n </div>\n ");
|
|
136
|
+
}
|
|
137
|
+
set options(o) {
|
|
138
|
+
this._options = o;
|
|
139
|
+
}
|
|
140
|
+
setPartSession(part, key) {
|
|
141
|
+
if (this._session && this._model && part) {
|
|
142
|
+
const {
|
|
143
|
+
value
|
|
144
|
+
} = this._session;
|
|
145
|
+
part.session = value && value[key] ? value[key] : {
|
|
146
|
+
id: key
|
|
147
|
+
};
|
|
260
148
|
}
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
149
|
+
}
|
|
150
|
+
dispatchSessionChanged(partSession, key) {
|
|
151
|
+
this._session.value = {
|
|
152
|
+
...this._session.value,
|
|
153
|
+
[key]: partSession
|
|
154
|
+
};
|
|
155
|
+
log('[onSessionChanged] session: ', this._session);
|
|
156
|
+
const complete = isSessionComplete(this._session);
|
|
157
|
+
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), complete));
|
|
158
|
+
}
|
|
159
|
+
get partA() {
|
|
160
|
+
return this.querySelector(`${MC_TAG_NAME}#a`);
|
|
161
|
+
}
|
|
162
|
+
get partB() {
|
|
163
|
+
return this.querySelector(`${MC_TAG_NAME}#b`);
|
|
164
|
+
}
|
|
165
|
+
connectedCallback() {
|
|
166
|
+
this._render();
|
|
167
|
+
this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);
|
|
168
|
+
}
|
|
169
|
+
disconnectedCallback() {
|
|
170
|
+
this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);
|
|
171
|
+
}
|
|
172
|
+
_render() {
|
|
173
|
+
this.innerHTML = `
|
|
174
|
+
<div>
|
|
175
|
+
<${MC_TAG_NAME} id="a"></${MC_TAG_NAME}>
|
|
176
|
+
<${MC_TAG_NAME} id="b"></${MC_TAG_NAME}>
|
|
177
|
+
</div>
|
|
178
|
+
`;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
exports.default = Ebsr;
|
|
266
182
|
//# sourceMappingURL=print.js.map
|
package/lib/print.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/print.js"],"names":["MC_TAG_NAME","SESSION_CHANGED","SessionChangedEvent","TYPE","translator","Translator","log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","_options","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","labels","partLabels","language","t","lng","index","partLabelType","partLabel","options","o","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport debug from 'debug';\nimport get from 'lodash/get';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nconst log = debug('pie-element:ebsr:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : 'gather';\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n this._options = null;\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n let labels = {\n 'partA': undefined,\n 'partB': undefined\n };\n\n if (this._model.partLabels) {\n const language = this._model.language;\n\n labels = {\n 'partA': translator.t('ebsr.part', {\n lng: language,\n index: this._model.partLabelType === 'Letters' ? 'A' : '1'\n }),\n 'partB': translator.t('ebsr.part', {\n lng: language,\n index: this._model.partLabelType === 'Letters' ? 'B' : '2'\n })\n };\n }\n\n part.model = {\n ...preparePrintModel(this._model[key], this._options),\n keyMode: this._model[key].choicePrefix,\n partLabel: labels[key]\n };\n\n // pass options to enable print mode detection in multiple-choice component\n part.options = this._options;\n\n if (!part._session) {\n // for print, \"set session\" is not called,\n // but ebsr needs sessions in order to render the elements,\n // so we set it here it was not set already\n part.session = {};\n }\n }\n }\n\n set options(o) {\n this._options = o;\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"file":"print.js"}
|
|
1
|
+
{"version":3,"file":"print.js","names":["_cloneDeep","_interopRequireDefault","require","_multipleChoice","_debug","_get","_piePlayerEvents","_translator","MC_TAG_NAME","SESSION_CHANGED","SessionChangedEvent","TYPE","translator","Translator","log","debug","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","cloneDeep","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","exports","Ebsr","HTMLElement","constructor","_defineProperty2","default","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","_options","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","labels","partLabels","language","t","lng","index","partLabelType","partLabel","options","o","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","connectedCallback","_render","addEventListener","onSessionUpdated","disconnectedCallback","removeEventListener","innerHTML"],"sources":["../src/print.js"],"sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport debug from 'debug';\nimport get from 'lodash/get';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nconst log = debug('pie-element:ebsr:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : 'gather';\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n this._options = null;\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n let labels = {\n 'partA': undefined,\n 'partB': undefined\n };\n\n if (this._model.partLabels) {\n const language = this._model.language;\n\n labels = {\n 'partA': translator.t('ebsr.part', {\n lng: language,\n index: this._model.partLabelType === 'Letters' ? 'A' : '1'\n }),\n 'partB': translator.t('ebsr.part', {\n lng: language,\n index: this._model.partLabelType === 'Letters' ? 'B' : '2'\n })\n };\n }\n\n part.model = {\n ...preparePrintModel(this._model[key], this._options),\n keyMode: this._model[key].choicePrefix,\n partLabel: labels[key]\n };\n\n // pass options to enable print mode detection in multiple-choice component\n part.options = this._options;\n\n if (!part._session) {\n // for print, \"set session\" is not called,\n // but ebsr needs sessions in order to render the elements,\n // so we set it here it was not set already\n part.session = {};\n }\n }\n }\n\n set options(o) {\n this._options = o;\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,33 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/ebsr",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "13.0.0-beta.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": "pie-framework/pie-elements",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@pie-element/multiple-choice": "^
|
|
10
|
+
"@pie-element/multiple-choice": "^12.0.0-beta.1",
|
|
11
11
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
12
|
-
"@pie-lib/translator": "
|
|
12
|
+
"@pie-lib/translator": "3.1.0-next.4",
|
|
13
13
|
"classnames": "^2.2.5",
|
|
14
14
|
"debug": "^4.1.1",
|
|
15
15
|
"lodash": "^4.17.11"
|
|
16
16
|
},
|
|
17
17
|
"author": "pie framework developers",
|
|
18
18
|
"license": "ISC",
|
|
19
|
-
"gitHead": "
|
|
19
|
+
"gitHead": "b67101f1d8bf37c61231a7050a3bc3b799b7d35b",
|
|
20
20
|
"scripts": {
|
|
21
21
|
"postpublish": "../../scripts/postpublish"
|
|
22
22
|
},
|
|
23
23
|
"main": "lib/index.js",
|
|
24
|
-
"module": "src/index.js"
|
|
25
|
-
"exports": {
|
|
26
|
-
".": "./src/index.js",
|
|
27
|
-
"./print": "./src/print.js",
|
|
28
|
-
"./esm": "./esm/element.js",
|
|
29
|
-
"./configure/esm": "./esm/configure.js",
|
|
30
|
-
"./controller/esm": "./esm/controller.js",
|
|
31
|
-
"./print/esm": "./esm/print.js"
|
|
32
|
-
}
|
|
24
|
+
"module": "src/index.js"
|
|
33
25
|
}
|
|
@@ -42,14 +42,20 @@ describe('ebsr', () => {
|
|
|
42
42
|
|
|
43
43
|
beforeAll(() => {
|
|
44
44
|
Def = require('../index').default;
|
|
45
|
+
|
|
46
|
+
// Register the custom element if not already registered
|
|
47
|
+
if (!customElements.get('ebsr-element')) {
|
|
48
|
+
customElements.define('ebsr-element', Def);
|
|
49
|
+
}
|
|
45
50
|
});
|
|
46
51
|
|
|
47
52
|
beforeEach(() => {
|
|
48
|
-
el =
|
|
49
|
-
|
|
53
|
+
el = document.createElement('ebsr-element');
|
|
54
|
+
|
|
55
|
+
// Mock createElement for part elements
|
|
50
56
|
ebsr = {
|
|
51
|
-
partA:
|
|
52
|
-
partB:
|
|
57
|
+
partA: document.createElement('div'),
|
|
58
|
+
partB: document.createElement('div'),
|
|
53
59
|
};
|
|
54
60
|
el.querySelector = jest.fn((s) => {
|
|
55
61
|
if (s === '#part-a') {
|
|
@@ -58,7 +64,14 @@ describe('ebsr', () => {
|
|
|
58
64
|
return ebsr.partB;
|
|
59
65
|
}
|
|
60
66
|
});
|
|
61
|
-
|
|
67
|
+
|
|
68
|
+
// Mock _render to avoid innerHTML issues with custom elements
|
|
69
|
+
el._render = jest.fn();
|
|
70
|
+
|
|
71
|
+
// Mock dispatchEvent for testing
|
|
72
|
+
el.dispatchEvent = jest.fn();
|
|
73
|
+
|
|
74
|
+
el.connectedCallback();
|
|
62
75
|
el.model = defaultModel;
|
|
63
76
|
el.session = defaultSession;
|
|
64
77
|
});
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`index createDefaultModel default-snapshot 1`] = `
|
|
4
|
-
Object {
|
|
5
|
-
"partA": Object {
|
|
6
|
-
"choiceMode": "radio",
|
|
7
|
-
"choicePrefix": "letters",
|
|
8
|
-
"choices": Array [],
|
|
9
|
-
"choicesLayout": "vertical",
|
|
10
|
-
"feedbackEnabled": false,
|
|
11
|
-
"gridColumns": 2,
|
|
12
|
-
"prompt": "",
|
|
13
|
-
"promptEnabled": true,
|
|
14
|
-
"rationale": "",
|
|
15
|
-
"rationaleEnabled": true,
|
|
16
|
-
"spellCheckEnabled": true,
|
|
17
|
-
"studentInstructionsEnabled": true,
|
|
18
|
-
"teacherInstructions": "",
|
|
19
|
-
"teacherInstructionsEnabled": true,
|
|
20
|
-
"toolbarEditorPosition": "bottom",
|
|
21
|
-
},
|
|
22
|
-
"partB": Object {
|
|
23
|
-
"choiceMode": "radio",
|
|
24
|
-
"choicePrefix": "letters",
|
|
25
|
-
"choices": Array [],
|
|
26
|
-
"choicesLayout": "vertical",
|
|
27
|
-
"feedbackEnabled": false,
|
|
28
|
-
"gridColumns": 2,
|
|
29
|
-
"prompt": "",
|
|
30
|
-
"promptEnabled": true,
|
|
31
|
-
"rationale": "",
|
|
32
|
-
"rationaleEnabled": true,
|
|
33
|
-
"spellCheckEnabled": true,
|
|
34
|
-
"studentInstructionsEnabled": true,
|
|
35
|
-
"teacherInstructions": "",
|
|
36
|
-
"teacherInstructionsEnabled": true,
|
|
37
|
-
"toolbarEditorPosition": "bottom",
|
|
38
|
-
},
|
|
39
|
-
"partLabelType": "Letters",
|
|
40
|
-
"partLabels": true,
|
|
41
|
-
}
|
|
42
|
-
`;
|
|
43
|
-
|
|
44
|
-
exports[`index createDefaultModel with-overrides-snapshot 1`] = `
|
|
45
|
-
Object {
|
|
46
|
-
"partA": Object {
|
|
47
|
-
"choiceMode": "radio",
|
|
48
|
-
"choicePrefix": "letters",
|
|
49
|
-
"choices": Array [],
|
|
50
|
-
"choicesLayout": "vertical",
|
|
51
|
-
"feedbackEnabled": false,
|
|
52
|
-
"gridColumns": 2,
|
|
53
|
-
"prompt": "",
|
|
54
|
-
"promptEnabled": true,
|
|
55
|
-
"rationale": "foo",
|
|
56
|
-
"rationaleEnabled": true,
|
|
57
|
-
"spellCheckEnabled": true,
|
|
58
|
-
"studentInstructionsEnabled": true,
|
|
59
|
-
"teacherInstructions": "ti",
|
|
60
|
-
"teacherInstructionsEnabled": true,
|
|
61
|
-
"toolbarEditorPosition": "bottom",
|
|
62
|
-
},
|
|
63
|
-
"partB": Object {
|
|
64
|
-
"choiceMode": "radio",
|
|
65
|
-
"choicePrefix": "letters",
|
|
66
|
-
"choices": Array [],
|
|
67
|
-
"choicesLayout": "vertical",
|
|
68
|
-
"feedbackEnabled": false,
|
|
69
|
-
"gridColumns": 2,
|
|
70
|
-
"prompt": "",
|
|
71
|
-
"promptEnabled": true,
|
|
72
|
-
"rationale": "",
|
|
73
|
-
"rationaleEnabled": true,
|
|
74
|
-
"spellCheckEnabled": true,
|
|
75
|
-
"studentInstructionsEnabled": true,
|
|
76
|
-
"teacherInstructions": "",
|
|
77
|
-
"teacherInstructionsEnabled": true,
|
|
78
|
-
"toolbarEditorPosition": "bottom",
|
|
79
|
-
},
|
|
80
|
-
"partLabelType": "Letters",
|
|
81
|
-
"partLabels": true,
|
|
82
|
-
}
|
|
83
|
-
`;
|