@pie-element/drawing-response 3.9.12 → 3.9.15-touch

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 (63) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/configure/CHANGELOG.md +24 -0
  3. package/configure/lib/__tests__/image-container.test.js +187 -0
  4. package/configure/lib/__tests__/index.test.js +62 -0
  5. package/configure/lib/__tests__/root.test.js +98 -0
  6. package/configure/lib/defaults.js +8 -2
  7. package/configure/lib/defaults.js.map +1 -1
  8. package/configure/lib/image-container.js +13 -10
  9. package/configure/lib/image-container.js.map +1 -1
  10. package/configure/lib/index.js +2 -8
  11. package/configure/lib/index.js.map +1 -1
  12. package/configure/lib/root.js +17 -9
  13. package/configure/lib/root.js.map +1 -1
  14. package/configure/package.json +3 -3
  15. package/configure/src/__tests__/__snapshots__/image-container.test.jsx.snap +2 -2
  16. package/configure/src/__tests__/__snapshots__/root.test.jsx.snap +7 -14
  17. package/configure/src/defaults.js +8 -2
  18. package/configure/src/image-container.jsx +70 -45
  19. package/configure/src/index.js +0 -6
  20. package/configure/src/root.jsx +31 -24
  21. package/controller/CHANGELOG.md +8 -0
  22. package/controller/lib/__tests__/index.test.js +338 -0
  23. package/controller/lib/index.js +13 -7
  24. package/controller/lib/index.js.map +1 -1
  25. package/controller/package.json +1 -1
  26. package/controller/src/__tests__/index.test.js +18 -9
  27. package/controller/src/index.js +4 -1
  28. package/docs/config-schema.json +16 -0
  29. package/docs/config-schema.json.md +12 -0
  30. package/docs/demo/generate.js +1 -0
  31. package/docs/demo/pie.manifest.json +11 -0
  32. package/docs/pie-schema.json +12 -0
  33. package/docs/pie-schema.json.md +8 -0
  34. package/lib/__tests__/drawing-index-test.js +45 -0
  35. package/lib/drawing-response/__tests__/container.test.js +86 -0
  36. package/lib/drawing-response/__tests__/drawable-helper.test.js +50 -0
  37. package/lib/drawing-response/__tests__/drawing-main.test.js +704 -0
  38. package/lib/drawing-response/__tests__/factory.test.js +19 -0
  39. package/lib/drawing-response/container.js +57 -11
  40. package/lib/drawing-response/container.js.map +1 -1
  41. package/lib/drawing-response/drawable-image.js +1 -0
  42. package/lib/drawing-response/drawable-image.js.map +1 -1
  43. package/lib/drawing-response/drawable-main.js +36 -13
  44. package/lib/drawing-response/drawable-main.js.map +1 -1
  45. package/lib/drawing-response/drawable-text.js +15 -5
  46. package/lib/drawing-response/drawable-text.js.map +1 -1
  47. package/lib/drawing-response/index.js +3 -0
  48. package/lib/drawing-response/index.js.map +1 -1
  49. package/lib/index.js +3 -0
  50. package/lib/index.js.map +1 -1
  51. package/package.json +4 -4
  52. package/src/drawing-response/__tests__/__snapshots__/container.test.jsx.snap +18 -2
  53. package/src/drawing-response/__tests__/__snapshots__/drawing-main.test.jsx.snap +26 -2
  54. package/src/drawing-response/__tests__/container.test.jsx +7 -0
  55. package/src/drawing-response/__tests__/drawing-main.test.jsx +2 -1
  56. package/src/drawing-response/container.jsx +40 -2
  57. package/src/drawing-response/drawable-image.jsx +1 -0
  58. package/src/drawing-response/drawable-main.jsx +39 -15
  59. package/src/drawing-response/drawable-text.jsx +7 -1
  60. package/src/drawing-response/index.jsx +3 -1
  61. package/src/index.js +5 -0
  62. package/yarn-error.log +15267 -0
  63. package/LICENSE.md +0 -5
@@ -11,22 +11,22 @@ import cloneDeep from 'lodash/cloneDeep';
11
11
  const { Panel, toggle } = settings;
12
12
 
