@pie-element/match 7.9.1-next.1 → 7.9.1-next.6

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","MatchConfigure","pieAuthors","document","querySelectorAll","hasPlayerAsParent","Array","from","some","author","contains","_modelCopy","_model","createDefaultModel","_configuration","defaultValues","configuration","m","_render","c","newConfiguration","resetModelAfterConfigurationIsSet","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","rows","inputConfiguration","enableImages","model","dispatchEvent","ModelUpdatedEvent","config","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","el","React","createElement","Configure","onModelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement"],"mappings":"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","sourcesContent":["import { isEmpty, set } from 'lodash';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Configure from './configure';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\nimport debug from 'debug';\nimport defaultValues from './defaults';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst log = debug('pie-elements:match:configure');\n\nexport default class MatchConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...defaultValues.model,\n ...model,\n });\n\n constructor() {\n super();\n this._model = MatchConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n set model(m) {\n this._model = MatchConfigure.createDefaultModel(m);\n this._modelCopy = cloneDeep(this._model);\n\n this._render();\n }\n\n resetModelAfterConfigurationIsSet = () => {\n // In environments that use pie-player-components, model is set before configuration.\n // This is the reason why sometimes the model gets altered non-reversible\n // (altered using default configuration instead of client configuration, because at that point client configuration was not set yet)\n // Therefore, in such environments, we will make sure to keep a modelCopy (initialised in set model) and use it to reset\n // the model in set configuration (resetModelAfterConfigurationIsSet) if set configuration is ever called\n const pieAuthors = document.querySelectorAll('pie-author');\n this.hasPlayerAsParent = Array.from(pieAuthors).some((author) => author.contains(this));\n\n if (this.hasPlayerAsParent) {\n if (this._modelCopy) {\n this._model = this._modelCopy;\n } else {\n delete this._modelCopy;\n }\n }\n };\n\n set configuration(c) {\n const newConfiguration = {\n ...defaultValues.configuration,\n ...c,\n };\n\n this._configuration = newConfiguration;\n\n this.resetModelAfterConfigurationIsSet();\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (newConfiguration?.language?.enabled) {\n if (newConfiguration?.languageChoices?.options?.length) {\n this._model.language = newConfiguration?.languageChoices.options[0].value;\n }\n } else if (newConfiguration.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find((option) => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n /**\n * @Deprecated we added rows.inputConfiguration to handle the plugins in the editable html fields\n * if rows.inputConfiguration we try to default to the old enableImages flag\n * This flag 'enableImages' will be removed in the future\n */\n if (isEmpty(!c?.rows?.inputConfiguration)) {\n set(this._configuration.rows, 'inputConfiguration.image.disabled', !this._model?.enableImages);\n set(this._configuration.rows, 'inputConfiguration.video.disabled', true);\n set(this._configuration.rows, 'inputConfiguration.audio.disabled', true);\n }\n\n this._render();\n }\n\n onModelChanged(model) {\n this._model = model;\n log('[onModelChanged]: ', this._model);\n this._render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n }\n\n onConfigurationChanged(config) {\n this._configuration = config;\n this._render();\n }\n\n /**\n *\n * @param {done, progress, file} handler\n */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n if (this._model) {\n const el = React.createElement(Configure, {\n onModelChanged: this.onModelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n model: this._model,\n configuration: this._configuration,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n ReactDOM.render(el, this);\n }\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,397 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.choiceTarget = exports.choiceSource = exports.canDrag = exports.Row = 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
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _utils = require("./utils");
25
+
26
+ var _react = _interopRequireDefault(require("react"));
27
+
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _styles = require("@material-ui/core/styles");
31
+
32
+ var _classnames = _interopRequireDefault(require("classnames"));
33
+
34
+ var _configUi = require("@pie-lib/pie-toolbox/config-ui");
35
+
36
+ var _DragHandle = _interopRequireDefault(require("@material-ui/icons/DragHandle"));
37
+
38
+ var _Radio = _interopRequireDefault(require("@material-ui/core/Radio"));
39
+
40
+ var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
41
+
42
+ var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
43
+
44
+ var _reactDnd = require("react-dnd");
45
+
46
+ var _debug = _interopRequireDefault(require("debug"));
47
+
48
+ var _editableHtml = require("@pie-lib/pie-toolbox/editable-html");
49
+
50
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
51
+
52
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
53
+
54
+ 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); }; }
55
+
56
+ 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; } }
57
+
58
+ var log = (0, _debug["default"])('@pie-element:categorize:configure:choice');
59
+ var _canDrag = false;
60
+ exports.canDrag = _canDrag;
61
+
62
+ var Row = /*#__PURE__*/function (_React$Component) {
63
+ (0, _inherits2["default"])(Row, _React$Component);
64
+
65
+ var _super = _createSuper(Row);
66
+
67
+ function Row() {
68
+ var _this;
69
+
70
+ (0, _classCallCheck2["default"])(this, Row);
71
+
72
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
73
+ args[_key] = arguments[_key];
74
+ }
75
+
76
+ _this = _super.call.apply(_super, [this].concat(args));
77
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
78
+ dialog: {
79
+ open: false,
80
+ text: ''
81
+ }
82
+ });
83
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRowTitleChange", function (rowIndex) {
84
+ return function (value) {
85
+ var _this$props = _this.props,
86
+ model = _this$props.model,
87
+ onChange = _this$props.onChange;
88
+
89
+ var newModel = _objectSpread({}, model);
90
+
91
+ newModel.rows[rowIndex].title = value;
92
+ onChange(newModel);
93
+ };
94
+ });
95
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRowValueChange", function (rowIndex, rowValueIndex) {
96
+ return function (event) {
97
+ var _this$props2 = _this.props,
98
+ model = _this$props2.model,
99
+ onChange = _this$props2.onChange;
100
+
101
+ var newModel = _objectSpread({}, model);
102
+
103
+ if (model.choiceMode === 'radio') {
104
+ for (var i = 0; i < newModel.rows[rowIndex].values.length; i++) {
105
+ newModel.rows[rowIndex].values[i] = false;
106
+ }
107
+ }
108
+
109
+ newModel.rows[rowIndex].values[rowValueIndex] = event.target.checked;
110
+ onChange(newModel);
111
+ };
112
+ });
113
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDeleteRow", function (idx) {
114
+ return function () {
115
+ var _this$props3 = _this.props,
116
+ model = _this$props3.model,
117
+ onDeleteRow = _this$props3.onDeleteRow,
118
+ minQuestions = _this$props3.minQuestions;
119
+
120
+ if (model.rows && model.rows.length === minQuestions) {
121
+ _this.setState({
122
+ dialog: {
123
+ open: true,
124
+ text: "There should be at least ".concat(minQuestions, " question row") + (minQuestions > 1 ? 's' : '') + '.'
125
+ }
126
+ });
127
+ } else {
128
+ onDeleteRow(idx);
129
+ }
130
+ };
131
+ });
132
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onMouseDownOnHandle", function () {
133
+ exports.canDrag = _canDrag = true;
134
+ });
135
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onMouseUpOnHandle", function () {
136
+ exports.canDrag = _canDrag = false;
137
+ });
138
+ return _this;
139
+ }
140
+
141
+ (0, _createClass2["default"])(Row, [{
142
+ key: "componentDidMount",
143
+ value: function componentDidMount() {
144
+ document.addEventListener('mouseup', this.onMouseUpOnHandle);
145
+ }
146
+ }, {
147
+ key: "render",
148
+ value: function render() {
149
+ var _this2 = this;
150
+
151
+ var _this$props4 = this.props,
152
+ classes = _this$props4.classes,
153
+ imageSupport = _this$props4.imageSupport,
154
+ connectDragSource = _this$props4.connectDragSource,
155
+ connectDropTarget = _this$props4.connectDropTarget,
156
+ isDragging = _this$props4.isDragging,
157
+ model = _this$props4.model,
158
+ row = _this$props4.row,
159
+ idx = _this$props4.idx,
160
+ _this$props4$inputCon = _this$props4.inputConfiguration,
161
+ inputConfiguration = _this$props4$inputCon === void 0 ? {} : _this$props4$inputCon,
162
+ enableImages = _this$props4.enableImages,
163
+ toolbarOpts = _this$props4.toolbarOpts,
164
+ spellCheck = _this$props4.spellCheck,
165
+ error = _this$props4.error,
166
+ maxImageWidth = _this$props4.maxImageWidth,
167
+ maxImageHeight = _this$props4.maxImageHeight,
168
+ uploadSoundSupport = _this$props4.uploadSoundSupport,
169
+ _this$props4$mathMlOp = _this$props4.mathMlOptions,
170
+ mathMlOptions = _this$props4$mathMlOp === void 0 ? {} : _this$props4$mathMlOp;
171
+ var dialog = this.state.dialog;
172
+ var opacity = isDragging ? 0 : 1;
173
+ var filteredDefaultPlugins = (_editableHtml.DEFAULT_PLUGINS || []).filter(function (p) {
174
+ return p !== 'bulleted-list' && p !== 'numbered-list';
175
+ });
176
+
177
+ var content = /*#__PURE__*/_react["default"].createElement("div", {
178
+ style: {
179
+ opacity: opacity,
180
+ width: '100%'
181
+ }
182
+ }, /*#__PURE__*/_react["default"].createElement("span", {
183
+ itemID: 'handle',
184
+ className: classes.dragHandle,
185
+ onMouseDown: this.onMouseDownOnHandle
186
+ }, /*#__PURE__*/_react["default"].createElement(_DragHandle["default"], {
187
+ color: 'primary'
188
+ })), /*#__PURE__*/_react["default"].createElement("div", {
189
+ className: classes.rowContainer
190
+ }, /*#__PURE__*/_react["default"].createElement("div", {
191
+ className: (0, _classnames["default"])(classes.rowItem, classes.questionText)
192
+ }, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
193
+ imageSupport: imageSupport,
194
+ autoWidthToolbar: true,
195
+ disableUnderline: true,
196
+ label: 'label',
197
+ markup: row.title,
198
+ onChange: this.onRowTitleChange(idx),
199
+ className: classes.editor,
200
+ pluginProps: inputConfiguration,
201
+ toolbarOpts: toolbarOpts,
202
+ activePlugins: filteredDefaultPlugins,
203
+ spellCheck: spellCheck,
204
+ maxImageWidth: maxImageWidth,
205
+ maxImageHeight: maxImageHeight,
206
+ uploadSoundSupport: uploadSoundSupport,
207
+ languageCharactersProps: [{
208
+ language: 'spanish'
209
+ }, {
210
+ language: 'special'
211
+ }],
212
+ error: error && error !== 'No correct response defined.',
213
+ mathMlOptions: mathMlOptions
214
+ })), row.values.map(function (rowValue, rowIdx) {
215
+ return /*#__PURE__*/_react["default"].createElement("div", {
216
+ key: rowIdx,
217
+ className: classes.rowItem
218
+ }, model.choiceMode === 'radio' ? /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
219
+ className: (0, _classnames["default"])((0, _defineProperty2["default"])({}, classes.errorResponse, error === null || error === void 0 ? void 0 : error.includes('No correct response defined.'))),
220
+ onChange: _this2.onRowValueChange(idx, rowIdx),
221
+ checked: rowValue === true
222
+ }) : /*#__PURE__*/_react["default"].createElement(_configUi.Checkbox, {
223
+ onChange: _this2.onRowValueChange(idx, rowIdx),
224
+ checked: rowValue === true,
225
+ label: '',
226
+ error: error === null || error === void 0 ? void 0 : error.includes('No correct response defined.')
227
+ }));
228
+ }), /*#__PURE__*/_react["default"].createElement("div", {
229
+ className: classes.deleteIcon
230
+ }, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
231
+ onClick: this.onDeleteRow(idx),
232
+ "aria-label": "Delete"
233
+ }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null)))), error && /*#__PURE__*/_react["default"].createElement("div", {
234
+ className: classes.errorText
235
+ }, error), /*#__PURE__*/_react["default"].createElement("hr", {
236
+ className: classes.separator
237
+ }), /*#__PURE__*/_react["default"].createElement(_configUi.AlertDialog, {
238
+ open: dialog.open,
239
+ title: "Warning",
240
+ text: dialog.text,
241
+ onConfirm: function onConfirm() {
242
+ return _this2.setState({
243
+ dialog: {
244
+ open: false
245
+ }
246
+ });
247
+ }
248
+ }));
249
+
250
+ return connectDragSource(connectDropTarget(content));
251
+ }
252
+ }]);
253
+ return Row;
254
+ }(_react["default"].Component);
255
+
256
+ exports.Row = Row;
257
+ (0, _defineProperty2["default"])(Row, "propTypes", {
258
+ classes: _propTypes["default"].object.isRequired,
259
+ model: _propTypes["default"].object.isRequired,
260
+ row: _propTypes["default"].object.isRequired,
261
+ idx: _propTypes["default"].number.isRequired,
262
+ isDragging: _propTypes["default"].bool.isRequired,
263
+ maxImageWidth: _propTypes["default"].object,
264
+ maxImageHeight: _propTypes["default"].object,
265
+ onDeleteRow: _propTypes["default"].func.isRequired,
266
+ onChange: _propTypes["default"].func.isRequired,
267
+ connectDragSource: _propTypes["default"].func.isRequired,
268
+ connectDropTarget: _propTypes["default"].func.isRequired,
269
+ onMoveRow: _propTypes["default"].func.isRequired,
270
+ imageSupport: _propTypes["default"].shape({
271
+ add: _propTypes["default"].func.isRequired,
272
+ "delete": _propTypes["default"].func.isRequired
273
+ }),
274
+ uploadSoundSupport: _propTypes["default"].shape({
275
+ add: _propTypes["default"].func.isRequired,
276
+ "delete": _propTypes["default"].func.isRequired
277
+ }),
278
+ inputConfiguration: _propTypes["default"].object,
279
+ enableImages: _propTypes["default"].bool,
280
+ toolbarOpts: _propTypes["default"].object,
281
+ error: _propTypes["default"].string,
282
+ spellCheck: _propTypes["default"].bool,
283
+ minQuestions: _propTypes["default"].number
284
+ });
285
+ (0, _defineProperty2["default"])(Row, "defaultProps", {});
286
+
287
+ var styles = function styles(theme) {
288
+ return {
289
+ actions: {
290
+ padding: 0,
291
+ justifyContent: 'space-between'
292
+ },
293
+ choice: {
294
+ padding: theme.spacing.unit,
295
+ overflow: 'visible'
296
+ },
297
+ dragHandle: {
298
+ cursor: 'move'
299
+ },
300
+ dragDisabled: {
301
+ cursor: 'inherit'
302
+ },
303
+ container: {
304
+ marginTop: theme.spacing.unit * 2,
305
+ display: 'flex',
306
+ flexDirection: 'column'
307
+ },
308
+ rowContainer: {
309
+ marginTop: theme.spacing.unit * 2,
310
+ display: 'flex',
311
+ alignItems: 'center',
312
+ flex: 1
313
+ },
314
+ rowItem: {
315
+ flex: 1,
316
+ display: 'flex',
317
+ justifyContent: 'center',
318
+ alignItems: 'center',
319
+ minWidth: '150px',
320
+ padding: "0 ".concat(theme.spacing.unit, "px")
321
+ },
322
+ deleteIcon: {
323
+ flex: 0.5,
324
+ display: 'flex',
325
+ justifyContent: 'center',
326
+ minWidth: '48px',
327
+ padding: "0 ".concat(theme.spacing.unit, "px")
328
+ },
329
+ questionText: {
330
+ flex: 2,
331
+ display: 'flex',
332
+ justifyContent: 'flex-start',
333
+ padding: 0,
334
+ maxWidth: 'unset',
335
+ textAlign: 'left',
336
+ minWidth: '350px',
337
+ marginRight: theme.spacing.unit,
338
+ '&> div': {
339
+ width: '100%'
340
+ }
341
+ },
342
+ separator: {
343
+ marginTop: theme.spacing.unit * 2,
344
+ border: 0,
345
+ borderTop: "2px solid ".concat(theme.palette.grey['A100']),
346
+ width: '100%'
347
+ },
348
+ errorText: {
349
+ fontSize: theme.typography.fontSize - 2,
350
+ color: theme.palette.error.main,
351
+ paddingTop: theme.spacing.unit
352
+ },
353
+ errorResponse: {
354
+ color: theme.palette.error.main
355
+ }
356
+ };
357
+ };
358
+
359
+ var StyledRow = (0, _styles.withStyles)(styles)(Row);
360
+ var NAME = 'row-config';
361
+ var choiceSource = {
362
+ canDrag: function canDrag() {
363
+ return _canDrag;
364
+ },
365
+ beginDrag: function beginDrag(props) {
366
+ return {
367
+ id: props.row.id,
368
+ index: props.idx
369
+ };
370
+ }
371
+ };
372
+ exports.choiceSource = choiceSource;
373
+ var StyledSource = (0, _reactDnd.DragSource)(NAME, choiceSource, function (connect, monitor) {
374
+ return {
375
+ connectDragSource: connect.dragSource(),
376
+ isDragging: monitor.isDragging()
377
+ };
378
+ })(StyledRow);
379
+ var choiceTarget = {
380
+ hover: function hover() {
381
+ log('[hover]');
382
+ },
383
+ drop: function drop(props, monitor) {
384
+ var item = monitor.getItem();
385
+ log('[drop] item: ', item, 'didDrop?', monitor.didDrop());
386
+ props.onMoveRow(item.index, props.idx);
387
+ }
388
+ };
389
+ exports.choiceTarget = choiceTarget;
390
+ var StyledSourceAndTarget = (0, _reactDnd.DropTarget)(NAME, choiceTarget, function (connect) {
391
+ return {
392
+ connectDropTarget: connect.dropTarget()
393
+ };
394
+ })(StyledSource);
395
+ var _default = StyledSourceAndTarget;
396
+ exports["default"] = _default;
397
+ //# sourceMappingURL=row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/row.jsx"],"names":["log","canDrag","Row","dialog","open","text","rowIndex","value","props","model","onChange","newModel","rows","title","rowValueIndex","event","choiceMode","i","values","length","target","checked","idx","onDeleteRow","minQuestions","setState","document","addEventListener","onMouseUpOnHandle","classes","imageSupport","connectDragSource","connectDropTarget","isDragging","row","inputConfiguration","enableImages","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","mathMlOptions","state","opacity","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","content","width","dragHandle","onMouseDownOnHandle","rowContainer","rowItem","questionText","onRowTitleChange","editor","language","map","rowValue","rowIdx","errorResponse","includes","onRowValueChange","deleteIcon","errorText","separator","React","Component","PropTypes","object","isRequired","number","bool","func","onMoveRow","shape","add","string","styles","theme","actions","padding","justifyContent","choice","spacing","unit","overflow","cursor","dragDisabled","container","marginTop","display","flexDirection","alignItems","flex","minWidth","maxWidth","textAlign","marginRight","border","borderTop","palette","grey","fontSize","typography","color","main","paddingTop","StyledRow","NAME","choiceSource","beginDrag","id","index","StyledSource","connect","monitor","dragSource","choiceTarget","hover","drop","item","getItem","didDrop","StyledSourceAndTarget","dropTarget"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { AlertDialog, Checkbox } from '@pie-lib/pie-toolbox/config-ui';\nimport DragHandle from '@material-ui/icons/DragHandle';\nimport Radio from '@material-ui/core/Radio';\nimport IconButton from '@material-ui/core/IconButton';\nimport Delete from '@material-ui/icons/Delete';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport debug from 'debug';\nimport { EditableHtml, DEFAULT_PLUGINS } from '@pie-lib/pie-toolbox/editable-html';\n\nconst log = debug('@pie-element:categorize:configure:choice');\n\nexport let canDrag = false;\n\nexport class Row extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n row: PropTypes.object.isRequired,\n idx: PropTypes.number.isRequired,\n isDragging: PropTypes.bool.isRequired,\n maxImageWidth: PropTypes.object,\n maxImageHeight: PropTypes.object,\n onDeleteRow: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n connectDragSource: PropTypes.func.isRequired,\n connectDropTarget: PropTypes.func.isRequired,\n onMoveRow: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n inputConfiguration: PropTypes.object,\n enableImages: PropTypes.bool,\n toolbarOpts: PropTypes.object,\n error: PropTypes.string,\n spellCheck: PropTypes.bool,\n minQuestions: PropTypes.number,\n };\n\n static defaultProps = {};\n\n state = {\n dialog: {\n open: false,\n text: '',\n },\n };\n\n componentDidMount() {\n document.addEventListener('mouseup', this.onMouseUpOnHandle);\n }\n\n onRowTitleChange = (rowIndex) => (value) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.rows[rowIndex].title = value;\n onChange(newModel);\n };\n\n onRowValueChange = (rowIndex, rowValueIndex) => (event) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (model.choiceMode === 'radio') {\n for (let i = 0; i < newModel.rows[rowIndex].values.length; i++) {\n newModel.rows[rowIndex].values[i] = false;\n }\n }\n\n newModel.rows[rowIndex].values[rowValueIndex] = event.target.checked;\n\n onChange(newModel);\n };\n\n onDeleteRow = (idx) => () => {\n const { model, onDeleteRow, minQuestions } = this.props;\n\n if (model.rows && model.rows.length === minQuestions) {\n this.setState({\n dialog: {\n open: true,\n text: `There should be at least ${minQuestions} question row` + (minQuestions > 1 ? 's' : '') + '.',\n },\n });\n } else {\n onDeleteRow(idx);\n }\n };\n\n onMouseDownOnHandle = () => {\n canDrag = true;\n };\n\n onMouseUpOnHandle = () => {\n canDrag = false;\n };\n\n render() {\n const {\n classes,\n imageSupport,\n connectDragSource,\n connectDropTarget,\n isDragging,\n model,\n row,\n idx,\n inputConfiguration = {},\n enableImages,\n toolbarOpts,\n spellCheck,\n error,\n maxImageWidth,\n maxImageHeight,\n uploadSoundSupport,\n mathMlOptions = {},\n } = this.props;\n const { dialog } = this.state;\n const opacity = isDragging ? 0 : 1;\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'bulleted-list' && p !== 'numbered-list',\n );\n\n const content = (\n <div style={{ opacity: opacity, width: '100%' }}>\n <span itemID={'handle'} className={classes.dragHandle} onMouseDown={this.onMouseDownOnHandle}>\n <DragHandle color={'primary'} />\n </span>\n\n <div className={classes.rowContainer}>\n <div className={classNames(classes.rowItem, classes.questionText)}>\n <EditableHtml\n imageSupport={imageSupport}\n autoWidthToolbar\n disableUnderline\n label={'label'}\n markup={row.title}\n onChange={this.onRowTitleChange(idx)}\n className={classes.editor}\n pluginProps={inputConfiguration}\n toolbarOpts={toolbarOpts}\n activePlugins={filteredDefaultPlugins}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n error={error && error !== 'No correct response defined.'}\n mathMlOptions={mathMlOptions}\n />\n </div>\n\n {row.values.map((rowValue, rowIdx) => (\n <div key={rowIdx} className={classes.rowItem}>\n {model.choiceMode === 'radio' ? (\n <Radio\n className={classNames({ [classes.errorResponse]: error?.includes('No correct response defined.') })}\n onChange={this.onRowValueChange(idx, rowIdx)}\n checked={rowValue === true}\n />\n ) : (\n <Checkbox\n onChange={this.onRowValueChange(idx, rowIdx)}\n checked={rowValue === true}\n label={''}\n error={error?.includes('No correct response defined.')}\n />\n )}\n </div>\n ))}\n\n <div className={classes.deleteIcon}>\n <IconButton onClick={this.onDeleteRow(idx)} aria-label=\"Delete\">\n <Delete />\n </IconButton>\n </div>\n </div>\n\n {error && <div className={classes.errorText}>{error}</div>}\n <hr className={classes.separator} />\n\n <AlertDialog\n open={dialog.open}\n title=\"Warning\"\n text={dialog.text}\n onConfirm={() => this.setState({ dialog: { open: false } })}\n />\n </div>\n );\n\n return connectDragSource(connectDropTarget(content));\n }\n}\n\nconst styles = (theme) => ({\n actions: {\n padding: 0,\n justifyContent: 'space-between',\n },\n choice: {\n padding: theme.spacing.unit,\n overflow: 'visible',\n },\n dragHandle: {\n cursor: 'move',\n },\n dragDisabled: {\n cursor: 'inherit',\n },\n\n container: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column',\n },\n rowContainer: {\n marginTop: theme.spacing.unit * 2,\n display: 'flex',\n alignItems: 'center',\n flex: 1,\n },\n rowItem: {\n flex: 1,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minWidth: '150px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n deleteIcon: {\n flex: 0.5,\n display: 'flex',\n justifyContent: 'center',\n minWidth: '48px',\n padding: `0 ${theme.spacing.unit}px`,\n },\n questionText: {\n flex: 2,\n display: 'flex',\n justifyContent: 'flex-start',\n padding: 0,\n maxWidth: 'unset',\n textAlign: 'left',\n minWidth: '350px',\n marginRight: theme.spacing.unit,\n '&> div': {\n width: '100%',\n },\n },\n separator: {\n marginTop: theme.spacing.unit * 2,\n border: 0,\n borderTop: `2px solid ${theme.palette.grey['A100']}`,\n width: '100%',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n errorResponse: {\n color: theme.palette.error.main,\n },\n});\n\nconst StyledRow = withStyles(styles)(Row);\n\nconst NAME = 'row-config';\n\nexport const choiceSource = {\n canDrag() {\n return canDrag;\n },\n beginDrag(props) {\n return {\n id: props.row.id,\n index: props.idx,\n };\n },\n};\n\nconst StyledSource = DragSource(NAME, choiceSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(StyledRow);\n\nexport const choiceTarget = {\n hover() {\n log('[hover]');\n },\n drop(props, monitor) {\n const item = monitor.getItem();\n\n log('[drop] item: ', item, 'didDrop?', monitor.didDrop());\n\n props.onMoveRow(item.index, props.idx);\n },\n};\n\nconst StyledSourceAndTarget = DropTarget(NAME, choiceTarget, (connect) => ({\n connectDropTarget: connect.dropTarget(),\n}))(StyledSource);\n\nexport default StyledSourceAndTarget;\n"],"file":"row.js"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getPluginProps = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
+
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
+
16
+ var getPluginProps = function getPluginProps() {
17
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
18
+ var baseInputConfiguration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
19
+ return _objectSpread(_objectSpread({}, baseInputConfiguration), props);
20
+ };
21
+
22
+ exports.getPluginProps = getPluginProps;
23
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.js"],"names":["getPluginProps","props","baseInputConfiguration"],"mappings":";;;;;;;;;;;;;;;AAAO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB;AAAA,MAACC,KAAD,uEAAS,EAAT;AAAA,MAAaC,sBAAb,uEAAsC,EAAtC;AAAA,yCACzBA,sBADyB,GAEzBD,KAFyB;AAAA,CAAvB","sourcesContent":["export const getPluginProps = (props = {}, baseInputConfiguration = {}) => ({\n ...baseInputConfiguration,\n ...props,\n});\n"],"file":"utils.js"}
@@ -10,7 +10,7 @@
10
10
  "@material-ui/core": "^3.9.2",
