@pie-element/inline-dropdown 4.10.16-next.1 → 4.11.2

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 +461 -0
  2. package/LICENSE.md +5 -0
  3. package/configure/CHANGELOG.md +405 -0
  4. package/configure/lib/defaults.js +18 -1
  5. package/configure/lib/defaults.js.map +1 -1
  6. package/configure/lib/index.js +15 -1
  7. package/configure/lib/index.js.map +1 -1
  8. package/configure/lib/inline-dropdown-toolbar.js +54 -47
  9. package/configure/lib/inline-dropdown-toolbar.js.map +1 -1
  10. package/configure/lib/main.js +227 -159
  11. package/configure/lib/main.js.map +1 -1
  12. package/configure/lib/markupUtils.js +1 -1
  13. package/configure/lib/markupUtils.js.map +1 -1
  14. package/configure/lib/utils.js +17 -0
  15. package/configure/lib/utils.js.map +1 -0
  16. package/configure/package.json +5 -5
  17. package/controller/CHANGELOG.md +85 -0
  18. package/controller/lib/defaults.js +1 -1
  19. package/controller/lib/index.js +28 -1
  20. package/controller/lib/index.js.map +1 -1
  21. package/controller/lib/utils.js +1 -1
  22. package/controller/lib/utils.js.map +1 -1
  23. package/controller/package.json +2 -2
  24. package/docs/config-schema.json +94 -0
  25. package/docs/config-schema.json.md +73 -1
  26. package/docs/demo/config.js +2 -2
  27. package/docs/demo/generate.js +19 -20
  28. package/docs/pie-schema.json +27 -0
  29. package/docs/pie-schema.json.md +20 -0
  30. package/lib/index.js +4 -1
  31. package/lib/index.js.map +1 -1
  32. package/lib/inline-dropdown.js +31 -21
  33. package/lib/inline-dropdown.js.map +1 -1
  34. package/package.json +6 -6
  35. package/configure/lib/__tests__/inline-dropdown-toolbar.test.js +0 -124
  36. package/configure/lib/__tests__/main.test.js +0 -516
  37. package/configure/lib/__tests__/markupUtils.test.js +0 -108
  38. package/controller/lib/__tests__/index.test.js +0 -942
  39. package/docs/demo/pie.manifest.json +0 -11
  40. package/lib/__tests__/inline-dropdown.test.js +0 -121
@@ -115,6 +115,11 @@
115
115
  }
116
116
  }
117
117
  },
118
+ "settingsPanelDisabled": {
119
+ "description": "Indicates if the settings panel is not available",
120
+ "type": "boolean",
121
+ "title": "settingsPanelDisabled"
122
+ },
118
123
  "scoringType": {
119
124
  "title": "ConfigureProp",
120
125
  "type": "object",
@@ -163,6 +168,74 @@
163
168
  }
164
169
  }
165
170
  },
171
+ "maxResponseAreas": {
172
+ "description": "Maximum number of response areas",
173
+ "type": "number",
174
+ "title": "maxResponseAreas"
175
+ },
176
+ "maxResponseAreaChoices": {
177
+ "description": "Maximum number of choices per response area",
178
+ "type": "number",
179
+ "title": "maxResponseAreaChoices"
180
+ },
181
+ "maxImageWidth": {
182
+ "title": "ConfigureMaxImageDimensionsProp",
183
+ "type": "object",
184
+ "properties": {
185
+ "teacherInstructions": {
186
+ "description": "Indicates the max dimension for images in teacher instructions",
187
+ "type": "number",
188
+ "title": "teacherInstructions"
189
+ },
190
+ "prompt": {
191
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
192
+ "type": "number",
193
+ "title": "prompt"
194
+ },
195
+ "rationale": {
196
+ "description": "Indicates the max dimension for images in rationale",
197
+ "type": "number",
198
+ "title": "rationale"
199
+ }
200
+ }
201
+ },
202
+ "maxImageHeight": {
203
+ "title": "ConfigureMaxImageDimensionsProp",
204
+ "type": "object",
205
+ "properties": {
206
+ "teacherInstructions": {
207
+ "description": "Indicates the max dimension for images in teacher instructions",
208
+ "type": "number",
209
+ "title": "teacherInstructions"
210
+ },
211
+ "prompt": {
212
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
213
+ "type": "number",
214
+ "title": "prompt"
215
+ },
216
+ "rationale": {
217
+ "description": "Indicates the max dimension for images in rationale",
218
+ "type": "number",
219
+ "title": "rationale"
220
+ }
221
+ }
222
+ },
223
+ "withRubric": {
224
+ "title": "ConfigureProp",
225
+ "type": "object",
226
+ "properties": {
227
+ "settings": {
228
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
229
+ "type": "boolean",
230
+ "title": "settings"
231
+ },
232
+ "label": {
233
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
234
+ "type": "string",
235
+ "title": "label"
236
+ }
237
+ }
238
+ },
166
239
  "showPrompt": {
167
240
  "description": "Determines whether prompt field will be displayed or not",
168
241
  "default": true,
@@ -198,6 +271,27 @@
198
271
  "title": "label"
199
272
  }
200
273
  }
274
+ },
275
+ "ConfigureMaxImageDimensionsProp": {
276
+ "title": "ConfigureMaxImageDimensionsProp",
277
+ "type": "object",
278
+ "properties": {
279
+ "teacherInstructions": {
280
+ "description": "Indicates the max dimension for images in teacher instructions",
281
+ "type": "number",
282
+ "title": "teacherInstructions"
283
+ },
284
+ "prompt": {
285
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
286
+ "type": "number",
287
+ "title": "prompt"
288
+ },
289
+ "rationale": {
290
+ "description": "Indicates the max dimension for images in rationale",
291
+ "type": "number",
292
+ "title": "rationale"
293
+ }
294
+ }
201
295
  }
202
296
  },
203
297
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -86,6 +86,10 @@ Indicates if the item has to be displayed in the Settings Panel
86
86
 
87
87
  Indicates the label for the item that has to be displayed in the Settings Panel
88
88
 
89
+ # `settingsPanelDisabled` (boolean)
90
+
91
+ Indicates if the settings panel is not available
92
+
89
93
  # `scoringType` (object)
90
94
 
91
95
  Properties of the `scoringType` object:
@@ -122,6 +126,58 @@ Indicates if the item has to be displayed in the Settings Panel
122
126
 
123
127
  Indicates the label for the item that has to be displayed in the Settings Panel
124
128
 
129
+ # `maxResponseAreas` (number)
130
+
131
+ Maximum number of response areas
132
+
133
+ # `maxResponseAreaChoices` (number)
134
+
135
+ Maximum number of choices per response area
136
+
137
+ # `maxImageWidth` (object)
138
+
139
+ Properties of the `maxImageWidth` object:
140
+
141
+ ## `teacherInstructions` (number)
142
+
143
+ Indicates the max dimension for images in teacher instructions
144
+
145
+ ## `prompt` (number)
146
+
147
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
148
+
149
+ ## `rationale` (number)
150
+
151
+ Indicates the max dimension for images in rationale
152
+
153
+ # `maxImageHeight` (object)
154
+
155
+ Properties of the `maxImageHeight` object:
156
+
157
+ ## `teacherInstructions` (number)
158
+
159
+ Indicates the max dimension for images in teacher instructions
160
+
161
+ ## `prompt` (number)
162
+
163
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
164
+
165
+ ## `rationale` (number)
166
+
167
+ Indicates the max dimension for images in rationale
168
+
169
+ # `withRubric` (object)
170
+
171
+ Properties of the `withRubric` object:
172
+
173
+ ## `settings` (boolean)
174
+
175
+ Indicates if the item has to be displayed in the Settings Panel
176
+
177
+ ## `label` (string)
178
+
179
+ Indicates the label for the item that has to be displayed in the Settings Panel
180
+
125
181
  # `showPrompt` (boolean)
126
182
 
127
183
  Determines whether prompt field will be displayed or not
@@ -156,4 +212,20 @@ Indicates if the item has to be displayed in the Settings Panel
156
212
 
