@pie-lib/mask-markup 1.41.0-mui-update.0 → 1.43.0-mui-update.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.
@@ -15,7 +15,9 @@ var _react = _interopRequireDefault(require("react"));
15
15
  var _propTypes = _interopRequireDefault(require("prop-types"));
16
16
  var _mathRendering = require("@pie-lib/math-rendering");
17
17
  var _drag = require("@pie-lib/drag");
18
+ var _core = require("@dnd-kit/core");
18
19
  var _choices = _interopRequireDefault(require("./choices"));
20
+ var _choice = _interopRequireDefault(require("./choices/choice"));
19
21
  var _blank = _interopRequireDefault(require("./components/blank"));
20
22
  var _withMask = require("./with-mask");
21
23
  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)); }
@@ -35,7 +37,8 @@ var Masked = (0, _withMask.withMask)('blank', function (props) {
35
37
  showCorrectAnswer = props.showCorrectAnswer,
36
38
  emptyResponseAreaWidth = props.emptyResponseAreaWidth,
37
39
  emptyResponseAreaHeight = props.emptyResponseAreaHeight,
38
- instanceId = props.instanceId;
40
+ instanceId = props.instanceId,
41
+ isDragging = props.isDragging;
39
42
  var choiceId = showCorrectAnswer ? correctResponse[dataset.id] : data[dataset.id];
40
43
  // eslint-disable-next-line react/prop-types
41
44
  var choice = choiceId && props.choices.find(function (c) {
@@ -59,69 +62,76 @@ var Masked = (0, _withMask.withMask)('blank', function (props) {
59
62
  }
60
63
  _onChange(newData);
61
64
  },
62
- instanceId: instanceId
65
+ instanceId: instanceId,
66
+ isDragging: isDragging
63
67
  });
64
68
  }
65
69
  };
66
70
  });
