@pie-element/multiple-choice 5.11.0-ps.13 → 6.0.0-strikethrough.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/configure/CHANGELOG.md +31 -0
  3. package/configure/lib/__tests__/root.test.js +271 -0
  4. package/configure/lib/defaults.js +17 -4
  5. package/configure/lib/defaults.js.map +1 -1
  6. package/configure/lib/index.js +9 -4
  7. package/configure/lib/index.js.map +1 -1
  8. package/configure/lib/main.js +68 -19
  9. package/configure/lib/main.js.map +1 -1
  10. package/configure/package.json +4 -4
  11. package/controller/CHANGELOG.md +13 -0
  12. package/controller/lib/__tests__/index.test.js +864 -0
  13. package/controller/lib/__tests__/utils.test.js +8 -0
  14. package/controller/lib/defaults.js +4 -2
  15. package/controller/lib/defaults.js.map +1 -1
  16. package/controller/lib/index.js +25 -7
  17. package/controller/lib/index.js.map +1 -1
  18. package/controller/lib/utils.js +9 -1
  19. package/controller/lib/utils.js.map +1 -1
  20. package/controller/package.json +1 -1
  21. package/docs/demo/generate.js +17 -14
  22. package/lib/__tests__/choice-input-test.js +124 -0
  23. package/lib/__tests__/index-test.js +22 -0
  24. package/lib/__tests__/multiple-choice-test.js +237 -0
  25. package/lib/__tests__/session-updater-test.js +72 -0
  26. package/lib/choice-input.js +79 -18
  27. package/lib/choice-input.js.map +1 -1
  28. package/lib/choice.js +149 -0
  29. package/lib/choice.js.map +1 -0
  30. package/lib/feedback-tick.js +1 -1
  31. package/lib/feedback-tick.js.map +1 -1
  32. package/lib/index.js +70 -3
  33. package/lib/index.js.map +1 -1
  34. package/lib/main.js +1 -1
  35. package/lib/main.js.map +1 -1
  36. package/lib/multiple-choice.js +84 -144
  37. package/lib/multiple-choice.js.map +1 -1
  38. package/lib/print.js +125 -0
  39. package/lib/print.js.map +1 -0
  40. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -3,6 +3,45 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [6.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice@5.9.2...@pie-element/multiple-choice@6.0.0) (2021-11-11)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **multiple-choice-print, ecr-print:** fix toggle issue, change options.mode to options.role ([0b3f534](https://github.com/pie-framework/pie-elements/commit/0b3f534bb4d2f969e21528e74516345e84f18d72))
12
+ * pie-lib updates ([e521c2f](https://github.com/pie-framework/pie-elements/commit/e521c2f1a44aa7f3e14f82a1cee05ceb484ed0a6))
13
+ * show tick if available only in evaluate mode ([dddca13](https://github.com/pie-framework/pie-elements/commit/dddca137875221d3b52b17151163610f5eb1ea98))
14
+ * **multiple-choice-print:** remove feedback ([25cbac5](https://github.com/pie-framework/pie-elements/commit/25cbac5647afe8864bedd9c50cd98abe6b31ddb0))
15
+ * exports ([66ed4d2](https://github.com/pie-framework/pie-elements/commit/66ed4d2ae44df712b8b48849023e6849d6d69126))
16
+ * merge conflict ([01655ca](https://github.com/pie-framework/pie-elements/commit/01655caf59311cc1a7a6624a6243147b2819d76e))
17
+ * Updated pie-lib versions ([2fe4c5d](https://github.com/pie-framework/pie-elements/commit/2fe4c5d0be2d40f5fdb34815855695a7f1087f56))
18
+ * Updated pie-lib versions ([1c23830](https://github.com/pie-framework/pie-elements/commit/1c23830fc75d1de5f7bb3bb16de3c665ae5fa350))
19
+
20
+
21
+ ### Features
22
+
23
+ * print demo ([a7f9707](https://github.com/pie-framework/pie-elements/commit/a7f9707592e1ec89a55e9d61450b0600aea4d486))
24
+ * **ebsr:** Added choicesLayout support ([33fb7e7](https://github.com/pie-framework/pie-elements/commit/33fb7e765146a7343a58663f3667f4a5de472960))
25
+ * **ebsr:** Added choicesLayout support \n BREAKING CHANGE: removed vertical mode ([348fc00](https://github.com/pie-framework/pie-elements/commit/348fc0031536d458071a1105e742c3d19399a15e))
26
+ * **multiple-choice:** accessibility label - added aria label to checkbox and radio input types ([22514bb](https://github.com/pie-framework/pie-elements/commit/22514bb5e2476bc79a55756ff9a5c0c1e0642a29))
27
+ * **multiple-choice:** added possibility to change layout - vertical, grid, horizontal ([46e7681](https://github.com/pie-framework/pie-elements/commit/46e7681a178ff29c983db1c7b6206389b55e2a00))
28
+ * **multiple-choice:** grid layout - fix tests ([ab3c750](https://github.com/pie-framework/pie-elements/commit/ab3c750af03d9fbe0794f7ec53452c948b530ad8))
29
+ * **multiple-choice:** grid layout - review comments ([540073f](https://github.com/pie-framework/pie-elements/commit/540073faeae2b67645a63e8ca609e7682138c710))
30
+ * **multiple-choice:** toolbar editor position set to bottom ([08ee249](https://github.com/pie-framework/pie-elements/commit/08ee249d45fdaab2c93a32453d757ec3c79215cd))
31
+ * if there are no choices - do not show grid columns dropdown BREAKING CHANGE: removed verticalMode(boolean) from model & configuration - and replaced it with choicesLayout(string) ([1c36ae8](https://github.com/pie-framework/pie-elements/commit/1c36ae8b7f9369b2723a6a84e7350370e1186c50))
32
+ * **multiple-choice:** remove unused class name ([a7aa576](https://github.com/pie-framework/pie-elements/commit/a7aa576a32f5c44415994fe413491f3f3dd17b3f))
33
+ * **multiple-choice:** toolbar position ( bottom or top ) ([9af6cd9](https://github.com/pie-framework/pie-elements/commit/9af6cd9f6b893501e00640500a34e1c3404edc94))
34
+ * **multiple-choice:** update docs ([0843122](https://github.com/pie-framework/pie-elements/commit/084312288b501a7f1129b24a046f9ab19cf25f79))
35
+
36
+
37
+ ### BREAKING CHANGES
38
+
39
+ * **ebsr:** removed vertical mode.
40
+
41
+
42
+
43
+
44
+
6
45
  # [5.10.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice@5.9.2...@pie-element/multiple-choice@5.10.0) (2021-08-05)
7
46
 
8
47
 
@@ -3,6 +3,37 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [4.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-configure@3.4.2...@pie-element/multiple-choice-configure@4.0.0) (2021-11-11)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * merge conflict ([01655ca](https://github.com/pie-framework/pie-elements/commit/01655caf59311cc1a7a6624a6243147b2819d76e))
12
+ * pie-lib updates ([e521c2f](https://github.com/pie-framework/pie-elements/commit/e521c2f1a44aa7f3e14f82a1cee05ceb484ed0a6))
13
+ * Updated pie-lib versions ([2fe4c5d](https://github.com/pie-framework/pie-elements/commit/2fe4c5d0be2d40f5fdb34815855695a7f1087f56))
14
+ * Updated pie-lib versions ([1c23830](https://github.com/pie-framework/pie-elements/commit/1c23830fc75d1de5f7bb3bb16de3c665ae5fa350))
15
+
16
+
17
+ ### Features
18
+
19
+ * **ebsr:** Added choicesLayout support ([33fb7e7](https://github.com/pie-framework/pie-elements/commit/33fb7e765146a7343a58663f3667f4a5de472960))
20
+ * **ebsr:** Added choicesLayout support \n BREAKING CHANGE: removed vertical mode ([348fc00](https://github.com/pie-framework/pie-elements/commit/348fc0031536d458071a1105e742c3d19399a15e))
21
+ * **multiple-choice:** accessibility label - added aria label to checkbox and radio input types ([22514bb](https://github.com/pie-framework/pie-elements/commit/22514bb5e2476bc79a55756ff9a5c0c1e0642a29))
22
+ * if there are no choices - do not show grid columns dropdown BREAKING CHANGE: removed verticalMode(boolean) from model & configuration - and replaced it with choicesLayout(string) ([1c36ae8](https://github.com/pie-framework/pie-elements/commit/1c36ae8b7f9369b2723a6a84e7350370e1186c50))
23
+ * **multiple-choice:** added possibility to change layout - vertical, grid, horizontal ([46e7681](https://github.com/pie-framework/pie-elements/commit/46e7681a178ff29c983db1c7b6206389b55e2a00))
24
+ * **multiple-choice:** grid layout - fix tests ([ab3c750](https://github.com/pie-framework/pie-elements/commit/ab3c750af03d9fbe0794f7ec53452c948b530ad8))
25
+ * **multiple-choice:** toolbar position ( bottom or top ) ([9af6cd9](https://github.com/pie-framework/pie-elements/commit/9af6cd9f6b893501e00640500a34e1c3404edc94))
26
+ * **multiple-choice:** update docs ([0843122](https://github.com/pie-framework/pie-elements/commit/084312288b501a7f1129b24a046f9ab19cf25f79))
27
+
28
+
29
+ ### BREAKING CHANGES
30
+
31
+ * **ebsr:** removed vertical mode.
32
+
33
+
34
+
35
+
36
+
6
37
  # [3.5.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-configure@3.4.2...@pie-element/multiple-choice-configure@3.5.0) (2021-08-05)
7
38
 
8
39
 
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
6
+
7
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _main = require("../main");
14
+
15
+ var _defaults = _interopRequireDefault(require("../defaults"));
16
+
17
+ var _configUi = require("@pie-lib/config-ui");
18
+
19
+ var _index = _interopRequireDefault(require("../index"));
20
+
21
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
22
+
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24
+
25
+ jest.mock('@pie-lib/config-ui', function () {
26
+ return {
27
+ choiceUtils: {
28
+ firstAvailableIndex: jest.fn(),
29
+ normalizeChoices: jest.fn(function (model) {
30
+ return model;
31
+ })
32
+ },
33
+ settings: {
34
+ Panel: function Panel(props) {
35
+ return /*#__PURE__*/_react["default"].createElement("div", props);
36
+ },
37
+ toggle: jest.fn(),
38
+ radio: jest.fn()
39
+ }
40
+ };
41
+ });
42
+
43
+ var model = function model(extras) {
44
+ return _objectSpread(_objectSpread({}, _defaults["default"].model), {}, {
45
+ prompt: 'Which of these northern European countries are EU members?',
46
+ choiceMode: 'checkbox',
47
+ choices: [{
48
+ correct: true,
49
+ value: 'sweden',
50
+ label: 'Sweden',
51
+ feedback: {
52
+ type: 'none',
53
+ value: ''
54
+ }
55
+ }, {
56
+ value: 'iceland',
57
+ label: 'Iceland',
58
+ feedback: {
59
+ type: 'none',
60
+ value: ''
61
+ }
62
+ }, {
63
+ value: 'norway',
64
+ label: 'Norway',
65
+ feedback: {
66
+ type: 'none',
67
+ value: ''
68
+ }
69
+ }, {
70
+ correct: true,
71
+ value: 'finland',
72
+ label: 'Finland',
73
+ feedback: {
74
+ type: 'none',
75
+ value: ''
76
+ }
77
+ }],
78
+ partialScoring: false,
79
+ configure: {}
80
+ }, extras);
81
+ };
82
+
83
+ describe('Main', function () {
84
+ var w;
85
+ var onModelChanged = jest.fn();
86
+ var onConfigurationChanged = jest.fn();
87
+ var initialModel = model();
88
+
89
+ var wrapper = function wrapper(extras) {
90
+ var defaults = {
91
+ onModelChanged: onModelChanged,
92
+ onConfigurationChanged: onConfigurationChanged,
93
+ classes: {},
94
+ model: model()
95
+ };
96
+
97
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
98
+
99
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_main.Main, props));
100
+ };
101
+
102
+ describe('snapshot', function () {
103
+ it('renders with choicePrefix="numbers"', function () {
104
+ w = wrapper({
105
+ model: model({
106
+ choicePrefix: 'numbers'
107
+ })
108
+ });
109
+ expect(w).toMatchSnapshot();
110
+ });
111
+ it('renders with choicePrefix="letters" as default', function () {
112
+ w = wrapper();
113
+ expect(w).toMatchSnapshot();
114
+ });
115
+ });
116
+ describe('logic', function () {
117
+ beforeEach(function () {
118
+ w = wrapper();
119
+ });
120
+ describe('onRemoveChoice', function () {
121
+ it('removes choice', function () {
122
+ w.instance().onRemoveChoice(0);
123
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
124
+ choices: initialModel.choices.slice(1)
125
+ }));
126
+ });
127
+ });
128
+ describe('createDefaultModel', function () {
129
+ it('sets choicesLayout: horizontal if verticalMode: false', function () {
130
+ var m = _index["default"].createDefaultModel(model({
131
+ verticalMode: false,
132
+ choicesLayout: undefined
133
+ }));
134
+
135
+ expect(m.choicesLayout).toEqual('horizontal');
136
+ });
137
+ it('sets choicesLayout: vertical if verticalMode: true', function () {
138
+ var m = _index["default"].createDefaultModel(model({
139
+ verticalMode: true,
140
+ choicesLayout: undefined
141
+ }));
142
+
143
+ expect(m.choicesLayout).toEqual('vertical');
144
+ });
145
+ it('sets choicesLayout: grid if verticalMode: true && choicesLayout: grid', function () {
146
+ var m = _index["default"].createDefaultModel(model({
147
+ verticalMode: true,
148
+ choicesLayout: 'grid'
149
+ }));
150
+
151
+ expect(m.choicesLayout).toEqual('grid');
152
+ });
153
+ it('sets choicesLayout: vertical', function () {
154
+ var m = _index["default"].createDefaultModel(model());
155
+
156
+ expect(m.choicesLayout).toEqual('vertical');
157
+ });
158
+ });
159
+ describe('onAddChoice', function () {
160
+ it('adds a choice', function () {
161
+ w.instance().onAddChoice();
162
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
163
+ choices: [].concat((0, _toConsumableArray2["default"])(initialModel.choices), [{
164
+ label: '',
165
+ value: _configUi.choiceUtils.firstAvailableIndex(initialModel.choices.map(function (c) {
166
+ return c.value;
167
+ }), 0),
168
+ feedback: {
169
+ type: 'none'
170
+ }
171
+ }])
172
+ }));
173
+ });
174
+ });
175
+ describe('onChoiceChanged', function () {
176
+ describe('checkbox', function () {
177
+ it('changes choice (there are 2 true values)', function () {
178
+ var newChoices = (0, _toConsumableArray2["default"])(model().choices);
179
+ var choice = {
180
+ correct: true,
181
+ value: 'iceland',
182
+ label: 'Iceland',
183
+ feedback: {
184
+ type: 'none',
185
+ value: ''
186
+ }
187
+ };
188
+ w.instance().onChoiceChanged(1, choice);
189
+ newChoices[1].correct = true;
190
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
191
+ choices: newChoices
192
+ }));
193
+ });
194
+ });
195
+ describe('radio', function () {
196
+ it('changes choice (there is only one true value)', function () {
197
+ var choice = {
198
+ correct: true,
199
+ value: 'iceland',
200
+ label: 'Iceland',
201
+ feedback: {
202
+ type: 'none',
203
+ value: ''
204
+ }
205
+ };
206
+
207
+ var newModel = _objectSpread(_objectSpread({}, initialModel), {}, {
208
+ choiceMode: 'radio',
209
+ choices: initialModel.choices.slice(0, 2)
210
+ });
211
+
212
+ w = wrapper({
213
+ model: newModel
214
+ });
215
+ w.instance().onChoiceChanged(1, choice);
216
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, newModel), {}, {
217
+ choices: [{
218
+ correct: false,
219
+ value: 'sweden',
220
+ label: 'Sweden',
221
+ feedback: {
222
+ type: 'none',
223
+ value: ''
224
+ }
225
+ }, {
226
+ correct: true,
227
+ value: 'iceland',
228
+ label: 'Iceland',
229
+ feedback: {
230
+ type: 'none',
231
+ value: ''
232
+ }
233
+ }]
234
+ }));
235
+ });
236
+ });
237
+ });
238
+ describe('onPromptChanged', function () {
239
+ it('changes prompt', function () {
240
+ w.instance().onPromptChanged('New Prompt');
241
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
242
+ prompt: 'New Prompt'
243
+ }));
244
+ });
245
+ });
246
+ describe('onTeacherInstructionsChanged', function () {
247
+ it('changes teacher instructions', function () {
248
+ w.instance().onTeacherInstructionsChanged('New Teacher Instructions');
249
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
250
+ teacherInstructions: 'New Teacher Instructions'
251
+ }));
252
+ });
253
+ });
254
+ describe('onModelChanged', function () {
255
+ it('changes choice and makes incorrect all other choices', function () {
256
+ w.instance().onModelChanged(_objectSpread(_objectSpread({}, initialModel), {}, {
257
+ choiceMode: 'radio'
258
+ }), 'choiceMode');
259
+ var expectedChoices = model().choices;
260
+ expectedChoices.forEach(function (eC, index) {
261
+ eC.correct = index === 0;
262
+ });
263
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
264
+ choiceMode: 'radio',
265
+ choices: expectedChoices
266
+ }), true);
267
+ });
268
+ });
269
+ });
270
+ });
271
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcm9vdC50ZXN0LmpzeCJdLCJuYW1lcyI6WyJqZXN0IiwibW9jayIsImNob2ljZVV0aWxzIiwiZmlyc3RBdmFpbGFibGVJbmRleCIsImZuIiwibm9ybWFsaXplQ2hvaWNlcyIsIm1vZGVsIiwic2V0dGluZ3MiLCJQYW5lbCIsInByb3BzIiwidG9nZ2xlIiwicmFkaW8iLCJleHRyYXMiLCJkZWZhdWx0cyIsInByb21wdCIsImNob2ljZU1vZGUiLCJjaG9pY2VzIiwiY29ycmVjdCIsInZhbHVlIiwibGFiZWwiLCJmZWVkYmFjayIsInR5cGUiLCJwYXJ0aWFsU2NvcmluZyIsImNvbmZpZ3VyZSIsImRlc2NyaWJlIiwidyIsIm9uTW9kZWxDaGFuZ2VkIiwib25Db25maWd1cmF0aW9uQ2hhbmdlZCIsImluaXRpYWxNb2RlbCIsIndyYXBwZXIiLCJjbGFzc2VzIiwiaXQiLCJjaG9pY2VQcmVmaXgiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJiZWZvcmVFYWNoIiwiaW5zdGFuY2UiLCJvblJlbW92ZUNob2ljZSIsInRvQmVDYWxsZWRXaXRoIiwic2xpY2UiLCJtIiwiTXVsdGlwbGVDaG9pY2UiLCJjcmVhdGVEZWZhdWx0TW9kZWwiLCJ2ZXJ0aWNhbE1vZGUiLCJjaG9pY2VzTGF5b3V0IiwidW5kZWZpbmVkIiwidG9FcXVhbCIsIm9uQWRkQ2hvaWNlIiwidXRpbHMiLCJtYXAiLCJjIiwibmV3Q2hvaWNlcyIsImNob2ljZSIsIm9uQ2hvaWNlQ2hhbmdlZCIsIm5ld01vZGVsIiwib25Qcm9tcHRDaGFuZ2VkIiwib25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJleHBlY3RlZENob2ljZXMiLCJmb3JFYWNoIiwiZUMiLCJpbmRleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLElBQUksQ0FBQ0MsSUFBTCxD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LFFBQUYsR0FBYVYsY0FBYixpQ0FDT0UsWUFEUDtBQUVJYixVQUFBQSxVQUFVLEVBQUU7QUFGaEIsWUFJRSxZQUpGO0FBT0EsWUFBTTJDLGVBQWUsR0FBR3BELEtBQUssR0FBR1UsT0FBaEM7QUFFQTBDLFFBQUFBLGVBQWUsQ0FBQ0MsT0FBaEIsQ0FBd0IsVUFBQ0MsRUFBRCxFQUFLQyxLQUFMLEVBQWU7QUFDckNELFVBQUFBLEVBQUUsQ0FBQzNDLE9BQUgsR0FBYTRDLEtBQUssS0FBSyxDQUF2QjtBQUNELFNBRkQ7QUFJQTVCLFFBQUFBLE1BQU0sQ0FBQ1AsY0FBRCxDQUFOLENBQXVCWSxjQUF2QixpQ0FDT1YsWUFEUDtBQUVJYixVQUFBQSxVQUFVLEVBQUUsT0FGaEI7QUFHSUMsVUFBQUEsT0FBTyxFQUFFMEM7QUFIYixZQUtFLElBTEY7QUFPRCxPQXJCQyxDQUFGO0FBc0JELEtBdkJPLENBQVI7QUF3QkQsR0FuTE8sQ0FBUjtBQW9MRCxDQWxOTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBNYWluIH0gZnJvbSAnLi4vbWFpbic7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMnO1xuaW1wb3J0IHsgY2hvaWNlVXRpbHMgYXMgdXRpbHMgfSBmcm9tICdAcGllLWxpYi9jb25maWctdWknO1xuaW1wb3J0IE11bHRpcGxlQ2hvaWNlIGZyb20gJy4uL2luZGV4JztcblxuamVzdC5tb2NrKCdAcGllLWxpYi9jb25maWctdWknLCAoKSA9PiAoe1xuICBjaG9pY2VVdGlsczoge1xuICAgIGZpcnN0QXZhaWxhYmxlSW5kZXg6IGplc3QuZm4oKSxcbiAgICBub3JtYWxpemVDaG9pY2VzOiBqZXN0LmZuKChtb2RlbCkgPT4gbW9kZWwpXG4gIH0sXG4gIHNldHRpbmdzOiB7XG4gICAgUGFuZWw6IHByb3BzID0+IDxkaXYgey4uLnByb3BzfSAvPixcbiAgICB0b2dnbGU6IGplc3QuZm4oKSxcbiAgICByYWRpbzogamVzdC5mbigpXG4gIH1cbn0pKTtcblxuY29uc3QgbW9kZWwgPSAoZXh0cmFzKSA9PiAoe1xuICAuLi5kZWZhdWx0cy5tb2RlbCxcbiAgcHJvbXB0OiAnV2hpY2ggb2YgdGhlc2Ugbm9ydGhlcm4gRXVyb3BlYW4gY291bnRyaWVzIGFyZSBFVSBtZW1iZXJzPycsXG4gIGNob2ljZU1vZGU6ICdjaGVja2JveCcsXG4gIGNob2ljZXM6IFtcbiAgICB7XG4gICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgdmFsdWU6ICdzd2VkZW4nLFxuICAgICAgbGFiZWw6ICdTd2VkZW4nLFxuICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICB2YWx1ZTogJydcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnaWNlbGFuZCcsXG4gICAgICBsYWJlbDogJ0ljZWxhbmQnLFxuICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICB2YWx1ZTogJydcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnbm9yd2F5JyxcbiAgICAgIGxhYmVsOiAnTm9yd2F5JyxcbiAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgdmFsdWU6XG4gICAgICAgICAgJydcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICB2YWx1ZTogJ2ZpbmxhbmQnLFxuICAgICAgbGFiZWw6ICdGaW5sYW5kJyxcbiAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgdmFsdWU6ICcnXG4gICAgICB9XG4gICAgfVxuICBdLFxuICBwYXJ0aWFsU2NvcmluZzogZmFsc2UsXG4gIGNvbmZpZ3VyZToge30sXG4gIC4uLmV4dHJhc1xufSk7XG5cbmRlc2NyaWJlKCdNYWluJywgKCkgPT4ge1xuICBsZXQgdztcbiAgbGV0IG9uTW9kZWxDaGFuZ2VkID0gamVzdC5mbigpO1xuICBsZXQgb25Db25maWd1cmF0aW9uQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgbGV0IGluaXRpYWxNb2RlbCA9IG1vZGVsKCk7XG5cbiAgY29uc3Qgd3JhcHBlciA9IGV4dHJhcyA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBvbk1vZGVsQ2hhbmdlZCxcbiAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQsXG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIG1vZGVsOiBtb2RlbCgpXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuXG4gICAgcmV0dXJuIHNoYWxsb3coPE1haW4gey4uLnByb3BzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggY2hvaWNlUHJlZml4PVwibnVtYmVyc1wiJywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoeyBtb2RlbDogbW9kZWwoeyBjaG9pY2VQcmVmaXg6ICdudW1iZXJzJyB9KSB9KTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggY2hvaWNlUHJlZml4PVwibGV0dGVyc1wiIGFzIGRlZmF1bHQnLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9naWMnLCAoKSA9PiB7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCdvblJlbW92ZUNob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdyZW1vdmVzIGNob2ljZScsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uUmVtb3ZlQ2hvaWNlKDApO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoe1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICBjaG9pY2VzOiBpbml0aWFsTW9kZWwuY2hvaWNlcy5zbGljZSgxKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NyZWF0ZURlZmF1bHRNb2RlbCcsICgpID0+IHtcbiAgICAgIGl0KCdzZXRzIGNob2ljZXNMYXlvdXQ6IGhvcml6b250YWwgaWYgdmVydGljYWxNb2RlOiBmYWxzZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgbSA9IE11bHRpcGxlQ2hvaWNlLmNyZWF0ZURlZmF1bHRNb2RlbChtb2RlbCh7IHZlcnRpY2FsTW9kZTogZmFsc2UsIGNob2ljZXNMYXlvdXQ6IHVuZGVmaW5lZCB9KSk7XG5cbiAgICAgICAgZXhwZWN0KG0uY2hvaWNlc0xheW91dCkudG9FcXVhbCgnaG9yaXpvbnRhbCcpXG4gICAgICB9KTtcblxuICAgICAgaXQoJ3NldHMgY2hvaWNlc0xheW91dDogdmVydGljYWwgaWYgdmVydGljYWxNb2RlOiB0cnVlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKG1vZGVsKHsgdmVydGljYWxNb2RlOiB0cnVlLCBjaG9pY2VzTGF5b3V0OiB1bmRlZmluZWQgfSkpO1xuXG4gICAgICAgIGV4cGVjdChtLmNob2ljZXNMYXlvdXQpLnRvRXF1YWwoJ3ZlcnRpY2FsJylcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2V0cyBjaG9pY2VzTGF5b3V0OiBncmlkIGlmIHZlcnRpY2FsTW9kZTogdHJ1ZSAmJiBjaG9pY2VzTGF5b3V0OiBncmlkJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKG1vZGVsKHsgdmVydGljYWxNb2RlOiB0cnVlLCBjaG9pY2VzTGF5b3V0OiAnZ3JpZCcgfSkpO1xuXG4gICAgICAgIGV4cGVjdChtLmNob2ljZXNMYXlvdXQpLnRvRXF1YWwoJ2dyaWQnKVxuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzZXRzIGNob2ljZXNMYXlvdXQ6IHZlcnRpY2FsJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKG1vZGVsKCkpO1xuXG4gICAgICAgIGV4cGVjdChtLmNob2ljZXNMYXlvdXQpLnRvRXF1YWwoJ3ZlcnRpY2FsJylcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uQWRkQ2hvaWNlJywgKCkgPT4ge1xuICAgICAgaXQoJ2FkZHMgYSBjaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkFkZENob2ljZSgpO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoe1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwuY2hvaWNlcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICAgICAgICB2YWx1ZTogdXRpbHMuZmlyc3RBdmFpbGFibGVJbmRleChpbml0aWFsTW9kZWwuY2hvaWNlcy5tYXAoYyA9PiBjLnZhbHVlKSwgMCksXG4gICAgICAgICAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ25vbmUnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25DaG9pY2VDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgZGVzY3JpYmUoJ2NoZWNrYm94JywgKCkgPT4ge1xuICAgICAgICBpdCgnY2hhbmdlcyBjaG9pY2UgKHRoZXJlIGFyZSAyIHRydWUgdmFsdWVzKScsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdDaG9pY2VzID0gWy4uLm1vZGVsKCkuY2hvaWNlc107XG4gICAgICAgICAgbGV0IGNob2ljZSA9IHtcbiAgICAgICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogJ2ljZWxhbmQnLFxuICAgICAgICAgICAgbGFiZWw6ICdJY2VsYW5kJyxcbiAgICAgICAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHcuaW5zdGFuY2UoKS5vbkNob2ljZUNoYW5nZWQoMSwgY2hvaWNlKTtcblxuICAgICAgICAgIG5ld0Nob2ljZXNbMV0uY29ycmVjdCA9IHRydWU7XG5cbiAgICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICAgIGNob2ljZXM6IG5ld0Nob2ljZXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ3JhZGlvJywgKCkgPT4ge1xuICAgICAgICBpdCgnY2hhbmdlcyBjaG9pY2UgKHRoZXJlIGlzIG9ubHkgb25lIHRydWUgdmFsdWUpJywgKCkgPT4ge1xuICAgICAgICAgIGxldCBjaG9pY2UgPSB7XG4gICAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICdpY2VsYW5kJyxcbiAgICAgICAgICAgIGxhYmVsOiAnSWNlbGFuZCcsXG4gICAgICAgICAgICBmZWVkYmFjazoge1xuICAgICAgICAgICAgICB0eXBlOiAnbm9uZScsXG4gICAgICAgICAgICAgIHZhbHVlOiAnJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBuZXdNb2RlbCA9IHsgLi4uaW5pdGlhbE1vZGVsLCBjaG9pY2VNb2RlOiAncmFkaW8nLCBjaG9pY2VzOiBpbml0aWFsTW9kZWwuY2hvaWNlcy5zbGljZSgwLCAyKSB9O1xuICAgICAgICAgIHcgPSB3cmFwcGVyKHsgbW9kZWw6IG5ld01vZGVsIH0pO1xuXG5cbiAgICAgICAgICB3Lmluc3RhbmNlKCkub25DaG9pY2VDaGFuZ2VkKDEsIGNob2ljZSk7XG5cbiAgICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAgIC4uLm5ld01vZGVsLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdzd2VkZW4nLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnU3dlZGVuJyxcbiAgICAgICAgICAgICAgICBmZWVkYmFjazoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ2ljZWxhbmQnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSWNlbGFuZCcsXG4gICAgICAgICAgICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblByb21wdENoYW5nZWQnLCAoKSA9PiB7XG4gICAgICBpdCgnY2hhbmdlcyBwcm9tcHQnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblByb21wdENoYW5nZWQoJ05ldyBQcm9tcHQnKTtcblxuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICAgIHByb21wdDogJ05ldyBQcm9tcHQnXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCcsICgpID0+IHtcbiAgICAgIGl0KCdjaGFuZ2VzIHRlYWNoZXIgaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkub25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCgnTmV3IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiAnTmV3IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJ1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uTW9kZWxDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgaXQoJ2NoYW5nZXMgY2hvaWNlIGFuZCBtYWtlcyBpbmNvcnJlY3QgYWxsIG90aGVyIGNob2ljZXMnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbk1vZGVsQ2hhbmdlZCh7XG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgICBjaG9pY2VNb2RlOiAncmFkaW8nXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnY2hvaWNlTW9kZSdcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBleHBlY3RlZENob2ljZXMgPSBtb2RlbCgpLmNob2ljZXM7XG5cbiAgICAgICAgZXhwZWN0ZWRDaG9pY2VzLmZvckVhY2goKGVDLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGVDLmNvcnJlY3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgICBjaG9pY2VNb2RlOiAncmFkaW8nLFxuICAgICAgICAgICAgY2hvaWNlczogZXhwZWN0ZWRDaG9pY2VzXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -24,12 +24,17 @@ var _default = {
24
24
  limitChoicesNumber: true,
25
25
  teacherInstructionsEnabled: true,
26
26
  studentInstructionsEnabled: true,
27
- verticalMode: true
27
+ toolbarEditorPosition: 'bottom',
28
+ choicesLayout: 'vertical',
29
+ gridColumns: '2'
28
30
  },
29
31
  configuration: {
30
- verticalMode: {
31
- settings: true,
32
- label: 'Vertical Mode'
32
+ choicesLayout: {
33
+ settings: false,
34
+ label: 'Choices Layout'
35
+ },
36
+ gridColumns: {
37
+ label: 'Grid columns'
33
38
  },
34
39
  answerChoiceCount: 0,
35
40
  addChoiceButton: {
@@ -71,6 +76,10 @@ var _default = {
71
76
  settings: true,
72
77
  label: 'Rationale'
73
78
  },
79
+ accessibility: {
80
+ settings: false,
81
+ label: 'Accessibility Label'
82
+ },
74
83
  scoringType: {
75
84
  settings: false,
76
85
  label: 'Scoring Type'
@@ -82,6 +91,10 @@ var _default = {
82
91
  teacherInstructions: {
83
92
  settings: true,
84
93
  label: 'Teacher Instructions'
94
+ },
95
+ toolbarEditorPosition: {
96
+ settings: false,
97
+ label: 'Toolbar Editor Position'
85
98
  }
86
99
  }
87
100
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","choiceMode","choicePrefix","choices","prompt","lockChoiceOrder","partialScoring","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","limitChoicesNumber","teacherInstructionsEnabled","studentInstructionsEnabled","verticalMode","configuration","settings","label","answerChoiceCount","addChoiceButton","deleteChoice","feedback","rationale","studentInstructions","teacherInstructions"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;eACe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,UAAU,EAAE,UADP;AAELC,IAAAA,YAAY,EAAE,SAFT;AAGLC,IAAAA,OAAO,EAAE,EAHJ;AAILC,IAAAA,MAAM,EAAE,2BAJH;AAKLC,IAAAA,eAAe,EAAE,IALZ;AAMLC,IAAAA,cAAc,EAAE,IANX;AAOLC,IAAAA,WAAW,EAAE,MAPR;AAQLC,IAAAA,eAAe,EAAE,IARZ;AASLC,IAAAA,aAAa,EAAE,IATV;AAULC,IAAAA,gBAAgB,EAAE,IAVb;AAWLC,IAAAA,kBAAkB,EAAE,IAXf;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,YAAY,EAAE;AAdT,GADM;AAiBbC,EAAAA,aAAa,EAAE;AACbD,IAAAA,YAAY,EAAE;AACZE,MAAAA,QAAQ,EAAE,IADE;AAEZC,MAAAA,KAAK,EAAE;AAFK,KADD;AAKbC,IAAAA,iBAAiB,EAAE,CALN;AAMbC,IAAAA,eAAe,EAAE;AACfH,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KANJ;AAUbN,IAAAA,kBAAkB,EAAE;AAClBK,MAAAA,QAAQ,EAAE,IADQ;AAElBC,MAAAA,KAAK,EAAE;AAFW,KAVP;AAcbhB,IAAAA,UAAU,EAAE;AACVe,MAAAA,QAAQ,EAAE,IADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KAdC;AAkBbf,IAAAA,YAAY,EAAE;AACZc,MAAAA,QAAQ,EAAE,IADE;AAEZC,MAAAA,KAAK,EAAE;AAFK,KAlBD;AAsBbG,IAAAA,YAAY,EAAE;AACZJ,MAAAA,QAAQ,EAAE;AADE,KAtBD;AAyBbK,IAAAA,QAAQ,EAAE;AACRL,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KAzBG;AA6Bbb,IAAAA,MAAM,EAAE;AACNY,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KA7BK;AAiCbZ,IAAAA,eAAe,EAAE;AACfW,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KAjCJ;AAqCbX,IAAAA,cAAc,EAAE;AACdU,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KArCH;AAyCbK,IAAAA,SAAS,EAAE;AACTN,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KAzCE;AA6CbV,IAAAA,WAAW,EAAE;AACXS,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KA7CA;AAiDbM,IAAAA,mBAAmB,EAAE;AACnBP,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAjDR;AAqDbO,IAAAA,mBAAmB,EAAE;AACnBR,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY;AArDR;AAjBF,C","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\nexport default {\n model: {\n choiceMode: 'checkbox',\n choicePrefix: 'letters',\n choices: [],\n prompt: 'Question Prompt goes here',\n lockChoiceOrder: true,\n partialScoring: true,\n scoringType: 'auto',\n feedbackEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n limitChoicesNumber: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n verticalMode: true\n },\n configuration: {\n verticalMode: {\n settings: true,\n label: 'Vertical Mode',\n },\n answerChoiceCount: 0,\n addChoiceButton: {\n settings: true,\n label: 'Add a Choice'\n },\n limitChoicesNumber: {\n settings: true,\n label: 'Limit choices to 9'\n },\n choiceMode: {\n settings: true,\n label: 'Response Type'\n },\n choicePrefix: {\n settings: true,\n label: 'Choice Labels'\n },\n deleteChoice: {\n settings: true\n },\n feedback: {\n settings: true,\n label: 'Feedback'\n },\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order'\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type'\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n }\n }\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["model","choiceMode","choicePrefix","choices","prompt","lockChoiceOrder","partialScoring","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","limitChoicesNumber","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","choicesLayout","gridColumns","configuration","settings","label","answerChoiceCount","addChoiceButton","deleteChoice","feedback","rationale","accessibility","studentInstructions","teacherInstructions"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;eACe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,UAAU,EAAE,UADP;AAELC,IAAAA,YAAY,EAAE,SAFT;AAGLC,IAAAA,OAAO,EAAE,EAHJ;AAILC,IAAAA,MAAM,EAAE,2BAJH;AAKLC,IAAAA,eAAe,EAAE,IALZ;AAMLC,IAAAA,cAAc,EAAE,IANX;AAOLC,IAAAA,WAAW,EAAE,MAPR;AAQLC,IAAAA,eAAe,EAAE,IARZ;AASLC,IAAAA,aAAa,EAAE,IATV;AAULC,IAAAA,gBAAgB,EAAE,IAVb;AAWLC,IAAAA,kBAAkB,EAAE,IAXf;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,qBAAqB,EAAE,QAdlB;AAeLC,IAAAA,aAAa,EAAE,UAfV;AAgBLC,IAAAA,WAAW,EAAE;AAhBR,GADM;AAmBbC,EAAAA,aAAa,EAAE;AACbF,IAAAA,aAAa,EAAE;AACbG,MAAAA,QAAQ,EAAE,KADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KADF;AAKbH,IAAAA,WAAW,EAAE;AACXG,MAAAA,KAAK,EAAE;AADI,KALA;AAQbC,IAAAA,iBAAiB,EAAE,CARN;AASbC,IAAAA,eAAe,EAAE;AACfH,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KATJ;AAabR,IAAAA,kBAAkB,EAAE;AAClBO,MAAAA,QAAQ,EAAE,IADQ;AAElBC,MAAAA,KAAK,EAAE;AAFW,KAbP;AAiBblB,IAAAA,UAAU,EAAE;AACViB,MAAAA,QAAQ,EAAE,IADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KAjBC;AAqBbjB,IAAAA,YAAY,EAAE;AACZgB,MAAAA,QAAQ,EAAE,IADE;AAEZC,MAAAA,KAAK,EAAE;AAFK,KArBD;AAyBbG,IAAAA,YAAY,EAAE;AACZJ,MAAAA,QAAQ,EAAE;AADE,KAzBD;AA4BbK,IAAAA,QAAQ,EAAE;AACRL,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KA5BG;AAgCbf,IAAAA,MAAM,EAAE;AACNc,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KAhCK;AAoCbd,IAAAA,eAAe,EAAE;AACfa,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KApCJ;AAwCbb,IAAAA,cAAc,EAAE;AACdY,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAxCH;AA4CbK,IAAAA,SAAS,EAAE;AACTN,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KA5CE;AAgDbM,IAAAA,aAAa,EAAE;AACbP,MAAAA,QAAQ,EAAE,KADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KAhDF;AAoDbZ,IAAAA,WAAW,EAAE;AACXW,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KApDA;AAwDbO,IAAAA,mBAAmB,EAAE;AACnBR,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAxDR;AA4DbQ,IAAAA,mBAAmB,EAAE;AACnBT,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KA5DR;AAgEbL,IAAAA,qBAAqB,EAAE;AACrBI,MAAAA,QAAQ,EAAE,KADW;AAErBC,MAAAA,KAAK,EAAE;AAFc;AAhEV;AAnBF,C","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\nexport default {\n model: {\n choiceMode: 'checkbox',\n choicePrefix: 'letters',\n choices: [],\n prompt: 'Question Prompt goes here',\n lockChoiceOrder: true,\n partialScoring: true,\n scoringType: 'auto',\n feedbackEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n limitChoicesNumber: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n choicesLayout: 'vertical',\n gridColumns: '2',\n },\n configuration: {\n choicesLayout: {\n settings: false,\n label: 'Choices Layout',\n },\n gridColumns: {\n label: 'Grid columns',\n },\n answerChoiceCount: 0,\n addChoiceButton: {\n settings: true,\n label: 'Add a Choice',\n },\n limitChoicesNumber: {\n settings: true,\n label: 'Limit choices to 9',\n },\n choiceMode: {\n settings: true,\n label: 'Response Type',\n },\n choicePrefix: {\n settings: true,\n label: 'Choice Labels',\n },\n deleteChoice: {\n settings: true,\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n accessibility: {\n settings: false,\n label: 'Accessibility Label'\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n },\n};\n"],"file":"defaults.js"}
@@ -41,9 +41,9 @@ var _defaults2 = _interopRequireDefault(require("./defaults"));
41
41
 
42
42
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
43
43
 
44
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
44
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
45
45
 
46
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
46
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
47
47
 
48
48
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
49
49
 
@@ -186,8 +186,13 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
186
186
  exports["default"] = MultipleChoice;
187
187
  (0, _defineProperty2["default"])(MultipleChoice, "createDefaultModel", function () {
188
188
  var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
189
- return _configUi.choiceUtils.normalizeChoices(_objectSpread(_objectSpread(_objectSpread({}, _defaults2["default"].model), model), {}, {
189
+
190
+ var normalizedModel = _configUi.choiceUtils.normalizeChoices(_objectSpread(_objectSpread(_objectSpread({}, _defaults2["default"].model), model), {}, {
190
191
  choices: generateFormattedChoices(model && model.choices || [])
191
- }));
192
+ })); // This is used for offering support for old models which have the property "verticalMode"
193
+
194
+
195
+ normalizedModel.choicesLayout = model.choicesLayout || model.verticalMode === false && 'horizontal' || _defaults2["default"].model.choicesLayout;
196
+ return normalizedModel;
192
197
  });
193
198
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","sensibleDefaults","answerChoiceCount","MultipleChoice","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","element","React","createElement","Main","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","ReactDOM","render","HTMLElement","utils","normalizeChoices"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport {\n DeleteImageEvent,\n InsertImageEvent,\n ModelUpdatedEvent\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport defaults from 'lodash/defaults';\n\nimport sensibleDefaults from './defaults';\n\nconst log = debug('multiple-choice:configure');\n\nconst generateFormattedChoices = (choices, choiceCount = 0) => {\n if (!choices || choices.length === 0) {\n let formattedChoices = [];\n\n for (let i = 0; i < choiceCount; i++) {\n formattedChoices.push({\n value: `${i}`,\n label: '',\n feedback: {\n type: 'none',\n value: ''\n }\n });\n }\n\n return formattedChoices;\n }\n\n return choices;\n};\n\nconst prepareCustomizationObject = (config, model) => {\n const configuration = defaults(config, sensibleDefaults.configuration);\n\n return {\n configuration,\n model: {\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [], configuration && configuration.answerChoiceCount)\n }\n };\n};\n\nexport default class MultipleChoice extends HTMLElement {\n static createDefaultModel = (model = {}) => utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [])\n });\n\n constructor() {\n super();\n this._model = MultipleChoice.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MultipleChoice.createDefaultModel(s);\n\n this._render();\n }\n\n set configuration(c) {\n const info = prepareCustomizationObject(c, this._model);\n\n this.onModelChanged(info.model);\n this._configuration = info.configuration;\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = m;\n this._render();\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = prepareCustomizationObject(c, this._model).configuration;\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n _render() {\n log('_render');\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this)\n }\n });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","sensibleDefaults","answerChoiceCount","MultipleChoice","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","element","React","createElement","Main","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","ReactDOM","render","HTMLElement","normalizedModel","utils","normalizeChoices","choicesLayout","verticalMode"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport {\n DeleteImageEvent,\n InsertImageEvent,\n ModelUpdatedEvent\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport defaults from 'lodash/defaults';\n\nimport sensibleDefaults from './defaults';\n\nconst log = debug('multiple-choice:configure');\n\nconst generateFormattedChoices = (choices, choiceCount = 0) => {\n if (!choices || choices.length === 0) {\n let formattedChoices = [];\n\n for (let i = 0; i < choiceCount; i++) {\n formattedChoices.push({\n value: `${i}`,\n label: '',\n feedback: {\n type: 'none',\n value: ''\n }\n });\n }\n\n return formattedChoices;\n }\n\n return choices;\n};\n\nconst prepareCustomizationObject = (config, model) => {\n const configuration = defaults(config, sensibleDefaults.configuration);\n\n return {\n configuration,\n model: {\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [], configuration && configuration.answerChoiceCount)\n }\n };\n};\n\nexport default class MultipleChoice extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [])\n });\n\n // This is used for offering support for old models which have the property \"verticalMode\"\n normalizedModel.choicesLayout = model.choicesLayout || (model.verticalMode === false && 'horizontal') || sensibleDefaults.model.choicesLayout;\n\n return normalizedModel;\n }\n\n constructor() {\n super();\n this._model = MultipleChoice.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MultipleChoice.createDefaultModel(s);\n\n this._render();\n }\n\n set configuration(c) {\n const info = prepareCustomizationObject(c, this._model);\n\n this.onModelChanged(info.model);\n this._configuration = info.configuration;\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = m;\n this._render();\n\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = prepareCustomizationObject(c, this._model).configuration;\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n _render() {\n log('_render');\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this)\n }\n });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}