157
213
  ### `label` (string)
158
214
 
159
- Indicates the label for the item that has to be displayed in the Settings Panel
215
+ Indicates the label for the item that has to be displayed in the Settings Panel
216
+
217
+ ## `ConfigureMaxImageDimensionsProp` (object)
218
+
219
+ Properties of the `ConfigureMaxImageDimensionsProp` object:
220
+
221
+ ### `teacherInstructions` (number)
222
+
223
+ Indicates the max dimension for images in teacher instructions
224
+
225
+ ### `prompt` (number)
226
+
227
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
228
+
229
+ ### `rationale` (number)
230
+
231
+ Indicates the max dimension for images in rationale
@@ -2,7 +2,7 @@ const { model } = require('./generate');
2
2
 
3
3
  module.exports = {
4
4
  elements: {
5
- 'inline-dropdown': '../..'
5
+ 'inline-dropdown': '../..',
6
6
  },
7
- models: [model('1', 'inline-dropdown')]
7
+ models: [model('1', 'inline-dropdown')],
8
8
  };
@@ -9,69 +9,68 @@ exports.model = (id, element) => ({
9
9
  shuffle: true,
10
10
  markup: '<div><p>The {{0}} jumped {{1}} the {{2}}</p></div>',
11
11
  choices: {
12
- '0': [
12
+ 0: [
13
13
  {
14
14
  label: 'cow ',
15
15
  value: '0',
16
16
  correct: true,
17
- rationale: 'rationale cow'
17
+ rationale: 'rationale cow',
18
18
  },
19
19
  {
20
20
  label: 'dog ',
21
21
  value: '1',
22
22
  correct: false,
23
- rationale: 'rationale dog'
23
+ rationale: 'rationale dog',
24
24
  },
25
25
  {
26
26
  label: 'cat ',
27
27
  value: '2',
28
28
  correct: false,
29
- rationale: 'rationale car'
30
- }
29
+ rationale: 'rationale car',
30
+ },
31
31
  ],
32
- '1': [
32
+ 1: [
33
33
  {
34
34
  label: 'over ',
35
35
  value: '0',
36
36
  correct: true,
37
- rationale: 'rationale over'
37
+ rationale: 'rationale over',
38
38
  },
39
39
  {
40
40
  label: 'under ',
41
41
  value: '1',
42
42
  correct: false,
43
- rationale: 'rationale under'
43
+ rationale: 'rationale under',
44
44
  },
45
45
  {
46
46
  label: 'across ',
47
47
  value: '2',
48
48
  correct: false,
49
- rationale: 'rationale across'
50
- }
49
+ rationale: 'rationale across',
50
+ },
51
51
  ],
52
- '2': [
52
+ 2: [
53
53
  {
54
54
  label: 'moon ',
55
55
  value: '0',
56
56
  correct: true,
57
- rationale: 'rationale moon'
57
+ rationale: 'rationale moon',
58
58
  },
59
59
  {
60
60
  label: 'sun',
61
61
  value: '2',
62
62
  correct: false,
63
- rationale: 'rationale sun'
63
+ rationale: 'rationale sun',
64
64
  },
65
65
  {
66
66
  label: 'house ',
67
67
  value: '3',
68
68
  correct: false,
69
- rationale: 'rationale house'
70
- }
71
- ]
72
- },
73
- alternateResponse: {
74
- '2': ['2']
69
+ rationale: 'rationale house',
70
+ },
71
+ ],
75
72
  },
76
- choiceRationaleEnabled: false
73
+ alternateResponse: {},
74
+ choiceRationaleEnabled: false,
75
+ rubricEnabled: false,
77
76
  });
@@ -147,6 +147,11 @@
147
147
  "type": "string",
148
148
  "title": "toolbarEditorPosition"
149
149
  },
150
+ "rubricEnabled": {
151
+ "description": "Indicates if Rubric is enabled",
152
+ "type": "boolean",
153
+ "title": "rubricEnabled"
154
+ },
150
155
  "id": {
151
156
  "description": "Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.",
152
157
  "type": "string",
@@ -170,6 +175,7 @@
170
175
  "partialScoring",
171
176
  "rationale",
172
177
  "rationaleEnabled",
178
+ "rubricEnabled",
173
179
  "scoringType",
174
180
  "spellCheckEnabled",
175
181
  "studentInstructionsEnabled",
@@ -192,6 +198,27 @@
192
198
  }
193
199
  }
194
200
  },
201
+ "ConfigureMaxImageDimensionsProp": {
202
+ "title": "ConfigureMaxImageDimensionsProp",
203
+ "type": "object",
204
+ "properties": {
205
+ "teacherInstructions": {
206
+ "description": "Indicates the max dimension for images in teacher instructions",
207
+ "type": "number",
208
+ "title": "teacherInstructions"
209
+ },
210
+ "prompt": {
211
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
212
+ "type": "number",
213
+ "title": "prompt"
214
+ },
215
+ "rationale": {
216
+ "description": "Indicates the max dimension for images in rationale",
217
+ "type": "number",
218
+ "title": "rationale"
219
+ }
220
+ }
221
+ },
195
222
  "Choice": {
196
223
  "title": "Choice",
197
224
  "type": "object",
@@ -87,6 +87,10 @@ This element must be one of the following enum values:
87
87
 
88
88
  Default: `": 'bottom'"`
89
89
 
90
+ # `rubricEnabled` (boolean, required)
91
+
92
+ Indicates if Rubric is enabled
93
+
90
94
  # `id` (string, required)
91
95
 
92
96
  Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.
@@ -113,6 +117,22 @@ Indicates if the item has to be displayed in the Settings Panel
113
117
 
114
118
  Indicates the label for the item that has to be displayed in the Settings Panel
115
119
 
120
+ ## `ConfigureMaxImageDimensionsProp` (object)
121
+
122
+ Properties of the `ConfigureMaxImageDimensionsProp` object:
123
+
124
+ ### `teacherInstructions` (number)
125
+
126
+ Indicates the max dimension for images in teacher instructions
127
+
128
+ ### `prompt` (number)
129
+
130
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
131
+
132
+ ### `rationale` (number)
133
+
134
+ Indicates the max dimension for images in rationale
135
+
116
136
  ## `Choice` (object)
117
137
 
118
138
  Properties of the `Choice` object:
package/lib/index.js CHANGED
@@ -104,6 +104,9 @@ var RootInlineDropdown = /*#__PURE__*/function (_HTMLElement) {
104
104
  }, {
105
105
  key: "connectedCallback",
106
106
  value: function connectedCallback() {
107
+ this.setAttribute('aria-label', 'Inline Dropdown Question');
108
+ this.setAttribute('role', 'region');
109
+
107
110
  this._render();
108
111
  }
109
112
  }]);
@@ -111,4 +114,4 @@ var RootInlineDropdown = /*#__PURE__*/function (_HTMLElement) {
111
114
  }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
112
115
 
113
116
  exports["default"] = RootInlineDropdown;