13
13
  export class Root extends React.Component {
14
- onPromptChanged = prompt => {
14
+ onPromptChanged = (prompt) => {
15
15
  const { model, onModelChanged } = this.props;
16
16
  const update = cloneDeep(model);
17
17
 
18
18
  onModelChanged({
19
19
  ...update,
20
- prompt
20
+ prompt,
21
21
  });
22
22
  };
23
23
 
24
- onTeacherInstructionsChanged = teacherInstructions => {
24
+ onTeacherInstructionsChanged = (teacherInstructions) => {
25
25
  const { model, onModelChanged } = this.props;
26
26
 
27
27
  onModelChanged({
28
28
  ...model,
29
- teacherInstructions
29
+ teacherInstructions,
30
30
  });
31
31
  };
32
32
 
@@ -35,16 +35,16 @@ export class Root extends React.Component {
35
35
 
36
36
  onModelChanged({
37
37
  ...model,
38
- imageDimensions: dimensions
38
+ imageDimensions: dimensions,
39
39
  });
40
40
  };
41
41
 
42
- onImageUpload = imageUrl => {
42
+ onImageUpload = (imageUrl) => {
43
43
  const { model, onModelChanged } = this.props;
44
44
 
45
45
  onModelChanged({
46
46
  ...model,
47
- imageUrl
47
+ imageUrl,
48
48
  });
49
49
  };
50
50
 
@@ -55,11 +55,15 @@ export class Root extends React.Component {
55
55
  model,
56
56
  imageSupport,
57
57
  onConfigurationChanged,
58
- onModelChanged
58
+ onModelChanged,
59
59
  } = this.props;
60
- const { backgroundImage = {}, prompt = {}, teacherInstructions = {} } =
61
- configuration || {};
62
- const { teacherInstructionsEnabled, promptEnabled } =
60
+ const {
61
+ backgroundImage = {},
62
+ prompt = {},
63
+ teacherInstructions = {},
64
+ spellCheck = {},
65
+ } = configuration || {};
66
+ const { teacherInstructionsEnabled, promptEnabled, spellCheckEnabled, backgroundImageEnabled } =
63
67
  model || {};
64
68
  const toolbarOpts = {};
65
69
 
@@ -83,16 +87,16 @@ export class Root extends React.Component {
83
87
  onChangeConfiguration={onConfigurationChanged}
84
88
  groups={{
85
89
  Settings: {
86
- 'backgroundImage.enabled':
87
- backgroundImage.settings &&
88
- toggle(backgroundImage.label, true),
90
+ backgroundImageEnabled: backgroundImage.settings && toggle(backgroundImage.label),
89
91
  promptEnabled: prompt.settings && toggle(prompt.label)
90
92
  },
91
93
  Properties: {
92
94
  teacherInstructionsEnabled:
93
95
  teacherInstructions.settings &&
94
- toggle(teacherInstructions.label)
95
- }
96
+ toggle(teacherInstructions.label),
97
+ spellCheckEnabled:
98
+ spellCheck.settings && toggle(spellCheck.label),
99
+ },
96
100
  }}
97
101
  />
98
102
  }
@@ -109,6 +113,7 @@ export class Root extends React.Component {
109
113
  imageSupport={imageSupport}
110
114
  nonEmpty={false}
111
115
  toolbarOpts={toolbarOpts}
116
+ spellCheck={spellCheckEnabled}
112
117
  />
113
118
  </InputContainer>
114
119
  )}
@@ -119,11 +124,13 @@ export class Root extends React.Component {
119
124
  markup={model.prompt}
120
125
  onChange={this.onPromptChanged}
121
126
  toolbarOpts={toolbarOpts}
127
+ spellCheck={spellCheckEnabled}
128
+ imageSupport={imageSupport}
122
129
  />
123
130
  </InputContainer>
124
131
  )}
125
132
 
126
- {backgroundImage.enabled && (
133
+ {backgroundImageEnabled && (
127
134
  <div>
128
135
  <Typography className={classes.label} variant="subheading">
129
136
  Define Background Image
@@ -143,20 +150,20 @@ export class Root extends React.Component {
143
150
  }
144
151
  }
145
152
 
146
- const styles = theme => ({
153
+ const styles = (theme) => ({
147
154
  base: {
148
- marginTop: theme.spacing.unit * 3
155
+ marginTop: theme.spacing.unit * 3,
149
156
  },
150
157
  label: {
151
- marginTop: theme.spacing.unit * 4
158
+ marginTop: theme.spacing.unit * 4,
152
159
  },
153
160
  prompt: {
154
161
  paddingTop: theme.spacing.unit * 2,
155
- width: '100%'
162
+ width: '100%',
156
163
  },
157
164
  regular: {
158
- marginBottom: theme.spacing.unit * 3
159
- }
165
+ marginBottom: theme.spacing.unit * 3,
166
+ },
160
167
  });
161
168
 
162
169
  Root.propTypes = {
@@ -165,7 +172,7 @@ Root.propTypes = {
165
172
  model: PropTypes.object.isRequired,
166
173
  imageSupport: PropTypes.shape({
167
174
  add: PropTypes.func,
168
- delete: PropTypes.func
175
+ delete: PropTypes.func,
169
176
  }),
170
177
  onModelChanged: PropTypes.func.isRequired,
171
178
  onConfigurationChanged: PropTypes.func.isRequired,
@@ -3,6 +3,14 @@
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
+ ## [3.2.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/drawing-response-controller@3.2.7...@pie-element/drawing-response-controller@3.2.8) (2022-03-22)
7
+
8
+ **Note:** Version bump only for package @pie-element/drawing-response-controller
9
+
10
+
11
+
12
+
13
+
6
14
  ## [3.2.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/drawing-response-controller@3.2.2...@pie-element/drawing-response-controller@3.2.4) (2021-11-11)
7
15
 
8
16
  **Note:** Version bump only for package @pie-element/drawing-response-controller
@@ -0,0 +1,338 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
+
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+
11
+ var _index = require("../index");
12
+
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
+
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+
17
+ describe('controller', function () {
18
+ var result, question, session, env;
19
+ beforeEach(function () {
20
+ question = {
21
+ prompt: 'This is the question prompt',
22
+ promptEnabled: true,
23
+ imageUrl: '',
24
+ imageDimensions: {
25
+ height: 0,
26
+ width: 0
27
+ },
28
+ teacherInstructions: 'Teacher Instructions',
29
+ backgroundImageEnabled: true
30
+ };
31
+ });
32
+ describe('outcome', function () {
33
+ it('returns score of 0', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
34
+ var result;
35
+ return _regenerator["default"].wrap(function _callee$(_context) {
36
+ while (1) {
37
+ switch (_context.prev = _context.next) {
38
+ case 0:
39
+ _context.next = 2;
40
+ return (0, _index.outcome)(question);
41
+
42
+ case 2:
43
+ result = _context.sent;
44
+ expect(result.score).toEqual(0);
45
+
46
+ case 4:
47
+ case "end":
48
+ return _context.stop();
49
+ }
50
+ }
51
+ }, _callee);
52
+ })));
53
+ });
54
+ describe('model', function () {
55
+ describe('mode: gather', function () {
56
+ beforeEach( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
57
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
58
+ while (1) {
59
+ switch (_context2.prev = _context2.next) {
60
+ case 0:
61
+ session = {};
62
+ env = {
63
+ mode: 'gather'
64
+ };
65
+ _context2.next = 4;
66
+ return (0, _index.model)(question, session, env);
67
+
68
+ case 4:
69
+ result = _context2.sent;
70
+
71
+ case 5:
72
+ case "end":
73
+ return _context2.stop();
74
+ }
75
+ }
76
+ }, _callee2);
77
+ })));
78
+ it('returns mode', function () {
79
+ expect(result.mode).toEqual('gather');
80
+ });
81
+ it('returns prompt', function () {
82
+ expect(result.prompt).toEqual('This is the question prompt');
83
+ });
84
+ it('returns imageDimensions', function () {
85
+ expect(result.imageDimensions).toEqual({
86
+ height: 0,
87
+ width: 0
88
+ });
89
+ });
90
+ it('does not return responseCorrect', function () {
91
+ expect(result.responseCorrect).toBe(undefined);
92
+ });
93
+ it('gather mode promptEnabled: true', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
94
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
95
+ while (1) {
96
+ switch (_context3.prev = _context3.next) {
97
+ case 0:
98
+ _context3.next = 2;
99
+ return (0, _index.model)(question, {}, {
100
+ mode: 'gather'
101
+ });
102
+
103
+ case 2:
104
+ result = _context3.sent;
105
+ expect(result).toEqual({
106
+ disabled: false,
107
+ mode: 'gather',
108
+ imageUrl: question.imageUrl,
109
+ imageDimensions: question.imageDimensions,
110
+ prompt: question.prompt,
111
+ teacherInstructions: null,
112
+ backgroundImageEnabled: question.backgroundImageEnabled
113
+ });
114
+
115
+ case 4:
116
+ case "end":
117
+ return _context3.stop();
118
+ }
119
+ }
120
+ }, _callee3);
121
+ })));
122
+ it('gather mode promptEnabled: false', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
123
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
124
+ while (1) {
125
+ switch (_context4.prev = _context4.next) {
126
+ case 0:
127
+ _context4.next = 2;
128
+ return (0, _index.model)(_objectSpread(_objectSpread({}, question), {}, {
129
+ promptEnabled: false
130
+ }), {}, {
131
+ mode: 'gather'
132
+ });
133
+
134
+ case 2:
135
+ result = _context4.sent;
136
+ expect(result).toEqual({
137
+ disabled: false,
138
+ mode: 'gather',
139
+ imageUrl: question.imageUrl,
140
+ imageDimensions: question.imageDimensions,
141
+ prompt: null,
142
+ teacherInstructions: null,
143
+ backgroundImageEnabled: question.backgroundImageEnabled
144
+ });
145
+
146
+ case 4:
147
+ case "end":
148
+ return _context4.stop();
149
+ }
150
+ }
151
+ }, _callee4);
152
+ })));
153
+ it('view mode, student role', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
154
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
155
+ while (1) {
156
+ switch (_context5.prev = _context5.next) {
157
+ case 0:
158
+ _context5.next = 2;
159
+ return (0, _index.model)(question, {}, {
160
+ mode: 'view'
161
+ });
162
+
163
+ case 2:
164
+ result = _context5.sent;
165
+ expect(result).toEqual({
166
+ disabled: true,
167
+ mode: 'view',
168
+ imageUrl: question.imageUrl,
169
+ imageDimensions: question.imageDimensions,
170
+ prompt: question.prompt,
171
+ teacherInstructions: null,
172
+ backgroundImageEnabled: question.backgroundImageEnabled
173
+ });
174
+
175
+ case 4:
176
+ case "end":
177
+ return _context5.stop();
178
+ }
179
+ }
180
+ }, _callee5);
181
+ })));
182
+ it('view mode, instructor role and teacherInstructions enabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
183
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
184
+ while (1) {
185
+ switch (_context6.prev = _context6.next) {
186
+ case 0:
187
+ _context6.next = 2;
188
+ return (0, _index.model)(question, {}, {
189
+ mode: 'view',
190
+ role: 'instructor'
191
+ });
192
+
193
+ case 2:
194
+ result = _context6.sent;
195
+ expect(result).toEqual({
196
+ disabled: true,
197
+ mode: 'view',
198
+ imageUrl: question.imageUrl,
199
+ imageDimensions: question.imageDimensions,
200
+ prompt: question.prompt,
201
+ teacherInstructions: question.teacherInstructions,
202
+ backgroundImageEnabled: question.backgroundImageEnabled
203
+ });
204
+
205
+ case 4:
206
+ case "end":
207
+ return _context6.stop();
208
+ }
209
+ }
210
+ }, _callee6);
211
+ })));
212
+ it('evaluate mode, instructor role and teacherInstructions disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
213
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
214
+ while (1) {
215
+ switch (_context7.prev = _context7.next) {
216
+ case 0:
217
+ _context7.next = 2;
218
+ return (0, _index.model)(_objectSpread(_objectSpread({}, question), {}, {
219
+ teacherInstructionsEnabled: false
220
+ }), {}, {
221
+ mode: 'evaluate',
222
+ role: 'instructor'
223
+ });
224
+
225
+ case 2:
226
+ result = _context7.sent;
227
+ expect(result).toEqual({
228
+ disabled: true,
229
+ mode: 'evaluate',
230
+ imageUrl: question.imageUrl,
231
+ imageDimensions: question.imageDimensions,
232
+ prompt: question.prompt,
233
+ teacherInstructions: null,
234
+ backgroundImageEnabled: question.backgroundImageEnabled
235
+ });
236
+
237
+ case 4:
238
+ case "end":
239
+ return _context7.stop();
240
+ }
241
+ }
242
+ }, _callee7);
243
+ })));
244
+ it('evaluate mode, student role', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
245
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
246
+ while (1) {
247
+ switch (_context8.prev = _context8.next) {
248
+ case 0:
249
+ _context8.next = 2;
250
+ return (0, _index.model)(question, {}, {
251
+ mode: 'evaluate'
252
+ });
253
+
254
+ case 2:
255
+ result = _context8.sent;
256
+ expect(result).toEqual({
257
+ disabled: true,
258
+ mode: 'evaluate',
259
+ imageUrl: question.imageUrl,
260
+ imageDimensions: question.imageDimensions,
261
+ prompt: question.prompt,
262
+ teacherInstructions: null,
263
+ backgroundImageEnabled: question.backgroundImageEnabled
264
+ });
265
+
266
+ case 4:
267
+ case "end":
268
+ return _context8.stop();
269
+ }
270
+ }
271
+ }, _callee8);
272
+ })));
273
+ it('evaluate mode, instructor role and teacherInstructions enabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
274
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
275
+ while (1) {
276
+ switch (_context9.prev = _context9.next) {
277
+ case 0:
278
+ _context9.next = 2;
279
+ return (0, _index.model)(question, {}, {
280
+ mode: 'evaluate',
281
+ role: 'instructor'
282
+ });
283
+
284
+ case 2:
285
+ result = _context9.sent;
286
+ expect(result).toEqual({
287
+ disabled: true,
288
+ mode: 'evaluate',
289
+ imageUrl: question.imageUrl,
290
+ imageDimensions: question.imageDimensions,
291
+ prompt: question.prompt,
292
+ teacherInstructions: question.teacherInstructions,
293
+ backgroundImageEnabled: question.backgroundImageEnabled
294
+ });
295
+
296
+ case 4:
297
+ case "end":
298
+ return _context9.stop();
299
+ }
300
+ }
301
+ }, _callee9);
302
+ })));
303
+ it('view mode, instructor role and teacherInstructions disabled', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
304
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
305
+ while (1) {
306
+ switch (_context10.prev = _context10.next) {
307
+ case 0:
308
+ _context10.next = 2;
309
+ return (0, _index.model)(_objectSpread(_objectSpread({}, question), {}, {
310
+ teacherInstructionsEnabled: false
311
+ }), {}, {
312
+ mode: 'view',
313
+ role: 'instructor'
314
+ });
315
+
316
+ case 2:
317
+ result = _context10.sent;
318
+ expect(result).toEqual({
319
+ disabled: true,
320
+ mode: 'view',
321
+ imageUrl: question.imageUrl,
322
+ imageDimensions: question.imageDimensions,
323
+ prompt: question.prompt,
324
+ teacherInstructions: null,
325
+ backgroundImageEnabled: question.backgroundImageEnabled
326
+ });
327
+
328
+ case 4:
329
+ case "end":
330
+ return _context10.stop();
331
+ }
332
+ }
333
+ }, _callee10);
334
+ })));
335
+ });
336
+ });
337
+ });
338
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5kZXgudGVzdC5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsInJlc3VsdCIsInF1ZXN0aW9uIiwic2Vzc2lvbiIsImVudiIsImJlZm9yZUVhY2giLCJwcm9tcHQiLCJwcm9tcHRFbmFibGVkIiwiaW1hZ2VVcmwiLCJpbWFnZURpbWVuc2lvbnMiLCJoZWlnaHQiLCJ3aWR0aCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJiYWNrZ3JvdW5kSW1hZ2VFbmFibGVkIiwiaXQiLCJleHBlY3QiLCJzY29yZSIsInRvRXF1YWwiLCJtb2RlIiwicmVzcG9uc2VDb3JyZWN0IiwidG9CZSIsInVuZGVmaW5lZCIsImRpc2FibGVkIiwicm9sZSIsInRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7Ozs7OztBQUVBQSxRQUFRLENBQUMsWUFBRCxFQUFlLFlBQU07QUFDM0IsTUFBSUMsTUFBSixFQUFZQyxRQUFaLEVBQXNCQyxPQUF0QixFQUErQkMsR0FBL0I7QUFFQUMsRUFBQUEsVUFBVSxDQUFDLFlBQU07QUFDZkgsSUFBQUEsUUFBUSxHQUFHO0FBQ1RJLE1BQUFBLE1BQU0sRUFBRSw2QkFEQztBQUVUQyxNQUFBQSxhQUFhLEVBQUUsSUFGTjtBQUdUQyxNQUFBQSxRQUFRLEVBQUUsRUFIRDtBQUlUQyxNQUFBQSxlQUFlLEVBQUU7QUFDZkMsUUFBQUEsTUFBTSxFQUFFLENBRE87QUFFZkMsUUFBQUEsS0FBSyxFQUFFO0FBRlEsT0FKUjtBQVFUQyxNQUFBQSxtQkFBbUIsRUFBRSxzQkFSWjtBQVNUQyxNQUFBQSxzQkFBc0IsRUFBRTtBQVRmLEtBQVg7QUFXRCxHQVpTLENBQVY7QUFjQWIsRUFBQUEsUUFBUSxDQUFDLFNBQUQsRUFBWSxZQUFNO0FBQ3hCYyxJQUFBQSxFQUFFLENBQUMsb0JBQUQsNkZBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQ0Ysb0JBQVFa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QUFFSixRQUFRLENBQUNJLE1BTEk7QUFNckJNLGtCQUFBQSxtQkFBbUIsRUFBRSxJQU5BO0FBT3JCQyxrQkFBQUEsc0JBQXNCLEVBQUVYLFFBQVEsQ0FBQ1c7QUFQWixpQkFBdkI7O0FBTmdFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQWhFLEdBQUY7QUFnQkQsS0E3SU8sQ0FBUjtBQThJRCxHQS9JTyxDQUFSO0FBZ0pELENBeEtPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb2RlbCwgb3V0Y29tZSB9IGZyb20gJy4uL2luZGV4JztcblxuZGVzY3JpYmUoJ2NvbnRyb2xsZXInLCAoKSA9PiB7XG4gIGxldCByZXN1bHQsIHF1ZXN0aW9uLCBzZXNzaW9uLCBlbnY7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgcXVlc3Rpb24gPSB7XG4gICAgICBwcm9tcHQ6ICdUaGlzIGlzIHRoZSBxdWVzdGlvbiBwcm9tcHQnLFxuICAgICAgcHJvbXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgIGltYWdlVXJsOiAnJyxcbiAgICAgIGltYWdlRGltZW5zaW9uczoge1xuICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIHdpZHRoOiAwXG4gICAgICB9LFxuICAgICAgdGVhY2hlckluc3RydWN0aW9uczogJ1RlYWNoZXIgSW5zdHJ1Y3Rpb25zJyxcbiAgICAgIGJhY2tncm91bmRJbWFnZUVuYWJsZWQ6IHRydWVcbiAgICB9O1xuICB9KTtcblxuICBkZXNjcmliZSgnb3V0Y29tZScsICgpID0+IHtcbiAgICBpdCgncmV0dXJucyBzY29yZSBvZiAwJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3V0Y29tZShxdWVzdGlvbik7XG4gICAgICBleHBlY3QocmVzdWx0LnNjb3JlKS50b0VxdWFsKDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbW9kZWwnLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ21vZGU6IGdhdGhlcicsICgpID0+IHtcbiAgICAgIGJlZm9yZUVhY2goYXN5bmMgKCkgPT4ge1xuICAgICAgICBzZXNzaW9uID0ge307XG4gICAgICAgIGVudiA9IHsgbW9kZTogJ2dhdGhlcicgfTtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgbW9kZWwocXVlc3Rpb24sIHNlc3Npb24sIGVudik7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JldHVybnMgbW9kZScsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5tb2RlKS50b0VxdWFsKCdnYXRoZXInKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyBwcm9tcHQnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChyZXN1bHQucHJvbXB0KS50b0VxdWFsKCdUaGlzIGlzIHRoZSBxdWVzdGlvbiBwcm9tcHQnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyBpbWFnZURpbWVuc2lvbnMnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChyZXN1bHQuaW1hZ2VEaW1lbnNpb25zKS50b0VxdWFsKHsgaGVpZ2h0OiAwLCB3aWR0aDogMCB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBub3QgcmV0dXJuIHJlc3BvbnNlQ29ycmVjdCcsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZXNwb25zZUNvcnJlY3QpLnRvQmUodW5kZWZpbmVkKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZ2F0aGVyIG1vZGUgcHJvbXB0RW5hYmxlZDogdHJ1ZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgbW9kZWwocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICdnYXRoZXInfSk7XG5cbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIG1vZGU6ICdnYXRoZXInLFxuICAgICAgICAgIGltYWdlVXJsOiBxdWVzdGlvbi5pbWFnZVVybCxcbiAgICAgICAgICBpbWFnZURpbWVuc2lvbnM6IHF1ZXN0aW9uLmltYWdlRGltZW5zaW9ucyxcbiAgICAgICAgICBwcm9tcHQ6IHF1ZXN0aW9uLnByb21wdCxcbiAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiBudWxsLFxuICAgICAgICAgIGJhY2tncm91bmRJbWFnZUVuYWJsZWQ6IHF1ZXN0aW9uLmJhY2tncm91bmRJbWFnZUVuYWJsZWRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2dhdGhlciBtb2RlIHByb21wdEVuYWJsZWQ6IGZhbHNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCBtb2RlbCh7IC4uLnF1ZXN0aW9uLCBwcm9tcHRFbmFibGVkOiBmYWxzZSB9LCB7fSwgeyBtb2RlOiAnZ2F0aGVyJ30pO1xuXG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICBtb2RlOiAnZ2F0aGVyJyxcbiAgICAgICAgICBpbWFnZVVybDogcXVlc3Rpb24uaW1hZ2VVcmwsXG4gICAgICAgICAgaW1hZ2VEaW1lbnNpb25zOiBxdWVzdGlvbi5pbWFnZURpbWVuc2lvbnMsXG4gICAgICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IG51bGwsXG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlRW5hYmxlZDogcXVlc3Rpb24uYmFja2dyb3VuZEltYWdlRW5hYmxlZFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG5cbiAgICAgIGl0KCd2aWV3IG1vZGUsIHN0dWRlbnQgcm9sZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgbW9kZWwocXVlc3Rpb24sIHt9LCB7IG1vZGU6ICd2aWV3J30pO1xuXG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgICAgICBpbWFnZVVybDogcXVlc3Rpb24uaW1hZ2VVcmwsXG4gICAgICAgICAgaW1hZ2VEaW1lbnNpb25zOiBxdWVzdGlvbi5pbWFnZURpbWVuc2lvbnMsXG4gICAgICAgICAgcHJvbXB0OiBxdWVzdGlvbi5wcm9tcHQsXG4gICAgICAgICAgdGVhY2hlckluc3RydWN0aW9uczogbnVsbCxcbiAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2VFbmFibGVkOiBxdWVzdGlvbi5iYWNrZ3JvdW5kSW1hZ2VFbmFibGVkXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd2aWV3IG1vZGUsIGluc3RydWN0b3Igcm9sZSBhbmQgdGVhY2hlckluc3RydWN0aW9ucyBlbmFibGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCBtb2RlbChxdWVzdGlvbiwge30sIHsgbW9kZTogJ3ZpZXcnLCByb2xlOiAnaW5zdHJ1Y3Rvcid9KTtcblxuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICAgICAgaW1hZ2VVcmw6IHF1ZXN0aW9uLmltYWdlVXJsLFxuICAgICAgICAgIGltYWdlRGltZW5zaW9uczogcXVlc3Rpb24uaW1hZ2VEaW1lbnNpb25zLFxuICAgICAgICAgIHByb21wdDogcXVlc3Rpb24ucHJvbXB0LFxuICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IHF1ZXN0aW9uLnRlYWNoZXJJbnN0cnVjdGlvbnMsXG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlRW5hYmxlZDogcXVlc3Rpb24uYmFja2dyb3VuZEltYWdlRW5hYmxlZFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZXZhbHVhdGUgbW9kZSwgaW5zdHJ1Y3RvciByb2xlIGFuZCB0ZWFjaGVySW5zdHJ1Y3Rpb25zIGRpc2FibGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCBtb2RlbChcbiAgICAgICAgICB7IC4uLnF1ZXN0aW9uLCB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7IG1vZGU6ICdldmFsdWF0ZScsIHJvbGU6ICdpbnN0cnVjdG9yJ30pO1xuXG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgIG1vZGU6ICdldmFsdWF0ZScsXG4gICAgICAgICAgaW1hZ2VVcmw6IHF1ZXN0aW9uLmltYWdlVXJsLFxuICAgICAgICAgIGltYWdlRGltZW5zaW9uczogcXVlc3Rpb24uaW1hZ2VEaW1lbnNpb25zLFxuICAgICAgICAgIHByb21wdDogcXVlc3Rpb24ucHJvbXB0LFxuICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IG51bGwsXG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlRW5hYmxlZDogcXVlc3Rpb24uYmFja2dyb3VuZEltYWdlRW5hYmxlZFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZXZhbHVhdGUgbW9kZSwgc3R1ZGVudCByb2xlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCBtb2RlbChxdWVzdGlvbiwge30sIHsgbW9kZTogJ2V2YWx1YXRlJ30pO1xuXG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgIG1vZGU6ICdldmFsdWF0ZScsXG4gICAgICAgICAgaW1hZ2VVcmw6IHF1ZXN0aW9uLmltYWdlVXJsLFxuICAgICAgICAgIGltYWdlRGltZW5zaW9uczogcXVlc3Rpb24uaW1hZ2VEaW1lbnNpb25zLFxuICAgICAgICAgIHByb21wdDogcXVlc3Rpb24ucHJvbXB0LFxuICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IG51bGwsXG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlRW5hYmxlZDogcXVlc3Rpb24uYmFja2dyb3VuZEltYWdlRW5hYmxlZFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZXZhbHVhdGUgbW9kZSwgaW5zdHJ1Y3RvciByb2xlIGFuZCB0ZWFjaGVySW5zdHJ1Y3Rpb25zIGVuYWJsZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IG1vZGVsKHF1ZXN0aW9uLCB7fSwgeyBtb2RlOiAnZXZhbHVhdGUnLCByb2xlOiAnaW5zdHJ1Y3Rvcid9KTtcblxuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgICBtb2RlOiAnZXZhbHVhdGUnLFxuICAgICAgICAgIGltYWdlVXJsOiBxdWVzdGlvbi5pbWFnZVVybCxcbiAgICAgICAgICBpbWFnZURpbWVuc2lvbnM6IHF1ZXN0aW9uLmltYWdlRGltZW5zaW9ucyxcbiAgICAgICAgICBwcm9tcHQ6IHF1ZXN0aW9uLnByb21wdCxcbiAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiBxdWVzdGlvbi50ZWFjaGVySW5zdHJ1Y3Rpb25zLFxuICAgICAgICAgIGJhY2tncm91bmRJbWFnZUVuYWJsZWQ6IHF1ZXN0aW9uLmJhY2tncm91bmRJbWFnZUVuYWJsZWRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3ZpZXcgbW9kZSwgaW5zdHJ1Y3RvciByb2xlIGFuZCB0ZWFjaGVySW5zdHJ1Y3Rpb25zIGRpc2FibGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCBtb2RlbChcbiAgICAgICAgICB7IC4uLnF1ZXN0aW9uLCB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7IG1vZGU6ICd2aWV3Jywgcm9sZTogJ2luc3RydWN0b3InfSk7XG5cbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgICAgIGltYWdlVXJsOiBxdWVzdGlvbi5pbWFnZVVybCxcbiAgICAgICAgICBpbWFnZURpbWVuc2lvbnM6IHF1ZXN0aW9uLmltYWdlRGltZW5zaW9ucyxcbiAgICAgICAgICBwcm9tcHQ6IHF1ZXN0aW9uLnByb21wdCxcbiAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiBudWxsLFxuICAgICAgICAgIGJhY2tncm91bmRJbWFnZUVuYWJsZWQ6IHF1ZXN0aW9uLmJhY2tncm91bmRJbWFnZUVuYWJsZWRcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -5,9 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.createDefaultModel = void 0;
8
9
  exports.model = model;
