@pie-element/explicit-constructed-response 3.9.0 → 3.9.3-next.1014
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/CHANGELOG.md +215 -0
- package/configure/CHANGELOG.md +187 -0
- package/configure/lib/alternateResponses.js +45 -12
- package/configure/lib/alternateResponses.js.map +1 -1
- package/configure/lib/alternateSection.js +116 -19
- package/configure/lib/alternateSection.js.map +1 -1
- package/configure/lib/defaults.js +30 -0
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/ecr-toolbar.js +19 -7
- package/configure/lib/ecr-toolbar.js.map +1 -1
- package/configure/lib/index.js +3 -3
- package/configure/lib/main.js +250 -42
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +29 -3
- package/configure/lib/markupUtils.js.map +1 -1
- package/configure/lib/utils.js +15 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +3 -3
- package/controller/CHANGELOG.md +72 -0
- package/controller/lib/index.js +99 -6
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/docs/config-schema.json +116 -0
- package/docs/config-schema.json.md +89 -1
- package/docs/demo/generate.js +3 -1
- package/docs/pie-schema.json +57 -0
- package/docs/pie-schema.json.md +45 -0
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/main.js +75 -24
- package/lib/main.js.map +1 -1
- package/lib/print.js +115 -0
- package/lib/print.js.map +1 -0
- package/package.json +11 -7
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports["default"] = exports.
|
|
8
|
+
exports["default"] = exports.Choice = exports.AlternateSection = void 0;
|
|
9
9
|
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
11
|
|
|
@@ -43,17 +43,23 @@ var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
|
|
|
43
43
|
|
|
44
44
|
var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
|
|
45
45
|
|
|
46
|
+
var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
|
|
47
|
+
|
|
46
48
|
var _styles = require("@material-ui/core/styles");
|
|
47
49
|
|
|
48
50
|
var _max = _interopRequireDefault(require("lodash/max"));
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
53
|
+
|
|
54
|
+
var _markupUtils = require("./markupUtils");
|
|
51
55
|
|
|
52
|
-
function
|
|
56
|
+
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; }
|
|
57
|
+
|
|
58
|
+
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
59
|
|
|
54
60
|
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
61
|
|
|
56
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
62
|
+
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
63
|
|
|
58
64
|
var styles = function styles() {
|
|
59
65
|
return {
|
|
@@ -75,10 +81,27 @@ var styles = function styles() {
|
|
|
75
81
|
fill: 'gray'
|
|
76
82
|
},
|
|
77
83
|
selectContainer: {
|
|
78
|
-
alignItems: '
|
|
84
|
+
alignItems: 'flex-end',
|
|
79
85
|
display: 'flex',
|
|
80
86
|
justifyContent: 'space-between',
|
|
81
87
|
width: '100%'
|
|
88
|
+
},
|
|
89
|
+
rightContainer: {
|
|
90
|
+
alignItems: 'center',
|
|
91
|
+
display: 'flex'
|
|
92
|
+
},
|
|
93
|
+
lengthField: {
|
|
94
|
+
width: '230px',
|
|
95
|
+
marginRight: '20px'
|
|
96
|
+
},
|
|
97
|
+
errorText: {
|
|
98
|
+
fontSize: '12px',
|
|
99
|
+
color: 'red',
|
|
100
|
+
paddingTop: '5px'
|
|
101
|
+
},
|
|
102
|
+
inputError: {
|
|
103
|
+
border: '2px solid red',
|
|
104
|
+
borderRadius: '6px'
|
|
82
105
|
}
|
|
83
106
|
};
|
|
84
107
|
};
|
|
@@ -115,29 +138,43 @@ var Choice = /*#__PURE__*/function (_React$Component) {
|
|
|
115
138
|
}
|
|
116
139
|
|
|
117
140
|
(0, _createClass2["default"])(Choice, [{
|
|
141
|
+
key: "UNSAFE_componentWillReceiveProps",
|
|
142
|
+
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
143
|
+
if (nextProps.markup) {
|
|
144
|
+
this.setState({
|
|
145
|
+
value: nextProps.markup
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}, {
|
|
118
150
|
key: "render",
|
|
119
151
|
value: function render() {
|
|
120
152
|
var value = this.state.value;
|
|
121
153
|
var _this$props = this.props,
|
|
122
154
|
classes = _this$props.classes,
|
|
123
|
-
onDelete = _this$props.onDelete
|
|
124
|
-
|
|
155
|
+
onDelete = _this$props.onDelete,
|
|
156
|
+
spellCheck = _this$props.spellCheck,
|
|
157
|
+
error = _this$props.error;
|
|
158
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
125
159
|
style: {
|
|
126
160
|
alignItems: 'center',
|
|
127
161
|
display: 'flex',
|
|
128
162
|
justifyContent: 'space-between'
|
|
129
163
|
}
|
|
130
164
|
}, /*#__PURE__*/_react["default"].createElement(_OutlinedInput["default"], {
|
|
131
|
-
className: classes.choice,
|
|
165
|
+
className: (0, _classnames["default"])(classes.choice, error && classes.inputError),
|
|
132
166
|
value: value,
|
|
133
167
|
onChange: this.onChange,
|
|
134
168
|
labelWidth: 0,
|
|
135
|
-
disableUnderline: true
|
|
169
|
+
disableUnderline: true,
|
|
170
|
+
spellCheck: spellCheck
|
|
136
171
|
}), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
|
|
137
172
|
"aria-label": "delete",
|
|
138
173
|
className: classes.deleteBtn,
|
|
139
174
|
onClick: onDelete
|
|
140
|
-
}, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null)))
|
|
175
|
+
}, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null))), error && /*#__PURE__*/_react["default"].createElement("div", {
|
|
176
|
+
className: classes.errorText
|
|
177
|
+
}, error));
|
|
141
178
|
}
|
|
142
179
|
}]);
|
|
143
180
|
return Choice;
|
|
@@ -202,16 +239,51 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
|
|
|
202
239
|
});
|
|
203
240
|
}
|
|
204
241
|
});
|
|
205
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onChoiceChanged", function (choice, value) {
|
|
206
|
-
var
|
|
242
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onChoiceChanged", function (choice, value, index) {
|
|
243
|
+
var _this2$props2 = _this2.props,
|
|
244
|
+
choiceChanged = _this2$props2.choiceChanged,
|
|
245
|
+
lengthChanged = _this2$props2.lengthChanged,
|
|
246
|
+
maxLength = _this2$props2.maxLength,
|
|
247
|
+
choices = _this2$props2.choices;
|
|
248
|
+
var labelLengthsArr = choices.map(function (choice) {
|
|
249
|
+
return (choice.label || '').length;
|
|
250
|
+
});
|
|
251
|
+
labelLengthsArr[index] = value.length;
|
|
252
|
+
var newLength = Math.max.apply(Math, (0, _toConsumableArray2["default"])(labelLengthsArr));
|
|
207
253
|
choiceChanged(_objectSpread(_objectSpread({}, choice), {}, {
|
|
208
254
|
label: value
|
|
209
255
|
}));
|
|
256
|
+
|
|
257
|
+
if (newLength > maxLength || newLength + 10 <= maxLength) {
|
|
258
|
+
lengthChanged((0, _markupUtils.getAdjustedLength)(newLength));
|
|
259
|
+
}
|
|
210
260
|
});
|
|
211
261
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onRemoveChoice", function (choice) {
|
|
212
262
|
var choiceRemoved = _this2.props.choiceRemoved;
|
|
213
263
|
choiceRemoved(choice.value);
|
|
214
264
|
});
|
|
265
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "getChoicesMaxLength", function () {
|
|
266
|
+
var choices = _this2.state.choices;
|
|
267
|
+
|
|
268
|
+
if (!choices) {
|
|
269
|
+
return 1;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
var labelLengthsArr = choices.map(function (choice) {
|
|
273
|
+
return (choice.label || '').length;
|
|
274
|
+
});
|
|
275
|
+
return Math.max.apply(Math, (0, _toConsumableArray2["default"])(labelLengthsArr));
|
|
276
|
+
});
|
|
277
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "changeLength", function (event) {
|
|
278
|
+
var lengthChanged = _this2.props.lengthChanged;
|
|
279
|
+
var numberValue = parseInt(event.target.value, 10);
|
|
280
|
+
|
|
281
|
+
var minLength = _this2.getChoicesMaxLength();
|
|
282
|
+
|
|
283
|
+
if (numberValue && numberValue >= minLength && numberValue <= minLength + 10) {
|
|
284
|
+
lengthChanged(numberValue);
|
|
285
|
+
}
|
|
286
|
+
});
|
|
215
287
|
return _this2;
|
|
216
288
|
}
|
|
217
289
|
|
|
@@ -233,8 +305,13 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
|
|
|
233
305
|
var _this$props2 = this.props,
|
|
234
306
|
classes = _this$props2.classes,
|
|
235
307
|
selectChoices = _this$props2.selectChoices,
|
|
236
|
-
|
|
308
|
+
maxLength = _this$props2.maxLength,
|
|
309
|
+
showMaxLength = _this$props2.showMaxLength,
|
|
310
|
+
value = _this$props2.value,
|
|
311
|
+
spellCheck = _this$props2.spellCheck,
|
|
312
|
+
errors = _this$props2.errors;
|
|
237
313
|
var choices = this.state.choices;
|
|
314
|
+
var minLength = this.getChoicesMaxLength();
|
|
238
315
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
239
316
|
className: classes.design
|
|
240
317
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -243,7 +320,8 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
|
|
|
243
320
|
className: classes.select,
|
|
244
321
|
displayEmpty: true,
|
|
245
322
|
onChange: this.handleSelect,
|
|
246
|
-
value: value || ''
|
|
323
|
+
value: value || '',
|
|
324
|
+
readOnly: showMaxLength
|
|
247
325
|
}, /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
|
|
248
326
|
value: ""
|
|
249
327
|
}, /*#__PURE__*/_react["default"].createElement("em", null, value ? 'Remove selection' : 'Select a response')), selectChoices.map(function (c, index) {
|
|
@@ -251,12 +329,26 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
|
|
|
251
329
|
key: index,
|
|
252
330
|
value: c.value
|
|
253
331
|
}, c.label);
|
|
254
|
-
})), choices && choices.length > 0 && /*#__PURE__*/_react["default"].createElement(
|
|
332
|
+
})), choices && choices.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
333
|
+
className: classes.rightContainer
|
|
334
|
+
}, maxLength && showMaxLength && /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
|
|
335
|
+
className: classes.lengthField,
|
|
336
|
+
label: "Maximum length (characters)",
|
|
337
|
+
type: "number",
|
|
338
|
+
inputProps: {
|
|
339
|
+
min: minLength,
|
|
340
|
+
max: minLength + 10
|
|
341
|
+
},
|
|
342
|
+
value: maxLength,
|
|
343
|
+
onChange: this.changeLength
|
|
344
|
+
}), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
255
345
|
className: classes.addButton,
|
|
256
346
|
variant: "contained",
|
|
257
347
|
color: "primary",
|
|
258
348
|
onClick: this.onAddChoice
|
|
259
|
-
}, "Add")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
349
|
+
}, "Add"))), errors && errors[0] && /*#__PURE__*/_react["default"].createElement("div", {
|
|
350
|
+
className: classes.errorText
|
|
351
|
+
}, errors[0]), /*#__PURE__*/_react["default"].createElement("div", {
|
|
260
352
|
className: classes.altChoices
|
|
261
353
|
}, choices && choices.map(function (c, index) {
|
|
262
354
|
return index > 0 && /*#__PURE__*/_react["default"].createElement(Choice, {
|
|
@@ -264,11 +356,13 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
|
|
|
264
356
|
classes: classes,
|
|
265
357
|
markup: c.label,
|
|
266
358
|
onChange: function onChange(val) {
|
|
267
|
-
return _this3.onChoiceChanged(c, val);
|
|
359
|
+
return _this3.onChoiceChanged(c, val, index);
|
|
268
360
|
},
|
|
269
361
|
onDelete: function onDelete() {
|
|
270
362
|
return _this3.onRemoveChoice(c);
|
|
271
|
-
}
|
|
363
|
+
},
|
|
364
|
+
spellCheck: spellCheck,
|
|
365
|
+
error: errors && errors[index]
|
|
272
366
|
});
|
|
273
367
|
})));
|
|
274
368
|
}
|
|
@@ -283,8 +377,11 @@ exports.AlternateSection = AlternateSection;
|
|
|
283
377
|
classes: _propTypes["default"].object.isRequired,
|
|
284
378
|
onSelect: _propTypes["default"].func.isRequired,
|
|
285
379
|
choiceChanged: _propTypes["default"].func.isRequired,
|
|
380
|
+
lengthChanged: _propTypes["default"].func,
|
|
286
381
|
choiceRemoved: _propTypes["default"].func.isRequired,
|
|
287
|
-
value: _propTypes["default"].string
|
|
382
|
+
value: _propTypes["default"].string,
|
|
383
|
+
maxLength: _propTypes["default"].number,
|
|
384
|
+
showMaxLength: _propTypes["default"].bool
|
|
288
385
|
});
|
|
289
386
|
var Styled = (0, _styles.withStyles)(styles)(AlternateSection);
|
|
290
387
|
var _default = Styled;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/alternateSection.jsx"],"names":["styles","altChoices","alignItems","flexDirection","display","padding","marginBottom","width","choice","flex","marginRight","deleteBtn","fill","selectContainer","justifyContent","Choice","value","props","markup","onChange","e","target","setState","updateText","state","classes","onDelete","React","Component","PropTypes","object","string","func","isRequired","AlternateSection","choices","onSelect","selectChoices","find","c","length","label","map","parseInt","filter","id","isNaN","choiceChanged","choiceRemoved","nextProps","updateChoicesIfNeeded","design","select","handleSelect","index","addButton","onAddChoice","val","onChoiceChanged","onRemoveChoice","array","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport Button from '@material-ui/core/Button';\nimport Delete from '@material-ui/icons/Delete';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport { withStyles } from '@material-ui/core/styles';\nimport max from 'lodash/max';\n\nconst styles = () => ({\n altChoices: {\n alignItems: 'flex-start',\n flexDirection: 'column',\n display: 'flex',\n padding: '20px 0 0 0',\n '& > *': {\n marginBottom: '20px',\n width: '100%'\n }\n },\n choice: {\n flex: '1',\n marginRight: '20px'\n },\n deleteBtn: {\n fill: 'gray'\n },\n selectContainer: {\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%'\n }\n});\n\nexport class Choice extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n markup: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n value: PropTypes.string\n };\n\n state = {\n value: this.props.markup\n };\n\n updateText = debounce(this.props.onChange, 300);\n\n onChange = (e) => {\n const { value } = e.target;\n\n this.setState({ value });\n this.updateText(value);\n };\n\n render() {\n const { value } = this.state;\n const { classes, onDelete } = this.props;\n\n return (\n <div\n style={{\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between'\n }}\n >\n <OutlinedInput\n className={classes.choice}\n value={value}\n onChange={this.onChange}\n labelWidth={0}\n disableUnderline\n />\n <IconButton\n aria-label=\"delete\"\n className={classes.deleteBtn}\n onClick={onDelete}\n >\n <Delete />\n </IconButton>\n </div>\n );\n }\n}\n\nexport class AlternateSection extends React.Component {\n static propTypes = {\n choices: PropTypes.array,\n selectChoices: PropTypes.array.isRequired,\n classes: PropTypes.object.isRequired,\n onSelect: PropTypes.func.isRequired,\n choiceChanged: PropTypes.func.isRequired,\n choiceRemoved: PropTypes.func.isRequired,\n value: PropTypes.string\n };\n\n state = {};\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateChoicesIfNeeded(nextProps);\n }\n\n componentDidMount() {\n this.updateChoicesIfNeeded(this.props);\n }\n\n updateChoicesIfNeeded = props => {\n if (!this.state.choices\n || !isEqual(props.choices, this.state.choices)\n || !isEqual(props.choices, this.props.choices)\n ) {\n this.setState({\n choices: props.choices\n });\n }\n };\n\n handleSelect = e => {\n const { onSelect, selectChoices } = this.props;\n const { value } = e.target;\n\n onSelect(selectChoices.find(c => c.value === value));\n };\n\n onAddChoice = () => {\n const { choices } = this.state;\n\n if (choices.length && choices[choices.length - 1].label !== '') {\n const value = max(choices.map(c => parseInt(c.value)).filter(id => !isNaN(id))) || 0;\n\n this.setState({\n choices: [\n ...choices,\n {\n value: `${value + 1}`,\n label: ''\n }\n ]\n });\n }\n };\n\n onChoiceChanged = (choice, value) => {\n const { choiceChanged } = this.props;\n\n choiceChanged({\n ...choice,\n label: value\n });\n };\n\n onRemoveChoice = choice => {\n const { choiceRemoved } = this.props;\n\n choiceRemoved(choice.value);\n };\n\n render() {\n const {\n classes,\n selectChoices,\n value\n } = this.props;\n const { choices } = this.state;\n\n return (\n <div className={classes.design}>\n <div\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n displayEmpty\n onChange={this.handleSelect}\n value={value || ''}\n >\n <MenuItem value=\"\">\n <em>\n {value ? 'Remove selection' : 'Select a response'}\n </em>\n </MenuItem>\n {selectChoices.map((c, index) => <MenuItem key={index} value={c.value}>{c.label}</MenuItem>)}\n </Select>\n {\n choices && choices.length > 0 &&\n <Button\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={this.onAddChoice}\n >\n Add\n </Button>\n }\n </div>\n <div\n className={classes.altChoices}\n >\n {\n choices &&\n choices.map((c, index) => index > 0 && (\n <Choice\n key={index}\n classes={classes}\n markup={c.label}\n onChange={val => this.onChoiceChanged(c, val)}\n onDelete={() => this.onRemoveChoice(c)}\n />\n ))\n }\n </div>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(AlternateSection);\n\nexport default Styled;\n"],"file":"alternateSection.js"}
|
|
1
|
+
{"version":3,"sources":["../src/alternateSection.jsx"],"names":["styles","altChoices","alignItems","flexDirection","display","padding","marginBottom","width","choice","flex","marginRight","deleteBtn","fill","selectContainer","justifyContent","rightContainer","lengthField","errorText","fontSize","color","paddingTop","inputError","border","borderRadius","Choice","value","props","markup","onChange","e","target","setState","updateText","nextProps","state","classes","onDelete","spellCheck","error","React","Component","PropTypes","object","string","func","isRequired","AlternateSection","choices","onSelect","selectChoices","find","c","length","label","map","parseInt","filter","id","isNaN","index","choiceChanged","lengthChanged","maxLength","labelLengthsArr","newLength","Math","max","choiceRemoved","event","numberValue","minLength","getChoicesMaxLength","updateChoicesIfNeeded","showMaxLength","errors","design","select","handleSelect","min","changeLength","addButton","onAddChoice","val","onChoiceChanged","onRemoveChoice","array","number","bool","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport Button from '@material-ui/core/Button';\nimport Delete from '@material-ui/icons/Delete';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport TextField from '@material-ui/core/TextField';\nimport { withStyles } from '@material-ui/core/styles';\nimport max from 'lodash/max';\nimport classnames from 'classnames';\n\nimport { getAdjustedLength } from './markupUtils';\n\nconst styles = () => ({\n altChoices: {\n alignItems: 'flex-start',\n flexDirection: 'column',\n display: 'flex',\n padding: '20px 0 0 0',\n '& > *': {\n marginBottom: '20px',\n width: '100%'\n }\n },\n choice: {\n flex: '1',\n marginRight: '20px'\n },\n deleteBtn: {\n fill: 'gray'\n },\n selectContainer: {\n alignItems: 'flex-end',\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%'\n },\n rightContainer: {\n alignItems: 'center',\n display: 'flex',\n },\n lengthField: {\n width: '230px',\n marginRight: '20px'\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n paddingTop: '5px'\n },\n inputError: {\n border: '2px solid red',\n borderRadius: '6px'\n }\n});\n\nexport class Choice extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n markup: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n value: PropTypes.string\n };\n\n state = {\n value: this.props.markup\n };\n\n updateText = debounce(this.props.onChange, 300);\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.markup) {\n this.setState({ value: nextProps.markup });\n }\n }\n\n onChange = (e) => {\n const { value } = e.target;\n\n this.setState({ value });\n this.updateText(value);\n };\n\n render() {\n const { value } = this.state;\n const { classes, onDelete, spellCheck, error } = this.props;\n\n return (\n <>\n <div\n style={{\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between'\n }}\n >\n <OutlinedInput\n className={classnames(classes.choice, error && classes.inputError)}\n value={value}\n onChange={this.onChange}\n labelWidth={0}\n disableUnderline\n spellCheck={spellCheck}\n />\n <IconButton\n aria-label=\"delete\"\n className={classes.deleteBtn}\n onClick={onDelete}\n >\n <Delete/>\n </IconButton>\n </div>\n {error && <div className={classes.errorText}>{error}</div>}\n </>\n );\n }\n}\n\nexport class AlternateSection extends React.Component {\n static propTypes = {\n choices: PropTypes.array,\n selectChoices: PropTypes.array.isRequired,\n classes: PropTypes.object.isRequired,\n onSelect: PropTypes.func.isRequired,\n choiceChanged: PropTypes.func.isRequired,\n lengthChanged: PropTypes.func,\n choiceRemoved: PropTypes.func.isRequired,\n value: PropTypes.string,\n maxLength: PropTypes.number,\n showMaxLength: PropTypes.bool\n };\n\n state = {};\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateChoicesIfNeeded(nextProps);\n }\n\n componentDidMount() {\n this.updateChoicesIfNeeded(this.props);\n }\n\n updateChoicesIfNeeded = props => {\n if (!this.state.choices\n || !isEqual(props.choices, this.state.choices)\n || !isEqual(props.choices, this.props.choices)\n ) {\n this.setState({\n choices: props.choices\n });\n }\n };\n\n handleSelect = e => {\n const { onSelect, selectChoices } = this.props;\n const { value } = e.target;\n\n onSelect(selectChoices.find(c => c.value === value));\n };\n\n onAddChoice = () => {\n const { choices } = this.state;\n\n if (choices.length && choices[choices.length - 1].label !== '') {\n const value = max(choices.map(c => parseInt(c.value)).filter(id => !isNaN(id))) || 0;\n\n this.setState({\n choices: [\n ...choices,\n {\n value: `${value + 1}`,\n label: ''\n }\n ]\n });\n }\n };\n\n onChoiceChanged = (choice, value, index) => {\n const { choiceChanged, lengthChanged, maxLength, choices } = this.props;\n\n const labelLengthsArr = choices.map(choice => (choice.label || '').length);\n labelLengthsArr[index] = value.length;\n\n const newLength = Math.max(...labelLengthsArr);\n\n choiceChanged({\n ...choice,\n label: value\n });\n\n if (newLength > maxLength || newLength + 10 <= maxLength) {\n lengthChanged(getAdjustedLength(newLength));\n }\n };\n\n onRemoveChoice = choice => {\n const { choiceRemoved } = this.props;\n\n choiceRemoved(choice.value);\n };\n\n getChoicesMaxLength = () => {\n const { choices } = this.state;\n\n if (!choices) {\n return 1;\n }\n\n const labelLengthsArr = choices.map(choice => (choice.label || '').length);\n\n return Math.max(...labelLengthsArr);\n };\n\n changeLength = event => {\n const { lengthChanged } = this.props;\n const numberValue = parseInt(event.target.value, 10);\n const minLength = this.getChoicesMaxLength();\n\n if (numberValue && numberValue >= minLength && numberValue <= minLength + 10) {\n lengthChanged(numberValue);\n }\n };\n\n render() {\n const {\n classes,\n selectChoices,\n maxLength,\n showMaxLength,\n value,\n spellCheck,\n errors\n } = this.props;\n const { choices } = this.state;\n const minLength = this.getChoicesMaxLength();\n\n return (\n <div className={classes.design}>\n <div\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n displayEmpty\n onChange={this.handleSelect}\n value={value || ''}\n readOnly={showMaxLength}\n >\n <MenuItem value=\"\">\n <em>\n {value ? 'Remove selection' : 'Select a response'}\n </em>\n </MenuItem>\n {selectChoices.map((c, index) => <MenuItem key={index} value={c.value}>{c.label}</MenuItem>)}\n </Select>\n {\n choices && choices.length > 0 &&\n <div className={classes.rightContainer}>\n {maxLength && showMaxLength && (\n <TextField\n className={classes.lengthField}\n label=\"Maximum length (characters)\"\n type=\"number\"\n inputProps={{\n min: minLength,\n max: minLength + 10\n }}\n value={maxLength}\n onChange={this.changeLength}\n />\n )}\n <Button\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={this.onAddChoice}\n >\n Add\n </Button>\n </div>\n }\n </div>\n {errors && errors[0] && <div className={classes.errorText}>{errors[0]}</div>}\n <div\n className={classes.altChoices}\n >\n {\n choices &&\n choices.map((c, index) => index > 0 && (\n <Choice\n key={index}\n classes={classes}\n markup={c.label}\n onChange={val => this.onChoiceChanged(c, val, index)}\n onDelete={() => this.onRemoveChoice(c)}\n spellCheck = {spellCheck}\n error={errors && errors[index]}\n />\n ))\n }\n </div>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(AlternateSection);\n\nexport default Styled;\n"],"file":"alternateSection.js"}
|
|
@@ -11,6 +11,10 @@ var _default = {
|
|
|
11
11
|
prompt: 'Use the inputs to complete the sentence',
|
|
12
12
|
shuffle: true,
|
|
13
13
|
markup: '<p>The {{0}} jumped {{1}} the {{2}}</p>',
|
|
14
|
+
toolbarEditorPosition: 'bottom',
|
|
15
|
+
displayType: 'block',
|
|
16
|
+
spellCheckEnabled: true,
|
|
17
|
+
playerSpellCheckEnabled: true,
|
|
14
18
|
choices: {
|
|
15
19
|
0: [{
|
|
16
20
|
label: 'cow',
|
|
@@ -44,6 +48,7 @@ var _default = {
|
|
|
44
48
|
value: '3'
|
|
45
49
|
}]
|
|
46
50
|
},
|
|
51
|
+
maxLengthPerChoiceEnabled: true,
|
|
47
52
|
rationaleEnabled: true,
|
|
48
53
|
promptEnabled: true,
|
|
49
54
|
teacherInstructionsEnabled: true,
|
|
@@ -62,9 +67,34 @@ var _default = {
|
|
|
62
67
|
settings: true,
|
|
63
68
|
label: 'Rationale'
|
|
64
69
|
},
|
|
70
|
+
spellCheck: {
|
|
71
|
+
label: 'Spellcheck',
|
|
72
|
+
settings: false,
|
|
73
|
+
enabled: true
|
|
74
|
+
},
|
|
75
|
+
playerSpellCheck: {
|
|
76
|
+
label: 'Student Spellcheck',
|
|
77
|
+
settings: true,
|
|
78
|
+
enabled: true
|
|
79
|
+
},
|
|
65
80
|
teacherInstructions: {
|
|
66
81
|
settings: true,
|
|
67
82
|
label: 'Teacher Instructions'
|
|
83
|
+
},
|
|
84
|
+
maxLengthPerChoice: {
|
|
85
|
+
settings: true,
|
|
86
|
+
label: 'Maximum Length Per Choice'
|
|
87
|
+
},
|
|
88
|
+
maxResponseAreas: 10,
|
|
89
|
+
maxImageWidth: {
|
|
90
|
+
teacherInstructions: 300,
|
|
91
|
+
prompt: 300,
|
|
92
|
+
rationale: 300
|
|
93
|
+
},
|
|
94
|
+
maxImageHeight: {
|
|
95
|
+
teacherInstructions: 300,
|
|
96
|
+
prompt: 300,
|
|
97
|
+
rationale: 300
|
|
68
98
|
}
|
|
69
99
|
}
|
|
70
100
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","disabled","mode","prompt","shuffle","markup","choices","label","value","correct","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","configuration","settings","partialScoring","rationale","teacherInstructions"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,QAAQ,EAAE,KADL;AAELC,IAAAA,IAAI,EAAE,QAFD;AAGLC,IAAAA,MAAM,EAAE,yCAHH;AAILC,IAAAA,OAAO,EAAE,IAJJ;AAKLC,IAAAA,MAAM,EAAE,yCALH;AAMLC,IAAAA,OAAO,EAAE;AACP,SAAG,CACD;AACEC,QAAAA,KAAK,EAAE,KADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OADC,EAKD;AACED,QAAAA,KAAK,EAAE,QADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OALC,EASD;AACED,QAAAA,KAAK,EAAE,MADT;AAEEC,QAAAA,KAAK,EAAE,GAFT;AAGEC,QAAAA,OAAO,EAAE;AAHX,OATC,CADI;AAgBP,SAAG,CACD;AACEF,QAAAA,KAAK,EAAE,MADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OADC,EAKD;AACED,QAAAA,KAAK,EAAE,MADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OALC,EASD;AACED,QAAAA,KAAK,EAAE,QADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OATC,CAhBI;AA8BP,SAAG,CACD;AACED,QAAAA,KAAK,EAAE,MADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OADC,EAKD;AACED,QAAAA,KAAK,EAAE,WADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OALC,EASD;AACED,QAAAA,KAAK,EAAE,QADT;AAEEC,QAAAA,KAAK,EAAE;AAFT,OATC;AA9BI,
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","disabled","mode","prompt","shuffle","markup","toolbarEditorPosition","displayType","spellCheckEnabled","playerSpellCheckEnabled","choices","label","value","correct","maxLengthPerChoiceEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","configuration","settings","partialScoring","rationale","spellCheck","enabled","playerSpellCheck","teacherInstructions","maxLengthPerChoice","maxResponseAreas","maxImageWidth","maxImageHeight"],"mappings":"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","sourcesContent":["export default {\n model: {\n disabled: false,\n mode: 'gather',\n prompt: 'Use the inputs to complete the sentence',\n shuffle: true,\n markup: '<p>The {{0}} jumped {{1}} the {{2}}</p>',\n toolbarEditorPosition: 'bottom',\n displayType: 'block',\n spellCheckEnabled:true,\n playerSpellCheckEnabled:true,\n choices: {\n 0: [\n {\n label: 'cow',\n value: '0'\n },\n {\n label: 'cattle',\n value: '1'\n },\n {\n label: 'calf',\n value: '2',\n correct: false\n }\n ],\n 1: [\n {\n label: 'over',\n value: '0'\n },\n {\n label: 'past',\n value: '1'\n },\n {\n label: 'beyond',\n value: '2'\n }\n ],\n 2: [\n {\n label: 'moon',\n value: '0'\n },\n {\n label: 'satellite',\n value: '2'\n },\n {\n label: 'house ',\n value: '3'\n }\n ]\n },\n maxLengthPerChoiceEnabled: true,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true\n },\n configuration: {\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n playerSpellCheck: {\n label: 'Student Spellcheck',\n settings:true,\n enabled:true\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n maxLengthPerChoice: {\n settings: true,\n label: 'Maximum Length Per Choice'\n },\n maxResponseAreas: 10,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n }\n }\n};\n"],"file":"defaults.js"}
|
|
@@ -29,13 +29,15 @@ var _styles = require("@material-ui/core/styles");
|
|
|
29
29
|
|
|
30
30
|
var _OutlinedInput = _interopRequireDefault(require("@material-ui/core/OutlinedInput"));
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
33
33
|
|
|
34
|
-
function
|
|
34
|
+
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; }
|
|
35
|
+
|
|
36
|
+
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; }
|
|
35
37
|
|
|
36
38
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
37
39
|
|
|
38
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
40
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
39
41
|
|
|
40
42
|
var findSlateNode = function findSlateNode(key) {
|
|
41
43
|
return window.document.querySelector('[data-key="' + key + '"]');
|
|
@@ -56,7 +58,9 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
59
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
61
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
62
|
+
markup: ''
|
|
63
|
+
});
|
|
60
64
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDone", function () {
|
|
61
65
|
var newValue = _this.state.markup;
|
|
62
66
|
var _this$props = _this.props,
|
|
@@ -74,7 +78,7 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
74
78
|
});
|
|
75
79
|
var nextText = value.document.getNextText(node.key);
|
|
76
80
|
change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);
|
|
77
|
-
onToolbarDone(change,
|
|
81
|
+
onToolbarDone(change, true);
|
|
78
82
|
onChangeResponse(newValue);
|
|
79
83
|
});
|
|
80
84
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e) {
|
|
@@ -115,7 +119,9 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
115
119
|
}, {
|
|
116
120
|
key: "render",
|
|
117
121
|
value: function render() {
|
|
118
|
-
var
|
|
122
|
+
var _this$props3 = this.props,
|
|
123
|
+
classes = _this$props3.classes,
|
|
124
|
+
error = _this$props3.error;
|
|
119
125
|
var _this$state = this.state,
|
|
120
126
|
markup = _this$state.markup,
|
|
121
127
|
toolbarStyle = _this$state.toolbarStyle;
|
|
@@ -124,6 +130,9 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
124
130
|
backgroundColor: '#E0E1E6'
|
|
125
131
|
})
|
|
126
132
|
}, /*#__PURE__*/_react["default"].createElement(_OutlinedInput["default"], {
|
|
133
|
+
style: {
|
|
134
|
+
width: '100%'
|
|
135
|
+
},
|
|
127
136
|
autoFocus: true,
|
|
128
137
|
labelWidth: 0,
|
|
129
138
|
classes: {
|
|
@@ -131,7 +140,7 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
131
140
|
},
|
|
132
141
|
onChange: this.onChange,
|
|
133
142
|
onBlur: this.onDone,
|
|
134
|
-
value: markup
|
|
143
|
+
value: markup || ''
|
|
135
144
|
}));
|
|
136
145
|
}
|
|
137
146
|
}]);
|
|
@@ -160,6 +169,9 @@ var StyledECRToolbar = (0, _styles.withStyles)({
|
|
|
160
169
|
input: {
|
|
161
170
|
backgroundColor: '#fff',
|
|
162
171
|
padding: '10px 20px 10px 10px'
|
|
172
|
+
},
|
|
173
|
+
errorInput: {
|
|
174
|
+
border: '2px solid red'
|
|
163
175
|
}
|
|
164
176
|
})(ECRToolbar);
|
|
165
177
|
var _default = StyledECRToolbar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ecr-toolbar.jsx"],"names":["findSlateNode","key","window","document","querySelector","ECRToolbar","
|
|
1
|
+
{"version":3,"sources":["../src/ecr-toolbar.jsx"],"names":["findSlateNode","key","window","document","querySelector","ECRToolbar","markup","newValue","state","props","node","value","onToolbarDone","onChangeResponse","update","data","toJSON","change","setNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","e","setState","target","correctChoice","choice","domNode","domNodeRect","getBoundingClientRect","editor","closest","editorRect","top","left","label","toolbarStyle","position","height","width","classes","error","backgroundColor","input","onChange","onDone","React","Component","PropTypes","object","func","isRequired","shape","StyledECRToolbar","respArea","padding","errorInput","border"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\nimport classNames from 'classnames';\n\nconst findSlateNode = key => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nexport class ECRToolbar extends React.Component {\n static propTypes = {\n correctChoice: PropTypes.object,\n classes: PropTypes.object,\n node: PropTypes.object,\n onDone: PropTypes.func,\n onChangeResponse: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n value: PropTypes.shape({\n change: PropTypes.func.isRequired,\n document: PropTypes.shape({\n getNextText: PropTypes.func.isRequired\n })\n })\n };\n\n state = {\n markup: ''\n };\n\n componentDidMount() {\n const { correctChoice, node } = this.props;\n const choice = correctChoice || {};\n\n const domNode = findSlateNode(node.key);\n\n if (domNode) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editor = domNode.closest('[data-slate-editor]');\n const editorRect = editor.getBoundingClientRect();\n const top = domNodeRect.top - editorRect.top;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n markup: choice.label,\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 20}px`,\n left: `${left + 20}px`,\n width: domNodeRect.width\n }\n });\n }\n }\n\n onDone = () => {\n const { markup: newValue } = this.state;\n const { node, value, onToolbarDone, onChangeResponse } = this.props;\n const update = { ...node.data.toJSON(), value: newValue };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n onToolbarDone(change, true);\n onChangeResponse(newValue);\n };\n\n onChange = e => this.setState({ markup: e.target.value });\n\n render() {\n const { classes, error } = this.props;\n const { markup, toolbarStyle } = this.state;\n\n return (\n <div\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6'\n }}\n >\n <OutlinedInput\n style={{ width: '100%' }}\n autoFocus\n labelWidth={0}\n classes={{\n input: classes.input\n }}\n onChange={this.onChange}\n onBlur={this.onDone}\n value={markup || ''}\n />\n </div>\n );\n }\n}\n\nconst StyledECRToolbar = withStyles({\n respArea: {\n backgroundColor: '#fff'\n },\n input: {\n backgroundColor: '#fff',\n padding: '10px 20px 10px 10px'\n },\n errorInput: {\n border: '2px solid red'\n }\n})(ECRToolbar);\n\nexport default StyledECRToolbar;\n"],"file":"ecr-toolbar.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -41,13 +41,13 @@ var _defaults2 = _interopRequireDefault(require("./defaults"));
|
|
|
41
41
|
|
|
42
42
|
var _markupUtils = require("./markupUtils");
|
|
43
43
|
|
|
44
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
44
|
+
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; }
|
|
45
45
|
|
|
46
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
46
|
+
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; }
|
|
47
47
|
|
|
48
48
|
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); }; }
|
|
49
49
|
|
|
50
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
50
|
+
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; } }
|
|
51
51
|
|
|
52
52
|
var log = (0, _debug["default"])('explicit-constructed-response:configure');
|
|
53
53
|
|