114
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJSb290SW5saW5lRHJvcGRvd24iLCJfbW9kZWwiLCJfc2Vzc2lvbiIsImVsZW0iLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJJbmxpbmVEcm9wZG93biIsInByb21wdCIsInJhdGlvbmFsZSIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJkaXNhYmxlZCIsImRpc3BsYXlUeXBlIiwibWFya3VwIiwibW9kZSIsImNob2ljZXMiLCJ2YWx1ZSIsImZlZWRiYWNrIiwib25DaGFuZ2UiLCJjaGFuZ2VTZXNzaW9uIiwiUmVhY3RET00iLCJyZW5kZXIiLCJkaXNwYXRjaEV2ZW50IiwiU2Vzc2lvbkNoYW5nZWRFdmVudCIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsInNlc3Npb24iLCJkaXNwYXRjaENoYW5nZWRFdmVudCIsIl9yZW5kZXIiLCJtIiwiTW9kZWxTZXRFdmVudCIsInMiLCJIVE1MRWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOzs7Ozs7SUFFcUJBLGtCOzs7OztBQUNuQixnQ0FBYztBQUFBOztBQUFBO0FBQ1o7QUFEWSxnR0E0QkosWUFBTTtBQUNkLFVBQUksTUFBS0MsTUFBTCxJQUFlLE1BQUtDLFFBQXhCLEVBQWtDO0FBQ2hDLFlBQUlDLElBQUksZ0JBQUdDLGtCQUFNQyxhQUFOLENBQW9CQywwQkFBcEIsRUFBb0M7QUFDN0NDLFVBQUFBLE1BQU0sRUFBRSxNQUFLTixNQUFMLENBQVlNLE1BRHlCO0FBRTdDQyxVQUFBQSxTQUFTLEVBQUUsTUFBS1AsTUFBTCxDQUFZTyxTQUZzQjtBQUc3Q0MsVUFBQUEsbUJBQW1CLEVBQUUsTUFBS1IsTUFBTCxDQUFZUSxtQkFIWTtBQUk3Q0MsVUFBQUEsUUFBUSxFQUFFLE1BQUtULE1BQUwsQ0FBWVMsUUFKdUI7QUFLN0NDLFVBQUFBLFdBQVcsRUFBRSxNQUFLVixNQUFMLENBQVlVLFdBTG9CO0FBTTdDQyxVQUFBQSxNQUFNLEVBQUUsTUFBS1gsTUFBTCxDQUFZVyxNQU55QjtBQU83Q0MsVUFBQUEsSUFBSSxFQUFFLE1BQUtaLE1BQUwsQ0FBWVksSUFQMkI7QUFRN0NDLFVBQUFBLE9BQU8sRUFBRSxNQUFLYixNQUFMLENBQVlhLE9BUndCO0FBUzdDQyxVQUFBQSxLQUFLLEVBQUUsTUFBS2IsUUFBTCxDQUFjYSxLQVR3QjtBQVU3Q0MsVUFBQUEsUUFBUSxFQUFFLE1BQUtmLE1BQUwsQ0FBWWUsUUFWdUI7QUFXN0NDLFVBQUFBLFFBQVEsRUFBRSxNQUFLQztBQVg4QixTQUFwQyxDQUFYOztBQWNBQyw2QkFBU0MsTUFBVCxDQUFnQmpCLElBQWhCLGtEQUE0QixZQUFNO0FBQ2hDO0FBQ0QsU0FGRDtBQUdEO0FBQ0YsS0FoRGE7QUFBQSw2R0FrRFMsWUFBTTtBQUMzQixZQUFLa0IsYUFBTCxDQUNFLElBQUlDLG9DQUFKLENBQ0UsTUFBS0MsT0FBTCxDQUFhQyxXQUFiLEVBREYsRUFFRSxNQUFLQyxPQUFMLElBQWdCLENBQUMsQ0FBQyxNQUFLQSxPQUFMLENBQWFWLEtBRmpDLENBREY7QUFNRCxLQXpEYTtBQUFBLHNHQTJERSxVQUFBQSxLQUFLLEVBQUk7QUFDdkIsWUFBS1UsT0FBTCxDQUFhVixLQUFiLEdBQXFCQSxLQUFyQjs7QUFDQSxZQUFLVyxvQkFBTDs7QUFDQSxZQUFLQyxPQUFMO0FBQ0QsS0EvRGE7QUFFWixVQUFLMUIsTUFBTCxHQUFjLElBQWQ7QUFDQSxVQUFLQyxRQUFMLEdBQWdCLElBQWhCO0FBSFk7QUFJYjs7OztTQUVELGFBQVUwQixDQUFWLEVBQWE7QUFDWCxXQUFLM0IsTUFBTCxHQUFjMkIsQ0FBZDtBQUNBLFdBQUtQLGFBQUwsQ0FDRSxJQUFJUSw4QkFBSixDQUNFLEtBQUtOLE9BQUwsQ0FBYUMsV0FBYixFQURGLEVBRUUsS0FBS0MsT0FBTCxJQUFnQixDQUFDLENBQUMsS0FBS0EsT0FBTCxDQUFhVixLQUZqQyxFQUdFLENBQUMsQ0FBQyxLQUFLZCxNQUhULENBREY7O0FBUUEsV0FBSzBCLE9BQUw7QUFDRDs7O1NBT0QsZUFBYztBQUNaLGFBQU8sS0FBS3pCLFFBQVo7QUFDRCxLO1NBUEQsYUFBWTRCLENBQVosRUFBZTtBQUNiLFdBQUs1QixRQUFMLEdBQWdCNEIsQ0FBaEI7O0FBQ0EsV0FBS0gsT0FBTDtBQUNEOzs7V0EyQ0QsNkJBQW9CO0FBQ2xCLFdBQUtBLE9BQUw7QUFDRDs7O2tEQXBFNkNJLFciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQge1xuICBNb2RlbFNldEV2ZW50LFxuICBTZXNzaW9uQ2hhbmdlZEV2ZW50XG59IGZyb20gJ0BwaWUtZnJhbWV3b3JrL3BpZS1wbGF5ZXItZXZlbnRzJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgSW5saW5lRHJvcGRvd24gZnJvbSAnLi9pbmxpbmUtZHJvcGRvd24nOyBcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9vdElubGluZURyb3Bkb3duIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX21vZGVsID0gbnVsbDtcbiAgICB0aGlzLl9zZXNzaW9uID0gbnVsbDtcbiAgfVxuXG4gIHNldCBtb2RlbChtKSB7XG4gICAgdGhpcy5fbW9kZWwgPSBtO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBNb2RlbFNldEV2ZW50KFxuICAgICAgICB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgdGhpcy5zZXNzaW9uICYmICEhdGhpcy5zZXNzaW9uLnZhbHVlLFxuICAgICAgICAhIXRoaXMuX21vZGVsXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgc2V0IHNlc3Npb24ocykge1xuICAgIHRoaXMuX3Nlc3Npb24gPSBzO1xuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgZ2V0IHNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb247XG4gIH1cblxuICBfcmVuZGVyID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLl9tb2RlbCAmJiB0aGlzLl9zZXNzaW9uKSB7XG4gICAgICBsZXQgZWxlbSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5saW5lRHJvcGRvd24sIHtcbiAgICAgICAgcHJvbXB0OiB0aGlzLl9tb2RlbC5wcm9tcHQsXG4gICAgICAgIHJhdGlvbmFsZTogdGhpcy5fbW9kZWwucmF0aW9uYWxlLFxuICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiB0aGlzLl9tb2RlbC50ZWFjaGVySW5zdHJ1Y3Rpb25zLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5fbW9kZWwuZGlzYWJsZWQsXG4gICAgICAgIGRpc3BsYXlUeXBlOiB0aGlzLl9tb2RlbC5kaXNwbGF5VHlwZSxcbiAgICAgICAgbWFya3VwOiB0aGlzLl9tb2RlbC5tYXJrdXAsXG4gICAgICAgIG1vZGU6IHRoaXMuX21vZGVsLm1vZGUsXG4gICAgICAgIGNob2ljZXM6IHRoaXMuX21vZGVsLmNob2ljZXMsXG4gICAgICAgIHZhbHVlOiB0aGlzLl9zZXNzaW9uLnZhbHVlLFxuICAgICAgICBmZWVkYmFjazogdGhpcy5fbW9kZWwuZmVlZGJhY2ssXG4gICAgICAgIG9uQ2hhbmdlOiB0aGlzLmNoYW5nZVNlc3Npb25cbiAgICAgIH0pO1xuXG4gICAgICBSZWFjdERPTS5yZW5kZXIoZWxlbSwgdGhpcywgKCkgPT4ge1xuICAgICAgICByZW5kZXJNYXRoKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGRpc3BhdGNoQ2hhbmdlZEV2ZW50ID0gKCkgPT4ge1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KFxuICAgICAgICB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgdGhpcy5zZXNzaW9uICYmICEhdGhpcy5zZXNzaW9uLnZhbHVlXG4gICAgICApXG4gICAgKTtcbiAgfTtcblxuICBjaGFuZ2VTZXNzaW9uID0gdmFsdWUgPT4ge1xuICAgIHRoaXMuc2Vzc2lvbi52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZGlzcGF0Y2hDaGFuZ2VkRXZlbnQoKTtcbiAgICB0aGlzLl9yZW5kZXIoKTtcbiAgfTtcblxuICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICB0aGlzLl9yZW5kZXIoKTtcbiAgfVxufVxuIl19
117
+ //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["RootInlineDropdown","_model","_session","elem","React","createElement","InlineDropdown","prompt","rationale","teacherInstructions","disabled","displayType","markup","mode","choices","value","feedback","onChange","changeSession","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAIA;;AACA;;;;;;IAEqBA,kB;;;;;AACnB,gCAAc;AAAA;;AAAA;AACZ;AADY,gGA4BJ,YAAM;AACd,UAAI,MAAKC,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAIC,IAAI,gBAAGC,kBAAMC,aAAN,CAAoBC,0BAApB,EAAoC;AAC7CC,UAAAA,MAAM,EAAE,MAAKN,MAAL,CAAYM,MADyB;AAE7CC,UAAAA,SAAS,EAAE,MAAKP,MAAL,CAAYO,SAFsB;AAG7CC,UAAAA,mBAAmB,EAAE,MAAKR,MAAL,CAAYQ,mBAHY;AAI7CC,UAAAA,QAAQ,EAAE,MAAKT,MAAL,CAAYS,QAJuB;AAK7CC,UAAAA,WAAW,EAAE,MAAKV,MAAL,CAAYU,WALoB;AAM7CC,UAAAA,MAAM,EAAE,MAAKX,MAAL,CAAYW,MANyB;AAO7CC,UAAAA,IAAI,EAAE,MAAKZ,MAAL,CAAYY,IAP2B;AAQ7CC,UAAAA,OAAO,EAAE,MAAKb,MAAL,CAAYa,OARwB;AAS7CC,UAAAA,KAAK,EAAE,MAAKb,QAAL,CAAca,KATwB;AAU7CC,UAAAA,QAAQ,EAAE,MAAKf,MAAL,CAAYe,QAVuB;AAW7CC,UAAAA,QAAQ,EAAE,MAAKC;AAX8B,SAApC,CAAX;;AAcAC,6BAASC,MAAT,CAAgBjB,IAAhB,kDAA4B,YAAM;AAChC;AACD,SAFD;AAGD;AACF,KAhDa;AAAA,6GAkDS,YAAM;AAC3B,YAAKkB,aAAL,CACE,IAAIC,oCAAJ,CACE,MAAKC,OAAL,CAAaC,WAAb,EADF,EAEE,MAAKC,OAAL,IAAgB,CAAC,CAAC,MAAKA,OAAL,CAAaV,KAFjC,CADF;AAMD,KAzDa;AAAA,sGA2DE,UAAAA,KAAK,EAAI;AACvB,YAAKU,OAAL,CAAaV,KAAb,GAAqBA,KAArB;;AACA,YAAKW,oBAAL;;AACA,YAAKC,OAAL;AACD,KA/Da;AAEZ,UAAK1B,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,IAAhB;AAHY;AAIb;;;;SAED,aAAU0B,CAAV,EAAa;AACX,WAAK3B,MAAL,GAAc2B,CAAd;AACA,WAAKP,aAAL,CACE,IAAIQ,8BAAJ,CACE,KAAKN,OAAL,CAAaC,WAAb,EADF,EAEE,KAAKC,OAAL,IAAgB,CAAC,CAAC,KAAKA,OAAL,CAAaV,KAFjC,EAGE,CAAC,CAAC,KAAKd,MAHT,CADF;;AAQA,WAAK0B,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAKzB,QAAZ;AACD,K;SAPD,aAAY4B,CAAZ,EAAe;AACb,WAAK5B,QAAL,GAAgB4B,CAAhB;;AACA,WAAKH,OAAL;AACD;;;WA2CD,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;kDApE6CI,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n ModelSetEvent,\n SessionChangedEvent\n} from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport InlineDropdown from './inline-dropdown'; \n\nexport default class RootInlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n }\n\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n this.session && !!this.session.value,\n !!this._model\n )\n );\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(InlineDropdown, {\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n teacherInstructions: this._model.teacherInstructions,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n markup: this._model.markup,\n mode: this._model.mode,\n choices: this._model.choices,\n value: this._session.value,\n feedback: this._model.feedback,\n onChange: this.changeSession\n });\n\n ReactDOM.render(elem, this, () => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(\n new SessionChangedEvent(\n this.tagName.toLowerCase(),\n this.session && !!this.session.value\n )\n );\n };\n\n changeSession = value => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this._render();\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["RootInlineDropdown","_model","_session","elem","React","createElement","InlineDropdown","prompt","rationale","teacherInstructions","disabled","displayType","markup","mode","choices","value","feedback","onChange","changeSession","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","m","ModelSetEvent","s","setAttribute","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEqBA,kB;;;;;AACnB,gCAAc;AAAA;;AAAA;AACZ;AADY,gGAwBJ,YAAM;AACd,UAAI,MAAKC,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAIC,IAAI,gBAAGC,kBAAMC,aAAN,CAAoBC,0BAApB,EAAoC;AAC7CC,UAAAA,MAAM,EAAE,MAAKN,MAAL,CAAYM,MADyB;AAE7CC,UAAAA,SAAS,EAAE,MAAKP,MAAL,CAAYO,SAFsB;AAG7CC,UAAAA,mBAAmB,EAAE,MAAKR,MAAL,CAAYQ,mBAHY;AAI7CC,UAAAA,QAAQ,EAAE,MAAKT,MAAL,CAAYS,QAJuB;AAK7CC,UAAAA,WAAW,EAAE,MAAKV,MAAL,CAAYU,WALoB;AAM7CC,UAAAA,MAAM,EAAE,MAAKX,MAAL,CAAYW,MANyB;AAO7CC,UAAAA,IAAI,EAAE,MAAKZ,MAAL,CAAYY,IAP2B;AAQ7CC,UAAAA,OAAO,EAAE,MAAKb,MAAL,CAAYa,OARwB;AAS7CC,UAAAA,KAAK,EAAE,MAAKb,QAAL,CAAca,KATwB;AAU7CC,UAAAA,QAAQ,EAAE,MAAKf,MAAL,CAAYe,QAVuB;AAW7CC,UAAAA,QAAQ,EAAE,MAAKC;AAX8B,SAApC,CAAX;;AAcAC,6BAASC,MAAT,CAAgBjB,IAAhB,kDAA4B,YAAM;AAChC;AACD,SAFD;AAGD;AACF,KA5Ca;AAAA,6GA8CS,YAAM;AAC3B,YAAKkB,aAAL,CAAmB,IAAIC,oCAAJ,CAAwB,MAAKC,OAAL,CAAaC,WAAb,EAAxB,EAAoD,MAAKC,OAAL,IAAgB,CAAC,CAAC,MAAKA,OAAL,CAAaV,KAAnF,CAAnB;AACD,KAhDa;AAAA,sGAkDE,UAACA,KAAD,EAAW;AACzB,YAAKU,OAAL,CAAaV,KAAb,GAAqBA,KAArB;;AACA,YAAKW,oBAAL;;AACA,YAAKC,OAAL;AACD,KAtDa;AAEZ,UAAK1B,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,IAAhB;AAHY;AAIb;;;;SAED,aAAU0B,CAAV,EAAa;AACX,WAAK3B,MAAL,GAAc2B,CAAd;AACA,WAAKP,aAAL,CACE,IAAIQ,8BAAJ,CAAkB,KAAKN,OAAL,CAAaC,WAAb,EAAlB,EAA8C,KAAKC,OAAL,IAAgB,CAAC,CAAC,KAAKA,OAAL,CAAaV,KAA7E,EAAoF,CAAC,CAAC,KAAKd,MAA3F,CADF;;AAIA,WAAK0B,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAKzB,QAAZ;AACD,K;SAPD,aAAY4B,CAAZ,EAAe;AACb,WAAK5B,QAAL,GAAgB4B,CAAhB;;AACA,WAAKH,OAAL;AACD;;;WAsCD,6BAAoB;AAClB,WAAKI,YAAL,CAAkB,YAAlB,EAAgC,0BAAhC;AACA,WAAKA,YAAL,CAAkB,MAAlB,EAA0B,QAA1B;;AAEA,WAAKJ,OAAL;AACD;;;kDA9D6CK,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport InlineDropdown from './inline-dropdown';\n\nexport default class RootInlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n }\n\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(this.tagName.toLowerCase(), this.session && !!this.session.value, !!this._model),\n );\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(InlineDropdown, {\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n teacherInstructions: this._model.teacherInstructions,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n markup: this._model.markup,\n mode: this._model.mode,\n choices: this._model.choices,\n value: this._session.value,\n feedback: this._model.feedback,\n onChange: this.changeSession,\n });\n\n ReactDOM.render(elem, this, () => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.session && !!this.session.value));\n };\n\n changeSession = (value) => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this.setAttribute('aria-label', 'Inline Dropdown Question'); \n this.setAttribute('role', 'region');\n\n this._render();\n }\n}\n"],"file":"index.js"}
@@ -119,37 +119,33 @@ var InlineDropdown = /*#__PURE__*/function (_React$Component) {
119
119
  style: {
120
120
  display: "".concat(displayType)
121
121
  }
122
- }, teacherInstructions && (0, _renderUi.hasText)(teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
122
+ }, teacherInstructions && (0, _renderUi.hasText)(teacherInstructions) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
123
+ className: classes.collapsible,
123
124
  labels: {
124
125
  hidden: 'Show Teacher Instructions',
125
126
  visible: 'Hide Teacher Instructions'
126
127
  }
