@pie-lib/mask-markup 2.0.0-beta.1 → 2.0.0-next.0

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 (67) hide show
  1. package/CHANGELOG.json +1 -871
  2. package/CHANGELOG.md +434 -32
  3. package/LICENSE.md +5 -0
  4. package/NEXT.CHANGELOG.json +1 -0
  5. package/lib/choices/choice.js +101 -129
  6. package/lib/choices/choice.js.map +1 -1
  7. package/lib/choices/index.js +28 -48
  8. package/lib/choices/index.js.map +1 -1
  9. package/lib/componentize.js +2 -6
  10. package/lib/componentize.js.map +1 -1
  11. package/lib/components/blank.js +315 -246
  12. package/lib/components/blank.js.map +1 -1
  13. package/lib/components/correct-input.js +47 -66
  14. package/lib/components/correct-input.js.map +1 -1
  15. package/lib/components/dropdown.js +399 -156
  16. package/lib/components/dropdown.js.map +1 -1
  17. package/lib/components/input.js +15 -19
  18. package/lib/components/input.js.map +1 -1
  19. package/lib/constructed-response.js +81 -28
  20. package/lib/constructed-response.js.map +1 -1
  21. package/lib/customizable.js +44 -0
  22. package/lib/customizable.js.map +1 -0
  23. package/lib/drag-in-the-blank.js +160 -96
  24. package/lib/drag-in-the-blank.js.map +1 -1
  25. package/lib/index.js +8 -7
  26. package/lib/index.js.map +1 -1
  27. package/lib/inline-dropdown.js +10 -14
  28. package/lib/inline-dropdown.js.map +1 -1
  29. package/lib/mask.js +93 -101
  30. package/lib/mask.js.map +1 -1
  31. package/lib/serialization.js +36 -81
  32. package/lib/serialization.js.map +1 -1
  33. package/lib/with-mask.js +53 -49
  34. package/lib/with-mask.js.map +1 -1
  35. package/package.json +26 -15
  36. package/src/__tests__/drag-in-the-blank.test.js +111 -0
  37. package/src/__tests__/index.test.js +39 -0
  38. package/src/__tests__/mask.test.js +187 -0
  39. package/src/__tests__/serialization.test.js +54 -0
  40. package/src/__tests__/utils.js +1 -0
  41. package/src/__tests__/with-mask.test.js +76 -0
  42. package/src/choices/__tests__/index.test.js +75 -0
  43. package/src/choices/choice.jsx +84 -83
  44. package/src/choices/index.jsx +25 -15
  45. package/src/components/__tests__/blank.test.js +138 -0
  46. package/src/components/__tests__/correct-input.test.js +90 -0
  47. package/src/components/__tests__/dropdown.test.js +93 -0
  48. package/src/components/__tests__/input.test.js +102 -0
  49. package/src/components/blank.jsx +319 -195
  50. package/src/components/correct-input.jsx +45 -46
  51. package/src/components/dropdown.jsx +374 -139
  52. package/src/components/input.jsx +6 -3
  53. package/src/constructed-response.jsx +81 -18
  54. package/src/customizable.jsx +35 -0
  55. package/src/drag-in-the-blank.jsx +159 -47
  56. package/src/index.js +3 -1
  57. package/src/inline-dropdown.jsx +6 -3
  58. package/src/mask.jsx +75 -30
  59. package/src/serialization.js +37 -44
  60. package/src/with-mask.jsx +36 -3
  61. package/README.md +0 -14
  62. package/lib/new-serialization.js +0 -320
  63. package/lib/parse-html.js +0 -16
  64. package/lib/test-serializer.js +0 -215
  65. package/src/new-serialization.jsx +0 -291
  66. package/src/parse-html.js +0 -8
  67. package/src/test-serializer.js +0 -163
@@ -1,53 +1,45 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = void 0;
9
-
10
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
10
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
11
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
22
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
14
  var _react = _interopRequireDefault(require("react"));
25
-
26
15
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
- var _mathRendering = require("@pie-lib/math-rendering");
29
-
16
+ var _drag = require("@pie-lib/drag");
17
+ var _core = require("@dnd-kit/core");
30
18
  var _choices = _interopRequireDefault(require("./choices"));
31
-
19
+ var _choice = _interopRequireDefault(require("./choices/choice"));
32
20
  var _blank = _interopRequireDefault(require("./components/blank"));
33
-
34
21
  var _withMask = require("./with-mask");