10
+ exports.normalize = void 0;
9
11
  exports.outcome = outcome;
10
- exports.createDefaultModel = exports.normalize = void 0;
11
12
 
12
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
14
 
@@ -15,9 +16,9 @@ var _debug = _interopRequireDefault(require("debug"));
15
16
 
16
17
  var _defaults = _interopRequireDefault(require("./defaults"));
17
18
 
18
- 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; }
19
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
20
 
20
- 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; }
21
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
22
 
22
23
  var log = (0, _debug["default"])('pie-elements:drawing-response:controller');
23
24
 
@@ -25,7 +26,8 @@ var normalize = function normalize(question) {
25
26
  return _objectSpread({
26
27
  promptEnabled: true,
27
28
  teacherInstructionsEnabled: true,
28
- studentInstructionsEnabled: true
29
+ studentInstructionsEnabled: true,
30
+ backgroundImageEnabled: true
29
31
  }, question);
30
32
  };
31
33
 
@@ -36,14 +38,16 @@ function model(question, session, env) {
36
38
  var imageUrl = normalizedQuestion.imageUrl,
37
39
  imageDimensions = normalizedQuestion.imageDimensions,
38
40
  prompt = normalizedQuestion.prompt,
39
- promptEnabled = normalizedQuestion.promptEnabled;
41
+ promptEnabled = normalizedQuestion.promptEnabled,
42
+ backgroundImageEnabled = normalizedQuestion.backgroundImageEnabled;
40
43
  return new Promise(function (resolve) {
41
44
  var out = {
42
45
  disabled: env.mode !== 'gather',
43
46
  mode: env.mode,
44
47
  imageDimensions: imageDimensions,
45
48
  imageUrl: imageUrl,
46
- prompt: promptEnabled ? prompt : null
49
+ prompt: promptEnabled ? prompt : null,
50
+ backgroundImageEnabled: backgroundImageEnabled
47
51
  };
48
52
 
49
53
  if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
@@ -65,7 +69,9 @@ var createDefaultModel = function createDefaultModel() {
65
69
 
66
70
  exports.createDefaultModel = createDefaultModel;
67
71
 
68
- function outcome() {
72
+ function
73
+ /*config, session*/
74
+ outcome() {
69
75
  return new Promise(function (resolve) {
70
76
  log('outcome...');
71
77
  resolve({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","normalize","question","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","session","env","normalizedQuestion","imageUrl","imageDimensions","prompt","Promise","resolve","out","disabled","mode","role","teacherInstructions","createDefaultModel","defaults","outcome","score","completed","note"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;AAEO,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAAC,QAAQ;AAAA;AAC/BC,IAAAA,aAAa,EAAE,IADgB;AAE/BC,IAAAA,0BAA0B,EAAE,IAFG;AAG/BC,IAAAA,0BAA0B,EAAE;AAHG,KAI5BH,QAJ4B;AAAA,CAA1B;;;;AAOA,SAASI,KAAT,CAAeJ,QAAf,EAAyBK,OAAzB,EAAkCC,GAAlC,EAAuC;AAC5C,MAAMC,kBAAkB,GAAGR,SAAS,CAACC,QAAD,CAApC;AACA,MACEQ,QADF,GAKID,kBALJ,CACEC,QADF;AAAA,MAEEC,eAFF,GAKIF,kBALJ,CAEEE,eAFF;AAAA,MAGEC,MAHF,GAKIH,kBALJ,CAGEG,MAHF;AAAA,MAIET,aAJF,GAKIM,kBALJ,CAIEN,aAJF;AAOA,SAAO,IAAIU,OAAJ,CAAY,UAAAC,OAAO,EAAI;AAC5B,QAAMC,GAAG,GAAG;AACVC,MAAAA,QAAQ,EAAER,GAAG,CAACS,IAAJ,KAAa,QADb;AAEVA,MAAAA,IAAI,EAAET,GAAG,CAACS,IAFA;AAGVN,MAAAA,eAAe,EAAfA,eAHU;AAIVD,MAAAA,QAAQ,EAARA,QAJU;AAKVE,MAAAA,MAAM,EAAET,aAAa,GAAGS,MAAH,GAAY;AALvB,KAAZ;;AAQA,QAAIJ,GAAG,CAACU,IAAJ,KAAa,YAAb,KAA8BV,GAAG,CAACS,IAAJ,KAAa,MAAb,IAAuBT,GAAG,CAACS,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjFF,MAAAA,GAAG,CAACI,mBAAJ,GAA0BV,kBAAkB,CAACL,0BAAnB,GAAgDK,kBAAkB,CAACU,mBAAnE,GAAyF,IAAnH;AACD,KAFD,MAEO;AACLJ,MAAAA,GAAG,CAACI,mBAAJ,GAA0B,IAA1B;AACD;;AAEDL,IAAAA,OAAO,CAACC,GAAD,CAAP;AACD,GAhBM,CAAP;AAiBD;;AAEM,IAAMK,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,MAACd,KAAD,uEAAS,EAAT;AAAA,SAChC,IAAIO,OAAJ,CAAY,UAAAC,OAAO,EAAI;AACrBA,IAAAA,OAAO,iCACFO,oBADE,GAEFf,KAFE,EAAP;AAID,GALD,CADgC;AAAA,CAA3B;;;;AAQA,SAASgB,OAAT,GAAsC;AAC3C,SAAO,IAAIT,OAAJ,CAAY,UAAAC,OAAO,EAAI;AAC5Bd,IAAAA,GAAG,CAAC,YAAD,CAAH;AACAc,IAAAA,OAAO,CAAC;AACNS,MAAAA,KAAK,EAAE,CADD;AAENC,MAAAA,SAAS,EAAE,KAFL;AAGNC,MAAAA,IAAI,EAAE;AAHA,KAAD,CAAP;AAKD,GAPM,CAAP;AAQD","sourcesContent":["import debug from 'debug';\nimport defaults from './defaults';\n\nconst log = debug('pie-elements:drawing-response:controller');\n\nexport const normalize = question => ({\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n const {\n imageUrl,\n imageDimensions,\n prompt,\n promptEnabled\n } = normalizedQuestion;\n\n return new Promise(resolve => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n imageDimensions,\n imageUrl,\n prompt: promptEnabled ? prompt : null,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;\n } else {\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise(resolve => {\n resolve({\n ...defaults,\n ...model,\n })\n });\n\nexport function outcome(/*config, session*/) {\n return new Promise(resolve => {\n log('outcome...');\n resolve({\n score: 0,\n completed: 'n/a',\n note: 'Requires manual scoring'\n });\n });\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","normalize","question","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","backgroundImageEnabled","model","session","env","normalizedQuestion","imageUrl","imageDimensions","prompt","Promise","resolve","out","disabled","mode","role","teacherInstructions","createDefaultModel","defaults","outcome","score","completed","note"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0CAAN,CAAZ;;AAEO,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAAC,QAAQ;AAAA;AAC/BC,IAAAA,aAAa,EAAE,IADgB;AAE/BC,IAAAA,0BAA0B,EAAE,IAFG;AAG/BC,IAAAA,0BAA0B,EAAE,IAHG;AAI/BC,IAAAA,sBAAsB,EAAE;AAJO,KAK5BJ,QAL4B;AAAA,CAA1B;;;;AAQA,SAASK,KAAT,CAAeL,QAAf,EAAyBM,OAAzB,EAAkCC,GAAlC,EAAuC;AAC5C,MAAMC,kBAAkB,GAAGT,SAAS,CAACC,QAAD,CAApC;AACA,MACES,QADF,GAMID,kBANJ,CACEC,QADF;AAAA,MAEEC,eAFF,GAMIF,kBANJ,CAEEE,eAFF;AAAA,MAGEC,MAHF,GAMIH,kBANJ,CAGEG,MAHF;AAAA,MAIEV,aAJF,GAMIO,kBANJ,CAIEP,aAJF;AAAA,MAKEG,sBALF,GAMII,kBANJ,CAKEJ,sBALF;AAQA,SAAO,IAAIQ,OAAJ,CAAY,UAAAC,OAAO,EAAI;AAC5B,QAAMC,GAAG,GAAG;AACVC,MAAAA,QAAQ,EAAER,GAAG,CAACS,IAAJ,KAAa,QADb;AAEVA,MAAAA,IAAI,EAAET,GAAG,CAACS,IAFA;AAGVN,MAAAA,eAAe,EAAfA,eAHU;AAIVD,MAAAA,QAAQ,EAARA,QAJU;AAKVE,MAAAA,MAAM,EAAEV,aAAa,GAAGU,MAAH,GAAY,IALvB;AAMVP,MAAAA,sBAAsB,EAAtBA;AANU,KAAZ;;AASA,QAAIG,GAAG,CAACU,IAAJ,KAAa,YAAb,KAA8BV,GAAG,CAACS,IAAJ,KAAa,MAAb,IAAuBT,GAAG,CAACS,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjFF,MAAAA,GAAG,CAACI,mBAAJ,GAA0BV,kBAAkB,CAACN,0BAAnB,GAAgDM,kBAAkB,CAACU,mBAAnE,GAAyF,IAAnH;AACD,KAFD,MAEO;AACLJ,MAAAA,GAAG,CAACI,mBAAJ,GAA0B,IAA1B;AACD;;AAEDL,IAAAA,OAAO,CAACC,GAAD,CAAP;AACD,GAjBM,CAAP;AAkBD;;AAEM,IAAMK,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,MAACd,KAAD,uEAAS,EAAT;AAAA,SAChC,IAAIO,OAAJ,CAAY,UAAAC,OAAO,EAAI;AACrBA,IAAAA,OAAO,iCACFO,oBADE,GAEFf,KAFE,EAAP;AAID,GALD,CADgC;AAAA,CAA3B;;;;AAQA;AAAiB;AAARgB,OAAT,GAAsC;AAC3C,SAAO,IAAIT,OAAJ,CAAY,UAAAC,OAAO,EAAI;AAC5Bf,IAAAA,GAAG,CAAC,YAAD,CAAH;AACAe,IAAAA,OAAO,CAAC;AACNS,MAAAA,KAAK,EAAE,CADD;AAENC,MAAAA,SAAS,EAAE,KAFL;AAGNC,MAAAA,IAAI,EAAE;AAHA,KAAD,CAAP;AAKD,GAPM,CAAP;AAQD","sourcesContent":["import debug from 'debug';\nimport defaults from './defaults';\n\nconst log = debug('pie-elements:drawing-response:controller');\n\nexport const normalize = question => ({\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n backgroundImageEnabled: true,\n ...question,\n});\n\nexport function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n const {\n imageUrl,\n imageDimensions,\n prompt,\n promptEnabled,\n backgroundImageEnabled\n } = normalizedQuestion;\n\n return new Promise(resolve => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n imageDimensions,\n imageUrl,\n prompt: promptEnabled ? prompt : null,\n backgroundImageEnabled\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;\n } else {\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise(resolve => {\n resolve({\n ...defaults,\n ...model,\n })\n });\n\nexport function outcome(/*config, session*/) {\n return new Promise(resolve => {\n log('outcome...');\n resolve({\n score: 0,\n completed: 'n/a',\n note: 'Requires manual scoring'\n });\n });\n}\n"],"file":"index.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/drawing-response-controller",
3
3
  "private": true,
4
- "version": "3.2.7",
4
+ "version": "3.2.8",
5
5
  "description": "",
6
6
  "scripts": {
7
7
  "test": "echo \"Error: no test specified\" && exit 1"