127
128
  }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
128
129
  prompt: teacherInstructions
129
- })), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
130
+ })), prompt && /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
131
+ prompt: prompt
132
+ }), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
130
133
  show: showCorrectAnswerToggle,
131
134
  toggled: showCorrectAnswer,
132
135
  onToggle: this.toggleShowCorrect
133
- }), showCorrectAnswerToggle && /*#__PURE__*/_react["default"].createElement("br", null), prompt && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
134
- prompt: prompt
135
- }), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(_maskMarkup.InlineDropdown, (0, _extends2["default"])({}, this.props, {
136
+ }), /*#__PURE__*/_react["default"].createElement(_maskMarkup.InlineDropdown, (0, _extends2["default"])({}, this.props, {
136
137
  showCorrectAnswer: showCorrectAnswer
137
- })), rationale && (0, _renderUi.hasText)(rationale) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
138
- labels: {
139
- hidden: 'Show Rationale',
140
- visible: 'Hide Rationale'
141
- }
142
- }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
143
- prompt: rationale
144
- })), choiceRationalesHaveText && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
138
+ })), choiceRationalesHaveText && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
139
+ className: classes.collapsible,
145
140
  labels: {
146
141
  hidden: 'Show Rationale for choices',
147
142
  visible: 'Hide Rationale for choices'
148
143
  }
