@pie-element/match-list 5.3.4-next.0 → 6.0.0-beta.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.
package/lib/answer.js CHANGED
@@ -1,313 +1,266 @@
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
- exports["default"] = exports.DropAnswer = exports.DragAnswer = exports.Answer = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- 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
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
7
+ exports.default = exports.Answer = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
22
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
- var _reactDnd = require("react-dnd");
25
-
10
+ var _core = require("@dnd-kit/core");
26
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
12
  var _react = _interopRequireDefault(require("react"));
29
-
30
- var _classnames = _interopRequireDefault(require("classnames"));
31
-
32
13
  var _debug = _interopRequireDefault(require("debug"));
33
-
34
- var _styles = require("@material-ui/core/styles");
35
-
14
+ var _styles = require("@mui/material/styles");
36
15
  var _drag = require("@pie-lib/drag");
37
-
38
16
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
39
-
40
17
  var _renderUi = require("@pie-lib/render-ui");
41
-
42
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
43
-
44
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
45
-
46
- var log = (0, _debug["default"])('pie-elements:match-title:answer');
47
- var Holder = (0, _styles.withStyles)(function (theme) {
48
- return {
49
- number: {
50
- width: '100%',
51
- fontSize: '18px',
52
- textAlign: 'center',
53
- color: "rgba(".concat(theme.palette.common.black, ", 0.6)")
54
- },
55
- placeholder: {
56
- display: 'flex',
57
- padding: '0',
58
- alignItems: 'center',
59
- justifyContent: 'center',
60
- height: '40px'
61
- }
62
- };
63
- })(function (_ref) {
64
- var classes = _ref.classes,
65
- index = _ref.index,
66
- isOver = _ref.isOver,
67
- disabled = _ref.disabled;
68
- return /*#__PURE__*/_react["default"].createElement(_drag.PlaceHolder, {
69
- className: classes.placeholder,
70
- disabled: disabled,
71
- isOver: isOver
72
- }, index !== undefined && /*#__PURE__*/_react["default"].createElement("div", {
73
- className: classes.number
74
- }, index));
75
- });
18
+ const log = (0, _debug.default)('pie-elements:match-title:answer');
19
+ const HolderNumber = (0, _styles.styled)('div')(({
20
+ theme
21
+ }) => ({
22
+ width: '100%',
23
+ fontSize: '18px',
24
+ textAlign: 'center',
25
+ color: `rgba(${theme.palette.common.black}, 0.6)`
26
+ }));
27
+ const Holder = ({
28
+ index,
29
+ isOver,
30
+ disabled,
31
+ type
32
+ }) => /*#__PURE__*/_react.default.createElement(_drag.PlaceHolder, {
33
+ extraStyles: {
34
+ display: 'flex',
35
+ padding: '0',
36
+ alignItems: 'center',
37
+ justifyContent: 'center',
38
+ height: '40px'
39
+ },
40
+ disabled: disabled,
41
+ isOver: isOver,
42
+ type: type
43
+ }, index !== undefined && /*#__PURE__*/_react.default.createElement(HolderNumber, null, index));
76
44
  Holder.propTypes = {
77
- index: _propTypes["default"].number,
78
- isOver: _propTypes["default"].bool,
79
- disabled: _propTypes["default"].bool
45
+ index: _propTypes.default.number,
46
+ isOver: _propTypes.default.bool,
47
+ disabled: _propTypes.default.bool,
48
+ type: _propTypes.default.string
80
49
  };