35
-
36
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
37
-
38
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
-
22
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
23
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
24
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
40
26
  var Masked = (0, _withMask.withMask)('blank', function (props) {
41
- return function (node, data, onChange) {
42
- var dataset = node.data ? node.data.dataset || {} : {};
43
-
27
+ return function (node, data, _onChange) {
28
+ var _node$data;
29
+ var dataset = ((_node$data = node.data) === null || _node$data === void 0 ? void 0 : _node$data.dataset) || {};
44
30
  if (dataset.component === 'blank') {
31
+ // eslint-disable-next-line react/prop-types
45
32
  var disabled = props.disabled,
46
- duplicates = props.duplicates,
47
- correctResponse = props.correctResponse,
48
- feedback = props.feedback,
49
- showCorrectAnswer = props.showCorrectAnswer;
33
+ duplicates = props.duplicates,
34
+ correctResponse = props.correctResponse,
35
+ feedback = props.feedback,
36
+ showCorrectAnswer = props.showCorrectAnswer,
37
+ emptyResponseAreaWidth = props.emptyResponseAreaWidth,
38
+ emptyResponseAreaHeight = props.emptyResponseAreaHeight,
39
+ instanceId = props.instanceId,
40
+ isDragging = props.isDragging;
50
41
  var choiceId = showCorrectAnswer ? correctResponse[dataset.id] : data[dataset.id];
42
+ // eslint-disable-next-line react/prop-types
51
43
  var choice = choiceId && props.choices.find(function (c) {
52
44
  return c.id === choiceId;
53
45
  });
@@ -58,100 +50,164 @@ var Masked = (0, _withMask.withMask)('blank', function (props) {
58
50
  duplicates: duplicates,
59
51
  choice: choice,
60
52
  id: dataset.id,
61
- onChange: onChange
53
+ emptyResponseAreaWidth: emptyResponseAreaWidth,
54
+ emptyResponseAreaHeight: emptyResponseAreaHeight,
55
+ onChange: function onChange(id, choiceId) {
56
+ var newData = _objectSpread({}, data);
57
+ if (choiceId === undefined) {
58
+ delete newData[id];
59
+ } else {
60
+ newData[id] = choiceId;
61
+ }
62
+ _onChange(newData);
63
+ },
64
+ instanceId: instanceId,
65
+ isDragging: isDragging
62
66
  });
63
67
  }
64
68
  };
65
69
  });
66
-
67
- var DragInTheBlank = /*#__PURE__*/function (_React$Component) {
68
- (0, _inherits2["default"])(DragInTheBlank, _React$Component);
69
-
70
- var _super = _createSuper(DragInTheBlank);
71
-
72
- function DragInTheBlank() {
70
+ var DragInTheBlank = exports["default"] = /*#__PURE__*/function (_React$Component) {
71
+ function DragInTheBlank(props) {
73
72
  var _this;
74
-
75
73
  (0, _classCallCheck2["default"])(this, DragInTheBlank);
76
-
77
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
78
- args[_key] = arguments[_key];
79
- }
80
-
81
- _this = _super.call.apply(_super, [this].concat(args));
82
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getPositionDirection", function (choicePosition) {
74
+ _this = _callSuper(this, DragInTheBlank, [props]);
75
+ (0, _defineProperty2["default"])(_this, "handleDragStart", function (event) {
76
+ var _active$data;
77
+ var active = event.active;
78
+ if (active !== null && active !== void 0 && (_active$data = active.data) !== null && _active$data !== void 0 && _active$data.current) {
79
+ _this.setState({
80
+ activeDragItem: active.data.current
81
+ });
82
+ }
83
+ });
84
+ (0, _defineProperty2["default"])(_this, "renderDragOverlay", function () {
85
+ var activeDragItem = _this.state.activeDragItem;
86
+ if (!activeDragItem) return null;
87
+ if (activeDragItem.type === 'MaskBlank') {
88
+ return /*#__PURE__*/_react["default"].createElement(_choice["default"], {
89
+ disabled: activeDragItem.disabled,
90
+ choice: activeDragItem.choice,
91
+ instanceId: activeDragItem.instanceId
92
+ });
93
+ }
94
+ return null;
95
+ });
96
+ (0, _defineProperty2["default"])(_this, "handleDragEnd", function (event) {
97
+ var _dropData$accepts;
98
+ var active = event.active,
99
+ over = event.over;
100
+ var _this$props = _this.props,
101
+ onChange = _this$props.onChange,
102
+ value = _this$props.value;
103
+ if (!over || !active || !onChange) {
104
+ return;
105
+ }
106
+ var draggedData = active.data.current;
107
+ var dropData = over.data.current;
108
+ if ((draggedData === null || draggedData === void 0 ? void 0 : draggedData.type) === 'MaskBlank' && dropData !== null && dropData !== void 0 && (_dropData$accepts = dropData.accepts) !== null && _dropData$accepts !== void 0 && _dropData$accepts.includes('MaskBlank')) {
109
+ var draggedItem = draggedData;
110
+ var targetId = dropData.id;
111
+
112
+ // drop from choice to blank (placing choice into response)
113
+ if (draggedItem.fromChoice === true) {
114
+ var newValue = _objectSpread({}, value);
115
+ newValue[targetId] = draggedItem.choice.id;
116
+ onChange(newValue);
117
+ } else if (dropData.toChoiceBoard === true) {
118
+ // handle drop from blank to choice board (removal from blank)
119
+ var _newValue = _objectSpread({}, value);
120
+ delete _newValue[draggedItem.id];
121
+ onChange(_newValue);
122
+ }
123
+ // handle drop from blank to blank (changing position)
124
+ else if (draggedItem.id !== targetId) {
125
+ var _newValue2 = _objectSpread({}, value);
126
+ _newValue2[targetId] = draggedItem.choice.id;
127
+ delete _newValue2[draggedItem.id];
128
+ onChange(_newValue2);
129
+ }
130
+ }
131
+ _this.setState({
132
+ activeDragItem: null
133
+ });
134
+ });
135
+ (0, _defineProperty2["default"])(_this, "getPositionDirection", function (choicePosition) {
83
136
  var flexDirection;
84
-
137
+ var justifyContent;
138
+ var alignItems;
85
139
  switch (choicePosition) {
86
140
  case 'left':
87
141
  flexDirection = 'row';
142
+ alignItems = 'center';
88
143
  break;
89
-
90
144
  case 'right':
91
145
  flexDirection = 'row-reverse';
146
+ justifyContent = 'flex-end';
147
+ alignItems = 'center';
92
148
  break;
93
-
94
149
  case 'below':
95
150
  flexDirection = 'column-reverse';
96
151
  break;
97
-
98
152
  default:
99
153
  // above
100
154
  flexDirection = 'column';
101
155
  break;
102
156
  }
103
-
104
- return flexDirection;
157
+ return {
158
+ flexDirection: flexDirection,
159
+ justifyContent: justifyContent,
160
+ alignItems: alignItems
161
+ };
105
162
  });
163
+ _this.state = {
164
+ activeDragItem: null
165
+ };
106
166
  return _this;
107
167
  }
108
-
109
- (0, _createClass2["default"])(DragInTheBlank, [{
110
- key: "componentWillReceiveProps",
111
- value: function componentWillReceiveProps() {
112
- if (this.rootRef) {
113
- (0, _mathRendering.renderMath)(this.rootRef);
114
- }
115
- }
116
- }, {
117
- key: "componentDidUpdate",
118
- value: function componentDidUpdate() {
119
- (0, _mathRendering.renderMath)(this.rootRef);
120
- }
121
- }, {
168
+ (0, _inherits2["default"])(DragInTheBlank, _React$Component);
169
+ return (0, _createClass2["default"])(DragInTheBlank, [{
122
170
  key: "render",
123
171
  value: function render() {
124
172
  var _this2 = this;
125
-
126
- var _this$props = this.props,
127
- markup = _this$props.markup,
128
- duplicates = _this$props.duplicates,
129
- layout = _this$props.layout,
130
- value = _this$props.value,
131
- onChange = _this$props.onChange,
132
- choicesPosition = _this$props.choicesPosition,
133
- choices = _this$props.choices,
134
- correctResponse = _this$props.correctResponse,
135
- disabled = _this$props.disabled,
136
- feedback = _this$props.feedback,
137
- showCorrectAnswer = _this$props.showCorrectAnswer;
173
+ var _this$props2 = this.props,
174
+ markup = _this$props2.markup,
175
+ duplicates = _this$props2.duplicates,
176
+ value = _this$props2.value,
177
+ onChange = _this$props2.onChange,
178
+ choicesPosition = _this$props2.choicesPosition,
179
+ choices = _this$props2.choices,
180
+ correctResponse = _this$props2.correctResponse,
181
+ disabled = _this$props2.disabled,
182
+ feedback = _this$props2.feedback,
183
+ showCorrectAnswer = _this$props2.showCorrectAnswer,
184
+ emptyResponseAreaWidth = _this$props2.emptyResponseAreaWidth,
185
+ emptyResponseAreaHeight = _this$props2.emptyResponseAreaHeight,
186
+ layout = _this$props2.layout,
187
+ instanceId = _this$props2.instanceId;
138
188
  var choicePosition = choicesPosition || 'below';
139
- var style = {
189
+ var style = _objectSpread({
140
190
  display: 'flex',
141
- flexDirection: this.getPositionDirection(choicePosition)
142
- };
143
- return /*#__PURE__*/_react["default"].createElement("div", {
191
+ minWidth: '100px'
192
+ }, this.getPositionDirection(choicePosition));
193
+ return /*#__PURE__*/_react["default"].createElement(_drag.DragProvider, {
194
+ onDragStart: this.handleDragStart,
195
+ onDragEnd: this.handleDragEnd,
196
+ collisionDetection: _core.closestCenter
197
+ }, /*#__PURE__*/_react["default"].createElement("div", {
144
198
  ref: function ref(_ref) {
145
- return _ref && (_this2.rootRef = _ref);
199
+ return _this2.rootRef = _ref;
146
200
  },
147
201
  style: style
148
202
  }, /*#__PURE__*/_react["default"].createElement(_choices["default"], {
149
203
  choicePosition: choicePosition,
150
- duplicates: duplicates,
151
204
  choices: choices,
152
205
  value: value,
153
- disabled: disabled
206
+ duplicates: duplicates,
207
+ disabled: disabled,
208
+ instanceId: instanceId
154
209
  }), /*#__PURE__*/_react["default"].createElement(Masked, {
210
+ elementType: "drag-in-the-blank",
155
211
  markup: markup,
156
212
  layout: layout,
157
213
  value: value,
@@ -161,28 +217,36 @@ var DragInTheBlank = /*#__PURE__*/function (_React$Component) {
161
217
  duplicates: duplicates,
162
218
  feedback: feedback,
163
219
  correctResponse: correctResponse,
164
- showCorrectAnswer: showCorrectAnswer
165
- }));
220
+ showCorrectAnswer: showCorrectAnswer,
221
+ emptyResponseAreaWidth: emptyResponseAreaWidth,
222
+ emptyResponseAreaHeight: emptyResponseAreaHeight,
223
+ instanceId: instanceId,
224
+ isDragging: !!this.state.activeDragItem
225
+ }), /*#__PURE__*/_react["default"].createElement(_core.DragOverlay, {
226
+ style: {
227
+ pointerEvents: "none"
228
+ }
229
+ }, this.renderDragOverlay())));
166
230
  }
167
231
  }]);
168
- return DragInTheBlank;
169
232
  }(_react["default"].Component);
170
-
171
- exports["default"] = DragInTheBlank;
172
233
  (0, _defineProperty2["default"])(DragInTheBlank, "propTypes", {
173
234
  markup: _propTypes["default"].string,
174
235
  layout: _propTypes["default"].object,
175
236
  choicesPosition: _propTypes["default"].string,
176
- choices: _propTypes["default"].arrayOf(_propTypes["default"].shape({
177
- label: _propTypes["default"].string,
178
- value: _propTypes["default"].string
179
- })),
237
+ choices: _propTypes["default"].array,
180
238
  value: _propTypes["default"].object,
181
239
  onChange: _propTypes["default"].func,
182
240
  duplicates: _propTypes["default"].bool,
183
241
  disabled: _propTypes["default"].bool,
184
242
  feedback: _propTypes["default"].object,
185
243
  correctResponse: _propTypes["default"].object,
186
- showCorrectAnswer: _propTypes["default"].bool
244
+ showCorrectAnswer: _propTypes["default"].bool,
245
+ emptyResponseAreaWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
246
+ emptyResponseAreaHeight: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
247
+ instanceId: _propTypes["default"].string
248
+ });
249
+ (0, _defineProperty2["default"])(DragInTheBlank, "defaultProps", {
250
+ instanceId: 'drag-in-the-blank'
187
251
  });
188
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNYXNrZWQiLCJ3aXRoTWFzayIsInByb3BzIiwibm9kZSIsImRhdGEiLCJvbkNoYW5nZSIsImRhdGFzZXQiLCJjb21wb25lbnQiLCJkaXNhYmxlZCIsImR1cGxpY2F0ZXMiLCJjb3JyZWN0UmVzcG9uc2UiLCJmZWVkYmFjayIsInNob3dDb3JyZWN0QW5zd2VyIiwiY2hvaWNlSWQiLCJpZCIsImNob2ljZSIsImNob2ljZXMiLCJmaW5kIiwiYyIsInR5cGUiLCJEcmFnSW5UaGVCbGFuayIsImNob2ljZVBvc2l0aW9uIiwiZmxleERpcmVjdGlvbiIsInJvb3RSZWYiLCJyZW5kZXJNYXRoIiwibWFya3VwIiwibGF5b3V0IiwidmFsdWUiLCJjaG9pY2VzUG9zaXRpb24iLCJzdHlsZSIsImRpc3BsYXkiLCJnZXRQb3NpdGlvbkRpcmVjdGlvbiIsInJlZiIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwic3RyaW5nIiwib2JqZWN0IiwiYXJyYXlPZiIsInNoYXBlIiwibGFiZWwiLCJmdW5jIiwiYm9vbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kcmFnLWluLXRoZS1ibGFuay5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyByZW5kZXJNYXRoIH0gZnJvbSAnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnO1xuaW1wb3J0IENob2ljZXMgZnJvbSAnLi9jaG9pY2VzJztcbmltcG9ydCBCbGFuayBmcm9tICcuL2NvbXBvbmVudHMvYmxhbmsnO1xuaW1wb3J0IHsgd2l0aE1hc2sgfSBmcm9tICcuL3dpdGgtbWFzayc7XG5cbmNvbnN0IE1hc2tlZCA9IHdpdGhNYXNrKCdibGFuaycsIHByb3BzID0+IChub2RlLCBkYXRhLCBvbkNoYW5nZSkgPT4ge1xuICBjb25zdCBkYXRhc2V0ID0gbm9kZS5kYXRhID8gbm9kZS5kYXRhLmRhdGFzZXQgfHwge30gOiB7fTtcblxuICBpZiAoZGF0YXNldC5jb21wb25lbnQgPT09ICdibGFuaycpIHtcbiAgICBjb25zdCB7IGRpc2FibGVkLCBkdXBsaWNhdGVzLCBjb3JyZWN0UmVzcG9uc2UsIGZlZWRiYWNrLCBzaG93Q29ycmVjdEFuc3dlciB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2hvaWNlSWQgPSBzaG93Q29ycmVjdEFuc3dlciA/IGNvcnJlY3RSZXNwb25zZVtkYXRhc2V0LmlkXSA6IGRhdGFbZGF0YXNldC5pZF07XG4gICAgY29uc3QgY2hvaWNlID0gY2hvaWNlSWQgJiYgcHJvcHMuY2hvaWNlcy5maW5kKGMgPT4gYy5pZCA9PT0gY2hvaWNlSWQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxCbGFua1xuICAgICAgICBrZXk9e2Ake25vZGUudHlwZX0tJHtkYXRhc2V0LmlkfWB9XG4gICAgICAgIGNvcnJlY3Q9e3Nob3dDb3JyZWN0QW5zd2VyIHx8IChmZWVkYmFjayAmJiBmZWVkYmFja1tkYXRhc2V0LmlkXSl9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgZHVwbGljYXRlcz17ZHVwbGljYXRlc31cbiAgICAgICAgY2hvaWNlPXtjaG9pY2V9XG4gICAgICAgIGlkPXtkYXRhc2V0LmlkfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcmFnSW5UaGVCbGFuayBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbWFya3VwOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGxheW91dDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBjaG9pY2VzUG9zaXRpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2hvaWNlczogUHJvcFR5cGVzLmFycmF5T2YoXG4gICAgICBQcm9wVHlwZXMuc2hhcGUoeyBsYWJlbDogUHJvcFR5cGVzLnN0cmluZywgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcgfSlcbiAgICApLFxuICAgIHZhbHVlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkdXBsaWNhdGVzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgZmVlZGJhY2s6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY29ycmVjdFJlc3BvbnNlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNob3dDb3JyZWN0QW5zd2VyOiBQcm9wVHlwZXMuYm9vbFxuICB9O1xuXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKSB7XG4gICAgaWYgKHRoaXMucm9vdFJlZikge1xuICAgICAgcmVuZGVyTWF0aCh0aGlzLnJvb3RSZWYpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICByZW5kZXJNYXRoKHRoaXMucm9vdFJlZik7XG4gIH1cblxuICBnZXRQb3NpdGlvbkRpcmVjdGlvbiA9IGNob2ljZVBvc2l0aW9uID0+IHtcbiAgICBsZXQgZmxleERpcmVjdGlvbjtcblxuICAgIHN3aXRjaCAoY2hvaWNlUG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBmbGV4RGlyZWN0aW9uID0gJ3Jvdyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBmbGV4RGlyZWN0aW9uID0gJ3Jvdy1yZXZlcnNlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdiZWxvdyc6XG4gICAgICAgIGZsZXhEaXJlY3Rpb24gPSAnY29sdW1uLXJldmVyc2UnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIGFib3ZlXG4gICAgICAgIGZsZXhEaXJlY3Rpb24gPSAnY29sdW1uJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsZXhEaXJlY3Rpb247XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1hcmt1cCxcbiAgICAgIGR1cGxpY2F0ZXMsXG4gICAgICBsYXlvdXQsXG4gICAgICB2YWx1ZSxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgY2hvaWNlc1Bvc2l0aW9uLFxuICAgICAgY2hvaWNlcyxcbiAgICAgIGNvcnJlY3RSZXNwb25zZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZmVlZGJhY2ssXG4gICAgICBzaG93Q29ycmVjdEFuc3dlclxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgY2hvaWNlUG9zaXRpb24gPSBjaG9pY2VzUG9zaXRpb24gfHwgJ2JlbG93JztcbiAgICBjb25zdCBzdHlsZSA9IHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGZsZXhEaXJlY3Rpb246IHRoaXMuZ2V0UG9zaXRpb25EaXJlY3Rpb24oY2hvaWNlUG9zaXRpb24pXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHJlZj17cmVmID0+IHJlZiAmJiAodGhpcy5yb290UmVmID0gcmVmKX0gc3R5bGU9e3N0eWxlfT5cbiAgICAgICAgPENob2ljZXNcbiAgICAgICAgICBjaG9pY2VQb3NpdGlvbj17Y2hvaWNlUG9zaXRpb259XG4gICAgICAgICAgZHVwbGljYXRlcz17ZHVwbGljYXRlc31cbiAgICAgICAgICBjaG9pY2VzPXtjaG9pY2VzfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIC8+XG4gICAgICAgIDxNYXNrZWRcbiAgICAgICAgICBtYXJrdXA9e21hcmt1cH1cbiAgICAgICAgICBsYXlvdXQ9e2xheW91dH1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgY2hvaWNlcz17Y2hvaWNlc31cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIGR1cGxpY2F0ZXM9e2R1cGxpY2F0ZXN9XG4gICAgICAgICAgZmVlZGJhY2s9e2ZlZWRiYWNrfVxuICAgICAgICAgIGNvcnJlY3RSZXNwb25zZT17Y29ycmVjdFJlc3BvbnNlfVxuICAgICAgICAgIHNob3dDb3JyZWN0QW5zd2VyPXtzaG93Q29ycmVjdEFuc3dlcn1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsTUFBTSxHQUFHLElBQUFDLGtCQUFBLEVBQVMsT0FBVCxFQUFrQixVQUFBQyxLQUFLO0VBQUEsT0FBSSxVQUFDQyxJQUFELEVBQU9DLElBQVAsRUFBYUMsUUFBYixFQUEwQjtJQUNsRSxJQUFNQyxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxHQUFZRCxJQUFJLENBQUNDLElBQUwsQ0FBVUUsT0FBVixJQUFxQixFQUFqQyxHQUFzQyxFQUF0RDs7SUFFQSxJQUFJQSxPQUFPLENBQUNDLFNBQVIsS0FBc0IsT0FBMUIsRUFBbUM7TUFDakMsSUFBUUMsUUFBUixHQUErRU4sS0FBL0UsQ0FBUU0sUUFBUjtNQUFBLElBQWtCQyxVQUFsQixHQUErRVAsS0FBL0UsQ0FBa0JPLFVBQWxCO01BQUEsSUFBOEJDLGVBQTlCLEdBQStFUixLQUEvRSxDQUE4QlEsZUFBOUI7TUFBQSxJQUErQ0MsUUFBL0MsR0FBK0VULEtBQS9FLENBQStDUyxRQUEvQztNQUFBLElBQXlEQyxpQkFBekQsR0FBK0VWLEtBQS9FLENBQXlEVSxpQkFBekQ7TUFDQSxJQUFNQyxRQUFRLEdBQUdELGlCQUFpQixHQUFHRixlQUFlLENBQUNKLE9BQU8sQ0FBQ1EsRUFBVCxDQUFsQixHQUFpQ1YsSUFBSSxDQUFDRSxPQUFPLENBQUNRLEVBQVQsQ0FBdkU7TUFDQSxJQUFNQyxNQUFNLEdBQUdGLFFBQVEsSUFBSVgsS0FBSyxDQUFDYyxP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
252
+ //# sourceMappingURL=drag-in-the-blank.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drag-in-the-blank.js","names":["Masked","withMask","props","node","data","onChange","dataset","component","disabled","duplicates","correctResponse","feedback","showCorrectAnswer","choiceId","id","choice","choices","find","c","type","DragInTheBlank","choicePosition","flexDirection","rootRef","renderMath","markup","layout","value","choicesPosition","style","display","getPositionDirection","ref","React","Component","PropTypes","string","object","arrayOf","shape","label","func","bool"],"sources":["../src/drag-in-the-blank.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport Choices from './choices';\nimport Blank from './components/blank';\nimport { withMask } from './with-mask';\n\nconst Masked = withMask('blank', props => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n\n if (dataset.component === 'blank') {\n const { disabled, duplicates, correctResponse, feedback, showCorrectAnswer } = props;\n const choiceId = showCorrectAnswer ? correctResponse[dataset.id] : data[dataset.id];\n const choice = choiceId && props.choices.find(c => c.id === choiceId);\n\n return (\n <Blank\n key={`${node.type}-${dataset.id}`}\n correct={showCorrectAnswer || (feedback && feedback[dataset.id])}\n disabled={disabled}\n duplicates={duplicates}\n choice={choice}\n id={dataset.id}\n onChange={onChange}\n />\n );\n }\n});\n\nexport default class DragInTheBlank extends React.Component {\n static propTypes = {\n markup: PropTypes.string,\n layout: PropTypes.object,\n choicesPosition: PropTypes.string,\n choices: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })\n ),\n value: PropTypes.object,\n onChange: PropTypes.func,\n duplicates: PropTypes.bool,\n disabled: PropTypes.bool,\n feedback: PropTypes.object,\n correctResponse: PropTypes.object,\n showCorrectAnswer: PropTypes.bool\n };\n\n componentWillReceiveProps() {\n if (this.rootRef) {\n renderMath(this.rootRef);\n }\n }\n\n componentDidUpdate() {\n renderMath(this.rootRef);\n }\n\n getPositionDirection = choicePosition => {\n let flexDirection;\n\n switch (choicePosition) {\n case 'left':\n flexDirection = 'row';\n break;\n case 'right':\n flexDirection = 'row-reverse';\n break;\n case 'below':\n flexDirection = 'column-reverse';\n break;\n default:\n // above\n flexDirection = 'column';\n break;\n }\n\n return flexDirection;\n };\n\n render() {\n const {\n markup,\n duplicates,\n layout,\n value,\n onChange,\n choicesPosition,\n choices,\n correctResponse,\n disabled,\n feedback,\n showCorrectAnswer\n } = this.props;\n\n const choicePosition = choicesPosition || 'below';\n const style = {\n display: 'flex',\n flexDirection: this.getPositionDirection(choicePosition)\n };\n\n return (\n <div ref={ref => ref && (this.rootRef = ref)} style={style}>\n <Choices\n choicePosition={choicePosition}\n duplicates={duplicates}\n choices={choices}\n value={value}\n disabled={disabled}\n />\n <Masked\n markup={markup}\n layout={layout}\n value={value}\n choices={choices}\n onChange={onChange}\n disabled={disabled}\n duplicates={duplicates}\n feedback={feedback}\n correctResponse={correctResponse}\n showCorrectAnswer={showCorrectAnswer}\n />\n </div>\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"drag-in-the-blank.js","names":["_react","_interopRequireDefault","require","_propTypes","_drag","_core","_choices","_choice","_blank","_withMask","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","Masked","withMask","props","node","data","onChange","_node$data","dataset","component","disabled","duplicates","correctResponse","feedback","showCorrectAnswer","emptyResponseAreaWidth","emptyResponseAreaHeight","instanceId","isDragging","choiceId","id","choice","choices","find","c","createElement","key","concat","type","correct","newData","undefined","DragInTheBlank","exports","_React$Component","_this","_classCallCheck2","event","_active$data","active","current","setState","activeDragItem","state","_dropData$accepts","over","_this$props","value","draggedData","dropData","accepts","includes","draggedItem","targetId","fromChoice","newValue","toChoiceBoard","choicePosition","flexDirection","justifyContent","alignItems","_inherits2","_createClass2","render","_this2","_this$props2","markup","choicesPosition","layout","style","display","minWidth","getPositionDirection","DragProvider","onDragStart","handleDragStart","onDragEnd","handleDragEnd","collisionDetection","closestCenter","ref","rootRef","elementType","DragOverlay","pointerEvents","renderDragOverlay","React","Component","PropTypes","string","object","array","func","bool","oneOfType","number"],"sources":["../src/drag-in-the-blank.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DragProvider } from '@pie-lib/drag';\nimport { DragOverlay, closestCenter } from '@dnd-kit/core';\n\nimport Choices from './choices';\nimport Choice from './choices/choice';\nimport Blank from './components/blank';\nimport { withMask } from './with-mask';\n\nconst Masked = withMask('blank', (props) => (node, data, onChange) => {\n const dataset = node.data?.dataset || {};\n if (dataset.component === 'blank') {\n // eslint-disable-next-line react/prop-types\n const {\n disabled,\n duplicates,\n correctResponse,\n feedback,\n showCorrectAnswer,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n instanceId,\n isDragging\n } = props;\n const choiceId = showCorrectAnswer ? correctResponse[dataset.id] : data[dataset.id];\n // eslint-disable-next-line react/prop-types\n const choice = choiceId && props.choices.find((c) => c.id === choiceId);\n\n return (\n <Blank\n key={`${node.type}-${dataset.id}`}\n correct={showCorrectAnswer || (feedback && feedback[dataset.id])}\n disabled={disabled}\n duplicates={duplicates}\n choice={choice}\n id={dataset.id}\n emptyResponseAreaWidth={emptyResponseAreaWidth}\n emptyResponseAreaHeight={emptyResponseAreaHeight}\n onChange={(id, choiceId) => {\n const newData = { ...data };\n if (choiceId === undefined) {\n delete newData[id];\n } else {\n newData[id] = choiceId;\n }\n onChange(newData);\n }}\n instanceId={instanceId}\n isDragging={isDragging}\n />\n );\n }\n});\n\nexport default class DragInTheBlank extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n activeDragItem: null,\n };\n }\n\n static propTypes = {\n markup: PropTypes.string,\n layout: PropTypes.object,\n choicesPosition: PropTypes.string,\n choices: PropTypes.array,\n value: PropTypes.object,\n onChange: PropTypes.func,\n duplicates: PropTypes.bool,\n disabled: PropTypes.bool,\n feedback: PropTypes.object,\n correctResponse: PropTypes.object,\n showCorrectAnswer: PropTypes.bool,\n emptyResponseAreaWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n emptyResponseAreaHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n instanceId: PropTypes.string,\n };\n\n static defaultProps = {\n instanceId: 'drag-in-the-blank',\n };\n\n handleDragStart = (event) => {\n const { active } = event;\n\n if (active?.data?.current) {\n this.setState({\n activeDragItem: active.data.current,\n });\n }\n };\n\n renderDragOverlay = () => {\n const { activeDragItem } = this.state;\n if (!activeDragItem) return null;\n\n if (activeDragItem.type === 'MaskBlank') {\n return (\n <Choice\n disabled={activeDragItem.disabled}\n choice={activeDragItem.choice}\n instanceId={activeDragItem.instanceId}\n />\n );\n }\n\n return null;\n };\n\n handleDragEnd = (event) => {\n const { active, over } = event;\n const { onChange, value } = this.props;\n\n if (!over || !active || !onChange) {\n return;\n }\n\n const draggedData = active.data.current;\n const dropData = over.data.current;\n\n if (draggedData?.type === 'MaskBlank' && dropData?.accepts?.includes('MaskBlank')) {\n const draggedItem = draggedData;\n const targetId = dropData.id;\n\n // drop from choice to blank (placing choice into response)\n if (draggedItem.fromChoice === true) {\n const newValue = { ...value };\n newValue[targetId] = draggedItem.choice.id;\n onChange(newValue);\n } else if (dropData.toChoiceBoard === true) {\n // handle drop from blank to choice board (removal from blank)\n const newValue = { ...value };\n delete newValue[draggedItem.id];\n onChange(newValue);\n }\n // handle drop from blank to blank (changing position)\n else if (draggedItem.id !== targetId) {\n const newValue = { ...value };\n newValue[targetId] = draggedItem.choice.id;\n delete newValue[draggedItem.id];\n onChange(newValue);\n }\n }\n this.setState({ activeDragItem: null });\n };\n\n getPositionDirection = (choicePosition) => {\n let flexDirection;\n let justifyContent;\n let alignItems;\n\n switch (choicePosition) {\n case 'left':\n flexDirection = 'row';\n alignItems = 'center';\n break;\n case 'right':\n flexDirection = 'row-reverse';\n justifyContent = 'flex-end';\n alignItems = 'center';\n break;\n case 'below':\n flexDirection = 'column-reverse';\n break;\n default:\n // above\n flexDirection = 'column';\n break;\n }\n\n return { flexDirection, justifyContent, alignItems };\n };\n\n render() {\n const {\n markup,\n duplicates,\n value,\n onChange,\n choicesPosition,\n choices,\n correctResponse,\n disabled,\n feedback,\n showCorrectAnswer,\n emptyResponseAreaWidth,\n emptyResponseAreaHeight,\n layout,\n instanceId\n } = this.props;\n\n const choicePosition = choicesPosition || 'below';\n const style = { display: 'flex', minWidth: '100px', ...this.getPositionDirection(choicePosition) };\n\n return (\n <DragProvider\n onDragStart={this.handleDragStart}\n onDragEnd={this.handleDragEnd}\n collisionDetection={closestCenter}\n >\n <div ref={(ref) => (this.rootRef = ref)} style={style}>\n <Choices\n choicePosition={choicePosition}\n choices={choices}\n value={value}\n duplicates={duplicates}\n disabled={disabled}\n instanceId={instanceId}\n />\n <Masked\n elementType=\"drag-in-the-blank\"\n markup={markup}\n layout={layout}\n value={value}\n choices={choices}\n onChange={onChange}\n disabled={disabled}\n duplicates={duplicates}\n feedback={feedback}\n correctResponse={correctResponse}\n showCorrectAnswer={showCorrectAnswer}\n emptyResponseAreaWidth={emptyResponseAreaWidth}\n emptyResponseAreaHeight={emptyResponseAreaHeight}\n instanceId={instanceId}\n isDragging={!!this.state.activeDragItem}\n />\n <DragOverlay style={{ pointerEvents: \"none\" }}>\n {this.renderDragOverlay()}\n </DragOverlay>\n </div>\n </DragProvider>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -11,6 +10,12 @@ Object.defineProperty(exports, "ConstructedResponse", {
11
10
  return _constructedResponse["default"];
12
11
  }
13
12
  });
13
+ Object.defineProperty(exports, "Customizable", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _customizable["default"];
17
+ }
18
+ });
14
19
  Object.defineProperty(exports, "DragInTheBlank", {
15
20
  enumerable: true,
16
21
  get: function get() {
@@ -41,14 +46,10 @@ Object.defineProperty(exports, "withMask", {
41
46
  return _withMask.withMask;
42
47
  }
43
48
  });
44
-
45
49
  var _withMask = require("./with-mask");
46
-
47
50
  var _dragInTheBlank = _interopRequireDefault(require("./drag-in-the-blank"));
48
-
49
51
  var _constructedResponse = _interopRequireDefault(require("./constructed-response"));
50
-
52
+ var _customizable = _interopRequireDefault(require("./customizable"));
51
53
  var _inlineDropdown = _interopRequireDefault(require("./inline-dropdown"));
52
-
53
54
  var _componentize = _interopRequireDefault(require("./componentize"));
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdpdGhNYXNrLCBidWlsZExheW91dEZyb21NYXJrdXAgfSBmcm9tICcuL3dpdGgtbWFzayc7XG5pbXBvcnQgRHJhZ0luVGhlQmxhbmsgZnJvbSAnLi9kcmFnLWluLXRoZS1ibGFuayc7XG5pbXBvcnQgQ29uc3RydWN0ZWRSZXNwb25zZSBmcm9tICcuL2NvbnN0cnVjdGVkLXJlc3BvbnNlJztcbmltcG9ydCBJbmxpbmVEcm9wZG93biBmcm9tICcuL2lubGluZS1kcm9wZG93bic7XG5pbXBvcnQgY29tcG9uZW50aXplIGZyb20gJy4vY29tcG9uZW50aXplJztcblxuZXhwb3J0IHtcbiAgd2l0aE1hc2ssXG4gIGJ1aWxkTGF5b3V0RnJvbU1hcmt1cCxcbiAgRHJhZ0luVGhlQmxhbmssXG4gIENvbnN0cnVjdGVkUmVzcG9uc2UsXG4gIElubGluZURyb3Bkb3duLFxuICBjb21wb25lbnRpemVcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EifQ==
55
+ //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.js"],"sourcesContent":["import { withMask, buildLayoutFromMarkup } from './with-mask';\nimport DragInTheBlank from './drag-in-the-blank';\nimport ConstructedResponse from './constructed-response';\nimport InlineDropdown from './inline-dropdown';\nimport componentize from './componentize';\n\nexport {\n withMask,\n buildLayoutFromMarkup,\n DragInTheBlank,\n ConstructedResponse,\n InlineDropdown,\n componentize\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA"}
1
+ {"version":3,"file":"index.js","names":["_withMask","require","_dragInTheBlank","_interopRequireDefault","_constructedResponse","_customizable","_inlineDropdown","_componentize"],"sources":["../src/index.js"],"sourcesContent":["import { withMask, buildLayoutFromMarkup } from './with-mask';\nimport DragInTheBlank from './drag-in-the-blank';\nimport ConstructedResponse from './constructed-response';\nimport Customizable from './customizable';\nimport InlineDropdown from './inline-dropdown';\nimport componentize from './componentize';\n\nexport {\n withMask,\n buildLayoutFromMarkup,\n DragInTheBlank,\n ConstructedResponse,\n InlineDropdown,\n componentize,\n Customizable,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,aAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,eAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,aAAA,GAAAJ,sBAAA,CAAAF,OAAA","ignoreList":[]}
@@ -1,27 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = void 0;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _dropdown = _interopRequireDefault(require("./components/dropdown"));
13
-
14
10
  var _withMask = require("./with-mask");
15
-
16
- var _default = (0, _withMask.withMask)('dropdown', function (props) {
11
+ // eslint-disable-next-line react/display-name
12
+ var _default = exports["default"] = (0, _withMask.withMask)('dropdown', function (props) {
17
13
  return function (node, data, onChange) {
18
14
  var dataset = node.data ? node.data.dataset || {} : {};
19
-
20
15
  if (dataset.component === 'dropdown') {
16
+ // eslint-disable-next-line react/prop-types
21
17
  var choices = props.choices,
22
- disabled = props.disabled,
23
- feedback = props.feedback,
24
- showCorrectAnswer = props.showCorrectAnswer;
18
+ disabled = props.disabled,
19
+ feedback = props.feedback,
20
+ showCorrectAnswer = props.showCorrectAnswer;
25
21
  var correctAnswer = choices && choices[dataset.id] && choices[dataset.id].find(function (c) {
26
22
  return c.correct;
27
23
  });
@@ -31,14 +27,14 @@ var _default = (0, _withMask.withMask)('dropdown', function (props) {
31
27
  correct: feedback && feedback[dataset.id] && feedback[dataset.id] === 'correct',
32
28
  disabled: disabled || showCorrectAnswer,
33
29
  value: finalChoice,
30
+ correctValue: showCorrectAnswer ? correctAnswer && correctAnswer.label : undefined,
34
31
  id: dataset.id,
35
32
  onChange: onChange,
36
33
  choices: choices[dataset.id],
37
- showCorrectAnswer: showCorrectAnswer
34
+ showCorrectAnswer: showCorrectAnswer,
35
+ singleQuery: Object.keys(choices).length == 1
38
36
  });
39
37
  }
40
38
  };
41
39
  });
42
-
43
- exports["default"] = _default;
44
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3aXRoTWFzayIsInByb3BzIiwibm9kZSIsImRhdGEiLCJvbkNoYW5nZSIsImRhdGFzZXQiLCJjb21wb25lbnQiLCJjaG9pY2VzIiwiZGlzYWJsZWQiLCJmZWVkYmFjayIsInNob3dDb3JyZWN0QW5zd2VyIiwiY29ycmVjdEFuc3dlciIsImlkIiwiZmluZCIsImMiLCJjb3JyZWN0IiwiZmluYWxDaG9pY2UiLCJ2YWx1ZSIsInR5cGUiXSwic291cmNlcyI6WyIuLi9zcmMvaW5saW5lLWRyb3Bkb3duLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gJy4vY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyB3aXRoTWFzayB9IGZyb20gJy4vd2l0aC1tYXNrJztcblxuZXhwb3J0IGRlZmF1bHQgd2l0aE1hc2soJ2Ryb3Bkb3duJywgcHJvcHMgPT4gKG5vZGUsIGRhdGEsIG9uQ2hhbmdlKSA9PiB7XG4gIGNvbnN0IGRhdGFzZXQgPSBub2RlLmRhdGEgPyBub2RlLmRhdGEuZGF0YXNldCB8fCB7fSA6IHt9O1xuICBpZiAoZGF0YXNldC5jb21wb25lbnQgPT09ICdkcm9wZG93bicpIHtcbiAgICBjb25zdCB7IGNob2ljZXMsIGRpc2FibGVkLCBmZWVkYmFjaywgc2hvd0NvcnJlY3RBbnN3ZXIgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvcnJlY3RBbnN3ZXIgPVxuICAgICAgY2hvaWNlcyAmJiBjaG9pY2VzW2RhdGFzZXQuaWRdICYmIGNob2ljZXNbZGF0YXNldC5pZF0uZmluZChjID0+IGMuY29ycmVjdCk7XG4gICAgY29uc3QgZmluYWxDaG9pY2UgPSBzaG93Q29ycmVjdEFuc3dlciA/IGNvcnJlY3RBbnN3ZXIgJiYgY29ycmVjdEFuc3dlci52YWx1ZSA6IGRhdGFbZGF0YXNldC5pZF07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duXG4gICAgICAgIGtleT17YCR7bm9kZS50eXBlfS1kcm9wZG93bi0ke2RhdGFzZXQuaWR9YH1cbiAgICAgICAgY29ycmVjdD17ZmVlZGJhY2sgJiYgZmVlZGJhY2tbZGF0YXNldC5pZF0gJiYgZmVlZGJhY2tbZGF0YXNldC5pZF0gPT09ICdjb3JyZWN0J31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IHNob3dDb3JyZWN0QW5zd2VyfVxuICAgICAgICB2YWx1ZT17ZmluYWxDaG9pY2V9XG4gICAgICAgIGlkPXtkYXRhc2V0LmlkfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIGNob2ljZXM9e2Nob2ljZXNbZGF0YXNldC5pZF19XG4gICAgICAgIHNob3dDb3JyZWN0QW5zd2VyPXtzaG93Q29ycmVjdEFuc3dlcn1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztlQUVlLElBQUFBLGtCQUFBLEVBQVMsVUFBVCxFQUFxQixVQUFBQyxLQUFLO0VBQUEsT0FBSSxVQUFDQyxJQUFELEVBQU9DLElBQVAsRUFBYUMsUUFBYixFQUEwQjtJQUNyRSxJQUFNQyxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxHQUFZRCxJQUFJLENBQUNDLElBQUwsQ0FBVUUsT0FBVixJQUFxQixFQUFqQyxHQUFzQyxFQUF0RDs7SUFDQSxJQUFJQSxPQUFPLENBQUNDLFNBQVIsS0FBc0IsVUFBMUIsRUFBc0M7TUFDcEMsSUFBUUMsT0FBUixHQUEyRE4sS0FBM0QsQ0FBUU0sT0FBUjtNQUFBLElBQWlCQyxRQUFqQixHQUEyRFAsS0FBM0QsQ0FBaUJPLFFBQWpCO01BQUEsSUFBMkJDLFFBQTNCLEdBQTJEUixLQUEzRCxDQUEyQlEsUUFBM0I7TUFBQSxJQUFxQ0MsaUJBQXJDLEdBQTJEVCxLQUEzRCxDQUFxQ1MsaUJBQXJDO01BQ0EsSUFBTUMsYUFBYSxHQUNqQkosT0FBTyxJQUFJQSxPQUFPLENBQUNGLE9BQU8sQ0FBQ08sRUFBVCxDQUFsQixJQUFrQ0wsT0FBTyxDQUFDRixPQUFPLENBQUNPLEVBQVQsQ0FBUCxDQUFvQkMsSUFBcEIsQ0FBeUIsVUFBQUMsQ0FBQztRQUFBLE9BQUlBLENBQUMsQ0FBQ0MsT0FBTjtNQUFBLENBQTFCLENBRHBDO01BRUEsSUFBTUMsV0FBVyxHQUFHTixpQkFBaUIsR0FBR0MsYUFBYSxJQUFJQSxhQUFhLENBQUNNLEtBQWxDLEdBQTBDZCxJQUFJLENBQUNFLE9BQU8sQ0FBQ08sRUFBVCxDQUFuRjtNQUVBLG9CQUNFLGdDQUFDLG9CQUFEO1FBQ0UsR0FBRyxZQUFLVixJQUFJLENBQUNnQixJQUFWLHVCQUEyQmIsT0FBTyxDQUFDTyxFQUFuQyxDQURMO1FBRUUsT0FBTyxFQUFFSCxRQUFRLElBQUlBLFFBQVEsQ0FBQ0osT0FBTyxDQUFDTyxFQUFULENBQXBCLElBQW9DSCxRQUFRLENBQUNKLE9BQU8sQ0FBQ08sRUFBVCxDQUFSLEtBQXlCLFNBRnhFO1FBR0UsUUFBUSxFQUFFSixRQUFRLElBQUlFLGlCQUh4QjtRQUlFLEtBQUssRUFBRU0sV0FKVDtRQUtFLEVBQUUsRUFBRVgsT0FBTyxDQUFDTyxFQUxkO1FBTUUsUUFBUSxFQUFFUixRQU5aO1FBT0UsT0FBTyxFQUFFRyxPQUFPLENBQUNGLE9BQU8sQ0FBQ08sRUFBVCxDQVBsQjtRQVFFLGlCQUFpQixFQUFFRjtNQVJyQixFQURGO0lBWUQ7RUFDRixDQXJCd0M7QUFBQSxDQUExQixDIn0=
40
+ //# sourceMappingURL=inline-dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inline-dropdown.js","names":["withMask","props","node","data","onChange","dataset","component","choices","disabled","feedback","showCorrectAnswer","correctAnswer","id","find","c","correct","finalChoice","value","type"],"sources":["../src/inline-dropdown.jsx"],"sourcesContent":["import React from 'react';\nimport Dropdown from './components/dropdown';\nimport { withMask } from './with-mask';\n\nexport default withMask('dropdown', props => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n if (dataset.component === 'dropdown') {\n const { choices, disabled, feedback, showCorrectAnswer } = props;\n const correctAnswer =\n choices && choices[dataset.id] && choices[dataset.id].find(c => c.correct);\n const finalChoice = showCorrectAnswer ? correctAnswer && correctAnswer.value : data[dataset.id];\n\n return (\n <Dropdown\n key={`${node.type}-dropdown-${dataset.id}`}\n correct={feedback && feedback[dataset.id] && feedback[dataset.id] === 'correct'}\n disabled={disabled || showCorrectAnswer}\n value={finalChoice}\n id={dataset.id}\n onChange={onChange}\n choices={choices[dataset.id]}\n showCorrectAnswer={showCorrectAnswer}\n />\n );\n }\n});\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;eAEe,IAAAA,kBAAA,EAAS,UAAT,EAAqB,UAAAC,KAAK;EAAA,OAAI,UAACC,IAAD,EAAOC,IAAP,EAAaC,QAAb,EAA0B;IACrE,IAAMC,OAAO,GAAGH,IAAI,CAACC,IAAL,GAAYD,IAAI,CAACC,IAAL,CAAUE,OAAV,IAAqB,EAAjC,GAAsC,EAAtD;;IACA,IAAIA,OAAO,CAACC,SAAR,KAAsB,UAA1B,EAAsC;MACpC,IAAQC,OAAR,GAA2DN,KAA3D,CAAQM,OAAR;MAAA,IAAiBC,QAAjB,GAA2DP,KAA3D,CAAiBO,QAAjB;MAAA,IAA2BC,QAA3B,GAA2DR,KAA3D,CAA2BQ,QAA3B;MAAA,IAAqCC,iBAArC,GAA2DT,KAA3D,CAAqCS,iBAArC;MACA,IAAMC,aAAa,GACjBJ,OAAO,IAAIA,OAAO,CAACF,OAAO,CAACO,EAAT,CAAlB,IAAkCL,OAAO,CAACF,OAAO,CAACO,EAAT,CAAP,CAAoBC,IAApB,CAAyB,UAAAC,CAAC;QAAA,OAAIA,CAAC,CAACC,OAAN;MAAA,CAA1B,CADpC;MAEA,IAAMC,WAAW,GAAGN,iBAAiB,GAAGC,aAAa,IAAIA,aAAa,CAACM,KAAlC,GAA0Cd,IAAI,CAACE,OAAO,CAACO,EAAT,CAAnF;MAEA,oBACE,gCAAC,oBAAD;QACE,GAAG,YAAKV,IAAI,CAACgB,IAAV,uBAA2Bb,OAAO,CAACO,EAAnC,CADL;QAEE,OAAO,EAAEH,QAAQ,IAAIA,QAAQ,CAACJ,OAAO,CAACO,EAAT,CAApB,IAAoCH,QAAQ,CAACJ,OAAO,CAACO,EAAT,CAAR,KAAyB,SAFxE;QAGE,QAAQ,EAAEJ,QAAQ,IAAIE,iBAHxB;QAIE,KAAK,EAAEM,WAJT;QAKE,EAAE,EAAEX,OAAO,CAACO,EALd;QAME,QAAQ,EAAER,QANZ;QAOE,OAAO,EAAEG,OAAO,CAACF,OAAO,CAACO,EAAT,CAPlB;QAQE,iBAAiB,EAAEF;MARrB,EADF;IAYD;EACF,CArBwC;AAAA,CAA1B,C"}
1
+ {"version":3,"file":"inline-dropdown.js","names":["_react","_interopRequireDefault","require","_dropdown","_withMask","_default","exports","withMask","props","node","data","onChange","dataset","component","choices","disabled","feedback","showCorrectAnswer","correctAnswer","id","find","c","correct","finalChoice","value","createElement","key","concat","type","correctValue","label","undefined","singleQuery","Object","keys","length"],"sources":["../src/inline-dropdown.jsx"],"sourcesContent":["import React from 'react';\nimport Dropdown from './components/dropdown';\nimport { withMask } from './with-mask';\n\n// eslint-disable-next-line react/display-name\nexport default withMask('dropdown', (props) => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n if (dataset.component === 'dropdown') {\n // eslint-disable-next-line react/prop-types\n const { choices, disabled, feedback, showCorrectAnswer } = props;\n const correctAnswer = choices && choices[dataset.id] && choices[dataset.id].find((c) => c.correct);\n const finalChoice = showCorrectAnswer ? correctAnswer && correctAnswer.value : data[dataset.id];\n\n return (\n <Dropdown\n key={`${node.type}-dropdown-${dataset.id}`}\n correct={feedback && feedback[dataset.id] && feedback[dataset.id] === 'correct'}\n disabled={disabled || showCorrectAnswer}\n value={finalChoice}\n correctValue={showCorrectAnswer ? correctAnswer && correctAnswer.label : undefined}\n id={dataset.id}\n onChange={onChange}\n choices={choices[dataset.id]}\n showCorrectAnswer={showCorrectAnswer}\n singleQuery={Object.keys(choices).length == 1}\n />\n );\n }\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEA;AAAA,IAAAG,QAAA,GAAAC,OAAA,cACe,IAAAC,kBAAQ,EAAC,UAAU,EAAE,UAACC,KAAK;EAAA,OAAK,UAACC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAK;IACvE,IAAMC,OAAO,GAAGH,IAAI,CAACC,IAAI,GAAGD,IAAI,CAACC,IAAI,CAACE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,IAAIA,OAAO,CAACC,SAAS,KAAK,UAAU,EAAE;MACpC;MACA,IAAQC,OAAO,GAA4CN,KAAK,CAAxDM,OAAO;QAAEC,QAAQ,GAAkCP,KAAK,CAA/CO,QAAQ;QAAEC,QAAQ,GAAwBR,KAAK,CAArCQ,QAAQ;QAAEC,iBAAiB,GAAKT,KAAK,CAA3BS,iBAAiB;MACtD,IAAMC,aAAa,GAAGJ,OAAO,IAAIA,OAAO,CAACF,OAAO,CAACO,EAAE,CAAC,IAAIL,OAAO,CAACF,OAAO,CAACO,EAAE,CAAC,CAACC,IAAI,CAAC,UAACC,CAAC;QAAA,OAAKA,CAAC,CAACC,OAAO;MAAA,EAAC;MAClG,IAAMC,WAAW,GAAGN,iBAAiB,GAAGC,aAAa,IAAIA,aAAa,CAACM,KAAK,GAAGd,IAAI,CAACE,OAAO,CAACO,EAAE,CAAC;MAE/F,oBACEnB,MAAA,YAAAyB,aAAA,CAACtB,SAAA,WAAQ;QACPuB,GAAG,KAAAC,MAAA,CAAKlB,IAAI,CAACmB,IAAI,gBAAAD,MAAA,CAAaf,OAAO,CAACO,EAAE,CAAG;QAC3CG,OAAO,EAAEN,QAAQ,IAAIA,QAAQ,CAACJ,OAAO,CAACO,EAAE,CAAC,IAAIH,QAAQ,CAACJ,OAAO,CAACO,EAAE,CAAC,KAAK,SAAU;QAChFJ,QAAQ,EAAEA,QAAQ,IAAIE,iBAAkB;QACxCO,KAAK,EAAED,WAAY;QACnBM,YAAY,EAAEZ,iBAAiB,GAAGC,aAAa,IAAIA,aAAa,CAACY,KAAK,GAAGC,SAAU;QACnFZ,EAAE,EAAEP,OAAO,CAACO,EAAG;QACfR,QAAQ,EAAEA,QAAS;QACnBG,OAAO,EAAEA,OAAO,CAACF,OAAO,CAACO,EAAE,CAAE;QAC7BF,iBAAiB,EAAEA,iBAAkB;QACrCe,WAAW,EAAEC,MAAM,CAACC,IAAI,CAACpB,OAAO,CAAC,CAACqB,MAAM,IAAI;MAAE,CAC/C,CAAC;IAEN;EACF,CAAC;AAAA,EAAC","ignoreList":[]}