@pie-element/inline-dropdown 4.7.1-beta.1 → 4.7.1-beta.3
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/lib/__tests__/inline-dropdown-toolbar.test.js +112 -0
- package/configure/lib/__tests__/main.test.js +492 -0
- package/configure/lib/__tests__/markupUtils.test.js +107 -0
- package/configure/lib/defaults.js +78 -0
- package/configure/lib/index.js +137 -0
- package/configure/lib/inline-dropdown-toolbar.js +401 -0
- package/configure/lib/main.js +636 -0
- package/configure/lib/markupUtils.js +55 -0
- package/configure/lib/utils.js +15 -0
- package/configure/package.json +3 -3
- package/controller/lib/__tests__/index.test.js +858 -0
- package/controller/lib/defaults.js +11 -0
- package/controller/lib/index.js +292 -0
- package/controller/lib/utils.js +33 -0
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/inline-dropdown.test.js +113 -0
- package/lib/index.js +87 -0
- package/lib/inline-dropdown.js +182 -0
- package/package.json +4 -4
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _default = {
|
|
8
|
+
choices: {}
|
|
9
|
+
};
|
|
10
|
+
exports["default"] = _default;
|
|
11
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaG9pY2VzIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2RlZmF1bHRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgY2hvaWNlczoge30sXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7ZUFBZTtFQUNiQSxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFBQUMsT0FBQSxjQUFBQyxRQUFBIn0=
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getScore = exports.createCorrectResponseSession = void 0;
|
|
8
|
+
exports.model = model;
|
|
9
|
+
exports.normalize = void 0;
|
|
10
|
+
exports.outcome = outcome;
|
|
11
|
+
exports.validate = void 0;
|
|
12
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
var _map = _interopRequireDefault(require("lodash/map"));
|
|
16
|
+
var _reduce = _interopRequireDefault(require("lodash/reduce"));
|
|
17
|
+
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
18
|
+
var _controllerUtils = require("@pie-lib/controller-utils");
|
|
19
|
+
var _utils = require("./utils");
|
|
20
|
+
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; }
|
|
21
|
+
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; }
|
|
22
|
+
var getFeedback = function getFeedback(correct) {
|
|
23
|
+
if (correct) {
|
|
24
|
+
return 'correct';
|
|
25
|
+
}
|
|
26
|
+
return 'incorrect';
|
|
27
|
+
};
|
|
28
|
+
var normalize = function normalize(question) {
|
|
29
|
+
return _objectSpread({
|
|
30
|
+
promptEnabled: true,
|
|
31
|
+
rationaleEnabled: true,
|
|
32
|
+
teacherInstructionsEnabled: true,
|
|
33
|
+
studentInstructionsEnabled: true,
|
|
34
|
+
choiceRationaleEnabled: true
|
|
35
|
+
}, question);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
* @param {*} question
|
|
41
|
+
* @param {*} session
|
|
42
|
+
* @param {*} env
|
|
43
|
+
* @param {*} updateSession - optional - a function that will set the properties passed into it on the session.
|
|
44
|
+
*/
|
|
45
|
+
exports.normalize = normalize;
|
|
46
|
+
function model(question, session, env, updateSession) {
|
|
47
|
+
return new Promise( /*#__PURE__*/function () {
|
|
48
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(resolve) {
|
|
49
|
+
var normalizedQuestion, _ref2, _ref2$value, value, choices, feedback, allCorrectResponses, respAreaLength, correctResponses, _loop, i, _ret, lockChoiceOrder, keys, _i, key, teacherInstructions, rationale, choicesWillNullRationales, out;
|
|
50
|
+
return _regenerator["default"].wrap(function _callee$(_context2) {
|
|
51
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
52
|
+
case 0:
|
|
53
|
+
normalizedQuestion = normalize(question);
|
|
54
|
+
_ref2 = session || {}, _ref2$value = _ref2.value, value = _ref2$value === void 0 ? {} : _ref2$value;
|
|
55
|
+
choices = (0, _reduce["default"])(normalizedQuestion.choices, function (obj, area, key) {
|
|
56
|
+
obj[key] = (0, _map["default"])(area, function (choice) {
|
|
57
|
+
return choice;
|
|
58
|
+
});
|
|
59
|
+
return obj;
|
|
60
|
+
}, {});
|
|
61
|
+
feedback = {};
|
|
62
|
+
if (!(env.mode === 'evaluate')) {
|
|
63
|
+
_context2.next = 18;
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
allCorrectResponses = (0, _utils.getAllCorrectResponses)(normalizedQuestion);
|
|
67
|
+
respAreaLength = Object.keys(allCorrectResponses).length;
|
|
68
|
+
correctResponses = 0;
|
|
69
|
+
_loop = /*#__PURE__*/_regenerator["default"].mark(function _loop(i) {
|
|
70
|
+
var result;
|
|
71
|
+
return _regenerator["default"].wrap(function _loop$(_context) {
|
|
72
|
+
while (1) switch (_context.prev = _context.next) {
|
|
73
|
+
case 0:
|
|
74
|
+
result = (0, _reduce["default"])(allCorrectResponses, function (obj, choices, key) {
|
|
75
|
+
var answer = value && value[key] || '';
|
|
76
|
+
var correctChoice = choices[i] || '';
|
|
77
|
+
var isCorrect = answer && correctChoice && correctChoice === answer;
|
|
78
|
+
obj.feedback[key] = getFeedback(isCorrect);
|
|
79
|
+
if (isCorrect) {
|
|
80
|
+
obj.correctResponses += 1;
|
|
81
|
+
}
|
|
82
|
+
return obj;
|
|
83
|
+
}, {
|
|
84
|
+
correctResponses: 0,
|
|
85
|
+
feedback: {}
|
|
86
|
+
});
|
|
87
|
+
if (result.correctResponses >= correctResponses) {
|
|
88
|
+
correctResponses = result.correctResponses;
|
|
89
|
+
feedback = result.feedback;
|
|
90
|
+
}
|
|
91
|
+
if (!(result.correctResponses === respAreaLength)) {
|
|
92
|
+
_context.next = 4;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
return _context.abrupt("return", "break");
|
|
96
|
+
case 4:
|
|
97
|
+
case "end":
|
|
98
|
+
return _context.stop();
|
|
99
|
+
}
|
|
100
|
+
}, _loop);
|
|
101
|
+
});
|
|
102
|
+
i = 0;
|
|
103
|
+
case 10:
|
|
104
|
+
if (!(i < respAreaLength)) {
|
|
105
|
+
_context2.next = 18;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
return _context2.delegateYield(_loop(i), "t0", 12);
|
|
109
|
+
case 12:
|
|
110
|
+
_ret = _context2.t0;
|
|
111
|
+
if (!(_ret === "break")) {
|
|
112
|
+
_context2.next = 15;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
return _context2.abrupt("break", 18);
|
|
116
|
+
case 15:
|
|
117
|
+
i++;
|
|
118
|
+
_context2.next = 10;
|
|
119
|
+
break;
|
|
120
|
+
case 18:
|
|
121
|
+
lockChoiceOrder = (0, _controllerUtils.lockChoices)(normalizedQuestion, session, env);
|
|
122
|
+
if (lockChoiceOrder) {
|
|
123
|
+
_context2.next = 30;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
keys = Object.keys(choices);
|
|
127
|
+
_i = 0;
|
|
128
|
+
case 22:
|
|
129
|
+
if (!(_i < keys.length)) {
|
|
130
|
+
_context2.next = 30;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
key = keys[_i];
|
|
134
|
+
_context2.next = 26;
|
|
135
|
+
return (0, _controllerUtils.getShuffledChoices)(choices[key], session, updateSession, 'value');
|
|
136
|
+
case 26:
|
|
137
|
+
choices[key] = _context2.sent;
|
|
138
|
+
case 27:
|
|
139
|
+
_i++;
|
|
140
|
+
_context2.next = 22;
|
|
141
|
+
break;
|
|
142
|
+
case 30:
|
|
143
|
+
teacherInstructions = null;
|
|
144
|
+
rationale = null;
|
|
145
|
+
choicesWillNullRationales = (Object.keys(choices) || []).reduce(function (acc, currentValue) {
|
|
146
|
+
acc[currentValue] = (choices[currentValue] || []).map(function (choice) {
|
|
147
|
+
return _objectSpread(_objectSpread({}, choice), {}, {
|
|
148
|
+
rationale: null
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
return acc;
|
|
152
|
+
}, {});
|
|
153
|
+
if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
|
|
154
|
+
rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;
|
|
155
|
+
teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;
|
|
156
|
+
choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;
|
|
157
|
+
} else {
|
|
158
|
+
rationale = null;
|
|
159
|
+
teacherInstructions = null;
|
|
160
|
+
choices = choicesWillNullRationales;
|
|
161
|
+
}
|
|
162
|
+
out = {
|
|
163
|
+
disabled: env.mode !== 'gather',
|
|
164
|
+
mode: env.mode,
|
|
165
|
+
prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,
|
|
166
|
+
displayType: normalizedQuestion.displayType,
|
|
167
|
+
markup: normalizedQuestion.markup,
|
|
168
|
+
choices: choices,
|
|
169
|
+
feedback: feedback,
|
|
170
|
+
responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,
|
|
171
|
+
rationale: rationale,
|
|
172
|
+
teacherInstructions: teacherInstructions
|
|
173
|
+
};
|
|
174
|
+
resolve(out);
|
|
175
|
+
case 36:
|
|
176
|
+
case "end":
|
|
177
|
+
return _context2.stop();
|
|
178
|
+
}
|
|
179
|
+
}, _callee);
|
|
180
|
+
}));
|
|
181
|
+
return function (_x) {
|
|
182
|
+
return _ref.apply(this, arguments);
|
|
183
|
+
};
|
|
184
|
+
}());
|
|
185
|
+
}
|
|
186
|
+
var getScore = function getScore(config, session) {
|
|
187
|
+
var _ref3 = session || {},
|
|
188
|
+
_ref3$value = _ref3.value,
|
|
189
|
+
value = _ref3$value === void 0 ? {} : _ref3$value;
|
|
190
|
+
var maxScore = config && config.choices ? Object.keys(config.choices).length : 0;
|
|
191
|
+
var allCorrectResponses = (0, _utils.getAllCorrectResponses)(config);
|
|
192
|
+
var correctCount = 0;
|
|
193
|
+
var _loop2 = function _loop2(i) {
|
|
194
|
+
var result = (0, _reduce["default"])(allCorrectResponses, function (total, choices, key) {
|
|
195
|
+
var answer = value && value[key] || '';
|
|
196
|
+
var correctChoice = choices[i] || '';
|
|
197
|
+
if (correctChoice && answer && correctChoice === answer) {
|
|
198
|
+
return total;
|
|
199
|
+
}
|
|
200
|
+
return total - 1;
|
|
201
|
+
}, maxScore);
|
|
202
|
+
if (result > correctCount) {
|
|
203
|
+
correctCount = result;
|
|
204
|
+
}
|
|
205
|
+
if (result === maxScore) {
|
|
206
|
+
return "break";
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
for (var i = 0; i < maxScore; i++) {
|
|
210
|
+
var _ret2 = _loop2(i);
|
|
211
|
+
if (_ret2 === "break") break;
|
|
212
|
+
}
|
|
213
|
+
var str = (correctCount / maxScore).toFixed(2);
|
|
214
|
+
return parseFloat(str);
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
*
|
|
219
|
+
* The score is partial by default for checkbox mode, allOrNothing for radio mode.
|
|
220
|
+
* To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =
|
|
221
|
+
* false. the value in `env` will override the value in `model`.
|
|
222
|
+
* @param {Object} model - the main model
|
|
223
|
+
* @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)
|
|
224
|
+
* @param {*} session
|
|
225
|
+
* @param {Object} env
|
|
226
|
+
* @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides
|
|
227
|
+
* `model.partialScoring`.
|
|
228
|
+
*/
|
|
229
|
+
exports.getScore = getScore;
|
|
230
|
+
function outcome(model, session) {
|
|
231
|
+
var env = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
232
|
+
return new Promise(function (resolve) {
|
|
233
|
+
if (!session || (0, _isEmpty["default"])(session)) {
|
|
234
|
+
resolve({
|
|
235
|
+
score: 0,
|
|
236
|
+
empty: true
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
var partialScoringEnabled = _controllerUtils.partialScoring.enabled(model, env);
|
|
240
|
+
var score = getScore(model, session);
|
|
241
|
+
resolve({
|
|
242
|
+
score: partialScoringEnabled ? score : Math.floor(score),
|
|
243
|
+
empty: false
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
var createCorrectResponseSession = function createCorrectResponseSession(question, env) {
|
|
248
|
+
return new Promise(function (resolve) {
|
|
249
|
+
if (env.mode !== 'evaluate' && env.role === 'instructor') {
|
|
250
|
+
var choices = question.choices;
|
|
251
|
+
var value = {};
|
|
252
|
+
if (choices) {
|
|
253
|
+
Object.keys(choices).forEach(function (key, i) {
|
|
254
|
+
var correctChoices = choices[key] && choices[key].filter(function (c) {
|
|
255
|
+
return c.correct;
|
|
256
|
+
});
|
|
257
|
+
value[i] = correctChoices && correctChoices[0].value;
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
resolve({
|
|
261
|
+
id: '1',
|
|
262
|
+
value: value
|
|
263
|
+
});
|
|
264
|
+
} else {
|
|
265
|
+
resolve(null);
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
};
|
|
269
|
+
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
270
|
+
var validate = function validate() {
|
|
271
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
272
|
+
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
273
|
+
var markup = model.markup,
|
|
274
|
+
choices = model.choices;
|
|
275
|
+
var maxResponseAreas = config.maxResponseAreas,
|
|
276
|
+
maxResponseAreaChoices = config.maxResponseAreaChoices;
|
|
277
|
+
var errors = {};
|
|
278
|
+
var nbOfResponseAreas = ((markup || '').match(/\{\{(\d+)\}\}/g) || []).length;
|
|
279
|
+
if (nbOfResponseAreas > maxResponseAreas) {
|
|
280
|
+
errors.responseAreasError = "No more than ".concat(maxResponseAreas, " response areas should be defined.");
|
|
281
|
+
} else if (nbOfResponseAreas < 1) {
|
|
282
|
+
errors.responseAreasError = 'There should be defined at least 1 response area.';
|
|
283
|
+
}
|
|
284
|
+
(Object.keys(choices) || []).forEach(function (choiceKey) {
|
|
285
|
+
if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {
|
|
286
|
+
errors.responseAreaChoicesError = "No more than ".concat(maxResponseAreaChoices, " choices per response area should be defined.");
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
return errors;
|
|
290
|
+
};
|
|
291
|
+
exports.validate = validate;
|
|
292
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWFwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVkdWNlIiwiX2lzRW1wdHkiLCJfY29udHJvbGxlclV0aWxzIiwiX3V0aWxzIiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRGZWVkYmFjayIsImNvcnJlY3QiLCJub3JtYWxpemUiLCJxdWVzdGlvbiIsInByb21wdEVuYWJsZWQiLCJyYXRpb25hbGVFbmFibGVkIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZCIsImNob2ljZVJhdGlvbmFsZUVuYWJsZWQiLCJleHBvcnRzIiwibW9kZWwiLCJzZXNzaW9uIiwiZW52IiwidXBkYXRlU2Vzc2lvbiIsIlByb21pc2UiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJyZXNvbHZlIiwibm9ybWFsaXplZFF1ZXN0aW9uIiwiX3JlZjIiLCJfcmVmMiR2YWx1ZSIsInZhbHVlIiwiY2hvaWNlcyIsImZlZWRiYWNrIiwiYWxsQ29ycmVjdFJlc3BvbnNlcyIsInJlc3BBcmVhTGVuZ3RoIiwiY29ycmVjdFJlc3BvbnNlcyIsIl9sb29wIiwiX3JldCIsImxvY2tDaG9pY2VPcmRlciIsIl9pIiwidGVhY2hlckluc3RydWN0aW9ucyIsInJhdGlvbmFsZSIsImNob2ljZXNXaWxsTnVsbFJhdGlvbmFsZXMiLCJvdXQiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsInJlZHVjZSIsIm9iaiIsImFyZWEiLCJtYXAiLCJjaG9pY2UiLCJtb2RlIiwiZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyIsInJlc3VsdCIsIl9sb29wJCIsIl9jb250ZXh0IiwiYW5zd2VyIiwiY29ycmVjdENob2ljZSIsImlzQ29ycmVjdCIsImFicnVwdCIsInN0b3AiLCJkZWxlZ2F0ZVlpZWxkIiwidDAiLCJsb2NrQ2hvaWNlcyIsImdldFNodWZmbGVkQ2hvaWNlcyIsInNlbnQiLCJhY2MiLCJjdXJyZW50VmFsdWUiLCJyb2xlIiwiZGlzYWJsZWQiLCJwcm9tcHQiLCJkaXNwbGF5VHlwZSIsIm1hcmt1cCIsInJlc3BvbnNlQ29ycmVjdCIsImdldFNjb3JlIiwidW5kZWZpbmVkIiwiX3giLCJjb25maWciLCJfcmVmMyIsIl9yZWYzJHZhbHVlIiwibWF4U2NvcmUiLCJjb3JyZWN0Q291bnQiLCJfbG9vcDIiLCJ0b3RhbCIsIl9yZXQyIiwic3RyIiwidG9GaXhlZCIsInBhcnNlRmxvYXQiLCJvdXRjb21lIiwiaXNFbXB0eSIsInNjb3JlIiwiZW1wdHkiLCJwYXJ0aWFsU2NvcmluZ0VuYWJsZWQiLCJwYXJ0aWFsU2NvcmluZyIsImVuYWJsZWQiLCJNYXRoIiwiZmxvb3IiLCJjcmVhdGVDb3JyZWN0UmVzcG9uc2VTZXNzaW9uIiwiY29ycmVjdENob2ljZXMiLCJjIiwiaWQiLCJ2YWxpZGF0ZSIsIm1heFJlc3BvbnNlQXJlYXMiLCJtYXhSZXNwb25zZUFyZWFDaG9pY2VzIiwiZXJyb3JzIiwibmJPZlJlc3BvbnNlQXJlYXMiLCJtYXRjaCIsInJlc3BvbnNlQXJlYXNFcnJvciIsImNvbmNhdCIsImNob2ljZUtleSIsInJlc3BvbnNlQXJlYUNob2ljZXNFcnJvciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnO1xuaW1wb3J0IHJlZHVjZSBmcm9tICdsb2Rhc2gvcmVkdWNlJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCB7IGxvY2tDaG9pY2VzLCBnZXRTaHVmZmxlZENob2ljZXMsIHBhcnRpYWxTY29yaW5nIH0gZnJvbSAnQHBpZS1saWIvY29udHJvbGxlci11dGlscyc7XG5cbmltcG9ydCB7IGdldEFsbENvcnJlY3RSZXNwb25zZXMgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgZ2V0RmVlZGJhY2sgPSAoY29ycmVjdCkgPT4ge1xuICBpZiAoY29ycmVjdCkge1xuICAgIHJldHVybiAnY29ycmVjdCc7XG4gIH1cblxuICByZXR1cm4gJ2luY29ycmVjdCc7XG59O1xuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplID0gKHF1ZXN0aW9uKSA9PiAoe1xuICBwcm9tcHRFbmFibGVkOiB0cnVlLFxuICByYXRpb25hbGVFbmFibGVkOiB0cnVlLFxuICB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgc3R1ZGVudEluc3RydWN0aW9uc0VuYWJsZWQ6IHRydWUsXG4gIGNob2ljZVJhdGlvbmFsZUVuYWJsZWQ6IHRydWUsXG4gIC4uLnF1ZXN0aW9uLFxufSk7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7Kn0gcXVlc3Rpb25cbiAqIEBwYXJhbSB7Kn0gc2Vzc2lvblxuICogQHBhcmFtIHsqfSBlbnZcbiAqIEBwYXJhbSB7Kn0gdXBkYXRlU2Vzc2lvbiAtIG9wdGlvbmFsIC0gYSBmdW5jdGlvbiB0aGF0IHdpbGwgc2V0IHRoZSBwcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIGl0IG9uIHRoZSBzZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWwocXVlc3Rpb24sIHNlc3Npb24sIGVudiwgdXBkYXRlU2Vzc2lvbikge1xuICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkUXVlc3Rpb24gPSBub3JtYWxpemUocXVlc3Rpb24pO1xuICAgIGNvbnN0IHsgdmFsdWUgPSB7fSB9ID0gc2Vzc2lvbiB8fCB7fTtcbiAgICBsZXQgY2hvaWNlcyA9IHJlZHVjZShcbiAgICAgIG5vcm1hbGl6ZWRRdWVzdGlvbi5jaG9pY2VzLFxuICAgICAgKG9iaiwgYXJlYSwga2V5KSA9PiB7XG4gICAgICAgIG9ialtrZXldID0gbWFwKGFyZWEsIChjaG9pY2UpID0+IGNob2ljZSk7XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApO1xuXG4gICAgbGV0IGZlZWRiYWNrID0ge307XG5cbiAgICBpZiAoZW52Lm1vZGUgPT09ICdldmFsdWF0ZScpIHtcbiAgICAgIGNvbnN0IGFsbENvcnJlY3RSZXNwb25zZXMgPSBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzKG5vcm1hbGl6ZWRRdWVzdGlvbik7XG4gICAgICBjb25zdCByZXNwQXJlYUxlbmd0aCA9IE9iamVjdC5rZXlzKGFsbENvcnJlY3RSZXNwb25zZXMpLmxlbmd0aDtcbiAgICAgIGxldCBjb3JyZWN0UmVzcG9uc2VzID0gMDtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNwQXJlYUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlZHVjZShcbiAgICAgICAgICBhbGxDb3JyZWN0UmVzcG9uc2VzLFxuICAgICAgICAgIChvYmosIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYW5zd2VyID0gKHZhbHVlICYmIHZhbHVlW2tleV0pIHx8ICcnO1xuICAgICAgICAgICAgY29uc3QgY29ycmVjdENob2ljZSA9IGNob2ljZXNbaV0gfHwgJyc7XG4gICAgICAgICAgICBjb25zdCBpc0NvcnJlY3QgPSBhbnN3ZXIgJiYgY29ycmVjdENob2ljZSAmJiBjb3JyZWN0Q2hvaWNlID09PSBhbnN3ZXI7XG5cbiAgICAgICAgICAgIG9iai5mZWVkYmFja1trZXldID0gZ2V0RmVlZGJhY2soaXNDb3JyZWN0KTtcblxuICAgICAgICAgICAgaWYgKGlzQ29ycmVjdCkge1xuICAgICAgICAgICAgICBvYmouY29ycmVjdFJlc3BvbnNlcyArPSAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBjb3JyZWN0UmVzcG9uc2VzOiAwLCBmZWVkYmFjazoge30gfSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocmVzdWx0LmNvcnJlY3RSZXNwb25zZXMgPj0gY29ycmVjdFJlc3BvbnNlcykge1xuICAgICAgICAgIGNvcnJlY3RSZXNwb25zZXMgPSByZXN1bHQuY29ycmVjdFJlc3BvbnNlcztcbiAgICAgICAgICBmZWVkYmFjayA9IHJlc3VsdC5mZWVkYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuY29ycmVjdFJlc3BvbnNlcyA9PT0gcmVzcEFyZWFMZW5ndGgpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxvY2tDaG9pY2VPcmRlciA9IGxvY2tDaG9pY2VzKG5vcm1hbGl6ZWRRdWVzdGlvbiwgc2Vzc2lvbiwgZW52KTtcblxuICAgIGlmICghbG9ja0Nob2ljZU9yZGVyKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2hvaWNlcyk7XG4gICAgICBsZXQgaTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcblxuICAgICAgICBjaG9pY2VzW2tleV0gPSBhd2FpdCBnZXRTaHVmZmxlZENob2ljZXMoY2hvaWNlc1trZXldLCBzZXNzaW9uLCB1cGRhdGVTZXNzaW9uLCAndmFsdWUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdGVhY2hlckluc3RydWN0aW9ucyA9IG51bGw7XG4gICAgbGV0IHJhdGlvbmFsZSA9IG51bGw7XG5cbiAgICBjb25zdCBjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzID0gKE9iamVjdC5rZXlzKGNob2ljZXMpIHx8IFtdKS5yZWR1Y2UoKGFjYywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICBhY2NbY3VycmVudFZhbHVlXSA9IChjaG9pY2VzW2N1cnJlbnRWYWx1ZV0gfHwgW10pLm1hcCgoY2hvaWNlKSA9PiAoe1xuICAgICAgICAuLi5jaG9pY2UsXG4gICAgICAgIHJhdGlvbmFsZTogbnVsbCxcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG5cbiAgICBpZiAoZW52LnJvbGUgPT09ICdpbnN0cnVjdG9yJyAmJiAoZW52Lm1vZGUgPT09ICd2aWV3JyB8fCBlbnYubW9kZSA9PT0gJ2V2YWx1YXRlJykpIHtcbiAgICAgIHJhdGlvbmFsZSA9IG5vcm1hbGl6ZWRRdWVzdGlvbi5yYXRpb25hbGVFbmFibGVkID8gbm9ybWFsaXplZFF1ZXN0aW9uLnJhdGlvbmFsZSA6IG51bGw7XG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0gbm9ybWFsaXplZFF1ZXN0aW9uLnRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkXG4gICAgICAgID8gbm9ybWFsaXplZFF1ZXN0aW9uLnRlYWNoZXJJbnN0cnVjdGlvbnNcbiAgICAgICAgOiBudWxsO1xuXG4gICAgICBjaG9pY2VzID0gbm9ybWFsaXplZFF1ZXN0aW9uLmNob2ljZVJhdGlvbmFsZUVuYWJsZWQgPyBub3JtYWxpemVkUXVlc3Rpb24uY2hvaWNlcyA6IGNob2ljZXNXaWxsTnVsbFJhdGlvbmFsZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhdGlvbmFsZSA9IG51bGw7XG4gICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0gbnVsbDtcbiAgICAgIGNob2ljZXMgPSBjaG9pY2VzV2lsbE51bGxSYXRpb25hbGVzO1xuICAgIH1cblxuICAgIGNvbnN0IG91dCA9IHtcbiAgICAgIGRpc2FibGVkOiBlbnYubW9kZSAhPT0gJ2dhdGhlcicsXG4gICAgICBtb2RlOiBlbnYubW9kZSxcbiAgICAgIHByb21wdDogbm9ybWFsaXplZFF1ZXN0aW9uLnByb21wdEVuYWJsZWQgPyBub3JtYWxpemVkUXVlc3Rpb24ucHJvbXB0IDogbnVsbCxcbiAgICAgIGRpc3BsYXlUeXBlOiBub3JtYWxpemVkUXVlc3Rpb24uZGlzcGxheVR5cGUsXG4gICAgICBtYXJrdXA6IG5vcm1hbGl6ZWRRdWVzdGlvbi5tYXJrdXAsXG4gICAgICBjaG9pY2VzLFxuICAgICAgZmVlZGJhY2ssXG5cbiAgICAgIHJlc3BvbnNlQ29ycmVjdDogZW52Lm1vZGUgPT09ICdldmFsdWF0ZScgPyBnZXRTY29yZShub3JtYWxpemVkUXVlc3Rpb24sIHNlc3Npb24pID09PSAxIDogdW5kZWZpbmVkLFxuICAgICAgcmF0aW9uYWxlLFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyxcbiAgICB9O1xuXG4gICAgcmVzb2x2ZShvdXQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNjb3JlID0gKGNvbmZpZywgc2Vzc2lvbikgPT4ge1xuICBjb25zdCB7IHZhbHVlID0ge30gfSA9IHNlc3Npb24gfHwge307XG4gIGNvbnN0IG1heFNjb3JlID0gY29uZmlnICYmIGNvbmZpZy5jaG9pY2VzID8gT2JqZWN0LmtleXMoY29uZmlnLmNob2ljZXMpLmxlbmd0aCA6IDA7XG4gIGNvbnN0IGFsbENvcnJlY3RSZXNwb25zZXMgPSBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzKGNvbmZpZyk7XG4gIGxldCBjb3JyZWN0Q291bnQgPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4U2NvcmU7IGkrKykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHJlZHVjZShcbiAgICAgIGFsbENvcnJlY3RSZXNwb25zZXMsXG4gICAgICAodG90YWwsIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBhbnN3ZXIgPSAodmFsdWUgJiYgdmFsdWVba2V5XSkgfHwgJyc7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RDaG9pY2UgPSBjaG9pY2VzW2ldIHx8ICcnO1xuXG4gICAgICAgIGlmIChjb3JyZWN0Q2hvaWNlICYmIGFuc3dlciAmJiBjb3JyZWN0Q2hvaWNlID09PSBhbnN3ZXIpIHtcbiAgICAgICAgICByZXR1cm4gdG90YWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG90YWwgLSAxO1xuICAgICAgfSxcbiAgICAgIG1heFNjb3JlLFxuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID4gY29ycmVjdENvdW50KSB7XG4gICAgICBjb3JyZWN0Q291bnQgPSByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9PT0gbWF4U2NvcmUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ciA9IChjb3JyZWN0Q291bnQgLyBtYXhTY29yZSkudG9GaXhlZCgyKTtcblxuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpO1xufTtcblxuLyoqXG4gKlxuICogVGhlIHNjb3JlIGlzIHBhcnRpYWwgYnkgZGVmYXVsdCBmb3IgY2hlY2tib3ggbW9kZSwgYWxsT3JOb3RoaW5nIGZvciByYWRpbyBtb2RlLlxuICogVG8gZGlzYWJsZSBwYXJ0aWFsIHNjb3JpbmcgZm9yIGNoZWNrYm94IG1vZGUgeW91IGVpdGhlciBzZXQgbW9kZWwucGFydGlhbFNjb3JpbmcgPSBmYWxzZSBvciBlbnYucGFydGlhbFNjb3JpbmcgPVxuICogZmFsc2UuIHRoZSB2YWx1ZSBpbiBgZW52YCB3aWxsIG92ZXJyaWRlIHRoZSB2YWx1ZSBpbiBgbW9kZWxgLlxuICogQHBhcmFtIHtPYmplY3R9IG1vZGVsIC0gdGhlIG1haW4gbW9kZWxcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbW9kZWwucGFydGlhbFNjb3JpbmcgLSBpcyBwYXJ0aWFsIHNjb3JpbmcgZW5hYmxlZCAoaWYgdW5kZWZpbmVkIHNldCB0byB0byB0cnVlKVxuICogQHBhcmFtIHsqfSBzZXNzaW9uXG4gKiBAcGFyYW0ge09iamVjdH0gZW52XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGVudi5wYXJ0aWFsU2NvcmluZyAtIGlzIHBhcnRpYWwgc2NvcmluZyBlbmFibGVkIChpZiB1bmRlZmluZWQgZGVmYXVsdCB0byB0cnVlKSBUaGlzIG92ZXJyaWRlc1xuICogICBgbW9kZWwucGFydGlhbFNjb3JpbmdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb3V0Y29tZShtb2RlbCwgc2Vzc2lvbiwgZW52ID0ge30pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgaWYgKCFzZXNzaW9uIHx8IGlzRW1wdHkoc2Vzc2lvbikpIHtcbiAgICAgIHJlc29sdmUoeyBzY29yZTogMCwgZW1wdHk6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFydGlhbFNjb3JpbmdFbmFibGVkID0gcGFydGlhbFNjb3JpbmcuZW5hYmxlZChtb2RlbCwgZW52KTtcbiAgICBjb25zdCBzY29yZSA9IGdldFNjb3JlKG1vZGVsLCBzZXNzaW9uKTtcblxuICAgIHJlc29sdmUoe1xuICAgICAgc2NvcmU6IHBhcnRpYWxTY29yaW5nRW5hYmxlZCA/IHNjb3JlIDogTWF0aC5mbG9vcihzY29yZSksXG4gICAgICBlbXB0eTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ29ycmVjdFJlc3BvbnNlU2Vzc2lvbiA9IChxdWVzdGlvbiwgZW52KSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGlmIChlbnYubW9kZSAhPT0gJ2V2YWx1YXRlJyAmJiBlbnYucm9sZSA9PT0gJ2luc3RydWN0b3InKSB7XG4gICAgICBjb25zdCB7IGNob2ljZXMgfSA9IHF1ZXN0aW9uO1xuICAgICAgY29uc3QgdmFsdWUgPSB7fTtcblxuICAgICAgaWYgKGNob2ljZXMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY2hvaWNlcykuZm9yRWFjaCgoa2V5LCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29ycmVjdENob2ljZXMgPSBjaG9pY2VzW2tleV0gJiYgY2hvaWNlc1trZXldLmZpbHRlcigoYykgPT4gYy5jb3JyZWN0KTtcblxuICAgICAgICAgIHZhbHVlW2ldID0gY29ycmVjdENob2ljZXMgJiYgY29ycmVjdENob2ljZXNbMF0udmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgaWQ6ICcxJyxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICB9XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gKG1vZGVsID0ge30sIGNvbmZpZyA9IHt9KSA9PiB7XG4gIGNvbnN0IHsgbWFya3VwLCBjaG9pY2VzIH0gPSBtb2RlbDtcbiAgY29uc3QgeyBtYXhSZXNwb25zZUFyZWFzLCBtYXhSZXNwb25zZUFyZWFDaG9pY2VzIH0gPSBjb25maWc7XG4gIGNvbnN0IGVycm9ycyA9IHt9O1xuXG4gIGNvbnN0IG5iT2ZSZXNwb25zZUFyZWFzID0gKChtYXJrdXAgfHwgJycpLm1hdGNoKC9cXHtcXHsoXFxkKylcXH1cXH0vZykgfHwgW10pLmxlbmd0aDtcblxuICBpZiAobmJPZlJlc3BvbnNlQXJlYXMgPiBtYXhSZXNwb25zZUFyZWFzKSB7XG4gICAgZXJyb3JzLnJlc3BvbnNlQXJlYXNFcnJvciA9IGBObyBtb3JlIHRoYW4gJHttYXhSZXNwb25zZUFyZWFzfSByZXNwb25zZSBhcmVhcyBzaG91bGQgYmUgZGVmaW5lZC5gO1xuICB9IGVsc2UgaWYgKG5iT2ZSZXNwb25zZUFyZWFzIDwgMSkge1xuICAgIGVycm9ycy5yZXNwb25zZUFyZWFzRXJyb3IgPSAnVGhlcmUgc2hvdWxkIGJlIGRlZmluZWQgYXQgbGVhc3QgMSByZXNwb25zZSBhcmVhLic7XG4gIH1cblxuICAoT2JqZWN0LmtleXMoY2hvaWNlcykgfHwgW10pLmZvckVhY2goKGNob2ljZUtleSkgPT4ge1xuICAgIGlmIChjaG9pY2VzW2Nob2ljZUtleV0gJiYgY2hvaWNlc1tjaG9pY2VLZXldLmxlbmd0aCA+IG1heFJlc3BvbnNlQXJlYUNob2ljZXMpIHtcbiAgICAgIGVycm9ycy5yZXNwb25zZUFyZWFDaG9pY2VzRXJyb3IgPSBgTm8gbW9yZSB0aGFuICR7bWF4UmVzcG9uc2VBcmVhQ2hvaWNlc30gY2hvaWNlcyBwZXIgcmVzcG9uc2UgYXJlYSBzaG91bGQgYmUgZGVmaW5lZC5gO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVycm9ycztcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUFpRCxTQUFBSyxRQUFBQyxNQUFBLEVBQUFDLGNBQUEsUUFBQUMsSUFBQSxHQUFBQyxNQUFBLENBQUFELElBQUEsQ0FBQUYsTUFBQSxPQUFBRyxNQUFBLENBQUFDLHFCQUFBLFFBQUFDLE9BQUEsR0FBQUYsTUFBQSxDQUFBQyxxQkFBQSxDQUFBSixNQUFBLEdBQUFDLGNBQUEsS0FBQUksT0FBQSxHQUFBQSxPQUFBLENBQUFDLE1BQUEsV0FBQUMsR0FBQSxXQUFBSixNQUFBLENBQUFLLHdCQUFBLENBQUFSLE1BQUEsRUFBQU8sR0FBQSxFQUFBRSxVQUFBLE9BQUFQLElBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULElBQUEsRUFBQUcsT0FBQSxZQUFBSCxJQUFBO0FBQUEsU0FBQVUsY0FBQUMsTUFBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFGLENBQUEsVUFBQUcsTUFBQSxXQUFBRixTQUFBLENBQUFELENBQUEs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
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getAllCorrectResponses = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _forEach = _interopRequireDefault(require("lodash/forEach"));
|
|
10
|
+
var getAllCorrectResponses = function getAllCorrectResponses(_ref) {
|
|
11
|
+
var choices = _ref.choices,
|
|
12
|
+
alternateResponse = _ref.alternateResponse;
|
|
13
|
+
alternateResponse = alternateResponse || {};
|
|
14
|
+
var correctAnswers = {};
|
|
15
|
+
(0, _forEach["default"])(choices, function (respArea, key) {
|
|
16
|
+
if (!correctAnswers[key]) {
|
|
17
|
+
correctAnswers[key] = [];
|
|
18
|
+
}
|
|
19
|
+
if (respArea) {
|
|
20
|
+
respArea.forEach(function (choice) {
|
|
21
|
+
if (choice.correct) {
|
|
22
|
+
correctAnswers[key].push(choice.value);
|
|
23
|
+
if (alternateResponse[key]) {
|
|
24
|
+
correctAnswers[key] = [].concat((0, _toConsumableArray2["default"])(correctAnswers[key]), (0, _toConsumableArray2["default"])(alternateResponse[key]));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return correctAnswers;
|
|
31
|
+
};
|
|
32
|
+
exports.getAllCorrectResponses = getAllCorrectResponses;
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZm9yRWFjaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZ2V0QWxsQ29ycmVjdFJlc3BvbnNlcyIsIl9yZWYiLCJjaG9pY2VzIiwiYWx0ZXJuYXRlUmVzcG9uc2UiLCJjb3JyZWN0QW5zd2VycyIsImZvckVhY2giLCJyZXNwQXJlYSIsImtleSIsImNob2ljZSIsImNvcnJlY3QiLCJwdXNoIiwidmFsdWUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9yRWFjaCBmcm9tICdsb2Rhc2gvZm9yRWFjaCc7XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxDb3JyZWN0UmVzcG9uc2VzID0gKHsgY2hvaWNlcywgYWx0ZXJuYXRlUmVzcG9uc2UgfSkgPT4ge1xuICBhbHRlcm5hdGVSZXNwb25zZSA9IGFsdGVybmF0ZVJlc3BvbnNlIHx8IHt9O1xuICBjb25zdCBjb3JyZWN0QW5zd2VycyA9IHt9O1xuXG4gIGZvckVhY2goY2hvaWNlcywgKHJlc3BBcmVhLCBrZXkpID0+IHtcbiAgICBpZiAoIWNvcnJlY3RBbnN3ZXJzW2tleV0pIHtcbiAgICAgIGNvcnJlY3RBbnN3ZXJzW2tleV0gPSBbXTtcbiAgICB9XG5cbiAgICBpZiAocmVzcEFyZWEpIHtcbiAgICAgIHJlc3BBcmVhLmZvckVhY2goKGNob2ljZSkgPT4ge1xuICAgICAgICBpZiAoY2hvaWNlLmNvcnJlY3QpIHtcbiAgICAgICAgICBjb3JyZWN0QW5zd2Vyc1trZXldLnB1c2goY2hvaWNlLnZhbHVlKTtcblxuICAgICAgICAgIGlmIChhbHRlcm5hdGVSZXNwb25zZVtrZXldKSB7XG4gICAgICAgICAgICBjb3JyZWN0QW5zd2Vyc1trZXldID0gWy4uLmNvcnJlY3RBbnN3ZXJzW2tleV0sIC4uLmFsdGVybmF0ZVJlc3BvbnNlW2tleV1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY29ycmVjdEFuc3dlcnM7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVPLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUFDLElBQUEsRUFBdUM7RUFBQSxJQUFqQ0MsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87SUFBRUMsaUJBQWlCLEdBQUFGLElBQUEsQ0FBakJFLGlCQUFpQjtFQUNqRUEsaUJBQWlCLEdBQUdBLGlCQUFpQixJQUFJLENBQUMsQ0FBQztFQUMzQyxJQUFNQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO0VBRXpCLElBQUFDLG1CQUFPLEVBQUNILE9BQU8sRUFBRSxVQUFDSSxRQUFRLEVBQUVDLEdBQUcsRUFBSztJQUNsQyxJQUFJLENBQUNILGNBQWMsQ0FBQ0csR0FBRyxDQUFDLEVBQUU7TUFDeEJILGNBQWMsQ0FBQ0csR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUMxQjtJQUVBLElBQUlELFFBQVEsRUFBRTtNQUNaQSxRQUFRLENBQUNELE9BQU8sQ0FBQyxVQUFDRyxNQUFNLEVBQUs7UUFDM0IsSUFBSUEsTUFBTSxDQUFDQyxPQUFPLEVBQUU7VUFDbEJMLGNBQWMsQ0FBQ0csR0FBRyxDQUFDLENBQUNHLElBQUksQ0FBQ0YsTUFBTSxDQUFDRyxLQUFLLENBQUM7VUFFdEMsSUFBSVIsaUJBQWlCLENBQUNJLEdBQUcsQ0FBQyxFQUFFO1lBQzFCSCxjQUFjLENBQUNHLEdBQUcsQ0FBQyxNQUFBSyxNQUFBLEtBQUFDLG1CQUFBLGFBQU9ULGNBQWMsQ0FBQ0csR0FBRyxDQUFDLE9BQUFNLG1CQUFBLGFBQUtWLGlCQUFpQixDQUFDSSxHQUFHLENBQUMsRUFBQztVQUMzRTtRQUNGO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPSCxjQUFjO0FBQ3ZCLENBQUM7QUFBQ1UsT0FBQSxDQUFBZCxzQkFBQSxHQUFBQSxzQkFBQSJ9
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
+
var _enzyme = require("enzyme");
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _inlineDropdown = require("../inline-dropdown");
|
|
8
|
+
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; }
|
|
9
|
+
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; }
|
|
10
|
+
describe('InlineDropdown', function () {
|
|
11
|
+
var wrapper;
|
|
12
|
+
var onChange = jest.fn();
|
|
13
|
+
beforeAll(function () {
|
|
14
|
+
wrapper = function wrapper(extra) {
|
|
15
|
+
var props = _objectSpread({
|
|
16
|
+
classes: {},
|
|
17
|
+
prompt: 'Prompt',
|
|
18
|
+
rationale: 'Rationale',
|
|
19
|
+
teacherInstructions: 'Teacher Instructions',
|
|
20
|
+
disabled: false,
|
|
21
|
+
choices: {
|
|
22
|
+
0: [{
|
|
23
|
+
label: 'cow ',
|
|
24
|
+
value: '0',
|
|
25
|
+
correct: true,
|
|
26
|
+
rationale: 'rationale cow'
|
|
27
|
+
}, {
|
|
28
|
+
label: 'dog ',
|
|
29
|
+
value: '1',
|
|
30
|
+
correct: false
|
|
31
|
+
}, {
|
|
32
|
+
label: 'cat ',
|
|
33
|
+
value: '2',
|
|
34
|
+
correct: false
|
|
35
|
+
}],
|
|
36
|
+
1: [{
|
|
37
|
+
label: 'over ',
|
|
38
|
+
value: '0',
|
|
39
|
+
correct: true,
|
|
40
|
+
rationale: 'rationale over'
|
|
41
|
+
}, {
|
|
42
|
+
label: 'under ',
|
|
43
|
+
value: '1',
|
|
44
|
+
correct: false
|
|
45
|
+
}, {
|
|
46
|
+
label: 'across ',
|
|
47
|
+
value: '2',
|
|
48
|
+
correct: false
|
|
49
|
+
}],
|
|
50
|
+
2: [{
|
|
51
|
+
label: 'moon ',
|
|
52
|
+
value: '0',
|
|
53
|
+
correct: true,
|
|
54
|
+
rationale: 'rationale moon'
|
|
55
|
+
}, {
|
|
56
|
+
label: 'sun',
|
|
57
|
+
value: '2',
|
|
58
|
+
correct: false
|
|
59
|
+
}, {
|
|
60
|
+
label: 'house ',
|
|
61
|
+
value: '3',
|
|
62
|
+
correct: false
|
|
63
|
+
}]
|
|
64
|
+
},
|
|
65
|
+
markup: '<div><p>The {{0}} jumped {{1}} the {{2}}</p></div>',
|
|
66
|
+
mode: 'gather',
|
|
67
|
+
feedback: {
|
|
68
|
+
0: 'correct',
|
|
69
|
+
1: 'correct',
|
|
70
|
+
2: 'correct'
|
|
71
|
+
},
|
|
72
|
+
value: {
|
|
73
|
+
0: '1',
|
|
74
|
+
1: '0',
|
|
75
|
+
2: '0'
|
|
76
|
+
},
|
|
77
|
+
onChange: onChange
|
|
78
|
+
}, extra);
|
|
79
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_inlineDropdown.InlineDropdown, props));
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
describe('render', function () {
|
|
83
|
+
it('should render in gather mode', function () {
|
|
84
|
+
expect(wrapper()).toMatchSnapshot();
|
|
85
|
+
});
|
|
86
|
+
it('should render in view mode', function () {
|
|
87
|
+
expect(wrapper({
|
|
88
|
+
mode: 'view'
|
|
89
|
+
})).toMatchSnapshot();
|
|
90
|
+
});
|
|
91
|
+
it('should render in evaluate mode', function () {
|
|
92
|
+
expect(wrapper({
|
|
93
|
+
mode: 'evaluate'
|
|
94
|
+
})).toMatchSnapshot();
|
|
95
|
+
});
|
|
96
|
+
it('should render without teacher instructions', function () {
|
|
97
|
+
expect(wrapper({
|
|
98
|
+
teacherInstructions: null
|
|
99
|
+
})).toMatchSnapshot();
|
|
100
|
+
});
|
|
101
|
+
it('should render without rationale', function () {
|
|
102
|
+
expect(wrapper({
|
|
103
|
+
rationale: null
|
|
104
|
+
})).toMatchSnapshot();
|
|
105
|
+
});
|
|
106
|
+
it('should render without prompt', function () {
|
|
107
|
+
expect(wrapper({
|
|
108
|
+
prompt: null
|
|
109
|
+
})).toMatchSnapshot();
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZW56eW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaW5saW5lRHJvcGRvd24iLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImRlc2NyaWJlIiwid3JhcHBlciIsIm9uQ2hhbmdlIiwiamVzdCIsImZuIiwiYmVmb3JlQWxsIiwiZXh0cmEiLCJwcm9wcyIsImNsYXNzZXMiLCJwcm9tcHQiLCJyYXRpb25hbGUiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwiZGlzYWJsZWQiLCJjaG9pY2VzIiwibGFiZWwiLCJ2YWx1ZSIsImNvcnJlY3QiLCJtYXJrdXAiLCJtb2RlIiwiZmVlZGJhY2siLCJzaGFsbG93IiwiY3JlYXRlRWxlbWVudCIsIklubGluZURyb3Bkb3duIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2lubGluZS1kcm9wZG93bi50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IElubGluZURyb3Bkb3duIH0gZnJvbSAnLi4vaW5saW5lLWRyb3Bkb3duJztcblxuZGVzY3JpYmUoJ0lubGluZURyb3Bkb3duJywgKCkgPT4ge1xuICBsZXQgd3JhcHBlcjtcbiAgbGV0IG9uQ2hhbmdlID0gamVzdC5mbigpO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgd3JhcHBlciA9IChleHRyYSkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgICBwcm9tcHQ6ICdQcm9tcHQnLFxuICAgICAgICByYXRpb25hbGU6ICdSYXRpb25hbGUnLFxuICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiAnVGVhY2hlciBJbnN0cnVjdGlvbnMnLFxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIGNob2ljZXM6IHtcbiAgICAgICAgICAwOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnY293ICcsXG4gICAgICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgICAgICAgIHJhdGlvbmFsZTogJ3JhdGlvbmFsZSBjb3cnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdkb2cgJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICcxJyxcbiAgICAgICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ2NhdCAnLFxuICAgICAgICAgICAgICB2YWx1ZTogJzInLFxuICAgICAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICAxOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnb3ZlciAnLFxuICAgICAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICAgICAgICByYXRpb25hbGU6ICdyYXRpb25hbGUgb3ZlcicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ3VuZGVyICcsXG4gICAgICAgICAgICAgIHZhbHVlOiAnMScsXG4gICAgICAgICAgICAgIGNvcnJlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdhY3Jvc3MgJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICcyJyxcbiAgICAgICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgMjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ21vb24gJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICcwJyxcbiAgICAgICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmF0aW9uYWxlOiAncmF0aW9uYWxlIG1vb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdzdW4nLFxuICAgICAgICAgICAgICB2YWx1ZTogJzInLFxuICAgICAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnaG91c2UgJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICczJyxcbiAgICAgICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG1hcmt1cDogJzxkaXY+PHA+VGhlIHt7MH19IGp1bXBlZCB7ezF9fSB0aGUge3syfX08L3A+PC9kaXY+JyxcbiAgICAgICAgbW9kZTogJ2dhdGhlcicsXG4gICAgICAgIGZlZWRiYWNrOiB7IDA6ICdjb3JyZWN0JywgMTogJ2NvcnJlY3QnLCAyOiAnY29ycmVjdCcgfSxcbiAgICAgICAgdmFsdWU6IHsgMDogJzEnLCAxOiAnMCcsIDI6ICcwJyB9LFxuICAgICAgICBvbkNoYW5nZSxcbiAgICAgICAgLi4uZXh0cmEsXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gc2hhbGxvdyg8SW5saW5lRHJvcGRvd24gey4uLnByb3BzfSAvPik7XG4gICAgfTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlbmRlciBpbiBnYXRoZXIgbW9kZScsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3cmFwcGVyKCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgaW4gdmlldyBtb2RlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoeyBtb2RlOiAndmlldycgfSkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgaW4gZXZhbHVhdGUgbW9kZScsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3cmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJyB9KSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciB3aXRob3V0IHRlYWNoZXIgaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoeyB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiBudWxsIH0pKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGhvdXQgcmF0aW9uYWxlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoeyByYXRpb25hbGU6IG51bGwgfSkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aG91dCBwcm9tcHQnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcih7IHByb21wdDogbnVsbCB9KSkudG9NYXRjaFNuYXBz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
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
|
17
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
18
|
+
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
19
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
20
|
+
var _inlineDropdown = _interopRequireDefault(require("./inline-dropdown"));
|
|
21
|
+
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); }; }
|
|
22
|
+
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; } }
|
|
23
|
+
var RootInlineDropdown = /*#__PURE__*/function (_HTMLElement) {
|
|
24
|
+
(0, _inherits2["default"])(RootInlineDropdown, _HTMLElement);
|
|
25
|
+
var _super = _createSuper(RootInlineDropdown);
|
|
26
|
+
function RootInlineDropdown() {
|
|
27
|
+
var _this;
|
|
28
|
+
(0, _classCallCheck2["default"])(this, RootInlineDropdown);
|
|
29
|
+
_this = _super.call(this);
|
|
30
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_render", function () {
|
|
31
|
+
if (_this._model && _this._session) {
|
|
32
|
+
var elem = /*#__PURE__*/_react["default"].createElement(_inlineDropdown["default"], {
|
|
33
|
+
prompt: _this._model.prompt,
|
|
34
|
+
rationale: _this._model.rationale,
|
|
35
|
+
teacherInstructions: _this._model.teacherInstructions,
|
|
36
|
+
disabled: _this._model.disabled,
|
|
37
|
+
displayType: _this._model.displayType,
|
|
38
|
+
markup: _this._model.markup,
|
|
39
|
+
mode: _this._model.mode,
|
|
40
|
+
choices: _this._model.choices,
|
|
41
|
+
value: _this._session.value,
|
|
42
|
+
feedback: _this._model.feedback,
|
|
43
|
+
onChange: _this.changeSession
|
|
44
|
+
});
|
|
45
|
+
_reactDom["default"].render(elem, (0, _assertThisInitialized2["default"])(_this), function () {
|
|
46
|
+
(0, _mathRendering.renderMath)((0, _assertThisInitialized2["default"])(_this));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dispatchChangedEvent", function () {
|
|
51
|
+
_this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(_this.tagName.toLowerCase(), _this.session && !!_this.session.value));
|
|
52
|
+
});
|
|
53
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeSession", function (value) {
|
|
54
|
+
_this.session.value = value;
|
|
55
|
+
_this.dispatchChangedEvent();
|
|
56
|
+
_this._render();
|
|
57
|
+
});
|
|
58
|
+
_this._model = null;
|
|
59
|
+
_this._session = null;
|
|
60
|
+
return _this;
|
|
61
|
+
}
|
|
62
|
+
(0, _createClass2["default"])(RootInlineDropdown, [{
|
|
63
|
+
key: "model",
|
|
64
|
+
set: function set(m) {
|
|
65
|
+
this._model = m;
|
|
66
|
+
this.dispatchEvent(new _piePlayerEvents.ModelSetEvent(this.tagName.toLowerCase(), this.session && !!this.session.value, !!this._model));
|
|
67
|
+
this._render();
|
|
68
|
+
}
|
|
69
|
+
}, {
|
|
70
|
+
key: "session",
|
|
71
|
+
get: function get() {
|
|
72
|
+
return this._session;
|
|
73
|
+
},
|
|
74
|
+
set: function set(s) {
|
|
75
|
+
this._session = s;
|
|
76
|
+
this._render();
|
|
77
|
+
}
|
|
78
|
+
}, {
|
|
79
|
+
key: "connectedCallback",
|
|
80
|
+
value: function connectedCallback() {
|
|
81
|
+
this._render();
|
|
82
|
+
}
|
|
83
|
+
}]);
|
|
84
|
+
return RootInlineDropdown;
|
|
85
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
86
|
+
exports["default"] = RootInlineDropdown;
|
|
87
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdERvbSIsIl9waWVQbGF5ZXJFdmVudHMiLCJfbWF0aFJlbmRlcmluZyIsIl9pbmxpbmVEcm9wZG93biIsIl9jcmVhdGVTdXBlciIsIkRlcml2ZWQiLCJoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIl9jcmVhdGVTdXBlckludGVybmFsIiwiU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwicmVzdWx0IiwiTmV3VGFyZ2V0IiwiY29uc3RydWN0b3IiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJzaGFtIiwiUHJveHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJlIiwiUm9vdElubGluZURyb3Bkb3duIiwiX0hUTUxFbGVtZW50IiwiX2luaGVyaXRzMiIsIl9zdXBlciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkMiIsIl9tb2RlbCIsIl9zZXNzaW9uIiwiZWxlbSIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIklubGluZURyb3Bkb3duIiwicHJvbXB0IiwicmF0aW9uYWxlIiwidGVhY2hlckluc3RydWN0aW9ucyIsImRpc2FibGVkIiwiZGlzcGxheVR5cGUiLCJtYXJrdXAiLCJtb2RlIiwiY2hvaWNlcyIsInZhbHVlIiwiZmVlZGJhY2siLCJvbkNoYW5nZSIsImNoYW5nZVNlc3Npb24iLCJSZWFjdERPTSIsInJlbmRlciIsInJlbmRlck1hdGgiLCJkaXNwYXRjaEV2ZW50IiwiU2Vzc2lvbkNoYW5nZWRFdmVudCIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsInNlc3Npb24iLCJkaXNwYXRjaENoYW5nZWRFdmVudCIsIl9yZW5kZXIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5Iiwic2V0IiwibSIsIk1vZGVsU2V0RXZlbnQiLCJnZXQiLCJzIiwiY29ubmVjdGVkQ2FsbGJhY2siLCJfd3JhcE5hdGl2ZVN1cGVyMiIsIkhUTUxFbGVtZW50IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyBNb2RlbFNldEV2ZW50LCBTZXNzaW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQHBpZS1mcmFtZXdvcmsvcGllLXBsYXllci1ldmVudHMnO1xuaW1wb3J0IHsgcmVuZGVyTWF0aCB9IGZyb20gJ0BwaWUtbGliL21hdGgtcmVuZGVyaW5nJztcbmltcG9ydCBJbmxpbmVEcm9wZG93biBmcm9tICcuL2lubGluZS1kcm9wZG93bic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvb3RJbmxpbmVEcm9wZG93biBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9tb2RlbCA9IG51bGw7XG4gICAgdGhpcy5fc2Vzc2lvbiA9IG51bGw7XG4gIH1cblxuICBzZXQgbW9kZWwobSkge1xuICAgIHRoaXMuX21vZGVsID0gbTtcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgTW9kZWxTZXRFdmVudCh0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSwgdGhpcy5zZXNzaW9uICYmICEhdGhpcy5zZXNzaW9uLnZhbHVlLCAhIXRoaXMuX21vZGVsKSxcbiAgICApO1xuXG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICBzZXQgc2Vzc2lvbihzKSB7XG4gICAgdGhpcy5fc2Vzc2lvbiA9IHM7XG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICBnZXQgc2Vzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbjtcbiAgfVxuXG4gIF9yZW5kZXIgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuX21vZGVsICYmIHRoaXMuX3Nlc3Npb24pIHtcbiAgICAgIGxldCBlbGVtID0gUmVhY3QuY3JlYXRlRWxlbWVudChJbmxpbmVEcm9wZG93biwge1xuICAgICAgICBwcm9tcHQ6IHRoaXMuX21vZGVsLnByb21wdCxcbiAgICAgICAgcmF0aW9uYWxlOiB0aGlzLl9tb2RlbC5yYXRpb25hbGUsXG4gICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IHRoaXMuX21vZGVsLnRlYWNoZXJJbnN0cnVjdGlvbnMsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLl9tb2RlbC5kaXNhYmxlZCxcbiAgICAgICAgZGlzcGxheVR5cGU6IHRoaXMuX21vZGVsLmRpc3BsYXlUeXBlLFxuICAgICAgICBtYXJrdXA6IHRoaXMuX21vZGVsLm1hcmt1cCxcbiAgICAgICAgbW9kZTogdGhpcy5fbW9kZWwubW9kZSxcbiAgICAgICAgY2hvaWNlczogdGhpcy5fbW9kZWwuY2hvaWNlcyxcbiAgICAgICAgdmFsdWU6IHRoaXMuX3Nlc3Npb24udmFsdWUsXG4gICAgICAgIGZlZWRiYWNrOiB0aGlzLl9tb2RlbC5mZWVkYmFjayxcbiAgICAgICAgb25DaGFuZ2U6IHRoaXMuY2hhbmdlU2Vzc2lvbixcbiAgICAgIH0pO1xuXG4gICAgICBSZWFjdERPTS5yZW5kZXIoZWxlbSwgdGhpcywgKCkgPT4ge1xuICAgICAgICByZW5kZXJNYXRoKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRpc3BhdGNoQ2hhbmdlZEV2ZW50ID0gKCkgPT4ge1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudCh0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSwgdGhpcy5zZXNzaW9uICYmICEhdGhpcy5zZXNzaW9uLnZhbHVlKSk7XG4gIH07XG5cbiAgY2hhbmdlU2Vzc2lvbiA9ICh2YWx1ZSkgPT4ge1xuICAgIHRoaXMuc2Vzc2lvbi52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZGlzcGF0Y2hDaGFuZ2VkRXZlbnQoKTtcbiAgICB0aGlzLl9yZW5kZXIoKTtcbiAgfTtcblxuICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICB0aGlzLl9yZW5kZXIoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksZUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQStDLFNBQUFLLGFBQUFDLE9BQUEsUUFBQUMseUJBQUEsR0FBQUMseUJBQUEsb0JBQUFDLHFCQUFBLFFBQUFDLEtBQUEsT0FBQUMsZ0JBQUEsYUFBQUwsT0FBQSxHQUFBTSxNQUFBLE1BQUFMLHlCQUFBLFFBQUFNLFNBQUEsT0FBQUYsZ0JBQUEsbUJBQUFHLFdBQUEsRUFBQUYsTUFBQSxHQUFBRyxPQUFBLENBQUFDLFNBQUEsQ0FBQU4sS0FBQSxFQUFBTyxTQUFBLEVBQUFKLFNBQUEsWUFBQUQsTUFBQSxHQUFBRixLQUFBLENBQUFRLEtBQUEsT0FBQUQsU0FBQSxnQkFBQUUsMkJBQUEsbUJBQUFQLE1BQUE7QUFBQSxTQUFBSiwwQkFBQSxlQUFBTyxPQUFBLHFCQUFBQSxPQUFBLENBQUFDLFNBQUEsb0JBQUFELE9BQUEsQ0FBQUMsU0FBQSxDQUFBSSxJQUFBLDJCQUFBQyxLQUFBLG9DQUFBQyxPQUFBLENBQUFDLFNBQUEsQ0FBQUMsT0FBQSxDQUFBQyxJQUFBLENBQUFWLE9BQUEsQ0FBQUMsU0FBQSxDQUFBTSxPQUFBLDhDQUFBSSxDQUFBO0FBQUEsSUFFMUJDLGtCQUFrQiwwQkFBQUMsWUFBQTtFQUFBLElBQUFDLFVBQUEsYUFBQUYsa0JBQUEsRUFBQUMsWUFBQTtFQUFBLElB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
|