81
- var AnswerContent = (0, _styles.withStyles)(function (theme) {
82
- return {
83
- over: {
84
- opacity: 0.2
85
- },
86
- answerContent: {
87
- color: _renderUi.color.text(),
88
- backgroundColor: _renderUi.color.white(),
89
- border: "1px solid ".concat(theme.palette.grey[400]),
90
- cursor: 'pointer',
91
- width: '100%',
92
- padding: '10px',
93
- boxSizing: 'border-box',
94
- overflow: 'hidden',
95
- transition: 'opacity 200ms linear',
96
- wordBreak: 'break-word',
97
- // Added for touch devices, for image content.
98
- // This will prevent the context menu from appearing and not allowing other interactions with the image.
99
- // If interactions with the image in the token will be requested we should handle only the context Menu.
100
- pointerEvents: 'none'
101
- },
102
- dragging: {
103
- opacity: 0.5
104
- },
105
- disabled: {
106
- backgroundColor: _renderUi.color.white(),
107
- cursor: 'not-allowed'
108
- },
109
- incorrect: {
110
- border: "1px solid ".concat(_renderUi.color.incorrect())
111
- },
112
- correct: {
113
- border: "1px solid ".concat(_renderUi.color.correct())
114
- }
115
- };
116
- })(function (props) {
117
- var classes = props.classes,
118
- isDragging = props.isDragging,
119
- isOver = props.isOver,
120
- title = props.title,
121
- disabled = props.disabled,
122
- empty = props.empty,
123
- outcome = props.outcome,
124
- guideIndex = props.guideIndex,
125
- type = props.type;
126
-
50
+ const AnswerContentContainer = (0, _styles.styled)('div')(({
51
+ theme,
52
+ isDragging,
53
+ isOver,
54
+ disabled,
55
+ outcome
56
+ }) => ({
57
+ color: _renderUi.color.text(),
58
+ backgroundColor: _renderUi.color.white(),
59
+ border: `1px solid ${outcome === 'correct' ? _renderUi.color.correct() : outcome === 'incorrect' ? _renderUi.color.incorrect() : theme.palette.grey[400]}`,
60
+ cursor: disabled ? 'not-allowed' : 'pointer',
61
+ width: '100%',
62
+ padding: '10px',
63
+ boxSizing: 'border-box',
64
+ overflow: 'hidden',
65
+ transition: 'opacity 200ms linear',
66
+ wordBreak: 'break-word',
67
+ opacity: isDragging && !disabled ? 0.5 : isOver && !disabled ? 0.2 : 1
68
+ }));
69
+ const AnswerContent = props => {
70
+ const {
71
+ isDragging,
72
+ isOver,
73
+ title,
74
+ disabled,
75
+ empty,
76
+ outcome,
77
+ guideIndex,
78
+ type
79
+ } = props;
127
80
  if (empty) {
128
- return /*#__PURE__*/_react["default"].createElement(Holder, {
81
+ return /*#__PURE__*/_react.default.createElement(Holder, {
129
82
  index: guideIndex,
130
83
  isOver: isOver,
131
84
  disabled: disabled,
132
85
  type: type
133
86
  });
134
87
  } else {
135
- var names = (0, _classnames["default"])(classes.answerContent, isDragging && !disabled && classes.dragging, isOver && !disabled && classes.over, disabled && classes.disabled, outcome && classes[outcome]);
136
- return /*#__PURE__*/_react["default"].createElement("div", {
137
- className: names,
88
+ return /*#__PURE__*/_react.default.createElement(AnswerContentContainer, {
89
+ isDragging: isDragging,
90
+ isOver: isOver,
91
+ disabled: disabled,
92
+ outcome: outcome,
138
93
  dangerouslySetInnerHTML: {
139
94
  __html: title
140
95
  }
141
96
  });
142
97
  }
143
- });
144
-
145
- var Answer = /*#__PURE__*/function (_React$Component) {
146
- (0, _inherits2["default"])(Answer, _React$Component);
147
-
148
- var _super = _createSuper(Answer);
149
-
150
- function Answer() {
151
- var _this;
152
-
153
- (0, _classCallCheck2["default"])(this, Answer);
154
-
155
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
156
- args[_key] = arguments[_key];
157
- }
158
-
159
- _this = _super.call.apply(_super, [this].concat(args));
160
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleTouchStart", function (e) {
161
- e.preventDefault();
98
+ };
99
+ const AnswerContainer = (0, _styles.styled)('div')(({
100
+ correct,
101
+ theme
102
+ }) => ({
103
+ boxSizing: 'border-box',
104
+ minHeight: 40,
105
+ minWidth: '200px',
106
+ overflow: 'hidden',
107
+ margin: theme.spacing(0.5),
108
+ padding: '0px',
109
+ textAlign: 'center',
110
+ height: 'initial',
111
+ border: correct === true ? `1px solid var(--feedback-correct-bg-color, ${_renderUi.color.correct()})` : correct === false ? `1px solid var(--feedback-incorrect-bg-color, ${_renderUi.color.incorrect()})` : 'none'
112
+ }));
113
+ class Answer extends _react.default.Component {
114
+ constructor(...args) {
115
+ super(...args);
116
+ (0, _defineProperty2.default)(this, "handleTouchStart", e => {
117
+ // do NOT call e.preventDefault() here — it prevents pointer events necessary for dnd-kit.
118
+ // Keep this handler empty or remove it if you don't need it.
119
+ // e.preventDefault();
162
120
  });
163
- return _this;
164
121
  }
165
-
166
- (0, _createClass2["default"])(Answer, [{
167
- key: "componentDidMount",
168
- value: function componentDidMount() {
169
- if (this.ref) {
170
- this.ref.addEventListener('touchstart', this.handleTouchStart, {
171
- passive: false
172
- });
173
- }
122
+ componentDidMount() {
123
+ if (this.ref) {
124
+ // NOTE: preventing default on touchstart can block dnd-kit pointer handling on some devices.
125
+ // Consider removing this if you have issues on touch devices.
126
+ this.ref.addEventListener('touchstart', this.handleTouchStart, {
127
+ passive: true
128
+ });
174
129
  }
175
- }, {
176
- key: "componentWillUnmount",
177
- value: function componentWillUnmount() {
178
- if (this.ref) {
179
- this.ref.removeEventListener('touchstart', this.handleTouchStart);
180
- }
181
- }
182
- }, {
183
- key: "render",
184
- value: function render() {
185
- var _classNames,
186
- _this2 = this;
187
-
188
- var _this$props = this.props,
189
- id = _this$props.id,
190
- title = _this$props.title,
191
- isDragging = _this$props.isDragging,
192
- className = _this$props.className,
193
- connectDragSource = _this$props.connectDragSource,
194
- connectDropTarget = _this$props.connectDropTarget,
195
- disabled = _this$props.disabled,
196
- classes = _this$props.classes,
197
- isOver = _this$props.isOver,
198
- type = _this$props.type,
199
- correct = _this$props.correct;
200
- log('[render], props: ', this.props);
201
- var name = (0, _classnames["default"])(className, classes.answer, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.correct, correct === true), (0, _defineProperty2["default"])(_classNames, classes.incorrect, correct === false), _classNames));
202
-
203
- var content = /*#__PURE__*/_react["default"].createElement("div", {
204
- className: name,
205
- ref: function ref(_ref2) {
206
- return _this2.ref = _ref2;
207
- }
208
- }, /*#__PURE__*/_react["default"].createElement(AnswerContent, {
209
- title: title,
210
- id: id,
211
- isOver: isOver,
212
- empty: (0, _isEmpty["default"])(title),
213
- isDragging: isDragging,
214
- disabled: disabled,
215
- type: type
216
- }));
217
-
218
- var droppable = connectDropTarget ? connectDropTarget(content) : content;
219
- return connectDragSource ? connectDragSource(droppable) : droppable;
220
- }
221
- }]);
222
- return Answer;
223
- }(_react["default"].Component);
224
-
225
- exports.Answer = Answer;
226
- (0, _defineProperty2["default"])(Answer, "propTypes", {
227
- className: _propTypes["default"].string,
228
- connectDragSource: _propTypes["default"].func,
229
- connectDropTarget: _propTypes["default"].func,
230
- isDragging: _propTypes["default"].bool.isRequired,
231
- id: _propTypes["default"].any,
232
- title: _propTypes["default"].string,
233
- isOver: _propTypes["default"].bool,
234
- classes: _propTypes["default"].object.isRequired,
235
- empty: _propTypes["default"].bool,
236
- type: _propTypes["default"].string,
237
- disabled: _propTypes["default"].bool,
238
- correct: _propTypes["default"].bool
239
- });
240
- var StyledAnswer = (0, _styles.withStyles)({
241
- answer: {
242
- boxSizing: 'border-box',
243
- minHeight: 40,
244
- minWidth: '100px',
245
- overflow: 'hidden',
246
- margin: '10px 0',
247
- padding: '0px',
248
- textAlign: 'center'
249
- },
250
- incorrect: {
251
- border: "1px solid var(--feedback-incorrect-bg-color, ".concat(_renderUi.color.incorrect(), ")")
252
- },
253
- correct: {
254
- border: "1px solid var(--feedback-correct-bg-color, ".concat(_renderUi.color.correct(), ")")
255
130
  }
256
- })(Answer);
257
- var answerTarget = {
258
- drop: function drop(props, monitor) {
259
- var draggedItem = monitor.getItem();
260
-
261
- if (draggedItem.instanceId === props.instanceId) {
262
- props.onPlaceAnswer(props.promptId, draggedItem.id);
131
+ componentWillUnmount() {
132
+ if (this.ref) {
133
+ this.ref.removeEventListener('touchstart', this.handleTouchStart);
263
134
  }
264
- },
265
- canDrop: function canDrop(props, monitor) {
266
- var draggedItem = monitor.getItem();
267
- return draggedItem.instanceId === props.instanceId;
268
135
  }
269
- };
270
- var DropAnswer = (0, _reactDnd.DropTarget)('Answer', answerTarget, function (connect, monitor) {
271
- return {
272
- connectDropTarget: connect.dropTarget(),
273
- isOver: monitor.isOver()
274
- };
275
- })(StyledAnswer);
276
- exports.DropAnswer = DropAnswer;
277
- var answerSource = {
278
- canDrag: function canDrag(props) {
279
- return props.draggable && !props.disabled;
280
- },
281
- beginDrag: function beginDrag(props) {
282
- return {
283
- id: props.id,
284
- type: props.type,
285
- instanceId: props.instanceId,
136
+ render() {
137
+ const {
138
+ id,
139
+ title,
140
+ isDragging = false,
141
+ className,
142
+ disabled,
143
+ isOver = false,
144
+ type,
145
+ correct
146
+ } = this.props;
147
+ log('[render], props: ', this.props);
148
+ return /*#__PURE__*/_react.default.createElement(AnswerContainer, {
149
+ correct: correct,
150
+ className: className,
151
+ ref: ref => this.ref = ref
152
+ }, /*#__PURE__*/_react.default.createElement(AnswerContent, {
153
+ title: title,
154
+ id: id,
155
+ isOver: isOver,
156
+ empty: (0, _isEmpty.default)(title),
157
+ isDragging: isDragging,
158
+ disabled: disabled,
159
+ type: type
160
+ }));
161
+ }
162
+ }
163
+ exports.Answer = Answer;
164
+ (0, _defineProperty2.default)(Answer, "propTypes", {
165
+ className: _propTypes.default.string,
166
+ isDragging: _propTypes.default.bool,
167
+ id: _propTypes.default.any,
168
+ title: _propTypes.default.string,
169
+ isOver: _propTypes.default.bool,
170
+ empty: _propTypes.default.bool,
171
+ type: _propTypes.default.string,
172
+ disabled: _propTypes.default.bool,
173
+ correct: _propTypes.default.bool
174
+ });
175
+ function DragAndDropAnswer(props) {
176
+ const {
177
+ id,
178
+ instanceId,
179
+ promptId,
180
+ draggable = true,
181
+ disabled = false,
182
+ type
183
+ } = props;
184
+ const dragId = `${type || 'answer'}-${id}`;
185
+ // droppable only if promptId exists
186
+ const dropId = promptId ? `drop-${promptId}` : undefined;
187
+ const {
188
+ attributes,
189
+ listeners,
190
+ setNodeRef: setDragRef,
191
+ transform,
192
+ transition,
193
+ isDragging
194
+ } = (0, _core.useDraggable)({
195
+ id: dragId,
196
+ data: {
197
+ type: type || 'answer',
198
+ id,
199
+ instanceId,
286
200
  value: props.title,
287
- promptId: props.promptId
288
- };
289
- },
290
- endDrag: function endDrag(props, monitor) {
291
- if (!monitor.didDrop()) {
292
- if (props.type === 'target') {
293
- props.onRemoveChoice(monitor.getItem());
201
+ promptId
202
+ },
203
+ disabled: !draggable || disabled
204
+ });
205
+ const droppable = (0, _core.useDroppable)({
206
+ id: dropId,
207
+ data: dropId ? {
208
+ type: 'drop-zone',
209
+ promptId,
210
+ instanceId
211
+ } : undefined,
212
+ disabled: disabled || !dropId
213
+ });
214
+ const setDropRef = droppable.setNodeRef;
215
+ const isOver = droppable.isOver;
216
+
217
+ // compute style: apply transform to the element that actually moves
218
+ const transformStyle = transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined;
219
+
220
+ // If this item is a drop-zone (prompt slot), we render an outer droppable wrapper.
221
+ // For droppable wrapper we apply style to the outer wrapper
222
+ if (dropId) {
223
+ return /*#__PURE__*/_react.default.createElement("div", {
224
+ ref: setDropRef,
225
+ style: {
226
+ flex: 1,
227
+ transform: transformStyle,
228
+ transition,
229
+ opacity: isDragging ? 0.5 : 1,
230
+ backgroundColor: isOver ? 'rgba(0,0,0,0.05)' : 'transparent'
294
231
  }
295
- }
232
+ }, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
233
+ ref: setDragRef
234
+ }, listeners, attributes), /*#__PURE__*/_react.default.createElement(Answer, (0, _extends2.default)({}, props, {
235
+ isDragging: isDragging,
236
+ isOver: isOver
237
+ }))));
296
238
  }
239
+
240
+ // if there is NO dropId (this is a choice / draggable-only), render only draggable node and apply transform to it.
241
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
242
+ ref: setDragRef
243
+ }, listeners, attributes, {
244
+ style: {
245
+ transform: transformStyle,
246
+ transition,
247
+ cursor: disabled ? 'not-allowed' : 'grab',
248
+ opacity: isDragging ? 0.5 : 1,
249
+ touchAction: draggable && !disabled ? 'none' : 'auto'
250
+ }
251
+ }), /*#__PURE__*/_react.default.createElement(Answer, (0, _extends2.default)({}, props, {
252
+ isDragging: isDragging,
253
+ isOver: false
254
+ })));
255
+ }
256
+ DragAndDropAnswer.propTypes = {
257
+ id: _propTypes.default.any,
258
+ instanceId: _propTypes.default.string,
259
+ promptId: _propTypes.default.any,
260
+ title: _propTypes.default.string,
261
+ draggable: _propTypes.default.bool,
262
+ disabled: _propTypes.default.bool,
263
+ type: _propTypes.default.string
297
264
  };
298
- var DragAnswer = (0, _reactDnd.DragSource)('Answer', answerSource, function (connect, monitor) {
299
- return {
300
- connectDragSource: connect.dragSource(),
301
- isDragging: monitor.isDragging()
302
- };
303
- })(StyledAnswer);
304
- exports.DragAnswer = DragAnswer;
305
- var DragAndDropAnswer = (0, _reactDnd.DragSource)('Answer', answerSource, function (connect, monitor) {
306
- return {
307
- connectDragSource: connect.dragSource(),
308
- isDragging: monitor.isDragging()
309
- };
310
- })(DropAnswer);
311
- var _default = DragAndDropAnswer;
312
- exports["default"] = _default;
265
+ var _default = exports.default = DragAndDropAnswer;
313
266
  //# sourceMappingURL=answer.js.map
package/lib/answer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/answer.js"],"names":["log","Holder","theme","number","width","fontSize","textAlign","color","palette","common","black","placeholder","display","padding","alignItems","justifyContent","height","classes","index","isOver","disabled","undefined","propTypes","PropTypes","bool","AnswerContent","over","opacity","answerContent","text","backgroundColor","white","border","grey","cursor","boxSizing","overflow","transition","wordBreak","pointerEvents","dragging","incorrect","correct","props","isDragging","title","empty","outcome","guideIndex","type","names","__html","Answer","e","preventDefault","ref","addEventListener","handleTouchStart","passive","removeEventListener","id","className","connectDragSource","connectDropTarget","name","answer","content","droppable","React","Component","string","func","isRequired","any","object","StyledAnswer","minHeight","minWidth","margin","answerTarget","drop","monitor","draggedItem","getItem","instanceId","onPlaceAnswer","promptId","canDrop","DropAnswer","connect","dropTarget","answerSource","canDrag","draggable","beginDrag","value","endDrag","didDrop","onRemoveChoice","DragAnswer","dragSource","DragAndDropAnswer"],"mappings":"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","sourcesContent":["import { DragSource, DropTarget } from 'react-dnd';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport isEmpty from 'lodash/isEmpty';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-elements:match-title:answer');\n\nconst Holder = withStyles((theme) => ({\n number: {\n width: '100%',\n fontSize: '18px',\n textAlign: 'center',\n color: `rgba(${theme.palette.common.black}, 0.6)`,\n },\n placeholder: {\n display: 'flex',\n padding: '0',\n alignItems: 'center',\n justifyContent: 'center',\n height: '40px',\n },\n}))(({ classes, index, isOver, disabled }) => (\n <PlaceHolder className={classes.placeholder} disabled={disabled} isOver={isOver}>\n {index !== undefined && <div className={classes.number}>{index}</div>}\n </PlaceHolder>\n));\n\nHolder.propTypes = {\n index: PropTypes.number,\n isOver: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nconst AnswerContent = withStyles((theme) => ({\n over: {\n opacity: 0.2,\n },\n answerContent: {\n color: color.text(),\n backgroundColor: color.white(),\n border: `1px solid ${theme.palette.grey[400]}`,\n cursor: 'pointer',\n width: '100%',\n padding: '10px',\n boxSizing: 'border-box',\n overflow: 'hidden',\n transition: 'opacity 200ms linear',\n wordBreak: 'break-word',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n },\n dragging: {\n opacity: 0.5,\n },\n disabled: {\n backgroundColor: color.white(),\n cursor: 'not-allowed',\n },\n incorrect: {\n border: `1px solid ${color.incorrect()}`,\n },\n correct: {\n border: `1px solid ${color.correct()}`,\n },\n}))((props) => {\n const { classes, isDragging, isOver, title, disabled, empty, outcome, guideIndex, type } = props;\n\n if (empty) {\n return <Holder index={guideIndex} isOver={isOver} disabled={disabled} type={type} />;\n } else {\n const names = classNames(\n classes.answerContent,\n isDragging && !disabled && classes.dragging,\n isOver && !disabled && classes.over,\n disabled && classes.disabled,\n outcome && classes[outcome],\n );\n\n return <div className={names} dangerouslySetInnerHTML={{ __html: title }} />;\n }\n});\n\nexport class Answer extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n connectDragSource: PropTypes.func,\n connectDropTarget: PropTypes.func,\n isDragging: PropTypes.bool.isRequired,\n id: PropTypes.any,\n title: PropTypes.string,\n isOver: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n empty: PropTypes.bool,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n };\n\n componentDidMount() {\n if (this.ref) {\n this.ref.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n }\n }\n\n componentWillUnmount() {\n if (this.ref) {\n this.ref.removeEventListener('touchstart', this.handleTouchStart);\n }\n }\n\n handleTouchStart = (e) => {\n e.preventDefault();\n };\n\n render() {\n const {\n id,\n title,\n isDragging,\n className,\n connectDragSource,\n connectDropTarget,\n disabled,\n classes,\n isOver,\n type,\n correct,\n } = this.props;\n\n log('[render], props: ', this.props);\n\n const name = classNames(className, classes.answer, {\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false,\n });\n\n const content = (\n <div className={name} ref={(ref) => (this.ref = ref)}>\n <AnswerContent\n title={title}\n id={id}\n isOver={isOver}\n empty={isEmpty(title)}\n isDragging={isDragging}\n disabled={disabled}\n type={type}\n />\n </div>\n );\n const droppable = connectDropTarget ? connectDropTarget(content) : content;\n\n return connectDragSource ? connectDragSource(droppable) : droppable;\n }\n}\n\nconst StyledAnswer = withStyles({\n answer: {\n boxSizing: 'border-box',\n minHeight: 40,\n minWidth: '100px',\n overflow: 'hidden',\n margin: '10px 0',\n padding: '0px',\n textAlign: 'center',\n },\n incorrect: {\n border: `1px solid var(--feedback-incorrect-bg-color, ${color.incorrect()})`,\n },\n correct: {\n border: `1px solid var(--feedback-correct-bg-color, ${color.correct()})`,\n },\n})(Answer);\n\nconst answerTarget = {\n drop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n if (draggedItem.instanceId === props.instanceId) {\n props.onPlaceAnswer(props.promptId, draggedItem.id);\n }\n },\n canDrop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n return draggedItem.instanceId === props.instanceId;\n },\n};\n\nexport const DropAnswer = DropTarget('Answer', answerTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n}))(StyledAnswer);\n\nconst answerSource = {\n canDrag(props) {\n return props.draggable && !props.disabled;\n },\n beginDrag(props) {\n return {\n id: props.id,\n type: props.type,\n instanceId: props.instanceId,\n value: props.title,\n promptId: props.promptId,\n };\n },\n endDrag(props, monitor) {\n if (!monitor.didDrop()) {\n if (props.type === 'target') {\n props.onRemoveChoice(monitor.getItem());\n }\n }\n },\n};\n\nexport const DragAnswer = DragSource('Answer', answerSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(StyledAnswer);\n\nconst DragAndDropAnswer = DragSource('Answer', answerSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(DropAnswer);\n\nexport default DragAndDropAnswer;\n"],"file":"answer.js"}
1
+ {"version":3,"file":"answer.js","names":["_core","require","_propTypes","_interopRequireDefault","_react","_debug","_styles","_drag","_isEmpty","_renderUi","log","debug","HolderNumber","styled","theme","width","fontSize","textAlign","color","palette","common","black","Holder","index","isOver","disabled","type","default","createElement","PlaceHolder","extraStyles","display","padding","alignItems","justifyContent","height","undefined","propTypes","PropTypes","number","bool","string","AnswerContentContainer","isDragging","outcome","text","backgroundColor","white","border","correct","incorrect","grey","cursor","boxSizing","overflow","transition","wordBreak","opacity","AnswerContent","props","title","empty","guideIndex","dangerouslySetInnerHTML","__html","AnswerContainer","minHeight","minWidth","margin","spacing","Answer","React","Component","constructor","args","_defineProperty2","e","componentDidMount","ref","addEventListener","handleTouchStart","passive","componentWillUnmount","removeEventListener","render","id","className","isEmpty","exports","any","DragAndDropAnswer","instanceId","promptId","draggable","dragId","dropId","attributes","listeners","setNodeRef","setDragRef","transform","useDraggable","data","value","droppable","useDroppable","setDropRef","transformStyle","x","y","style","flex","_extends2","touchAction","_default"],"sources":["../src/answer.jsx"],"sourcesContent":["import { useDraggable, useDroppable } from '@dnd-kit/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport { styled } from '@mui/material/styles';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport isEmpty from 'lodash/isEmpty';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-elements:match-title:answer');\n\nconst HolderNumber = styled('div')(({ theme }) => ({\n width: '100%',\n fontSize: '18px',\n textAlign: 'center',\n color: `rgba(${theme.palette.common.black}, 0.6)`,\n}));\n\nconst Holder = ({ index, isOver, disabled, type }) => (\n <PlaceHolder\n extraStyles={{\n display: 'flex',\n padding: '0',\n alignItems: 'center',\n justifyContent: 'center',\n height: '40px',\n }}\n disabled={disabled}\n isOver={isOver}\n type={type}\n >\n {index !== undefined && <HolderNumber>{index}</HolderNumber>}\n </PlaceHolder>\n);\n\nHolder.propTypes = {\n index: PropTypes.number,\n isOver: PropTypes.bool,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\n\nconst AnswerContentContainer = styled('div')(({ theme, isDragging, isOver, disabled, outcome }) => ({\n color: color.text(),\n backgroundColor: color.white(),\n border: `1px solid ${outcome === 'correct' ? color.correct() :\n outcome === 'incorrect' ? color.incorrect() :\n theme.palette.grey[400]\n }`,\n cursor: disabled ? 'not-allowed' : 'pointer',\n width: '100%',\n padding: '10px',\n boxSizing: 'border-box',\n overflow: 'hidden',\n transition: 'opacity 200ms linear',\n wordBreak: 'break-word',\n opacity: isDragging && !disabled ? 0.5 : isOver && !disabled ? 0.2 : 1,\n}));\n\nconst AnswerContent = (props) => {\n const { isDragging, isOver, title, disabled, empty, outcome, guideIndex, type } = props;\n\n if (empty) {\n return <Holder\n index={guideIndex}\n isOver={isOver}\n disabled={disabled}\n type={type}\n\n />;\n } else {\n return (\n <AnswerContentContainer\n isDragging={isDragging}\n isOver={isOver}\n disabled={disabled}\n outcome={outcome}\n dangerouslySetInnerHTML={{ __html: title }}\n />\n );\n }\n};\n\nconst AnswerContainer = styled('div')(({ correct, theme }) => ({\n boxSizing: 'border-box',\n minHeight: 40,\n minWidth: '200px',\n overflow: 'hidden',\n margin: theme.spacing(0.5),\n padding: '0px',\n textAlign: 'center',\n height: 'initial',\n border: correct === true ? `1px solid var(--feedback-correct-bg-color, ${color.correct()})` :\n correct === false ? `1px solid var(--feedback-incorrect-bg-color, ${color.incorrect()})` :\n 'none',\n}));\n\nexport class Answer extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n isDragging: PropTypes.bool,\n id: PropTypes.any,\n title: PropTypes.string,\n isOver: PropTypes.bool,\n empty: PropTypes.bool,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n };\n\n componentDidMount() {\n if (this.ref) {\n // NOTE: preventing default on touchstart can block dnd-kit pointer handling on some devices.\n // Consider removing this if you have issues on touch devices.\n this.ref.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n }\n }\n\n componentWillUnmount() {\n if (this.ref) {\n this.ref.removeEventListener('touchstart', this.handleTouchStart);\n }\n }\n\n handleTouchStart = (e) => {\n // do NOT call e.preventDefault() here — it prevents pointer events necessary for dnd-kit.\n // Keep this handler empty or remove it if you don't need it.\n // e.preventDefault();\n };\n\n render() {\n const {\n id,\n title,\n isDragging = false,\n className,\n disabled,\n isOver = false,\n type,\n correct,\n } = this.props;\n\n log('[render], props: ', this.props);\n\n return (\n <AnswerContainer correct={correct} className={className} ref={(ref) => (this.ref = ref)}>\n <AnswerContent\n title={title}\n id={id}\n isOver={isOver}\n empty={isEmpty(title)}\n isDragging={isDragging}\n disabled={disabled}\n type={type}\n />\n </AnswerContainer>\n );\n }\n}\n\nfunction DragAndDropAnswer(props) {\n const { id, instanceId, promptId, draggable = true, disabled = false, type } = props;\n\n const dragId = `${type || 'answer'}-${id}`;\n // droppable only if promptId exists\n const dropId = promptId ? `drop-${promptId}` : undefined;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDragRef,\n transform,\n transition,\n isDragging,\n } = useDraggable({\n id: dragId,\n data: {\n type: type || 'answer',\n id,\n instanceId,\n value: props.title,\n promptId,\n },\n disabled: !draggable || disabled,\n });\n\n const droppable = useDroppable({\n id: dropId,\n data: dropId ? { type: 'drop-zone', promptId, instanceId } : undefined,\n disabled: disabled || !dropId,\n });\n\n const setDropRef = droppable.setNodeRef;\n const isOver = droppable.isOver;\n\n // compute style: apply transform to the element that actually moves\n const transformStyle = transform\n ? `translate3d(${transform.x}px, ${transform.y}px, 0)`\n : undefined;\n\n // If this item is a drop-zone (prompt slot), we render an outer droppable wrapper.\n // For droppable wrapper we apply style to the outer wrapper\n if (dropId) {\n return (\n <div\n ref={setDropRef}\n style={{\n flex: 1,\n transform: transformStyle,\n transition,\n opacity: isDragging ? 0.5 : 1,\n backgroundColor: isOver ? 'rgba(0,0,0,0.05)' : 'transparent',\n }}\n >\n <div ref={setDragRef} {...listeners} {...attributes}>\n <Answer {...props} isDragging={isDragging} isOver={isOver} />\n </div>\n </div>\n );\n }\n\n // if there is NO dropId (this is a choice / draggable-only), render only draggable node and apply transform to it.\n return (\n <div\n ref={setDragRef}\n {...listeners}\n {...attributes}\n style={{\n transform: transformStyle,\n transition,\n cursor: disabled ? 'not-allowed' : 'grab',\n opacity: isDragging ? 0.5 : 1,\n touchAction: draggable && !disabled ? 'none' : 'auto',\n }}\n >\n <Answer {...props} isDragging={isDragging} isOver={false} />\n </div>\n );\n}\n\nDragAndDropAnswer.propTypes = {\n id: PropTypes.any,\n instanceId: PropTypes.string,\n promptId: PropTypes.any,\n title: PropTypes.string,\n draggable: PropTypes.bool,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\n\nexport default DragAndDropAnswer;\n"],"mappings":"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","ignoreList":[]}