67
71
  var DragInTheBlank = exports["default"] = /*#__PURE__*/function (_React$Component) {
68
- function DragInTheBlank() {
72
+ function DragInTheBlank(props) {
69
73
  var _this;
70
74
  (0, _classCallCheck2["default"])(this, DragInTheBlank);
71
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
72
- args[_key] = arguments[_key];
73
- }
74
- _this = _callSuper(this, DragInTheBlank, [].concat(args));
75
+ _this = _callSuper(this, DragInTheBlank, [props]);
76
+ (0, _defineProperty2["default"])(_this, "handleDragStart", function (event) {
77
+ var _active$data;
78
+ var active = event.active;
79
+ if (active !== null && active !== void 0 && (_active$data = active.data) !== null && _active$data !== void 0 && _active$data.current) {
80
+ _this.setState({
81
+ activeDragItem: active.data.current
82
+ });
83
+ }
84
+ });
85
+ (0, _defineProperty2["default"])(_this, "renderDragOverlay", function () {
86
+ var activeDragItem = _this.state.activeDragItem;
87
+ if (!activeDragItem) return null;
88
+ if (activeDragItem.type === 'MaskBlank') {
89
+ return /*#__PURE__*/_react["default"].createElement(_choice["default"], {
90
+ disabled: activeDragItem.disabled,
91
+ choice: activeDragItem.choice,
92
+ instanceId: activeDragItem.instanceId
93
+ });
94
+ }
95
+ return null;
96
+ });
75
97
  (0, _defineProperty2["default"])(_this, "handleDragEnd", function (event) {
76
98
  var _dropData$accepts;
77
- console.log('Drag End Event:', event);
78
99
  var active = event.active,
79
100
  over = event.over;
80
101
  var _this$props = _this.props,
81
102
  onChange = _this$props.onChange,
82
103
  value = _this$props.value;
83
104
  if (!over || !active || !onChange) {
84
- console.log('Early return - missing data:', {
85
- over: !!over,
86
- active: !!active,
87
- onChange: !!onChange
88
- });
89
105
  return;
90
106
  }
91
107
  var draggedData = active.data.current;
92
108
  var dropData = over.data.current;
93
- console.log('Drag data:', draggedData);
94
- console.log('Drop data:', dropData);
95
-
96
- // Handle drop from choice to blank or blank to blank
97
109
  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')) {
98
- console.log('Valid drag/drop types');
99
110
  var draggedItem = draggedData;
100
111
  var targetId = dropData.id;
101
- if (draggedItem.instanceId === dropData.instanceId) {
102
- console.log('Instance IDs match');
103
112
 
104
- // Handle drop from choice to blank
105
- if (draggedItem.fromChoice === true) {
106
- console.log('Dropping from choice to blank:', targetId);
107
- var newValue = _objectSpread({}, value);
108
- newValue[targetId] = draggedItem.choice.id;
109
- onChange(newValue);
110
- }
111
- // Handle drop from blank to blank
112
- else if (draggedItem.id !== targetId) {
113
- console.log('Moving from blank to blank:', draggedItem.id, '->', targetId);
114
- var _newValue = _objectSpread({}, value);
115
- _newValue[targetId] = draggedItem.choice.id;
116
- delete _newValue[draggedItem.id];
117
- onChange(_newValue);
118
- }
119
- } else {
120
- console.log('Instance ID mismatch:', draggedItem.instanceId, 'vs', dropData.instanceId);
113
+ // drop from choice to blank (placing choice into response)
114
+ if (draggedItem.fromChoice === true) {
115
+ var newValue = _objectSpread({}, value);
116
+ newValue[targetId] = draggedItem.choice.id;
117
+ onChange(newValue);
118
+ } else if (dropData.toChoiceBoard === true) {
119
+ // handle drop from blank to choice board (removal from blank)
120
+ var _newValue = _objectSpread({}, value);
121
+ delete _newValue[draggedItem.id];
122
+ onChange(_newValue);
123
+ }
124
+ // handle drop from blank to blank (changing position)
125
+ else if (draggedItem.id !== targetId) {
126
+ var _newValue2 = _objectSpread({}, value);
127
+ _newValue2[targetId] = draggedItem.choice.id;
128
+ delete _newValue2[draggedItem.id];
129
+ onChange(_newValue2);
121
130
  }
122
- } else {
123
- console.log('Invalid drag/drop types:', draggedData === null || draggedData === void 0 ? void 0 : draggedData.type, dropData === null || dropData === void 0 ? void 0 : dropData.accepts);
124
131
  }
132
+ _this.setState({
133
+ activeDragItem: null
134
+ });
125
135
  });
126
136
  (0, _defineProperty2["default"])(_this, "getPositionDirection", function (choicePosition) {
127
137
  var flexDirection;
@@ -151,10 +161,18 @@ var DragInTheBlank = exports["default"] = /*#__PURE__*/function (_React$Componen
151
161
  alignItems: alignItems
152
162
  };
153
163
  });
164
+ _this.state = {
165
+ activeDragItem: null
166
+ };
154
167
  return _this;
155
168
  }
156
169
  (0, _inherits2["default"])(DragInTheBlank, _React$Component);
157
170
  return (0, _createClass2["default"])(DragInTheBlank, [{
171
+ key: "componentDidMount",
172
+ value: function componentDidMount() {
173
+ if (this.rootRef) (0, _mathRendering.renderMath)(this.rootRef);
174
+ }
175
+ }, {
158
176
  key: "componentDidUpdate",
159
177
  value: function componentDidUpdate() {
160
178
  if (this.rootRef) (0, _mathRendering.renderMath)(this.rootRef);
@@ -184,7 +202,9 @@ var DragInTheBlank = exports["default"] = /*#__PURE__*/function (_React$Componen
184
202
  minWidth: '100px'
185
203
  }, this.getPositionDirection(choicePosition));
186
204
  return /*#__PURE__*/_react["default"].createElement(_drag.DragProvider, {
187
- onDragEnd: this.handleDragEnd
205
+ onDragStart: this.handleDragStart,
206
+ onDragEnd: this.handleDragEnd,
207
+ collisionDetection: _core.closestCenter
188
208
  }, /*#__PURE__*/_react["default"].createElement("div", {
189
209
  ref: function ref(_ref) {
190
210
  return _this2.rootRef = _ref;
@@ -211,8 +231,13 @@ var DragInTheBlank = exports["default"] = /*#__PURE__*/function (_React$Componen
211
231
  showCorrectAnswer: showCorrectAnswer,
212
232
  emptyResponseAreaWidth: emptyResponseAreaWidth,
213
233
  emptyResponseAreaHeight: emptyResponseAreaHeight,
214
- instanceId: instanceId
215
- })));
234
+ instanceId: instanceId,
235
+ isDragging: !!this.state.activeDragItem
236
+ }), /*#__PURE__*/_react["default"].createElement(_core.DragOverlay, {
237
+ style: {
238
+ pointerEvents: "none"
239
+ }
240
+ }, this.renderDragOverlay())));
216
241
  }
217
242
  }]);
218
243
  }(_react["default"].Component);
