@pie-element/multiple-choice 7.6.1-beta.1 → 7.6.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/package.json +3 -3
- package/package.json +3 -3
- package/configure/lib/__tests__/root.test.js +0 -271
- package/configure/lib/defaults.js +0 -120
- package/configure/lib/index.js +0 -212
- package/configure/lib/main.js +0 -492
- package/configure/lib/utils.js +0 -18
- package/controller/lib/__tests__/index.test.js +0 -864
- package/controller/lib/__tests__/utils.test.js +0 -8
- package/controller/lib/defaults.js +0 -18
- package/controller/lib/index.js +0 -305
- package/controller/lib/utils.js +0 -36
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/choice-input-test.js +0 -124
- package/lib/__tests__/index-test.js +0 -22
- package/lib/__tests__/multiple-choice-test.js +0 -237
- package/lib/__tests__/session-updater-test.js +0 -72
- package/lib/choice-input.js +0 -298
- package/lib/choice.js +0 -157
- package/lib/feedback-tick.js +0 -174
- package/lib/index.js +0 -151
- package/lib/main.js +0 -100
- package/lib/multiple-choice.js +0 -263
- package/lib/print.js +0 -129
- package/lib/session-updater.js +0 -35
package/configure/lib/main.js
DELETED
|
@@ -1,492 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = exports.Main = void 0;
|
|
9
|
-
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
-
|
|
18
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
|
|
20
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
-
|
|
22
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
-
|
|
24
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
-
|
|
26
|
-
var _react = _interopRequireDefault(require("react"));
|
|
27
|
-
|
|
28
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
|
-
|
|
30
|
-
var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
|
|
31
|
-
|
|
32
|
-
var _configUi = require("@pie-lib/config-ui");
|
|
33
|
-
|
|
34
|
-
var _renderUi = require("@pie-lib/render-ui");
|
|
35
|
-
|
|
36
|
-
var _styles = require("@material-ui/core/styles");
|
|
37
|
-
|
|
38
|
-
var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
|
|
39
|
-
|
|
40
|
-
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
|
|
41
|
-
|
|
42
|
-
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
43
|
-
|
|
44
|
-
var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
|
|
45
|
-
|
|
46
|
-
var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
47
|
-
|
|
48
|
-
var _utils = require("./utils");
|
|
49
|
-
|
|
50
|
-
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; }
|
|
51
|
-
|
|
52
|
-
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; }
|
|
53
|
-
|
|
54
|
-
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); }; }
|
|
55
|
-
|
|
56
|
-
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; } }
|
|
57
|
-
|
|
58
|
-
var Panel = _configUi.settings.Panel,
|
|
59
|
-
toggle = _configUi.settings.toggle,
|
|
60
|
-
radio = _configUi.settings.radio,
|
|
61
|
-
dropdown = _configUi.settings.dropdown;
|
|
62
|
-
var MAX_CHOICES = 9;
|
|
63
|
-
|
|
64
|
-
var styles = function styles(theme) {
|
|
65
|
-
return {
|
|
66
|
-
promptHolder: {
|
|
67
|
-
width: '100%',
|
|
68
|
-
paddingBottom: theme.spacing.unit * 2,
|
|
69
|
-
marginBottom: theme.spacing.unit * 2
|
|
70
|
-
},
|
|
71
|
-
prompt: {
|
|
72
|
-
paddingTop: theme.spacing.unit * 2,
|
|
73
|
-
width: '100%'
|
|
74
|
-
},
|
|
75
|
-
rationaleHolder: {
|
|
76
|
-
width: '70%'
|
|
77
|
-
},
|
|
78
|
-
accessibilityHolder: {
|
|
79
|
-
width: '70%'
|
|
80
|
-
},
|
|
81
|
-
rationale: {
|
|
82
|
-
paddingTop: theme.spacing.unit * 2
|
|
83
|
-
},
|
|
84
|
-
accessibility: {
|
|
85
|
-
paddingTop: theme.spacing.unit * 2
|
|
86
|
-
},
|
|
87
|
-
choiceConfigurationHolder: {
|
|
88
|
-
display: 'flex',
|
|
89
|
-
flexDirection: 'column',
|
|
90
|
-
alignItems: 'center'
|
|
91
|
-
},
|
|
92
|
-
choiceConfiguration: {
|
|
93
|
-
width: '100%',
|
|
94
|
-
paddingTop: theme.spacing.unit * 2,
|
|
95
|
-
paddingBottom: theme.spacing.unit * 2
|
|
96
|
-
},
|
|
97
|
-
switchElement: {
|
|
98
|
-
justifyContent: 'space-between',
|
|
99
|
-
margin: 0
|
|
100
|
-
},
|
|
101
|
-
addButton: {
|
|
102
|
-
marginTop: theme.spacing.unit * 3,
|
|
103
|
-
"float": 'right'
|
|
104
|
-
},
|
|
105
|
-
disableButton: {
|
|
106
|
-
cursor: 'not-allowed',
|
|
107
|
-
pointerEvents: 'all',
|
|
108
|
-
backgroundColor: _renderUi.color.disabled(),
|
|
109
|
-
'&:hover': {
|
|
110
|
-
backgroundColor: _renderUi.color.disabled()
|
|
111
|
-
},
|
|
112
|
-
'&:focus': {
|
|
113
|
-
backgroundColor: _renderUi.color.disabled()
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
flexContainer: {
|
|
117
|
-
display: 'flex',
|
|
118
|
-
alignItems: 'center',
|
|
119
|
-
marginBottom: theme.spacing.unit
|
|
120
|
-
},
|
|
121
|
-
titleText: {
|
|
122
|
-
fontFamily: 'Cerebri Sans',
|
|
123
|
-
fontSize: theme.typography.fontSize + 2,
|
|
124
|
-
lineHeight: '19px',
|
|
125
|
-
color: '#495B8F',
|
|
126
|
-
marginRight: theme.spacing.unit
|
|
127
|
-
},
|
|
128
|
-
tooltip: {
|
|
129
|
-
fontSize: theme.typography.fontSize - 2,
|
|
130
|
-
whiteSpace: 'pre',
|
|
131
|
-
maxWidth: '500px'
|
|
132
|
-
},
|
|
133
|
-
errorText: {
|
|
134
|
-
fontSize: theme.typography.fontSize - 2,
|
|
135
|
-
color: 'red',
|
|
136
|
-
paddingTop: theme.spacing.unit
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
142
|
-
var classes = props.classes,
|
|
143
|
-
model = props.model,
|
|
144
|
-
configuration = props.configuration,
|
|
145
|
-
onPromptChanged = props.onPromptChanged,
|
|
146
|
-
onChoiceChanged = props.onChoiceChanged,
|
|
147
|
-
onRemoveChoice = props.onRemoveChoice,
|
|
148
|
-
onAddChoice = props.onAddChoice,
|
|
149
|
-
imageSupport = props.imageSupport,
|
|
150
|
-
uploadSoundSupport = props.uploadSoundSupport,
|
|
151
|
-
onChangeModel = props.onChangeModel,
|
|
152
|
-
onConfigurationChanged = props.onConfigurationChanged,
|
|
153
|
-
onTeacherInstructionsChanged = props.onTeacherInstructionsChanged;
|
|
154
|
-
|
|
155
|
-
var _ref = configuration || {},
|
|
156
|
-
_ref$prompt = _ref.prompt,
|
|
157
|
-
prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
|
|
158
|
-
_ref$addChoiceButton = _ref.addChoiceButton,
|
|
159
|
-
addChoiceButton = _ref$addChoiceButton === void 0 ? {} : _ref$addChoiceButton,
|
|
160
|
-
_ref$feedback = _ref.feedback,
|
|
161
|
-
feedback = _ref$feedback === void 0 ? {} : _ref$feedback,
|
|
162
|
-
_ref$deleteChoice = _ref.deleteChoice,
|
|
163
|
-
deleteChoice = _ref$deleteChoice === void 0 ? {} : _ref$deleteChoice,
|
|
164
|
-
_ref$choiceMode = _ref.choiceMode,
|
|
165
|
-
choiceMode = _ref$choiceMode === void 0 ? {} : _ref$choiceMode,
|
|
166
|
-
_ref$choicePrefix = _ref.choicePrefix,
|
|
167
|
-
choicePrefix = _ref$choicePrefix === void 0 ? {} : _ref$choicePrefix,
|
|
168
|
-
_ref$partialScoring = _ref.partialScoring,
|
|
169
|
-
partialScoring = _ref$partialScoring === void 0 ? {} : _ref$partialScoring,
|
|
170
|
-
_ref$lockChoiceOrder = _ref.lockChoiceOrder,
|
|
171
|
-
lockChoiceOrder = _ref$lockChoiceOrder === void 0 ? {} : _ref$lockChoiceOrder,
|
|
172
|
-
_ref$teacherInstructi = _ref.teacherInstructions,
|
|
173
|
-
teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
|
|
174
|
-
_ref$studentInstructi = _ref.studentInstructions,
|
|
175
|
-
studentInstructions = _ref$studentInstructi === void 0 ? {} : _ref$studentInstructi,
|
|
176
|
-
_ref$rationale = _ref.rationale,
|
|
177
|
-
rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
|
|
178
|
-
_ref$accessibility = _ref.accessibility,
|
|
179
|
-
accessibility = _ref$accessibility === void 0 ? {} : _ref$accessibility,
|
|
180
|
-
_ref$scoringType = _ref.scoringType,
|
|
181
|
-
scoringType = _ref$scoringType === void 0 ? {} : _ref$scoringType,
|
|
182
|
-
_ref$sequentialChoice = _ref.sequentialChoiceLabels,
|
|
183
|
-
sequentialChoiceLabels = _ref$sequentialChoice === void 0 ? {} : _ref$sequentialChoice,
|
|
184
|
-
settingsPanelDisabled = _ref.settingsPanelDisabled,
|
|
185
|
-
choicesLayout = _ref.choicesLayout,
|
|
186
|
-
_ref$spellCheck = _ref.spellCheck,
|
|
187
|
-
spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
|
|
188
|
-
gridColumns = _ref.gridColumns,
|
|
189
|
-
_ref$maxImageWidth = _ref.maxImageWidth,
|
|
190
|
-
maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
|
|
191
|
-
_ref$maxImageHeight = _ref.maxImageHeight,
|
|
192
|
-
maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight,
|
|
193
|
-
_ref$withRubric = _ref.withRubric,
|
|
194
|
-
withRubric = _ref$withRubric === void 0 ? {} : _ref$withRubric;
|
|
195
|
-
|
|
196
|
-
var _ref2 = configuration || {},
|
|
197
|
-
maxAnswerChoices = _ref2.maxAnswerChoices;
|
|
198
|
-
|
|
199
|
-
var _ref3 = model || {},
|
|
200
|
-
limitChoicesNumber = _ref3.limitChoicesNumber,
|
|
201
|
-
teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
|
|
202
|
-
rationaleEnabled = _ref3.rationaleEnabled,
|
|
203
|
-
accessibilityLabelsEnabled = _ref3.accessibilityLabelsEnabled,
|
|
204
|
-
feedbackEnabled = _ref3.feedbackEnabled,
|
|
205
|
-
promptEnabled = _ref3.promptEnabled,
|
|
206
|
-
spellCheckEnabled = _ref3.spellCheckEnabled,
|
|
207
|
-
choices = _ref3.choices,
|
|
208
|
-
errors = _ref3.errors,
|
|
209
|
-
toolbarEditorPosition = _ref3.toolbarEditorPosition;
|
|
210
|
-
|
|
211
|
-
var _ref4 = errors || {},
|
|
212
|
-
choicesErrors = _ref4.choicesErrors,
|
|
213
|
-
correctResponseError = _ref4.correctResponseError,
|
|
214
|
-
answerChoicesError = _ref4.answerChoicesError;
|
|
215
|
-
|
|
216
|
-
var nrOfColumnsAvailable = choices !== null && choices !== void 0 && choices.length ? Array.from({
|
|
217
|
-
length: choices.length
|
|
218
|
-
}, function (_, i) {
|
|
219
|
-
return "".concat(i + 1);
|
|
220
|
-
}) : [];
|
|
221
|
-
var labelPlugins = {
|
|
222
|
-
audio: {
|
|
223
|
-
disabled: true
|
|
224
|
-
},
|
|
225
|
-
video: {
|
|
226
|
-
disabled: true
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
var toolbarOpts = {
|
|
230
|
-
position: toolbarEditorPosition === 'top' ? 'top' : 'bottom'
|
|
231
|
-
}; // if old property is used, set maxAnswerChoices to 9
|
|
232
|
-
|
|
233
|
-
if (limitChoicesNumber) {
|
|
234
|
-
maxAnswerChoices = MAX_CHOICES;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
var validationMessage = (0, _utils.generateValidationMessage)(configuration);
|
|
238
|
-
var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
|
|
239
|
-
var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
|
|
240
|
-
var addChoiceButtonTooltip = maxAnswerChoices && (choices === null || choices === void 0 ? void 0 : choices.length) >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '';
|
|
241
|
-
var panelSettings = {
|
|
242
|
-
choiceMode: choiceMode.settings && radio(choiceMode.label, ['checkbox', 'radio']),
|
|
243
|
-
'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),
|
|
244
|
-
choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),
|
|
245
|
-
partialScoring: partialScoring.settings && toggle(partialScoring.label),
|
|
246
|
-
lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
|
|
247
|
-
feedbackEnabled: feedback.settings && toggle(feedback.label),
|
|
248
|
-
choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),
|
|
249
|
-
gridColumns: choicesLayout.settings && model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0 && dropdown(gridColumns.label, nrOfColumnsAvailable)
|
|
250
|
-
};
|
|
251
|
-
var panelProperties = {
|
|
252
|
-
teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
|
|
253
|
-
studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
|
|
254
|
-
promptEnabled: prompt.settings && toggle(prompt.label),
|
|
255
|
-
rationaleEnabled: rationale.settings && toggle(rationale.label),
|
|
256
|
-
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
|
|
257
|
-
accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),
|
|
258
|
-
scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),
|
|
259
|
-
rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label)
|
|
260
|
-
};
|
|
261
|
-
return /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
|
|
262
|
-
hideSettings: settingsPanelDisabled,
|
|
263
|
-
settings: /*#__PURE__*/_react["default"].createElement(Panel, {
|
|
264
|
-
model: model,
|
|
265
|
-
onChangeModel: onChangeModel,
|
|
266
|
-
configuration: configuration,
|
|
267
|
-
onChangeConfiguration: onConfigurationChanged,
|
|
268
|
-
groups: {
|
|
269
|
-
Settings: panelSettings,
|
|
270
|
-
Properties: panelProperties
|
|
271
|
-
}
|
|
272
|
-
})
|
|
273
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
274
|
-
label: prompt.label,
|
|
275
|
-
className: classes.promptHolder
|
|
276
|
-
}, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
277
|
-
className: classes.prompt,
|
|
278
|
-
markup: model.prompt,
|
|
279
|
-
onChange: onPromptChanged,
|
|
280
|
-
imageSupport: imageSupport,
|
|
281
|
-
nonEmpty: false,
|
|
282
|
-
disableUnderline: true,
|
|
283
|
-
toolbarOpts: toolbarOpts,
|
|
284
|
-
spellCheck: spellCheckEnabled,
|
|
285
|
-
maxImageWidth: maxImageWidth && maxImageWidth.prompt,
|
|
286
|
-
maxImageHeight: maxImageHeight && maxImageHeight.prompt,
|
|
287
|
-
uploadSoundSupport: uploadSoundSupport,
|
|
288
|
-
languageCharactersProps: [{
|
|
289
|
-
language: 'spanish'
|
|
290
|
-
}, {
|
|
291
|
-
language: 'special'
|
|
292
|
-
}]
|
|
293
|
-
})), correctResponseError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
294
|
-
className: classes.errorText
|
|
295
|
-
}, correctResponseError), answerChoicesError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
296
|
-
className: classes.errorText
|
|
297
|
-
}, answerChoicesError), addChoiceButton.settings && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
298
|
-
title: addChoiceButtonTooltip,
|
|
299
|
-
classes: {
|
|
300
|
-
tooltip: classes.tooltip
|
|
301
|
-
}
|
|
302
|
-
}, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
303
|
-
classes: {
|
|
304
|
-
root: maxAnswerChoices && (choices === null || choices === void 0 ? void 0 : choices.length) >= maxAnswerChoices && classes.disableButton
|
|
305
|
-
},
|
|
306
|
-
className: classes.addButton,
|
|
307
|
-
variant: "contained",
|
|
308
|
-
color: "primary",
|
|
309
|
-
onClick: onAddChoice
|
|
310
|
-
}, addChoiceButton.label))));
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
var Main = /*#__PURE__*/function (_React$Component) {
|
|
314
|
-
(0, _inherits2["default"])(Main, _React$Component);
|
|
315
|
-
|
|
316
|
-
var _super = _createSuper(Main);
|
|
317
|
-
|
|
318
|
-
function Main() {
|
|
319
|
-
var _this;
|
|
320
|
-
|
|
321
|
-
(0, _classCallCheck2["default"])(this, Main);
|
|
322
|
-
|
|
323
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
324
|
-
args[_key] = arguments[_key];
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
328
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
329
|
-
showWarning: false
|
|
330
|
-
});
|
|
331
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveChoice", function (index) {
|
|
332
|
-
var _this$props = _this.props,
|
|
333
|
-
model = _this$props.model,
|
|
334
|
-
configuration = _this$props.configuration,
|
|
335
|
-
onModelChanged = _this$props.onModelChanged;
|
|
336
|
-
|
|
337
|
-
var _ref5 = configuration || {},
|
|
338
|
-
minAnswerChoices = _ref5.minAnswerChoices;
|
|
339
|
-
|
|
340
|
-
if (minAnswerChoices && model.choices.length === minAnswerChoices) {
|
|
341
|
-
_this.setState({
|
|
342
|
-
showWarning: true
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
return;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
model.choices.splice(index, 1);
|
|
349
|
-
onModelChanged(model);
|
|
350
|
-
});
|
|
351
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAddChoice", function () {
|
|
352
|
-
var _this$props2 = _this.props,
|
|
353
|
-
model = _this$props2.model,
|
|
354
|
-
configuration = _this$props2.configuration,
|
|
355
|
-
onModelChanged = _this$props2.onModelChanged;
|
|
356
|
-
|
|
357
|
-
var _ref6 = configuration || {},
|
|
358
|
-
maxAnswerChoices = _ref6.maxAnswerChoices;
|
|
359
|
-
|
|
360
|
-
var _ref7 = model || {},
|
|
361
|
-
limitChoicesNumber = _ref7.limitChoicesNumber; // if old property is used, set maxAnswerChoices to 9
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
if (limitChoicesNumber) {
|
|
365
|
-
maxAnswerChoices = MAX_CHOICES;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {
|
|
369
|
-
return;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
model.choices.push({
|
|
373
|
-
label: '',
|
|
374
|
-
value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
|
|
375
|
-
return c.value;
|
|
376
|
-
}), 0),
|
|
377
|
-
feedback: {
|
|
378
|
-
type: 'none'
|
|
379
|
-
}
|
|
380
|
-
});
|
|
381
|
-
onModelChanged(model);
|
|
382
|
-
});
|
|
383
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChoiceChanged", function (index, choice) {
|
|
384
|
-
var _this$props3 = _this.props,
|
|
385
|
-
model = _this$props3.model,
|
|
386
|
-
onModelChanged = _this$props3.onModelChanged;
|
|
387
|
-
|
|
388
|
-
if (choice.correct && model.choiceMode === 'radio') {
|
|
389
|
-
model.choices = model.choices.map(function (c) {
|
|
390
|
-
return (0, _merge["default"])({}, c, {
|
|
391
|
-
correct: false
|
|
392
|
-
});
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
model.choices.splice(index, 1, choice);
|
|
397
|
-
onModelChanged(model);
|
|
398
|
-
});
|
|
399
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onPromptChanged", function (prompt) {
|
|
400
|
-
_this.props.onModelChanged(_objectSpread(_objectSpread({}, _this.props.model), {}, {
|
|
401
|
-
prompt: prompt
|
|
402
|
-
}));
|
|
403
|
-
});
|
|
404
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onTeacherInstructionsChanged", function (teacherInstructions) {
|
|
405
|
-
_this.props.onModelChanged(_objectSpread(_objectSpread({}, _this.props.model), {}, {
|
|
406
|
-
teacherInstructions: teacherInstructions
|
|
407
|
-
}));
|
|
408
|
-
});
|
|
409
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onModelChanged", function (model, key) {
|
|
410
|
-
var onModelChanged = _this.props.onModelChanged;
|
|
411
|
-
|
|
412
|
-
switch (key) {
|
|
413
|
-
case 'choiceMode':
|
|
414
|
-
{
|
|
415
|
-
var value = model.choiceMode;
|
|
416
|
-
|
|
417
|
-
if (value === 'radio') {
|
|
418
|
-
var correctFound = false;
|
|
419
|
-
model.choices = model.choices.map(function (c) {
|
|
420
|
-
if (correctFound) {
|
|
421
|
-
c.correct = false;
|
|
422
|
-
return c;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
if (c.correct) {
|
|
426
|
-
correctFound = true;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
return c;
|
|
430
|
-
});
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
onModelChanged(model, true);
|
|
434
|
-
break;
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
default:
|
|
438
|
-
onModelChanged(model);
|
|
439
|
-
break;
|
|
440
|
-
}
|
|
441
|
-
});
|
|
442
|
-
return _this;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
(0, _createClass2["default"])(Main, [{
|
|
446
|
-
key: "render",
|
|
447
|
-
value: function render() {
|
|
448
|
-
var _this2 = this;
|
|
449
|
-
|
|
450
|
-
var _this$props$configura = this.props.configuration;
|
|
451
|
-
_this$props$configura = _this$props$configura === void 0 ? {} : _this$props$configura;
|
|
452
|
-
var minAnswerChoices = _this$props$configura.minAnswerChoices;
|
|
453
|
-
var showWarning = this.state.showWarning;
|
|
454
|
-
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_configUi.AlertDialog, {
|
|
455
|
-
open: showWarning,
|
|
456
|
-
title: "Warning",
|
|
457
|
-
text: "There can't be less than ".concat(minAnswerChoices || 0, " choices."),
|
|
458
|
-
onConfirm: function onConfirm() {
|
|
459
|
-
return _this2.setState({
|
|
460
|
-
showWarning: false
|
|
461
|
-
});
|
|
462
|
-
}
|
|
463
|
-
}), /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
|
|
464
|
-
onChangeModel: this.onModelChanged,
|
|
465
|
-
onRemoveChoice: this.onRemoveChoice,
|
|
466
|
-
onChoiceChanged: this.onChoiceChanged,
|
|
467
|
-
onAddChoice: this.onAddChoice,
|
|
468
|
-
onPromptChanged: this.onPromptChanged,
|
|
469
|
-
onTeacherInstructionsChanged: this.onTeacherInstructionsChanged
|
|
470
|
-
})));
|
|
471
|
-
}
|
|
472
|
-
}]);
|
|
473
|
-
return Main;
|
|
474
|
-
}(_react["default"].Component);
|
|
475
|
-
|
|
476
|
-
exports.Main = Main;
|
|
477
|
-
(0, _defineProperty2["default"])(Main, "propTypes", {
|
|
478
|
-
model: _propTypes["default"].object.isRequired,
|
|
479
|
-
configuration: _propTypes["default"].object.isRequired,
|
|
480
|
-
disableSidePanel: _propTypes["default"].bool,
|
|
481
|
-
onModelChanged: _propTypes["default"].func.isRequired,
|
|
482
|
-
onConfigurationChanged: _propTypes["default"].func.isRequired,
|
|
483
|
-
classes: _propTypes["default"].object.isRequired,
|
|
484
|
-
imageSupport: _propTypes["default"].shape({
|
|
485
|
-
add: _propTypes["default"].func.isRequired,
|
|
486
|
-
"delete": _propTypes["default"].func.isRequired
|
|
487
|
-
})
|
|
488
|
-
});
|
|
489
|
-
var Styled = (0, _styles.withStyles)(styles)(Main);
|
|
490
|
-
var _default = Styled;
|
|
491
|
-
exports["default"] = _default;
|
|
492
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJQYW5lbCIsInNldHRpbmdzIiwidG9nZ2xlIiwicmFkaW8iLCJkcm9wZG93biIsIk1BWF9DSE9JQ0VTIiwic3R5bGVzIiwidGhlbWUiLCJwcm9tcHRIb2xkZXIiLCJ3aWR0aCIsInBhZGRpbmdCb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsIm1hcmdpbkJvdHRvbSIsInByb21wdCIsInBhZGRpbmdUb3AiLCJyYXRpb25hbGVIb2xkZXIiLCJhY2Nlc3NpYmlsaXR5SG9sZGVyIiwicmF0aW9uYWxlIiwiYWNjZXNzaWJpbGl0eSIsImNob2ljZUNvbmZpZ3VyYXRpb25Ib2xkZXIiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJjaG9pY2VDb25maWd1cmF0aW9uIiwic3dpdGNoRWxlbWVudCIsImp1c3RpZnlDb250ZW50IiwibWFyZ2luIiwiYWRkQnV0dG9uIiwibWFyZ2luVG9wIiwiZGlzYWJsZUJ1dHRvbiIsImN1cnNvciIsInBvaW50ZXJFdmVudHMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb2xvciIsImRpc2FibGVkIiwiZmxleENvbnRhaW5lciIsInRpdGxlVGV4dCIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsInR5cG9ncmFwaHkiLCJsaW5lSGVpZ2h0IiwibWFyZ2luUmlnaHQiLCJ0b29sdGlwIiwid2hpdGVTcGFjZSIsIm1heFdpZHRoIiwiZXJyb3JUZXh0IiwiRGVzaWduIiwicHJvcHMiLCJjbGFzc2VzIiwibW9kZWwiLCJjb25maWd1cmF0aW9uIiwib25Qcm9tcHRDaGFuZ2VkIiwib25DaG9pY2VDaGFuZ2VkIiwib25SZW1vdmVDaG9pY2UiLCJvbkFkZENob2ljZSIsImltYWdlU3VwcG9ydCIsInVwbG9hZFNvdW5kU3VwcG9ydCIsIm9uQ2hhbmdlTW9kZWwiLCJvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkIiwib25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCIsImFkZENob2ljZUJ1dHRvbiIsImZlZWRiYWNrIiwiZGVsZXRlQ2hvaWNlIiwiY2hvaWNlTW9kZSIsImNob2ljZVByZWZpeCIsInBhcnRpYWxTY29yaW5nIiwibG9ja0Nob2ljZU9yZGVyIiwidGVhY2hlckluc3RydWN0aW9ucyIsInN0dWRlbnRJbnN0cnVjdGlvbnMiLCJzY29yaW5nVHlwZSIsInNlcXVlbnRpYWxDaG9pY2VMYWJlbHMiLCJzZXR0aW5nc1BhbmVsRGlzYWJsZWQiLCJjaG9pY2VzTGF5b3V0Iiwic3BlbGxDaGVjayIsImdyaWRDb2x1bW5zIiwibWF4SW1hZ2VXaWR0aCIsIm1heEltYWdlSGVpZ2h0Iiwid2l0aFJ1YnJpYyIsIm1heEFuc3dlckNob2ljZXMiLCJsaW1pdENob2ljZXNOdW1iZXIiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZCIsInJhdGlvbmFsZUVuYWJsZWQiLCJhY2Nlc3NpYmlsaXR5TGFiZWxzRW5hYmxlZCIsImZlZWRiYWNrRW5hYmxlZCIsInByb21wdEVuYWJsZWQiLCJzcGVsbENoZWNrRW5hYmxlZCIsImNob2ljZXMiLCJlcnJvcnMiLCJ0b29sYmFyRWRpdG9yUG9zaXRpb24iLCJjaG9pY2VzRXJyb3JzIiwiY29ycmVjdFJlc3BvbnNlRXJyb3IiLCJhbnN3ZXJDaG9pY2VzRXJyb3IiLCJuck9mQ29sdW1uc0F2YWlsYWJsZSIsImxlbmd0aCIsIkFycmF5IiwiZnJvbSIsIl8iLCJpIiwibGFiZWxQbHVnaW5zIiwiYXVkaW8iLCJ2aWRlbyIsInRvb2xiYXJPcHRzIiwicG9zaXRpb24iLCJ2YWxpZGF0aW9uTWVzc2FnZSIsImRlZmF1bHRJbWFnZU1heFdpZHRoIiwiZGVmYXVsdEltYWdlTWF4SGVpZ2h0IiwiYWRkQ2hvaWNlQnV0dG9uVG9vbHRpcCIsInBhbmVsU2V0dGluZ3MiLCJsYWJlbCIsInBhbmVsUHJvcGVydGllcyIsInN0dWRlbnRJbnN0cnVjdGlvbnNFbmFibGVkIiwicnVicmljRW5hYmxlZCIsIlNldHRpbmdzIiwiUHJvcGVydGllcyIsImxhbmd1YWdlIiwicm9vdCIsIk1haW4iLCJzaG93V2FybmluZyIsImluZGV4Iiwib25Nb2RlbENoYW5nZWQiLCJtaW5BbnN3ZXJDaG9pY2VzIiwic2V0U3RhdGUiLCJzcGxpY2UiLCJwdXNoIiwidmFsdWUiLCJ1dGlscyIsImZpcnN0QXZhaWxhYmxlSW5kZXgiLCJtYXAiLCJjIiwidHlwZSIsImNob2ljZSIsImNvcnJlY3QiLCJrZXkiLCJjb3JyZWN0Rm91bmQiLCJzdGF0ZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImRpc2FibGVTaWRlUGFuZWwiLCJib29sIiwiZnVuYyIsInNoYXBlIiwiYWRkIiwiU3R5bGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxJQUFRQSxLQUFSLEdBQTJDQyxrQkFBM0MsQ0FBUUQsS0FBUjtBQUFBLElBQWVFLE1BQWYsR0FBMkNELGtCQUEzQyxDQUFlQyxNQUFmO0FBQUEsSUFBdUJDLEtBQXZCLEdBQTJDRixrQkFBM0MsQ0FBdUJFLEtBQXZCO0FBQUEsSUFBOEJDLFFBQTlCLEdBQTJDSCxrQkFBM0MsQ0FBOEJHLFFBQTlCO0FBRUEsSUFBTUMsV0FBVyxHQUFHLENBQXBCOztBQUVBLElBQU1DLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQUNDLEtBQUQ7QUFBQSxTQUFZO0FBQ3pCQyxJQUFBQSxZQUFZLEVBQUU7QUFDWkMsTUFBQUEsS0FBSyxFQUFFLE1BREs7QUFFWkMsTUFBQUEsYUFBYSxFQUFFSCxLQUFLLENBQUNJLE9BQU4sQ0FBY0MsSUFBZCxHQUFxQixDQUZ4QjtBQUdaQyxNQUFBQSxZQUFZLEVBQUVOLEtBQUssQ0FBQ0ksT0FBTixDQUFjQyxJQUFkLEdBQXFCO0FBSHZCLEtBRFc7QUFNekJFLElBQUFBLE1BQU0sRUFBRTtBQUNOQyxNQUFBQSxVQUFVLEVBQUVSLEtB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NkIsTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IEVkaXRhYmxlSHRtbCBmcm9tICdAcGllLWxpYi9lZGl0YWJsZS1odG1sJztcbmltcG9ydCB7XG4gIEFsZXJ0RGlhbG9nLFxuICBJbnB1dENvbnRhaW5lcixcbiAgQ2hvaWNlQ29uZmlndXJhdGlvbixcbiAgc2V0dGluZ3MsXG4gIGxheW91dCxcbiAgY2hvaWNlVXRpbHMgYXMgdXRpbHMsXG59IGZyb20gJ0BwaWUtbGliL2NvbmZpZy11aSc7XG5pbXBvcnQgeyBjb2xvciB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvQnV0dG9uJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1Rvb2x0aXAnO1xuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvVHlwb2dyYXBoeSc7XG5pbXBvcnQgSW5mbyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvSW5mbyc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbmltcG9ydCB7IGdlbmVyYXRlVmFsaWRhdGlvbk1lc3NhZ2UgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgeyBQYW5lbCwgdG9nZ2xlLCByYWRpbywgZHJvcGRvd24gfSA9IHNldHRpbmdzO1xuXG5jb25zdCBNQVhfQ0hPSUNFUyA9IDk7XG5cbmNvbnN0IHN0eWxlcyA9ICh0aGVtZSkgPT4gKHtcbiAgcHJvbXB0SG9sZGVyOiB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwYWRkaW5nQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyLFxuICAgIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgfSxcbiAgcHJvbXB0OiB7XG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxuICByYXRpb25hbGVIb2xkZXI6IHtcbiAgICB3aWR0aDogJzcwJScsXG4gIH0sXG4gIGFjY2Vzc2liaWxpdHlIb2xkZXI6IHtcbiAgICB3aWR0aDogJzcwJScsXG4gIH0sXG4gIHJhdGlvbmFsZToge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIGFjY2Vzc2liaWxpdHk6IHtcbiAgICBwYWRkaW5nVG9wOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyLFxuICB9LFxuICBjaG9pY2VDb25maWd1cmF0aW9uSG9sZGVyOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9LFxuICBjaG9pY2VDb25maWd1cmF0aW9uOiB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwYWRkaW5nVG9wOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIHN3aXRjaEVsZW1lbnQ6IHtcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIG1hcmdpbjogMCxcbiAgfSxcbiAgYWRkQnV0dG9uOiB7XG4gICAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAzLFxuICAgIGZsb2F0OiAncmlnaHQnLFxuICB9LFxuICBkaXNhYmxlQnV0dG9uOiB7XG4gICAgY3Vyc29yOiAnbm90LWFsbG93ZWQnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdhbGwnLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuZGlzYWJsZWQoKSxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuZGlzYWJsZWQoKSxcbiAgICB9LFxuICAgICcmOmZvY3VzJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5kaXNhYmxlZCgpLFxuICAgIH0sXG4gIH0sXG4gIGZsZXhDb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gIH0sXG4gIHRpdGxlVGV4dDoge1xuICAgIGZvbnRGYW1pbHk6ICdDZXJlYnJpIFNhbnMnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRTaXplICsgMixcbiAgICBsaW5lSGVpZ2h0OiAnMTlweCcsXG4gICAgY29sb3I6ICcjNDk1QjhGJyxcbiAgICBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2luZy51bml0LFxuICB9LFxuICB0b29sdGlwOiB7XG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFNpemUgLSAyLFxuICAgIHdoaXRlU3BhY2U6ICdwcmUnLFxuICAgIG1heFdpZHRoOiAnNTAwcHgnLFxuICB9LFxuICBlcnJvclRleHQ6IHtcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSAtIDIsXG4gICAgY29sb3I6ICdyZWQnLFxuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgfSxcbn0pO1xuXG5jb25zdCBEZXNpZ24gPSB3aXRoU3R5bGVzKHN0eWxlcykoKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIG1vZGVsLFxuICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgb25Qcm9tcHRDaGFuZ2VkLFxuICAgIG9uQ2hvaWNlQ2hhbmdlZCxcbiAgICBvblJlbW92ZUNob2ljZSxcbiAgICBvbkFkZENob2ljZSxcbiAgICBpbWFnZVN1cHBvcnQsXG4gICAgdXBsb2FkU291bmRTdXBwb3J0LFxuICAgIG9uQ2hhbmdlTW9kZWwsXG4gICAgb25Db25maWd1cmF0aW9uQ2hhbmdlZCxcbiAgICBvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkLFxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3Qge1xuICAgIHByb21wdCA9IHt9LFxuICAgIGFkZENob2ljZUJ1dHRvbiA9IHt9LFxuICAgIGZlZWRiYWNrID0ge30sXG4gICAgZGVsZXRlQ2hvaWNlID0ge30sXG4gICAgY2hvaWNlTW9kZSA9IHt9LFxuICAgIGNob2ljZVByZWZpeCA9IHt9LFxuICAgIHBhcnRpYWxTY29yaW5nID0ge30sXG4gICAgbG9ja0Nob2ljZU9yZGVyID0ge30sXG4gICAgdGVhY2hlckluc3RydWN0aW9ucyA9IHt9LFxuICAgIHN0dWRlbnRJbnN0cnVjdGlvbnMgPSB7fSxcbiAgICByYXRpb25hbGUgPSB7fSxcbiAgICBhY2Nlc3NpYmlsaXR5ID0ge30sXG4gICAgc2NvcmluZ1R5cGUgPSB7fSxcbiAgICBzZXF1ZW50aWFsQ2hvaWNlTGFiZWxzID0ge30sXG4gICAgc2V0dGluZ3NQYW5lbERpc2FibGVkLFxuICAgIGNob2ljZXNMYXlvdXQsXG4gICAgc3BlbGxDaGVjayA9IHt9LFxuICAgIGdyaWRDb2x1bW5zLFxuICAgIG1heEltYWdlV2lkdGggPSB7fSxcbiAgICBtYXhJbWFnZUhlaWdodCA9IHt9LFxuICAgIHdpdGhSdWJyaWMgPSB7fSxcbiAgfSA9IGNvbmZpZ3VyYXRpb24gfHwge307XG4gIGxldCB7IG1heEFuc3dlckNob2ljZXMgfSA9IGNvbmZpZ3VyYXRpb24gfHwge307XG4gIGNvbnN0IHtcbiAgICBsaW1pdENob2ljZXNOdW1iZXIsXG4gICAgdGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQsXG4gICAgcmF0aW9uYWxlRW5hYmxlZCxcbiAgICBhY2Nlc3NpYmlsaXR5TGFiZWxzRW5hYmxlZCxcbiAgICBmZWVkYmFja0VuYWJsZWQsXG4gICAgcHJvbXB0RW5hYmxlZCxcbiAgICBzcGVsbENoZWNrRW5hYmxlZCxcbiAgICBjaG9pY2VzLFxuICAgIGVycm9ycyxcbiAgICB0b29sYmFyRWRpdG9yUG9zaXRpb24sXG4gIH0gPSBtb2RlbCB8fCB7fTtcblxuICBjb25zdCB7IGNob2ljZXNFcnJvcnMsIGNvcnJlY3RSZXNwb25zZUVycm9yLCBhbnN3ZXJDaG9pY2VzRXJyb3IgfSA9IGVycm9ycyB8fCB7fTtcbiAgY29uc3QgbnJPZkNvbHVtbnNBdmFpbGFibGUgPSBjaG9pY2VzPy5sZW5ndGggPyBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjaG9pY2VzLmxlbmd0aCB9LCAoXywgaSkgPT4gYCR7aSArIDF9YCkgOiBbXTtcblxuICBjb25zdCBsYWJlbFBsdWdpbnMgPSB7XG4gICAgYXVkaW86IHsgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB2aWRlbzogeyBkaXNhYmxlZDogdHJ1ZSB9LFxuICB9O1xuXG4gIGNvbnN0IHRvb2xiYXJPcHRzID0ge1xuICAgIHBvc2l0aW9uOiB0b29sYmFyRWRpdG9yUG9zaXRpb24gPT09ICd0b3AnID8gJ3RvcCcgOiAnYm90dG9tJyxcbiAgfTtcblxuICAvLyBpZiBvbGQgcHJvcGVydHkgaXMgdXNlZCwgc2V0IG1heEFuc3dlckNob2ljZXMgdG8gOVxuICBpZiAobGltaXRDaG9pY2VzTnVtYmVyKSB7XG4gICAgbWF4QW5zd2VyQ2hvaWNlcyA9IE1BWF9DSE9JQ0VTO1xuICB9XG5cbiAgY29uc3QgdmFsaWRhdGlvbk1lc3NhZ2UgPSBnZW5lcmF0ZVZhbGlkYXRpb25NZXNzYWdlKGNvbmZpZ3VyYXRpb24pO1xuICBjb25zdCBkZWZhdWx0SW1hZ2VNYXhXaWR0aCA9IG1heEltYWdlV2lkdGggJiYgbWF4SW1hZ2VXaWR0aC5wcm9tcHQ7XG4gIGNvbnN0IGRlZmF1bHRJbWFnZU1heEhlaWdodCA9IG1heEltYWdlSGVpZ2h0ICYmIG1heEltYWdlSGVpZ2h0LnByb21wdDtcbiAgY29uc3QgYWRkQ2hvaWNlQnV0dG9uVG9vbHRpcCA9XG4gICAgbWF4QW5zd2VyQ2hvaWNlcyAmJiBjaG9pY2VzPy5sZW5ndGggPj0gbWF4QW5zd2VyQ2hvaWNlcyA/IGBPbmx5ICR7bWF4QW5zd2VyQ2hvaWNlc30gYWxsb3dlZCBtYXhpbXVtYCA6ICcnO1xuXG4gIGNvbnN0IHBhbmVsU2V0dGluZ3MgPSB7XG4gICAgY2hvaWNlTW9kZTogY2hvaWNlTW9kZS5zZXR0aW5ncyAmJiByYWRpbyhjaG9pY2VNb2RlLmxhYmVsLCBbJ2NoZWNrYm94JywgJ3JhZGlvJ10pLFxuICAgICdzZXF1ZW50aWFsQ2hvaWNlTGFiZWxzLmVuYWJsZWQnOiBzZXF1ZW50aWFsQ2hvaWNlTGFiZWxzLnNldHRpbmdzICYmIHRvZ2dsZShzZXF1ZW50aWFsQ2hvaWNlTGFiZWxzLmxhYmVsLCB0cnVlKSxcbiAgICBjaG9pY2VQcmVmaXg6IGNob2ljZVByZWZpeC5zZXR0aW5ncyAmJiByYWRpbyhjaG9pY2VQcmVmaXgubGFiZWwsIFsnbnVtYmVycycsICdsZXR0ZXJzJ10pLFxuICAgIHBhcnRpYWxTY29yaW5nOiBwYXJ0aWFsU2NvcmluZy5zZXR0aW5ncyAmJiB0b2dnbGUocGFydGlhbFNjb3JpbmcubGFiZWwpLFxuICAgIGxvY2tDaG9pY2VPcmRlcjogbG9ja0Nob2ljZU9yZGVyLnNldHRpbmdzICYmIHRvZ2dsZShsb2NrQ2hvaWNlT3JkZXIubGFiZWwpLFxuICAgIGZlZWRiYWNrRW5hYmxlZDogZmVlZGJhY2suc2V0dGluZ3MgJiYgdG9nZ2xlKGZlZWRiYWNrLmxhYmVsKSxcbiAgICBjaG9pY2VzTGF5b3V0OiBjaG9pY2VzTGF5b3V0LnNldHRpbmdzICYmIGRyb3Bkb3duKGNob2ljZXNMYXlvdXQubGFiZWwsIFsndmVydGljYWwnLCAnZ3JpZCcsICdob3Jpem9udGFsJ10pLFxuICAgIGdyaWRDb2x1bW5zOlxuICAgICAgY2hvaWNlc0xheW91dC5zZXR0aW5ncyAmJlxuICAgICAgbW9kZWwuY2hvaWNlc0xheW91dCA9PT0gJ2dyaWQnICYmXG4gICAgICBuck9mQ29sdW1uc0F2YWlsYWJsZS5sZW5ndGggPiAwICYmXG4gICAgICBkcm9wZG93bihncmlkQ29sdW1ucy5sYWJlbCwgbnJPZkNvbHVtbnNBdmFpbGFibGUpLFxuICB9O1xuXG4gIGNvbnN0IHBhbmVsUHJvcGVydGllcyA9IHtcbiAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDogdGVhY2hlckluc3RydWN0aW9ucy5zZXR0aW5ncyAmJiB0b2dnbGUodGVhY2hlckluc3RydWN0aW9ucy5sYWJlbCksXG4gICAgc3R1ZGVudEluc3RydWN0aW9uc0VuYWJsZWQ6IHN0dWRlbnRJbnN0cnVjdGlvbnMuc2V0dGluZ3MgJiYgdG9nZ2xlKHN0dWRlbnRJbnN0cnVjdGlvbnMubGFiZWwpLFxuICAgIHByb21wdEVuYWJsZWQ6IHByb21wdC5zZXR0aW5ncyAmJiB0b2dnbGUocHJvbXB0LmxhYmVsKSxcbiAgICByYXRpb25hbGVFbmFibGVkOiByYXRpb25hbGUuc2V0dGluZ3MgJiYgdG9nZ2xlKHJhdGlvbmFsZS5sYWJlbCksXG4gICAgc3BlbGxDaGVja0VuYWJsZWQ6IHNwZWxsQ2hlY2suc2V0dGluZ3MgJiYgdG9nZ2xlKHNwZWxsQ2hlY2subGFiZWwpLFxuICAgIGFjY2Vzc2liaWxpdHlMYWJlbHNFbmFibGVkOiBhY2Nlc3NpYmlsaXR5LnNldHRpbmdzICYmIHRvZ2dsZShhY2Nlc3NpYmlsaXR5LmxhYmVsKSxcbiAgICBzY29yaW5nVHlwZTogc2NvcmluZ1R5cGUuc2V0dGluZ3MgJiYgcmFkaW8oc2NvcmluZ1R5cGUubGFiZWwsIFsnYXV0bycsICdydWJyaWMnXSksXG4gICAgcnVicmljRW5hYmxlZDogd2l0aFJ1YnJpYz8uc2V0dGluZ3MgJiYgdG9nZ2xlKHdpdGhSdWJyaWM/LmxhYmVsKSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxsYXlvdXQuQ29uZmlnTGF5b3V0XG4gICAgICBoaWRlU2V0dGluZ3M9e3NldHRpbmdzUGFuZWxEaXNhYmxlZH1cbiAgICAgIHNldHRpbmdzPXtcbiAgICAgICAgPFBhbmVsXG4gICAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICAgIG9uQ2hhbmdlTW9kZWw9e29uQ2hhbmdlTW9kZWx9XG4gICAgICAgICAgY29uZmlndXJhdGlvbj17Y29uZmlndXJhdGlvbn1cbiAgICAgICAgICBvbkNoYW5nZUNvbmZpZ3VyYXRpb249e29uQ29uZmlndXJhdGlvbkNoYW5nZWR9XG4gICAgICAgICAgZ3JvdXBzPXt7XG4gICAgICAgICAgICBTZXR0aW5nczogcGFuZWxTZXR0aW5ncyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHBhbmVsUHJvcGVydGllcyxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgfVxuICAgID5cbiAgICAgIDxkaXY+XG4gICAgICAgIHtwcm9tcHRFbmFibGVkICYmIChcbiAgICAgICAgICA8SW5wdXRDb250YWluZXIgbGFiZWw9e3Byb21wdC5sYWJlbH0gY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn0+XG4gICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwucHJvbXB0fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17b25Qcm9tcHRDaGFuZ2VkfVxuICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgbm9uRW1wdHk9e2ZhbHNlfVxuICAgICAgICAgICAgICBkaXNhYmxlVW5kZXJsaW5lXG4gICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgIG1heEltYWdlV2lkdGg9e21heEltYWdlV2lkdGggJiYgbWF4SW1hZ2VXaWR0aC5wcm9tcHR9XG4gICAgICAgICAgICAgIG1heEltYWdlSGVpZ2h0PXttYXhJbWFnZUhlaWdodCAmJiBtYXhJbWFnZUhlaWdodC5wcm9tcHR9XG4gICAgICAgICAgICAgIHVwbG9hZFNvdW5kU3VwcG9ydD17dXBsb2FkU291bmRTdXBwb3J0fVxuICAgICAgICAgICAgICBsYW5ndWFnZUNoYXJhY3RlcnNQcm9wcz17W3sgbGFuZ3VhZ2U6ICdzcGFuaXNoJyB9LCB7IGxhbmd1YWdlOiAnc3BlY2lhbCcgfV19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICl9XG5cbiAgICAgICAge2NvcnJlY3RSZXNwb25zZUVycm9yICYmIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVycm9yVGV4dH0+e2NvcnJlY3RSZXNwb25zZUVycm9yfTwvZGl2Pn1cbiAgICAgICAge2Fuc3dlckNob2ljZXNFcnJvciAmJiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5lcnJvclRleHR9PnthbnN3ZXJDaG9pY2VzRXJyb3J9PC9kaXY+fVxuXG4gICAgICAgIHthZGRDaG9pY2VCdXR0b24uc2V0dGluZ3MgJiYgKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXthZGRDaG9pY2VCdXR0b25Ub29sdGlwfSBjbGFzc2VzPXt7IHRvb2x0aXA6IGNsYXNzZXMudG9vbHRpcCB9fT5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3Nlcz17eyByb290OiBtYXhBbnN3ZXJDaG9pY2VzICYmIGNob2ljZXM/Lmxlbmd0aCA+PSBtYXhBbnN3ZXJDaG9pY2VzICYmIGNsYXNzZXMuZGlzYWJsZUJ1dHRvbiB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYWRkQnV0dG9ufVxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgb25DbGljaz17b25BZGRDaG9pY2V9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHthZGRDaG9pY2VCdXR0b24ubGFiZWx9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2xheW91dC5Db25maWdMYXlvdXQ+XG4gICk7XG59KTtcblxuZXhwb3J0IGNsYXNzIE1haW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgY29uZmlndXJhdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGRpc2FibGVTaWRlUGFuZWw6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uTW9kZWxDaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGltYWdlU3VwcG9ydDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGFkZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIGRlbGV0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0ZSA9IHsgc2hvd1dhcm5pbmc6IGZhbHNlIH07XG5cbiAgb25SZW1vdmVDaG9pY2UgPSAoaW5kZXgpID0+IHtcbiAgICBjb25zdCB7IG1vZGVsLCBjb25maWd1cmF0aW9uLCBvbk1vZGVsQ2hhbmdlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IG1pbkFuc3dlckNob2ljZXMgfSA9IGNvbmZpZ3VyYXRpb24gfHwge307XG5cbiAgICBpZiAobWluQW5zd2VyQ2hvaWNlcyAmJiBtb2RlbC5jaG9pY2VzLmxlbmd0aCA9PT0gbWluQW5zd2VyQ2hvaWNlcykge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNob3dXYXJuaW5nOiB0cnVlIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbW9kZWwuY2hvaWNlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIG9uTW9kZWxDaGFuZ2VkKG1vZGVsKTtcbiAgfTtcblxuICBvbkFkZENob2ljZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IG1vZGVsLCBjb25maWd1cmF0aW9uLCBvbk1vZGVsQ2hhbmdlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBsZXQgeyBtYXhBbnN3ZXJDaG9pY2VzIH0gPSBjb25maWd1cmF0aW9uIHx8IHt9O1xuICAgIGNvbnN0IHsgbGltaXRDaG9pY2VzTnVtYmVyIH0gPSBtb2RlbCB8fCB7fTtcblxuICAgIC8vIGlmIG9sZCBwcm9wZXJ0eSBpcyB1c2VkLCBzZXQgbWF4QW5zd2VyQ2hvaWNlcyB0byA5XG4gICAgaWYgKGxpbWl0Q2hvaWNlc051bWJlcikge1xuICAgICAgbWF4QW5zd2VyQ2hvaWNlcyA9IE1BWF9DSE9JQ0VTO1xuICAgIH1cblxuICAgIGlmIChtYXhBbnN3ZXJDaG9pY2VzICYmIG1vZGVsLmNob2ljZXMubGVuZ3RoID49IG1heEFuc3dlckNob2ljZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtb2RlbC5jaG9pY2VzLnB1c2goe1xuICAgICAgbGFiZWw6ICcnLFxuICAgICAgdmFsdWU6IHV0aWxzLmZpcnN0QXZhaWxhYmxlSW5kZXgoXG4gICAgICAgIG1vZGVsLmNob2ljZXMubWFwKChjKSA9PiBjLnZhbHVlKSxcbiAgICAgICAgMCxcbiAgICAgICksXG4gICAgICBmZWVkYmFjazogeyB0eXBlOiAnbm9uZScgfSxcbiAgICB9KTtcblxuICAgIG9uTW9kZWxDaGFuZ2VkKG1vZGVsKTtcbiAgfTtcblxuICBvbkNob2ljZUNoYW5nZWQgPSAoaW5kZXgsIGNob2ljZSkgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwsIG9uTW9kZWxDaGFuZ2VkIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKGNob2ljZS5jb3JyZWN0ICYmIG1vZGVsLmNob2ljZU1vZGUgPT09ICdyYWRpbycpIHtcbiAgICAgIG1vZGVsLmNob2ljZXMgPSBtb2RlbC5jaG9pY2VzLm1hcCgoYykgPT4gbWVyZ2Uoe30sIGMsIHsgY29ycmVjdDogZmFsc2UgfSkpO1xuICAgIH1cblxuICAgIG1vZGVsLmNob2ljZXMuc3BsaWNlKGluZGV4LCAxLCBjaG9pY2UpO1xuICAgIG9uTW9kZWxDaGFuZ2VkKG1vZGVsKTtcbiAgfTtcblxuICBvblByb21wdENoYW5nZWQgPSAocHJvbXB0KSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZCh7XG4gICAgICAuLi50aGlzLnByb3BzLm1vZGVsLFxuICAgICAgcHJvbXB0LFxuICAgIH0pO1xuICB9O1xuXG4gIG9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWQgPSAodGVhY2hlckluc3RydWN0aW9ucykgPT4ge1xuICAgIHRoaXMucHJvcHMub25Nb2RlbENoYW5nZWQoe1xuICAgICAgLi4udGhpcy5wcm9wcy5tb2RlbCxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMsXG4gICAgfSk7XG4gIH07XG5cbiAgb25Nb2RlbENoYW5nZWQgPSAobW9kZWwsIGtleSkgPT4ge1xuICAgIGNvbnN0IHsgb25Nb2RlbENoYW5nZWQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnY2hvaWNlTW9kZSc6IHtcbiAgICAgICAgbGV0IHZhbHVlID0gbW9kZWwuY2hvaWNlTW9kZTtcblxuICAgICAgICBpZiAodmFsdWUgPT09ICdyYWRpbycpIHtcbiAgICAgICAgICBsZXQgY29ycmVjdEZvdW5kID0gZmFsc2U7XG5cbiAgICAgICAgICBtb2RlbC5jaG9pY2VzID0gbW9kZWwuY2hvaWNlcy5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgIGlmIChjb3JyZWN0Rm91bmQpIHtcbiAgICAgICAgICAgICAgYy5jb3JyZWN0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjLmNvcnJlY3QpIHtcbiAgICAgICAgICAgICAgY29ycmVjdEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBvbk1vZGVsQ2hhbmdlZChtb2RlbCwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBvbk1vZGVsQ2hhbmdlZChtb2RlbCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBjb25maWd1cmF0aW9uOiB7IG1pbkFuc3dlckNob2ljZXMgfSA9IHt9IH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgc2hvd1dhcm5pbmcgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICA8QWxlcnREaWFsb2dcbiAgICAgICAgICBvcGVuPXtzaG93V2FybmluZ31cbiAgICAgICAgICB0aXRsZT1cIldhcm5pbmdcIlxuICAgICAgICAgIHRleHQ9e2BUaGVyZSBjYW4ndCBiZSBsZXNzIHRoYW4gJHttaW5BbnN3ZXJDaG9pY2VzIHx8IDB9IGNob2ljZXMuYH1cbiAgICAgICAgICBvbkNvbmZpcm09eygpID0+IHRoaXMuc2V0U3RhdGUoeyBzaG93V2FybmluZzogZmFsc2UgfSl9XG4gICAgICAgIC8+XG4gICAgICAgIDxEZXNpZ25cbiAgICAgICAgICB7Li4udGhpcy5wcm9wc31cbiAgICAgICAgICBvbkNoYW5nZU1vZGVsPXt0aGlzLm9uTW9kZWxDaGFuZ2VkfVxuICAgICAgICAgIG9uUmVtb3ZlQ2hvaWNlPXt0aGlzLm9uUmVtb3ZlQ2hvaWNlfVxuICAgICAgICAgIG9uQ2hvaWNlQ2hhbmdlZD17dGhpcy5vbkNob2ljZUNoYW5nZWR9XG4gICAgICAgICAgb25BZGRDaG9pY2U9e3RoaXMub25BZGRDaG9pY2V9XG4gICAgICAgICAgb25Qcm9tcHRDaGFuZ2VkPXt0aGlzLm9uUHJvbXB0Q2hhbmdlZH1cbiAgICAgICAgICBvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkPXt0aGlzLm9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWR9XG4gICAgICAgIC8+XG4gICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgU3R5bGVkID0gd2l0aFN0eWxlcyhzdHlsZXMpKE1haW4pO1xuXG5leHBvcnQgZGVmYXVsdCBTdHlsZWQ7XG4iXX0=
|
package/configure/lib/utils.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.generateValidationMessage = void 0;
|
|
7
|
-
|
|
8
|
-
var generateValidationMessage = function generateValidationMessage(config) {
|
|
9
|
-
var minAnswerChoices = config.minAnswerChoices,
|
|
10
|
-
maxAnswerChoices = config.maxAnswerChoices;
|
|
11
|
-
var answerChoicesMessage = "\nThere should be at least ".concat(minAnswerChoices, " ") + (maxAnswerChoices ? "and at most ".concat(maxAnswerChoices, " ") : '') + 'answer choices defined.' + '\nEvery answer choice should be non-blank and unique.';
|
|
12
|
-
var correctAnswerMessage = '\nA correct answer must be defined.';
|
|
13
|
-
var message = 'Validation requirements:' + answerChoicesMessage + correctAnswerMessage;
|
|
14
|
-
return message;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
exports.generateValidationMessage = generateValidationMessage;
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZVZhbGlkYXRpb25NZXNzYWdlIiwiY29uZmlnIiwibWluQW5zd2VyQ2hvaWNlcyIsIm1heEFuc3dlckNob2ljZXMiLCJhbnN3ZXJDaG9pY2VzTWVzc2FnZSIsImNvcnJlY3RBbnN3ZXJNZXNzYWdlIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFPLElBQU1BLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBNEIsQ0FBQ0MsTUFBRCxFQUFZO0FBQ25ELE1BQVFDLGdCQUFSLEdBQStDRCxNQUEvQyxDQUFRQyxnQkFBUjtBQUFBLE1BQTBCQyxnQkFBMUIsR0FBK0NGLE1BQS9DLENBQTBCRSxnQkFBMUI7QUFFQSxNQUFNQyxvQkFBb0IsR0FDeEIscUNBQThCRixnQkFBOUIsVUFDQ0MsZ0JBQWdCLHlCQUFrQkEsZ0JBQWxCLFNBQXdDLEVBRHpELElBRUEseUJBRkEsR0FHQSx1REFKRjtBQU1BLE1BQU1FLG9CQUFvQixHQUFHLHFDQUE3QjtBQUVBLE1BQU1DLE9BQU8sR0FBRyw2QkFBNkJGLG9CQUE3QixHQUFvREMsb0JBQXBFO0FBRUEsU0FBT0MsT0FBUDtBQUNELENBZE0iLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZ2VuZXJhdGVWYWxpZGF0aW9uTWVzc2FnZSA9IChjb25maWcpID0+IHtcbiAgY29uc3QgeyBtaW5BbnN3ZXJDaG9pY2VzLCBtYXhBbnN3ZXJDaG9pY2VzIH0gPSBjb25maWc7XG5cbiAgY29uc3QgYW5zd2VyQ2hvaWNlc01lc3NhZ2UgPVxuICAgIGBcXG5UaGVyZSBzaG91bGQgYmUgYXQgbGVhc3QgJHttaW5BbnN3ZXJDaG9pY2VzfSBgICtcbiAgICAobWF4QW5zd2VyQ2hvaWNlcyA/IGBhbmQgYXQgbW9zdCAke21heEFuc3dlckNob2ljZXN9IGAgOiAnJykgK1xuICAgICdhbnN3ZXIgY2hvaWNlcyBkZWZpbmVkLicgK1xuICAgICdcXG5FdmVyeSBhbnN3ZXIgY2hvaWNlIHNob3VsZCBiZSBub24tYmxhbmsgYW5kIHVuaXF1ZS4nO1xuXG4gIGNvbnN0IGNvcnJlY3RBbnN3ZXJNZXNzYWdlID0gJ1xcbkEgY29ycmVjdCBhbnN3ZXIgbXVzdCBiZSBkZWZpbmVkLic7XG5cbiAgY29uc3QgbWVzc2FnZSA9ICdWYWxpZGF0aW9uIHJlcXVpcmVtZW50czonICsgYW5zd2VyQ2hvaWNlc01lc3NhZ2UgKyBjb3JyZWN0QW5zd2VyTWVzc2FnZTtcblxuICByZXR1cm4gbWVzc2FnZTtcbn07XG4iXX0=
|