149
- }, /*#__PURE__*/_react["default"].createElement("div", null, choiceRationales.map(function (choices, index) {
144
+ }, choiceRationales.map(function (choices, index) {
150
145
  return /*#__PURE__*/_react["default"].createElement("div", {
151
- key: index
152
- }, choices && choices.length > 0 && choices.map(function (choice) {
146
+ key: index,
147
+ className: classes.choiceRationaleWrapper
148
+ }, (choices === null || choices === void 0 ? void 0 : choices.length) > 0 && choices.map(function (choice) {
153
149
  return /*#__PURE__*/_react["default"].createElement("div", {
154
150
  className: classes.choiceRationale,
155
151
  key: choice.label
@@ -161,8 +157,15 @@ var InlineDropdown = /*#__PURE__*/function (_React$Component) {
161
157
  }), /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
162
158
  prompt: choice.rationale
163
159
  }));
164
- }), choices && choices.length > 0 && /*#__PURE__*/_react["default"].createElement("br", null));
165
- })))));
160
+ }));
161
+ })), rationale && (0, _renderUi.hasText)(rationale) && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
162
+ labels: {
163
+ hidden: 'Show Rationale',
164
+ visible: 'Hide Rationale'
165
+ }
166
+ }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
167
+ prompt: rationale
168
+ })));
166
169
  }
167
170
  }]);
168
171
  return InlineDropdown;