11
11
  "@material-ui/icons": "^3.0.1",
12
12
  "@pie-framework/pie-configure-events": "^1.3.0",
13
- "@pie-lib/pie-toolbox": "1.16.1-next.28",
13
+ "@pie-lib/pie-toolbox": "1.16.0",
14
14
  "classnames": "^2.2.5",
15
15
  "debug": "^3.1.0",
16
16
  "lodash": "^4.17.15",
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _default = {
8
+ rows: [{
9
+ id: 1,
10
+ title: 'Question Text 1',
11
+ values: [false, false]
12
+ }, {
13
+ id: 2,
14
+ title: 'Question Text 2',
15
+ values: [false, false]
16
+ }],
17
+ layout: 3,
18
+ headers: ['Column 1', 'Column 2', 'Column 3']
19
+ };
20
+ exports["default"] = _default;
21
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["rows","id","title","values","layout","headers"],"mappings":";;;;;;eAAe;AACbA,EAAAA,IAAI,EAAE,CACJ;AACEC,IAAAA,EAAE,EAAE,CADN;AAEEC,IAAAA,KAAK,EAAE,iBAFT;AAGEC,IAAAA,MAAM,EAAE,CAAC,KAAD,EAAQ,KAAR;AAHV,GADI,EAMJ;AACEF,IAAAA,EAAE,EAAE,CADN;AAEEC,IAAAA,KAAK,EAAE,iBAFT;AAGEC,IAAAA,MAAM,EAAE,CAAC,KAAD,EAAQ,KAAR;AAHV,GANI,CADO;AAabC,EAAAA,MAAM,EAAE,CAbK;AAcbC,EAAAA,OAAO,EAAE,CAAC,UAAD,EAAa,UAAb,EAAyB,UAAzB;AAdI,C","sourcesContent":["export default {\n rows: [\n {\n id: 1,\n title: 'Question Text 1',\n values: [false, false],\n },\n {\n id: 2,\n title: 'Question Text 2',\n values: [false, false],\n },\n ],\n layout: 3,\n headers: ['Column 1', 'Column 2', 'Column 3'],\n};\n"],"file":"defaults.js"}