@@ -1 +1 @@
1
- {"version":3,"file":"drag-in-the-blank.js","names":["_react","_interopRequireDefault","require","_propTypes","_mathRendering","_drag","_choices","_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","choiceId","id","choice","choices","find","c","createElement","key","concat","type","correct","newData","undefined","DragInTheBlank","exports","_React$Component","_this","_classCallCheck2","_len","args","Array","_key","event","_dropData$accepts","console","log","active","over","_this$props","value","draggedData","current","dropData","accepts","includes","draggedItem","targetId","fromChoice","newValue","choicePosition","flexDirection","justifyContent","alignItems","_inherits2","_createClass2","componentDidUpdate","rootRef","renderMath","render","_this2","_this$props2","markup","choicesPosition","layout","style","display","minWidth","getPositionDirection","DragProvider","onDragEnd","handleDragEnd","ref","elementType","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 { renderMath } from '@pie-lib/math-rendering';\nimport { DragProvider } from '@pie-lib/drag';\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?.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 } = 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 />\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.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 handleDragEnd = (event) => {\n console.log('Drag End Event:', event);\n const { active, over } = event;\n const { onChange, value } = this.props;\n\n if (!over || !active || !onChange) {\n console.log('Early return - missing data:', { over: !!over, active: !!active, onChange: !!onChange });\n return;\n }\n\n const draggedData = active.data.current;\n const dropData = over.data.current;\n\n console.log('Drag data:', draggedData);\n console.log('Drop data:', dropData);\n\n // Handle drop from choice to blank or blank to blank\n if (draggedData?.type === 'MaskBlank' && dropData?.accepts?.includes('MaskBlank')) {\n console.log('Valid drag/drop types');\n const draggedItem = draggedData;\n const targetId = dropData.id;\n\n if (draggedItem.instanceId === dropData.instanceId) {\n console.log('Instance IDs match');\n\n // Handle drop from choice to blank\n if (draggedItem.fromChoice === true) {\n console.log('Dropping from choice to blank:', targetId);\n const newValue = { ...value };\n newValue[targetId] = draggedItem.choice.id;\n onChange(newValue);\n }\n // Handle drop from blank to blank\n else if (draggedItem.id !== targetId) {\n console.log('Moving from blank to blank:', draggedItem.id, '->', targetId);\n const newValue = { ...value };\n newValue[targetId] = draggedItem.choice.id;\n delete newValue[draggedItem.id];\n onChange(newValue);\n }\n } else {\n console.log('Instance ID mismatch:', draggedItem.instanceId, 'vs', dropData.instanceId);\n }\n } else {\n console.log('Invalid drag/drop types:', draggedData?.type, dropData?.accepts);\n }\n };\n\n componentDidUpdate() {\n if (this.rootRef) renderMath(this.rootRef);\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 onDragEnd={this.handleDragEnd}>\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 />\n </div>\n </DragProvider>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"drag-in-the-blank.js","names":["_react","_interopRequireDefault","require","_propTypes","_mathRendering","_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","componentDidMount","rootRef","renderMath","componentDidUpdate","render","_this2","_this$props2","markup","choicesPosition","layout","style","display","minWidth","getPositionDirection","DragProvider","onDragStart","handleDragStart","onDragEnd","handleDragEnd","collisionDetection","closestCenter","ref","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 { renderMath } from '@pie-lib/math-rendering';\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 componentDidMount() {\n if (this.rootRef) renderMath(this.rootRef);\n }\n\n componentDidUpdate() {\n if (this.rootRef) renderMath(this.rootRef);\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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/mask-markup",
3
- "version": "1.41.0-mui-update.0",
3
+ "version": "1.43.0-mui-update.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -12,10 +12,10 @@
12
12
  "@emotion/style": "^0.8.0",
13
13
  "@mui/icons-material": "^7.3.4",
14
14
  "@mui/material": "^7.3.4",
15
- "@pie-lib/drag": "2.30.0-mui-update.0",
16
- "@pie-lib/editable-html": "11.29.0-mui-update.0",
17
- "@pie-lib/math-rendering": "3.34.0-mui-update.0",
18
- "@pie-lib/render-ui": "4.43.0-mui-update.0",
15
+ "@pie-lib/drag": "2.32.0-mui-update.0",
16
+ "@pie-lib/editable-html": "11.31.0-mui-update.0",
17
+ "@pie-lib/math-rendering": "3.36.0-mui-update.0",
18
+ "@pie-lib/render-ui": "4.45.0-mui-update.0",
19
19
  "classnames": "^2.2.6",
20
20
  "debug": "^4.1.1",
21
21
  "immutable": "^4.0.0-rc.12",
@@ -33,5 +33,5 @@
33
33
  "keywords": [],
34
34
  "author": "",
35
35
  "license": "ISC",
36
- "gitHead": "094026045c44d3d7e558beb7e6986f2652661f75"
36
+ "gitHead": "56f71068deecd32adaab99fd03515f1133919d9d"
37
37
  }
@@ -30,32 +30,61 @@ const StyledChip = styled(Chip)(() => ({
30
30
  fontSize: 'inherit',
31
31
  whiteSpace: 'pre-wrap',
32
32
  maxWidth: '374px',
33
+ // Added for touch devices, for image content.
34
+ // This will prevent the context menu from appearing and not allowing other interactions with the image.
35
+ // If interactions with the image in the token will be requested we should handle only the context Menu.
33
36
  pointerEvents: 'none',
34
37
  borderRadius: '3px',
35
38
  paddingTop: '12px',
36
39
  paddingBottom: '12px',
37
40
  }));
38
41
 
42
+ const StyledChipLabel = styled('span')(() => ({
43
+ whiteSpace: 'normal',
44
+ '& img': {
45
+ display: 'block',
46
+ padding: '2px 0',
47
+ },
48
+ '& mjx-frac': {
49
+ fontSize: '120% !important',
50
+ },
51
+ }));
52
+
39
53
  export default function Choice({ choice, disabled, instanceId }) {
40
54
  const rootRef = useRef(null);
41
55
 
42
- const { attributes, listeners, setNodeRef } = useDraggable({
56
+ const { attributes, listeners, setNodeRef, isDragging } = useDraggable({
43
57
  id: `choice-${choice.id}`,
44
58
  data: { choice, instanceId, fromChoice: true, type: DRAG_TYPE },
45
59
  disabled,
46
60
  });
47
61
 
48
62
  useEffect(() => {
49
- if (rootRef.current) renderMath(rootRef.current);
50
- });
63
+ renderMath(rootRef.current);
64
+ }, [choice.value]);
51
65
 
52
66
  return (
53
- <StyledChoice ref={setNodeRef} className={classnames({ disabled })} {...listeners} {...attributes}>
67
+ <StyledChoice
68
+ ref={setNodeRef}
69
+ style={
70
+ isDragging
71
+ ? {
72
+ width: rootRef.current?.offsetWidth,
73
+ height: rootRef.current?.offsetHeight,
74
+ }
75
+ : {}
76
+ }
77
+ className={classnames({ disabled })}
78
+ {...listeners}
79
+ {...attributes}
80
+ >
54
81
  <StyledChip
55
82
  clickable={false}
56
- disabled
83
+ disabled={disabled}
57
84
  ref={rootRef}
58
- label={choice.value}
85
+ label={
86
+ <StyledChipLabel dangerouslySetInnerHTML={{ __html: choice.value }} />
87
+ }
59
88
  />
60
89
  </StyledChoice>
61
90
  );
@@ -53,7 +53,7 @@ export default class Choices extends React.Component {
53
53
 
54
54
  return (
55
55
  <div style={elementStyle}>
56
- <DragDroppablePlaceholder disabled={disabled}>
56
+ <DragDroppablePlaceholder disabled={disabled} instanceId={instanceId}>
57
57
  {filteredChoices.map((c, index) => (
58
58
  <Choice
59
59
  key={`${c.value}-${index}`}
@@ -18,7 +18,7 @@ const StyledContent = styled('span')(() => ({
18
18
  minWidth: '200px',
19
19
  touchAction: 'none',
20
20
  overflow: 'hidden',
21
- whiteSpace: 'nowrap', // Prevent line wrapping
21
+ whiteSpace: 'nowrap',
22
22
  '&.over': {
23
23
  whiteSpace: 'nowrap',
24
24
  overflow: 'hidden',
@@ -84,17 +84,19 @@ const StyledChipLabel = styled('span')(() => ({
84
84
  },
85
85
  }));
86
86
 
87
- function BlankContent({
88
- disabled,
89
- choice,
90
- isOver,
91
- dragItem,
87
+ function BlankContent({
88
+ disabled,
89
+ choice,
90
+ isOver,
91
+ isDragging,
92
+ dragItem,
92
93
  correct,
93
94
  emptyResponseAreaWidth,
94
95
  emptyResponseAreaHeight,
95
96
  }) {
96
97
  const rootRef = useRef(null);
97
98
  const spanRef = useRef(null);
99
+ const frozenRef = useRef(null); // to use during dragging to prevent flickering
98
100
  const [dimensions, setDimensions] = useState({ height: 0, width: 0 });
99
101
 
100
102
  const handleImageLoad = () => {
@@ -140,16 +142,6 @@ function BlankContent({
140
142
  }
141
143
  };
142
144
 
143
- const addDraggableFalseAttributes = (parent) => {
144
- if (parent && parent.childNodes) {
145
- parent.childNodes.forEach((elem) => {
146
- if (elem instanceof Element || elem instanceof HTMLDocument) {
147
- elem.setAttribute('draggable', false);
148
- }
149
- });
150
- }
151
- };
152
-
153
145
  const getRootDimensions = () => {
154
146
  // Handle potential non-numeric values
155
147
  const responseAreaWidth = !isNaN(parseFloat(emptyResponseAreaWidth))
@@ -183,56 +175,57 @@ function BlankContent({
183
175
  });
184
176
 
185
177
  useEffect(() => {
186
- if (JSON.stringify(choice) !== JSON.stringify(choice)) {
187
- if (!choice) {
188
- setDimensions({ height: 0, width: 0 });
189
- return;
190
- }
191
- handleElements();
178
+ if (!choice) {
179
+ setDimensions({ height: 0, width: 0 });
180
+ return;
192
181
  }
182
+ handleElements();
193
183
  }, [choice]);
194
184
 
185
+ useEffect(() => {
186
+ if (!isOver && !isDragging) {
187
+ frozenRef.current = {
188
+ width: rootRef.current.offsetWidth,
189
+ height: rootRef.current.offsetHeight,
190
+ };
191
+ }
192
+ }, [choice, isOver, isDragging]);
193
+
195
194
  const draggedLabel = dragItem && isOver && dragItem.choice && dragItem.choice.value;
196
195
  const label = choice && choice.value;
196
+ const style = (isOver || isDragging)
197
+ ? {
198
+ width: frozenRef.current?.width,
199
+ height: frozenRef.current?.height,
200
+ }
201
+ : getRootDimensions();
197
202
 
198
203
  return (
199
204
  <StyledChip
200
205
  clickable={false}
201
- disabled={true}
206
+ disabled={disabled}
202
207
  ref={rootRef}
203
208
  component="span"
204
209
  label={
205
210
  <React.Fragment>
206
211
  <StyledChipLabel
207
- className={classnames({
212
+ ref={spanRef}
213
+ draggable={true}
214
+ className={classnames({
208
215
  over: isOver,
209
216
  hidden: draggedLabel,
210
217
  })}
211
- ref={(ref) => {
212
- if (ref) {
213
- spanRef.current = ref;
214
- ref.innerHTML = label || '';
215
- addDraggableFalseAttributes(ref);
216
- }
217
- }}
218
- >
219
- {' '}
220
- </StyledChipLabel>
218
+ dangerouslySetInnerHTML={{ __html: label || '' }}
219
+ />
221
220
  {draggedLabel && (
222
221
  <StyledChipLabel
222
+ draggable={true}
223
223
  className={classnames({
224
224
  over: isOver,
225
225
  dragged: true,
226
226
  })}
227
- ref={(ref) => {
228
- if (ref) {
229
- ref.innerHTML = draggedLabel || '';
230
- addDraggableFalseAttributes(ref);
231
- }
232
- }}
233
- >
234
- {' '}
235
- </StyledChipLabel>
227
+ dangerouslySetInnerHTML={{ __html: draggedLabel || '' }}
228
+ />
236
229
  )}
237
230
  </React.Fragment>
238
231
  }
@@ -243,9 +236,7 @@ function BlankContent({
243
236
  incorrect: correct !== undefined && !correct,
244
237
  })}
245
238
  variant={disabled ? 'outlined' : undefined}
246
- style={{
247
- ...getRootDimensions(),
248
- }}
239
+ style={style}
249
240
  />
250
241
  );
251
242
  }
@@ -270,16 +261,16 @@ BlankContent.propTypes = {
270
261
  };
271
262
 
272
263
  // New functional component using @dnd-kit hooks
273
- function DragDropBlank({
274
- id,
275
- disabled,
276
- duplicates,
277
- choice,
278
- correct,
279
- onChange,
280
- emptyResponseAreaWidth,
264
+ function DragDropBlank({
265
+ id,
266
+ disabled,
267
+ duplicates,
268
+ choice,
269
+ correct,
270
+ onChange,
271
+ emptyResponseAreaWidth,
281
272
  emptyResponseAreaHeight,
282
- instanceId
273
+ instanceId
283
274
  }) {
284
275
  // Setup draggable functionality
285
276
  const {
@@ -326,7 +317,7 @@ function DragDropBlank({
326
317
  };
327
318
 
328
319
  return (
329
- <StyledContent
320
+ <StyledContent
330
321
  ref={setNodeRef}
331
322
  style={style}
332
323
  className={isOver ? 'over' : ''}