@@ -191,8 +194,15 @@ var styles = function styles(theme) {
191
194
  return {
192
195
  mainContainer: {
193
196
  color: _renderUi.color.text(),
194
- backgroundColor: _renderUi.color.background(),
195
- padding: theme.spacing.unit
197
+ backgroundColor: _renderUi.color.background()
198
+ },
199
+ collapsible: {
200
+ marginBottom: theme.spacing.unit * 2
201
+ },
202
+ choiceRationaleWrapper: {
203
+ '&:not(:last-child)': {
204
+ marginBottom: theme.spacing.unit * 2
205
+ }
196
206
  },
197
207
  choiceRationale: {
198
208
  display: 'flex',
@@ -213,4 +223,4 @@ var styles = function styles(theme) {
213
223
  var _default = (0, _styles.withStyles)(styles)(InlineDropdown);
214
224
 
215
225
  exports["default"] = _default;
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmxpbmUtZHJvcGRvd24uanN4Il0sIm5hbWVzIjpbIklubGluZURyb3Bkb3duIiwic2hvd0NvcnJlY3RBbnN3ZXIiLCJzZXRTdGF0ZSIsInN0YXRlIiwibmV4dFByb3BzIiwiZmVlZGJhY2siLCJkb21Ob2RlIiwiUmVhY3RET00iLCJmaW5kRE9NTm9kZSIsInByb3BzIiwiY2xhc3NlcyIsInByb21wdCIsIm1vZGUiLCJyYXRpb25hbGUiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwiY2hvaWNlcyIsImRpc3BsYXlUeXBlIiwic2hvd0NvcnJlY3RBbnN3ZXJUb2dnbGUiLCJjaG9pY2VSYXRpb25hbGVzSGF2ZVRleHQiLCJjaG9pY2VSYXRpb25hbGVzIiwiT2JqZWN0Iiwia2V5cyIsIm1hcCIsImtleSIsInJlZHVjZSIsImFjYyIsImN1cnJlbnRWYWx1ZSIsInB1c2giLCJtYWluQ29udGFpbmVyIiwiZGlzcGxheSIsImhpZGRlbiIsInZpc2libGUiLCJ0b2dnbGVTaG93Q29ycmVjdCIsImluZGV4IiwibGVuZ3RoIiwiY2hvaWNlIiwiY2hvaWNlUmF0aW9uYWxlIiwibGFiZWwiLCJjaG9pY2VSYXRpb25hbGVMYWJlbCIsImNvcnJlY3QiLCJfX2h0bWwiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsInN0cmluZyIsImRpc2FibGVkIiwiYm9vbCIsIm1hcmt1cCIsInZhbHVlIiwib25DaGFuZ2UiLCJmdW5jIiwic3R5bGVzIiwidGhlbWUiLCJjb2xvciIsInRleHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kIiwicGFkZGluZyIsInNwYWNpbmciLCJ1bml0Iiwid2hpdGVTcGFjZSIsImluY29ycmVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7SUFFYUEsYzs7Ozs7Ozs7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LE9BQU8sRUFBRSxNQURNO0FBRWZnQyxNQUFBQSxVQUFVLEVBQUU7QUFGRyxLQU5RO0FBVXpCdkIsSUFBQUEsb0JBQW9CLEVBQUU7QUFDcEJULE1BQUFBLE9BQU8sRUFBRSxNQURXO0FBRXBCLG1CQUFhO0FBQ1h5QixRQUFBQSxLQUFLLEVBQUVBLGdCQUFNZixPQUFOO0FBREksT0FGTztBQUtwQixxQkFBZTtBQUNiZSxRQUFBQSxLQUFLLEVBQUVBLGdCQUFNUSxTQUFOO0FBRE07QUFMSztBQVZHLEdBQVo7QUFBQSxDQUFmOztlQXFCZSx3QkFBV1YsTUFBWCxFQUFtQnBELGNBQW5CLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IENvcnJlY3RBbnN3ZXJUb2dnbGUgZnJvbSAnQHBpZS1saWIvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJztcbmltcG9ydCB7IElubGluZURyb3Bkb3duIGFzIERyb3BEb3duIH0gZnJvbSAnQHBpZS1saWIvbWFzay1tYXJrdXAnO1xuaW1wb3J0IHtjb2xvciwgQ29sbGFwc2libGUsIGhhc1RleHQsIFByZXZpZXdQcm9tcHR9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgeyByZW5kZXJNYXRoIH0gZnJvbSAnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuZXhwb3J0IGNsYXNzIElubGluZURyb3Bkb3duIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHByb21wdDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWFya3VwOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1vZGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzcGxheVR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgcmF0aW9uYWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2hvaWNlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB2YWx1ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBmZWVkYmFjazogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmNcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHZhbHVlOiB7fVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIHNob3dDb3JyZWN0QW5zd2VyOiBmYWxzZVxuICB9O1xuXG4gIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIGlmIChpc0VtcHR5KG5leHRQcm9wcy5mZWVkYmFjaykpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBzaG93Q29ycmVjdEFuc3dlcjogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IGRvbU5vZGUgPSBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTtcblxuICAgIHJlbmRlck1hdGgoZG9tTm9kZSk7XG4gIH1cblxuICB0b2dnbGVTaG93Q29ycmVjdCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgc2hvd0NvcnJlY3RBbnN3ZXI6ICF0aGlzLnN0YXRlLnNob3dDb3JyZWN0QW5zd2VyIH0pO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHNob3dDb3JyZWN0QW5zd2VyIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHsgY2xhc3NlcywgcHJvbXB0LCBtb2RlLCByYXRpb25hbGUsIHRlYWNoZXJJbnN0cnVjdGlvbnMsIGNob2ljZXMsIGRpc3BsYXlUeXBlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHNob3dDb3JyZWN0QW5zd2VyVG9nZ2xlID0gbW9kZSA9PT0gJ2V2YWx1YXRlJztcbiAgICBsZXQgY2hvaWNlUmF0aW9uYWxlc0hhdmVUZXh0ID0gZmFsc2U7XG5cbiAgICBjb25zdCBjaG9pY2VSYXRpb25hbGVzID0gKE9iamVjdC5rZXlzKGNob2ljZXMpIHx8IFtdKS5tYXAoa2V5ID0+IChjaG9pY2VzW2tleV0gfHwgW10pXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICBpZiAoY3VycmVudFZhbHVlLnJhdGlvbmFsZSAmJiBoYXNUZXh0KGN1cnJlbnRWYWx1ZS5yYXRpb25hbGUpKSB7XG4gICAgICAgICAgY2hvaWNlUmF0aW9uYWxlc0hhdmVUZXh0ID0gdHJ1ZTtcblxuICAgICAgICAgIGFjYy5wdXNoKGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMubWFpbkNvbnRhaW5lcn0gc3R5bGU9e3sgZGlzcGxheTogYCR7ZGlzcGxheVR5cGV9YCB9fT5cbiAgICAgICAge1xuICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMgJiYgaGFzVGV4dCh0ZWFjaGVySW5zdHJ1Y3Rpb25zKSAmJiAoXG4gICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgICAgICAgIGxhYmVscz17eyBoaWRkZW46ICdTaG93IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJywgdmlzaWJsZTogJ0hpZGUgVGVhY2hlciBJbnN0cnVjdGlvbnMnIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UHJldmlld1Byb21wdCBwcm9tcHQ9e3RlYWNoZXJJbnN0cnVjdGlvbnN9IC8+XG4gICAgICAgICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICA8Q29ycmVjdEFuc3dlclRvZ2dsZVxuICAgICAgICAgIHNob3c9e3Nob3dDb3JyZWN0QW5zd2VyVG9nZ2xlfVxuICAgICAgICAgIHRvZ2dsZWQ9e3Nob3dDb3JyZWN0QW5zd2VyfVxuICAgICAgICAgIG9uVG9nZ2xlPXt0aGlzLnRvZ2dsZVNob3dDb3JyZWN0fVxuICAgICAgICAvPlxuICAgICAgICB7c2hvd0NvcnJlY3RBbnN3ZXJUb2dnbGUgJiYgPGJyIC8+fVxuXG4gICAgICAgIHtwcm9tcHQgJiYgKFxuICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgIDxQcmV2aWV3UHJvbXB0IHByb21wdD17cHJvbXB0fSAvPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgKX1cbiAgICAgICAgPERyb3BEb3duXG4gICAgICAgICAgey4uLnRoaXMucHJvcHN9XG4gICAgICAgICAgc2hvd0NvcnJlY3RBbnN3ZXI9e3Nob3dDb3JyZWN0QW5zd2VyfVxuICAgICAgICAvPlxuICAgICAgICB7cmF0aW9uYWxlICYmIGhhc1RleHQocmF0aW9uYWxlKSAmJiAoXG4gICAgICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICAgICAgbGFiZWxzPXt7IGhpZGRlbjogJ1Nob3cgUmF0aW9uYWxlJywgdmlzaWJsZTogJ0hpZGUgUmF0aW9uYWxlJyB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8UHJldmlld1Byb21wdCBwcm9tcHQ9e3JhdGlvbmFsZX0gLz5cbiAgICAgICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICAgICl9XG4gICAgICAgIHtjaG9pY2VSYXRpb25hbGVzSGF2ZVRleHQgJiYgKFxuICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVscz17e2hpZGRlbjogJ1Nob3cgUmF0aW9uYWxlIGZvciBjaG9pY2VzJywgdmlzaWJsZTogJ0hpZGUgUmF0aW9uYWxlIGZvciBjaG9pY2VzJ319PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIHtjaG9pY2VSYXRpb25hbGVzLm1hcCgoY2hvaWNlcywgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICB7Y2hvaWNlcyAmJiBjaG9pY2VzLmxlbmd0aCA+IDAgJiYgY2hvaWNlcy5tYXAoIGNob2ljZSA9PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNob2ljZVJhdGlvbmFsZX0ga2V5PXtjaG9pY2UubGFiZWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5jaG9pY2VSYXRpb25hbGVMYWJlbCwgY2hvaWNlLmNvcnJlY3QgPyAnY29ycmVjdCcgOiAnaW5jb3JyZWN0Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogYCR7Y2hvaWNlLmxhYmVsfTogYCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcmV2aWV3UHJvbXB0IHByb21wdD17Y2hvaWNlLnJhdGlvbmFsZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2Nob2ljZXMgJiYgY2hvaWNlcy5sZW5ndGggPiAwICYmIDxiciAvPn1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBzdHlsZXMgPSAodGhlbWUpID0+ICh7XG4gIG1haW5Db250YWluZXI6IHtcbiAgICBjb2xvcjogY29sb3IudGV4dCgpLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuYmFja2dyb3VuZCgpLFxuICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcudW5pdFxuICB9LFxuICBjaG9pY2VSYXRpb25hbGU6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2hpdGVTcGFjZTogJ2JyZWFrLXNwYWNlcydcbiAgfSxcbiAgY2hvaWNlUmF0aW9uYWxlTGFiZWw6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgJyYuY29ycmVjdCc6IHtcbiAgICAgIGNvbG9yOiBjb2xvci5jb3JyZWN0KClcbiAgICB9LFxuICAgICcmLmluY29ycmVjdCc6IHtcbiAgICAgIGNvbG9yOiBjb2xvci5pbmNvcnJlY3QoKVxuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzKShJbmxpbmVEcm9wZG93bik7XG4iXX0=
226
+ //# sourceMappingURL=inline-dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/inline-dropdown.jsx"],"names":["InlineDropdown","showCorrectAnswer","setState","state","nextProps","feedback","domNode","ReactDOM","findDOMNode","props","classes","prompt","mode","rationale","teacherInstructions","choices","displayType","showCorrectAnswerToggle","choiceRationalesHaveText","choiceRationales","Object","keys","map","key","reduce","acc","currentValue","push","mainContainer","display","hidden","visible","toggleShowCorrect","index","length","choice","choiceRationale","label","choiceRationaleLabel","correct","__html","React","Component","PropTypes","object","string","disabled","bool","markup","value","onChange","func","styles","theme","color","text","backgroundColor","background","padding","spacing","unit","whiteSpace","incorrect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,c;;;;;;;;;;;;;;;8FAoBH;AACNC,MAAAA,iBAAiB,EAAE;AADb,K;0GAiBY,YAAM;AACxB,YAAKC,QAAL,CAAc;AAAED,QAAAA,iBAAiB,EAAE,CAAC,MAAKE,KAAL,CAAWF;AAAjC,OAAd;AACD,K;;;;;;WAfD,0CAAiCG,SAAjC,EAA4C;AAC1C,UAAI,yBAAQA,SAAS,CAACC,QAAlB,CAAJ,EAAiC;AAC/B,aAAKH,QAAL,CAAc;AAAED,UAAAA,iBAAiB,EAAE;AAArB,SAAd;AACD;AACF;;;WAED,8BAAqB;AACnB;AACA,UAAMK,OAAO,GAAGC,qBAASC,WAAT,CAAqB,IAArB,CAAhB;;AAEA,qCAAWF,OAAX;AACD;;;WAMD,kBAAS;AACP,UAAQL,iBAAR,GAA8B,KAAKE,KAAnC,CAAQF,iBAAR;AACA,wBAAwF,KAAKQ,KAA7F;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,MAAjB,eAAiBA,MAAjB;AAAA,UAAyBC,IAAzB,eAAyBA,IAAzB;AAAA,UAA+BC,SAA/B,eAA+BA,SAA/B;AAAA,UAA0CC,mBAA1C,eAA0CA,mBAA1C;AAAA,UAA+DC,OAA/D,eAA+DA,OAA/D;AAAA,UAAwEC,WAAxE,eAAwEA,WAAxE;AACA,UAAMC,uBAAuB,GAAGL,IAAI,KAAK,UAAzC;AACA,UAAIM,wBAAwB,GAAG,KAA/B;AAEA,UAAMC,gBAAgB,GAAG,CAACC,MAAM,CAACC,IAAP,CAAYN,OAAZ,KAAwB,EAAzB,EAA6BO,GAA7B,CAAiC,UAAAC,GAAG;AAAA,eAAI,CAACR,OAAO,CAACQ,GAAD,CAAP,IAAgB,EAAjB,EAC9DC,MAD8D,CACvD,UAACC,GAAD,EAAMC,YAAN,EAAuB;AAC7B,cAAIA,YAAY,CAACb,SAAb,IAA0B,uBAAQa,YAAY,CAACb,SAArB,CAA9B,EAA+D;AAC7DK,YAAAA,wBAAwB,GAAG,IAA3B;AAEAO,YAAAA,GAAG,CAACE,IAAJ,CAASD,YAAT;AACD;;AACD,iBAAOD,GAAP;AACD,SAR8D,EAQ5D,EAR4D,CAAJ;AAAA,OAApC,CAAzB;AAUA,0BACE;AAAK,QAAA,SAAS,EAAEf,OAAO,CAACkB,aAAxB;AAAuC,QAAA,KAAK,EAAE;AAAEC,UAAAA,OAAO,YAAKb,WAAL;AAAT;AAA9C,SAEIF,mBAAmB,IAAI,uBAAQA,mBAAR,CAAvB,iBACE,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,qBAAD;AACE,QAAA,MAAM,EAAE;AAAEgB,UAAAA,MAAM,EAAE,2BAAV;AAAuCC,UAAAA,OAAO,EAAE;AAAhD;AADV,sBAGE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAEjB;AAAvB,QAHF,CADF,eAME,2CANF,CAHN,eAcE,gCAAC,+BAAD;AACE,QAAA,IAAI,EAAEG,uBADR;AAEE,QAAA,OAAO,EAAEhB,iBAFX;AAGE,QAAA,QAAQ,EAAE,KAAK+B;AAHjB,QAdF,EAmBGf,uBAAuB,iBAAI,2CAnB9B,EAqBGN,MAAM,iBACL,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAEA;AAAvB,QADF,eAEE,2CAFF,CAtBJ,eA2BE,gCAAC,0BAAD,gCACM,KAAKF,KADX;AAEE,QAAA,iBAAiB,EAAER;AAFrB,SA3BF,EA+BGY,SAAS,IAAI,uBAAQA,SAAR,CAAb,iBACG,gCAAC,qBAAD;AACE,QAAA,MAAM,EAAE;AAAEiB,UAAAA,MAAM,EAAE,gBAAV;AAA4BC,UAAAA,OAAO,EAAE;AAArC;AADV,sBAGE,gCAAC,uBAAD;AAAe,QAAA,MAAM,EAAElB;AAAvB,QAHF,CAhCN,EAsCGK,wBAAwB,iBACvB,gCAAC,iBAAD,CAAO,QAAP,qBACE,2CADF,eAEE,gCAAC,qBAAD;AAAa,QAAA,MAAM,EAAE;AAACY,UAAAA,MAAM,EAAE,4BAAT;AAAuCC,UAAAA,OAAO,EAAE;AAAhD;AAArB,sBACE,6CACGZ,gBAAgB,CAACG,GAAjB,CAAqB,UAACP,OAAD,EAAUkB,KAAV;AAAA,4BACpB;AAAK,UAAA,GAAG,EAAEA;AAAV,WACGlB,OAAO,IAAIA,OAAO,CAACmB,MAAR,GAAiB,CAA5B,IAAiCnB,OAAO,CAACO,GAAR,CAAa,UAAAa,MAAM;AAAA,8BACnD;AAAK,YAAA,SAAS,EAAEzB,OAAO,CAAC0B,eAAxB;AAAyC,YAAA,GAAG,EAAED,MAAM,CAACE;AAArD,0BACE;AACE,YAAA,SAAS,EAAE,4BAAW3B,OAAO,CAAC4B,oBAAnB,EAAyCH,MAAM,CAACI,OAAP,GAAiB,SAAjB,GAA6B,WAAtE,CADb;AAEE,YAAA,uBAAuB,EAAE;AAAEC,cAAAA,MAAM,YAAKL,MAAM,CAACE,KAAZ;AAAR;AAF3B,YADF,eAKE,gCAAC,uBAAD;AAAe,YAAA,MAAM,EAAEF,MAAM,CAACtB;AAA9B,YALF,CADmD;AAAA,SAAnB,CADpC,EAUGE,OAAO,IAAIA,OAAO,CAACmB,MAAR,GAAiB,CAA5B,iBAAiC,2CAVpC,CADoB;AAAA,OAArB,CADH,CADF,CAFF,CAvCJ,CADF;AAgED;;;EAzHiCO,kBAAMC,S;;;iCAA7B1C,c,eACQ;AACjBU,EAAAA,OAAO,EAAEiC,sBAAUC,MADF;AAEjBjC,EAAAA,MAAM,EAAEgC,sBAAUE,MAFD;AAGjBC,EAAAA,QAAQ,EAAEH,sBAAUI,IAHH;AAIjBC,EAAAA,MAAM,EAAEL,sBAAUE,MAJD;AAKjBjC,EAAAA,IAAI,EAAE+B,sBAAUE,MALC;AAMjB7B,EAAAA,WAAW,EAAE2B,sBAAUE,MANN;AAOjBhC,EAAAA,SAAS,EAAE8B,sBAAUE,MAPJ;AAQjB/B,EAAAA,mBAAmB,EAAE6B,sBAAUE,MARd;AASjB9B,EAAAA,OAAO,EAAE4B,sBAAUC,MATF;AAUjBK,EAAAA,KAAK,EAAEN,sBAAUC,MAVA;AAWjBvC,EAAAA,QAAQ,EAAEsC,sBAAUC,MAXH;AAYjBM,EAAAA,QAAQ,EAAEP,sBAAUQ;AAZH,C;iCADRnD,c,kBAgBW;AACpBiD,EAAAA,KAAK,EAAE;AADa,C;;AA4GxB,IAAMG,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBzB,IAAAA,aAAa,EAAE;AACb0B,MAAAA,KAAK,EAAEA,gBAAMC,IAAN,EADM;AAEbC,MAAAA,eAAe,EAAEF,gBAAMG,UAAN,EAFJ;AAGbC,MAAAA,OAAO,EAAEL,KAAK,CAACM,OAAN,CAAcC;AAHV,KADU;AAMzBxB,IAAAA,eAAe,EAAE;AACfP,MAAAA,OAAO,EAAE,MADM;AAEfgC,MAAAA,UAAU,EAAE;AAFG,KANQ;AAUzBvB,IAAAA,oBAAoB,EAAE;AACpBT,MAAAA,OAAO,EAAE,MADW;AAEpB,mBAAa;AACXyB,QAAAA,KAAK,EAAEA,gBAAMf,OAAN;AADI,OAFO;AAKpB,qBAAe;AACbe,QAAAA,KAAK,EAAEA,gBAAMQ,SAAN;AADM;AALK;AAVG,GAAZ;AAAA,CAAf;;eAqBe,wBAAWV,MAAX,EAAmBpD,cAAnB,C","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { InlineDropdown as DropDown } from '@pie-lib/mask-markup';\nimport {color, Collapsible, hasText, PreviewPrompt} from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nexport class InlineDropdown extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n prompt: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n displayType: PropTypes.string,\n rationale: PropTypes.string,\n teacherInstructions: PropTypes.string,\n choices: PropTypes.object,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func\n };\n\n static defaultProps = {\n value: {}\n };\n\n state = {\n showCorrectAnswer: false\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n }\n\n componentDidUpdate() {\n // eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const { classes, prompt, mode, rationale, teacherInstructions, choices, displayType } = this.props;\n const showCorrectAnswerToggle = mode === 'evaluate';\n let choiceRationalesHaveText = false;\n\n const choiceRationales = (Object.keys(choices) || []).map(key => (choices[key] || [])\n .reduce((acc, currentValue) => {\n if (currentValue.rationale && hasText(currentValue.rationale)) {\n choiceRationalesHaveText = true;\n\n acc.push(currentValue);\n }\n return acc;\n }, []));\n\n return (\n <div className={classes.mainContainer} style={{ display: `${displayType}` }}>\n {\n teacherInstructions && hasText(teacherInstructions) && (\n <React.Fragment>\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n <br />\n </React.Fragment>\n )\n }\n\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n {showCorrectAnswerToggle && <br />}\n\n {prompt && (\n <React.Fragment>\n <PreviewPrompt prompt={prompt} />\n <br />\n </React.Fragment>\n )}\n <DropDown\n {...this.props}\n showCorrectAnswer={showCorrectAnswer}\n />\n {rationale && hasText(rationale) && (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n >\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n {choiceRationalesHaveText && (\n <React.Fragment>\n <br />\n <Collapsible labels={{hidden: 'Show Rationale for choices', visible: 'Hide Rationale for choices'}}>\n <div>\n {choiceRationales.map((choices, index) =>\n <div key={index}>\n {choices && choices.length > 0 && choices.map( choice =>\n <div className={classes.choiceRationale} key={choice.label}>\n <div\n className={classNames(classes.choiceRationaleLabel, choice.correct ? 'correct' : 'incorrect')}\n dangerouslySetInnerHTML={{ __html: `${choice.label}: ` }}\n />\n <PreviewPrompt prompt={choice.rationale} />\n </div>\n )}\n {choices && choices.length > 0 && <br />}\n </div>\n )}\n </div>\n </Collapsible>\n </React.Fragment>\n )}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: theme.spacing.unit\n },\n choiceRationale: {\n display: 'flex',\n whiteSpace: 'break-spaces'\n },\n choiceRationaleLabel: {\n display: 'flex',\n '&.correct': {\n color: color.correct()\n },\n '&.incorrect': {\n color: color.incorrect()\n }\n }\n});\n\nexport default withStyles(styles)(InlineDropdown);\n"],"file":"inline-dropdown.js"}
1
+ {"version":3,"sources":["../src/inline-dropdown.jsx"],"names":["InlineDropdown","showCorrectAnswer","setState","state","nextProps","feedback","domNode","ReactDOM","findDOMNode","props","classes","prompt","mode","rationale","teacherInstructions","choices","displayType","showCorrectAnswerToggle","choiceRationalesHaveText","choiceRationales","Object","keys","map","key","reduce","acc","currentValue","push","mainContainer","display","collapsible","hidden","visible","toggleShowCorrect","index","choiceRationaleWrapper","length","choice","choiceRationale","label","choiceRationaleLabel","correct","__html","React","Component","PropTypes","object","string","disabled","bool","markup","value","onChange","func","styles","theme","color","text","backgroundColor","background","marginBottom","spacing","unit","whiteSpace","incorrect"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { InlineDropdown as DropDown } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText, PreviewPrompt } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nexport class InlineDropdown extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n prompt: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n displayType: PropTypes.string,\n rationale: PropTypes.string,\n teacherInstructions: PropTypes.string,\n choices: PropTypes.object,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func,\n };\n\n static defaultProps = {\n value: {},\n };\n\n state = {\n showCorrectAnswer: false,\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n }\n\n componentDidUpdate() {\n // eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const { classes, prompt, mode, rationale, teacherInstructions, choices, displayType } = this.props;\n const showCorrectAnswerToggle = mode === 'evaluate';\n let choiceRationalesHaveText = false;\n\n const choiceRationales = (Object.keys(choices) || []).map((key) =>\n (choices[key] || []).reduce((acc, currentValue) => {\n if (currentValue.rationale && hasText(currentValue.rationale)) {\n choiceRationalesHaveText = true;\n\n acc.push(currentValue);\n }\n\n return acc;\n }, []),\n );\n\n return (\n <div className={classes.mainContainer} style={{ display: `${displayType}` }}>\n {teacherInstructions && hasText(teacherInstructions) && (\n <Collapsible\n className={classes.collapsible}\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </Collapsible>\n )}\n\n {prompt && <PreviewPrompt prompt={prompt} />}\n\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n\n <DropDown {...this.props} showCorrectAnswer={showCorrectAnswer} />\n\n {choiceRationalesHaveText && (\n <Collapsible\n className={classes.collapsible}\n labels={{ hidden: 'Show Rationale for choices', visible: 'Hide Rationale for choices' }}\n >\n {choiceRationales.map((choices, index) => (\n <div key={index} className={classes.choiceRationaleWrapper}>\n {choices?.length > 0 &&\n choices.map((choice) => (\n <div className={classes.choiceRationale} key={choice.label}>\n <div\n className={classNames(classes.choiceRationaleLabel, choice.correct ? 'correct' : 'incorrect')}\n dangerouslySetInnerHTML={{ __html: `${choice.label}: ` }}\n />\n <PreviewPrompt prompt={choice.rationale} />\n </div>\n ))}\n </div>\n ))}\n </Collapsible>\n )}\n\n {rationale && hasText(rationale) && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={rationale} />\n </Collapsible>\n )}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n choiceRationaleWrapper: {\n '&:not(:last-child)': {\n marginBottom: theme.spacing.unit * 2,\n },\n },\n choiceRationale: {\n display: 'flex',\n whiteSpace: 'break-spaces',\n },\n choiceRationaleLabel: {\n display: 'flex',\n '&.correct': {\n color: color.correct(),\n },\n '&.incorrect': {\n color: color.incorrect(),\n },\n },\n});\n\nexport default withStyles(styles)(InlineDropdown);\n"],"file":"inline-dropdown.js"}