@pie-element/explicit-constructed-response 7.1.5-next.0 → 7.1.5-next.13
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/configure/lib/alternateResponses.js +8 -4
- package/configure/lib/alternateResponses.js.map +1 -1
- package/configure/lib/alternateSection.js +27 -15
- package/configure/lib/alternateSection.js.map +1 -1
- package/configure/lib/defaults.js +13 -1
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/ecr-toolbar.js +81 -37
- package/configure/lib/ecr-toolbar.js.map +1 -1
- package/configure/lib/index.js +18 -1
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +11 -4
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +11 -1
- package/configure/lib/markupUtils.js.map +1 -1
- package/controller/lib/index.js +2 -1
- package/controller/lib/index.js.map +1 -1
- package/docs/config-schema.json +16 -0
- package/docs/config-schema.json.md +12 -0
- package/docs/pie-schema.json +6 -0
- package/docs/pie-schema.json.md +6 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/main.js +6 -3
- package/lib/main.js.map +1 -1
- package/module/configure.js +858 -775
- package/module/controller.js +1 -0
- package/module/element.js +20 -17
- package/module/manifest.json +2 -2
- package/module/print.js +18 -16
- package/package.json +2 -2
|
@@ -182,7 +182,8 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
|
|
|
182
182
|
maxLengthPerChoice = _this$props2$model.maxLengthPerChoice,
|
|
183
183
|
maxLengthPerChoiceEnabled = _this$props2$model.maxLengthPerChoiceEnabled,
|
|
184
184
|
spellCheck = _this$props2.spellCheck,
|
|
185
|
-
choicesErrors = _this$props2.choicesErrors
|
|
185
|
+
choicesErrors = _this$props2.choicesErrors,
|
|
186
|
+
pluginProps = _this$props2.pluginProps;
|
|
186
187
|
return /*#__PURE__*/_react["default"].createElement("div", null, (0, _map["default"])(choices, function (c, key) {
|
|
187
188
|
// if maxLengthPerChoiceEnabled is true, we display all the choices
|
|
188
189
|
if (c && (maxLengthPerChoiceEnabled || c.length > 1)) {
|
|
@@ -207,7 +208,8 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
|
|
|
207
208
|
choices: c,
|
|
208
209
|
maxLength: maxLengthPerChoice[key],
|
|
209
210
|
showMaxLength: maxLengthPerChoiceEnabled,
|
|
210
|
-
spellCheck: spellCheck
|
|
211
|
+
spellCheck: spellCheck,
|
|
212
|
+
pluginProps: pluginProps
|
|
211
213
|
});
|
|
212
214
|
}
|
|
213
215
|
}), choices && Object.keys(this.state.values).length !== Object.keys(choices).length && /*#__PURE__*/_react["default"].createElement(_alternateSection["default"], {
|
|
@@ -222,7 +224,8 @@ var AlternateResponses = /*#__PURE__*/function (_React$Component) {
|
|
|
222
224
|
return _this2.onChoiceRemoved(value);
|
|
223
225
|
},
|
|
224
226
|
selectChoices: this.getRemainingChoices(),
|
|
225
|
-
spellCheck: spellCheck
|
|
227
|
+
spellCheck: spellCheck,
|
|
228
|
+
pluginProps: pluginProps
|
|
226
229
|
}));
|
|
227
230
|
}
|
|
228
231
|
}]);
|
|
@@ -236,7 +239,8 @@ exports.AlternateResponses = AlternateResponses;
|
|
|
236
239
|
onChange: _propTypes["default"].func.isRequired,
|
|
237
240
|
onLengthChange: _propTypes["default"].func.isRequired,
|
|
238
241
|
maxLengthPerChoiceEnabled: _propTypes["default"].bool.isRequired,
|
|
239
|
-
spellCheck: _propTypes["default"].bool
|
|
242
|
+
spellCheck: _propTypes["default"].bool,
|
|
243
|
+
pluginProps: _propTypes["default"].object
|
|
240
244
|
});
|
|
241
245
|
var _default = AlternateResponses;
|
|
242
246
|
exports["default"] = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/alternateResponses.jsx"],"names":["AlternateResponses","maxLengthPerChoice","props","model","state","choices","values","Object","keys","length","maxLengthPerChoiceEnabled","selectedValues","obj","c","key","setState","valueKey","arr","push","label","value","choice","onChange","sectionChoices","isNew","find","newChoices","reduce","newVal","section","onLengthChange","nextProps","updateChoicesIfNeeded","spellCheck","choicesErrors","selected","onSectionSelect","onChoiceChanged","onChoiceRemoved","onLengthChanged","getRemainingChoices","React","Component","PropTypes","object","isRequired","func","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport AlternateSection from './alternateSection';\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n choicesErrors: PropTypes.object,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onLengthChange: PropTypes.func.isRequired,\n maxLengthPerChoiceEnabled: PropTypes.bool.isRequired,\n spellCheck: PropTypes.bool,\n };\n\n state = { maxLengthPerChoice: cloneDeep(this.props.model.maxLengthPerChoice) };\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 (\n !this.state.choices ||\n !isEqual(this.state.choices, props.model.choices) ||\n !isEqual(props.model.choices, this.props.model.choices) ||\n (this.state.values && Object.keys(this.state.values).length !== Object.keys(this.props.model.choices).length) ||\n props.maxLengthPerChoiceEnabled !== this.props.maxLengthPerChoiceEnabled\n ) {\n const { choices, maxLengthPerChoice } = props.model;\n\n const selectedValues = reduce(\n choices,\n (obj, c, key) => {\n // if maxLengthPerChoiceEnabled is true, we display all the choices\n if (c && (props.maxLengthPerChoiceEnabled || c.length > 1)) {\n obj[key] = c[0];\n }\n\n return obj;\n },\n {},\n );\n\n this.setState({\n choices: props.model.choices,\n values: selectedValues,\n maxLengthPerChoice: cloneDeep(maxLengthPerChoice),\n });\n }\n };\n\n getRemainingChoices = (valueKey) => {\n const { choices } = this.state;\n\n return reduce(\n choices,\n (arr, c, key) => {\n if (c && c.length === 1 && !valueKey) {\n arr.push({\n label: c[0].label,\n value: key,\n });\n }\n\n return arr;\n },\n [],\n );\n };\n\n onChoiceChanged = (choice, key) => {\n const { onChange } = this.props;\n const { choices } = this.state;\n const sectionChoices = choices[key] || [];\n\n const isNew = !sectionChoices.find((c) => c.value === choice.value);\n\n const newChoices = sectionChoices.reduce((arr, c) => {\n const newVal = c.value === choice.value ? choice : c;\n\n arr.push(newVal);\n\n return arr;\n }, []);\n\n if (isNew) {\n newChoices.push(choice);\n }\n\n onChange({\n ...choices,\n [key]: newChoices,\n });\n };\n\n onChoiceRemoved = (value, section) => {\n const { onChange } = this.props;\n const { choices } = this.state;\n const sectionChoices = choices[section] || [];\n\n const newChoices = sectionChoices.reduce((arr, c) => {\n if (c.value === value) {\n return arr;\n }\n\n arr.push(c);\n\n return arr;\n }, []);\n\n onChange({\n ...choices,\n [section]: newChoices,\n });\n };\n\n onSectionSelect = (choice, key) => {\n const { onChange } = this.props;\n const { choices, values } = this.state;\n\n if (choices[key] && choices[key].length > 1) {\n if (!choice) {\n onChange({\n ...choices,\n [key]: [choices[key][0]],\n });\n }\n } else {\n this.setState({\n choices: {\n ...choices,\n [key]: [\n ...choices[key],\n {\n label: '',\n value: '1',\n },\n ],\n },\n values: {\n ...values,\n [key]: choices[key][0],\n },\n });\n }\n };\n\n onLengthChanged = (value, key) => {\n const { model, onLengthChange } = this.props;\n const { maxLengthPerChoice } = model;\n\n maxLengthPerChoice[key] = value;\n onLengthChange(maxLengthPerChoice);\n };\n\n render() {\n const { choices } = this.state;\n const {\n model: { maxLengthPerChoice, maxLengthPerChoiceEnabled },\n spellCheck,\n choicesErrors,\n } = this.props;\n\n return (\n <div>\n {map(choices, (c, key) => {\n // if maxLengthPerChoiceEnabled is true, we display all the choices\n if (c && (maxLengthPerChoiceEnabled || c.length > 1)) {\n const selected = this.state.values[key];\n\n return (\n <AlternateSection\n key={key}\n value={selected && selected.value}\n errors={choicesErrors && choicesErrors[key]}\n onSelect={(choice) => this.onSectionSelect(choice, key)}\n choiceChanged={(choice) => this.onChoiceChanged(choice, key)}\n choiceRemoved={(value) => this.onChoiceRemoved(value, key)}\n lengthChanged={(value) => this.onLengthChanged(value, key)}\n selectChoices={[selected]}\n choices={c}\n maxLength={maxLengthPerChoice[key]}\n showMaxLength={maxLengthPerChoiceEnabled}\n spellCheck={spellCheck}\n />\n );\n }\n })}\n\n {choices && Object.keys(this.state.values).length !== Object.keys(choices).length && (\n <AlternateSection\n value=\"\"\n onSelect={(choice) => this.onSectionSelect(choice, choice.value)}\n choiceChanged={(choice) => this.onChoiceChanged(choice)}\n choiceRemoved={(value) => this.onChoiceRemoved(value)}\n selectChoices={this.getRemainingChoices()}\n spellCheck={spellCheck}\n />\n )}\n </div>\n );\n }\n}\n\nexport default AlternateResponses;\n"],"file":"alternateResponses.js"}
|
|
1
|
+
{"version":3,"sources":["../src/alternateResponses.jsx"],"names":["AlternateResponses","maxLengthPerChoice","props","model","state","choices","values","Object","keys","length","maxLengthPerChoiceEnabled","selectedValues","obj","c","key","setState","valueKey","arr","push","label","value","choice","onChange","sectionChoices","isNew","find","newChoices","reduce","newVal","section","onLengthChange","nextProps","updateChoicesIfNeeded","spellCheck","choicesErrors","pluginProps","selected","onSectionSelect","onChoiceChanged","onChoiceRemoved","onLengthChanged","getRemainingChoices","React","Component","PropTypes","object","isRequired","func","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport AlternateSection from './alternateSection';\n\nexport class AlternateResponses extends React.Component {\n static propTypes = {\n choicesErrors: PropTypes.object,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onLengthChange: PropTypes.func.isRequired,\n maxLengthPerChoiceEnabled: PropTypes.bool.isRequired,\n spellCheck: PropTypes.bool,\n pluginProps: PropTypes.object\n };\n\n state = { maxLengthPerChoice: cloneDeep(this.props.model.maxLengthPerChoice) };\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 (\n !this.state.choices ||\n !isEqual(this.state.choices, props.model.choices) ||\n !isEqual(props.model.choices, this.props.model.choices) ||\n (this.state.values && Object.keys(this.state.values).length !== Object.keys(this.props.model.choices).length) ||\n props.maxLengthPerChoiceEnabled !== this.props.maxLengthPerChoiceEnabled\n ) {\n const { choices, maxLengthPerChoice } = props.model;\n\n const selectedValues = reduce(\n choices,\n (obj, c, key) => {\n // if maxLengthPerChoiceEnabled is true, we display all the choices\n if (c && (props.maxLengthPerChoiceEnabled || c.length > 1)) {\n obj[key] = c[0];\n }\n\n return obj;\n },\n {},\n );\n\n this.setState({\n choices: props.model.choices,\n values: selectedValues,\n maxLengthPerChoice: cloneDeep(maxLengthPerChoice),\n });\n }\n };\n\n getRemainingChoices = (valueKey) => {\n const { choices } = this.state;\n\n return reduce(\n choices,\n (arr, c, key) => {\n if (c && c.length === 1 && !valueKey) {\n arr.push({\n label: c[0].label,\n value: key,\n });\n }\n\n return arr;\n },\n [],\n );\n };\n\n onChoiceChanged = (choice, key) => {\n const { onChange } = this.props;\n const { choices } = this.state;\n const sectionChoices = choices[key] || [];\n\n const isNew = !sectionChoices.find((c) => c.value === choice.value);\n\n const newChoices = sectionChoices.reduce((arr, c) => {\n const newVal = c.value === choice.value ? choice : c;\n\n arr.push(newVal);\n\n return arr;\n }, []);\n\n if (isNew) {\n newChoices.push(choice);\n }\n\n onChange({\n ...choices,\n [key]: newChoices,\n });\n };\n\n onChoiceRemoved = (value, section) => {\n const { onChange } = this.props;\n const { choices } = this.state;\n const sectionChoices = choices[section] || [];\n\n const newChoices = sectionChoices.reduce((arr, c) => {\n if (c.value === value) {\n return arr;\n }\n\n arr.push(c);\n\n return arr;\n }, []);\n\n onChange({\n ...choices,\n [section]: newChoices,\n });\n };\n\n onSectionSelect = (choice, key) => {\n const { onChange } = this.props;\n const { choices, values } = this.state;\n\n if (choices[key] && choices[key].length > 1) {\n if (!choice) {\n onChange({\n ...choices,\n [key]: [choices[key][0]],\n });\n }\n } else {\n this.setState({\n choices: {\n ...choices,\n [key]: [\n ...choices[key],\n {\n label: '',\n value: '1',\n },\n ],\n },\n values: {\n ...values,\n [key]: choices[key][0],\n },\n });\n }\n };\n\n onLengthChanged = (value, key) => {\n const { model, onLengthChange } = this.props;\n const { maxLengthPerChoice } = model;\n\n maxLengthPerChoice[key] = value;\n onLengthChange(maxLengthPerChoice);\n };\n\n render() {\n const { choices } = this.state;\n const {\n model: { maxLengthPerChoice, maxLengthPerChoiceEnabled },\n spellCheck,\n choicesErrors,\n pluginProps\n } = this.props;\n\n return (\n <div>\n {map(choices, (c, key) => {\n // if maxLengthPerChoiceEnabled is true, we display all the choices\n if (c && (maxLengthPerChoiceEnabled || c.length > 1)) {\n const selected = this.state.values[key];\n\n return (\n <AlternateSection\n key={key}\n value={selected && selected.value}\n errors={choicesErrors && choicesErrors[key]}\n onSelect={(choice) => this.onSectionSelect(choice, key)}\n choiceChanged={(choice) => this.onChoiceChanged(choice, key)}\n choiceRemoved={(value) => this.onChoiceRemoved(value, key)}\n lengthChanged={(value) => this.onLengthChanged(value, key)}\n selectChoices={[selected]}\n choices={c}\n maxLength={maxLengthPerChoice[key]}\n showMaxLength={maxLengthPerChoiceEnabled}\n spellCheck={spellCheck}\n pluginProps={pluginProps}\n />\n );\n }\n })}\n\n {choices && Object.keys(this.state.values).length !== Object.keys(choices).length && (\n <AlternateSection\n value=\"\"\n onSelect={(choice) => this.onSectionSelect(choice, choice.value)}\n choiceChanged={(choice) => this.onChoiceChanged(choice)}\n choiceRemoved={(value) => this.onChoiceRemoved(value)}\n selectChoices={this.getRemainingChoices()}\n spellCheck={spellCheck}\n pluginProps={pluginProps}\n />\n )}\n </div>\n );\n }\n}\n\nexport default AlternateResponses;\n"],"file":"alternateResponses.js"}
|
|
@@ -9,6 +9,8 @@ exports["default"] = exports.Choice = exports.AlternateSection = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
11
|
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
12
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
15
|
|
|
14
16
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -51,6 +53,8 @@ var _max = _interopRequireDefault(require("lodash/max"));
|
|
|
51
53
|
|
|
52
54
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
53
55
|
|
|
56
|
+
var _editableHtml = require("@pie-lib/pie-toolbox/editable-html");
|
|
57
|
+
|
|
54
58
|
var _markupUtils = require("./markupUtils");
|
|
55
59
|
|
|
56
60
|
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; }
|
|
@@ -129,13 +133,13 @@ var Choice = /*#__PURE__*/function (_React$Component) {
|
|
|
129
133
|
});
|
|
130
134
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateText", (0, _debounce["default"])(_this.props.onChange, 300));
|
|
131
135
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e) {
|
|
132
|
-
var
|
|
136
|
+
var strippedValue = (0, _markupUtils.stripHtmlTags)(e);
|
|
133
137
|
|
|
134
138
|
_this.setState({
|
|
135
|
-
value:
|
|
139
|
+
value: strippedValue
|
|
136
140
|
});
|
|
137
141
|
|
|
138
|
-
_this.updateText(
|
|
142
|
+
_this.updateText(strippedValue);
|
|
139
143
|
});
|
|
140
144
|
return _this;
|
|
141
145
|
}
|
|
@@ -158,7 +162,8 @@ var Choice = /*#__PURE__*/function (_React$Component) {
|
|
|
158
162
|
onDelete = _this$props.onDelete,
|
|
159
163
|
spellCheck = _this$props.spellCheck,
|
|
160
164
|
error = _this$props.error,
|
|
161
|
-
showMaxLength = _this$props.showMaxLength
|
|
165
|
+
showMaxLength = _this$props.showMaxLength,
|
|
166
|
+
pluginProps = _this$props.pluginProps;
|
|
162
167
|
var inputProps = showMaxLength ? {} : {
|
|
163
168
|
maxLength: 25
|
|
164
169
|
};
|
|
@@ -168,15 +173,18 @@ var Choice = /*#__PURE__*/function (_React$Component) {
|
|
|
168
173
|
display: 'flex',
|
|
169
174
|
justifyContent: 'space-between'
|
|
170
175
|
}
|
|
171
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
176
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, (0, _extends2["default"])({
|
|
172
177
|
className: (0, _classnames["default"])(classes.choice, error && classes.inputError),
|
|
173
|
-
value: value,
|
|
174
|
-
onChange: this.onChange,
|
|
175
|
-
labelWidth: 0,
|
|
176
178
|
disableUnderline: true,
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
179
|
+
onChange: this.onChange,
|
|
180
|
+
markup: value || '',
|
|
181
|
+
activePlugins: ['languageCharacters'],
|
|
182
|
+
pluginProps: pluginProps,
|
|
183
|
+
languageCharactersProps: [{
|
|
184
|
+
language: 'spanish'
|
|
185
|
+
}],
|
|
186
|
+
spellCheck: spellCheck
|
|
187
|
+
}, inputProps)), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
|
|
180
188
|
"aria-label": "delete",
|
|
181
189
|
className: classes.deleteBtn,
|
|
182
190
|
onClick: onDelete
|
|
@@ -197,7 +205,8 @@ exports.Choice = Choice;
|
|
|
197
205
|
onDelete: _propTypes["default"].func.isRequired,
|
|
198
206
|
value: _propTypes["default"].string,
|
|
199
207
|
spellCheck: _propTypes["default"].bool,
|
|
200
|
-
showMaxLength: _propTypes["default"].bool
|
|
208
|
+
showMaxLength: _propTypes["default"].bool,
|
|
209
|
+
pluginProps: _propTypes["default"].object
|
|
201
210
|
});
|
|
202
211
|
|
|
203
212
|
var AlternateSection = /*#__PURE__*/function (_React$Component2) {
|
|
@@ -320,7 +329,8 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
|
|
|
320
329
|
showMaxLength = _this$props2.showMaxLength,
|
|
321
330
|
value = _this$props2.value,
|
|
322
331
|
spellCheck = _this$props2.spellCheck,
|
|
323
|
-
errors = _this$props2.errors
|
|
332
|
+
errors = _this$props2.errors,
|
|
333
|
+
pluginProps = _this$props2.pluginProps;
|
|
324
334
|
var choices = this.state.choices;
|
|
325
335
|
var minLength = this.getChoicesMaxLength();
|
|
326
336
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -374,7 +384,8 @@ var AlternateSection = /*#__PURE__*/function (_React$Component2) {
|
|
|
374
384
|
},
|
|
375
385
|
spellCheck: spellCheck,
|
|
376
386
|
error: errors && errors[index],
|
|
377
|
-
showMaxLength: showMaxLength
|
|
387
|
+
showMaxLength: showMaxLength,
|
|
388
|
+
pluginProps: pluginProps
|
|
378
389
|
});
|
|
379
390
|
})));
|
|
380
391
|
}
|
|
@@ -395,7 +406,8 @@ exports.AlternateSection = AlternateSection;
|
|
|
395
406
|
value: _propTypes["default"].string,
|
|
396
407
|
maxLength: _propTypes["default"].number,
|
|
397
408
|
showMaxLength: _propTypes["default"].bool,
|
|
398
|
-
spellCheck: _propTypes["default"].bool
|
|
409
|
+
spellCheck: _propTypes["default"].bool,
|
|
410
|
+
pluginProps: _propTypes["default"].object
|
|
399
411
|
});
|
|
400
412
|
var Styled = (0, _styles.withStyles)(styles)(AlternateSection);
|
|
401
413
|
var _default = Styled;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/alternateSection.jsx"],"names":["styles","theme","design","marginBottom","spacing","unit","altChoices","alignItems","flexDirection","display","paddingTop","width","choice","flex","marginRight","deleteBtn","fill","palette","grey","selectContainer","justifyContent","rightContainer","lengthField","errorText","fontSize","typography","color","error","main","inputError","border","borderRadius","Choice","value","props","markup","onChange","e","target","setState","updateText","nextProps","state","classes","onDelete","spellCheck","showMaxLength","inputProps","maxLength","React","Component","PropTypes","object","string","func","isRequired","bool","AlternateSection","choices","onSelect","selectChoices","find","c","length","label","map","parseInt","filter","id","isNaN","index","choiceChanged","lengthChanged","labelLengthsArr","newLength","Math","max","choiceRemoved","event","numberValue","minLength","getChoicesMaxLength","updateChoicesIfNeeded","errors","select","handleSelect","min","changeLength","addButton","onAddChoice","val","onChoiceChanged","onRemoveChoice","array","number","Styled"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,MAAM,EAAE;AACNC,MAAAA,YAAY,EAAEF,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB;AAD7B,KADiB;AAIzBC,IAAAA,UAAU,EAAE;AACVC,MAAAA,UAAU,EAAE,YADF;AAEVC,MAAAA,aAAa,EAAE,QAFL;AAGVC,MAAAA,OAAO,EAAE,MAHC;AAIVC,MAAAA,UAAU,EAAET,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB,GAJvB;AAKV,eAAS;AACPF,QAAAA,YAAY,EAAEF,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB,GAD5B;AAEPM,QAAAA,KAAK,EAAE;AAFA;AALC,KAJa;AAczBC,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAE,GADA;AAENC,MAAAA,WAAW,EAAEb,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB;AAF5B,KAdiB;AAkBzBU,IAAAA,SAAS,EAAE;AACTC,MAAAA,IAAI,EAAEf,KAAK,CAACgB,OAAN,CAAcC,IAAd,CAAmB,GAAnB;AADG,KAlBc;AAqBzBC,IAAAA,eAAe,EAAE;AACfZ,MAAAA,UAAU,EAAE,UADG;AAEfE,MAAAA,OAAO,EAAE,MAFM;AAGfW,MAAAA,cAAc,EAAE,eAHD;AAIfT,MAAAA,KAAK,EAAE;AAJQ,KArBQ;AA2BzBU,IAAAA,cAAc,EAAE;AACdd,MAAAA,UAAU,EAAE,QADE;AAEdE,MAAAA,OAAO,EAAE;AAFK,KA3BS;AA+BzBa,IAAAA,WAAW,EAAE;AACXX,MAAAA,KAAK,EAAE,OADI;AAEXG,MAAAA,WAAW,EAAEb,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB;AAFvB,KA/BY;AAmCzBkB,IAAAA,SAAS,EAAE;AACTC,MAAAA,QAAQ,EAAEvB,KAAK,CAACwB,UAAN,CAAiBD,QAAjB,GAA4B,CAD7B;AAETE,MAAAA,KAAK,EAAEzB,KAAK,CAACgB,OAAN,CAAcU,KAAd,CAAoBC,IAFlB;AAGTlB,MAAAA,UAAU,EAAET,KAAK,CAACG,OAAN,CAAcC,IAAd,GAAqB;AAHxB,KAnCc;AAwCzBwB,IAAAA,UAAU,EAAE;AACVC,MAAAA,MAAM,sBAAe7B,KAAK,CAACgB,OAAN,CAAcU,KAAd,CAAoBC,IAAnC,CADI;AAEVG,MAAAA,YAAY,EAAE;AAFJ;AAxCa,GAAZ;AAAA,CAAf;;IA8CaC,M;;;;;;;;;;;;;;;8FAYH;AACNC,MAAAA,KAAK,EAAE,MAAKC,KAAL,CAAWC;AADZ,K;mGAIK,0BAAS,MAAKD,KAAL,CAAWE,QAApB,EAA8B,GAA9B,C;iGAQF,UAACC,CAAD,EAAO;AAChB,UAAQJ,KAAR,GAAkBI,CAAC,CAACC,MAApB,CAAQL,KAAR;;AAEA,YAAKM,QAAL,CAAc;AAAEN,QAAAA,KAAK,EAALA;AAAF,OAAd;;AACA,YAAKO,UAAL,CAAgBP,KAAhB;AACD,K;;;;;;WAXD,0CAAiCQ,SAAjC,EAA4C;AAC1C,UAAIA,SAAS,CAACN,MAAd,EAAsB;AACpB,aAAKI,QAAL,CAAc;AAAEN,UAAAA,KAAK,EAAEQ,SAAS,CAACN;AAAnB,SAAd;AACD;AACF;;;WASD,kBAAS;AACP,UAAQF,KAAR,GAAkB,KAAKS,KAAvB,CAAQT,KAAR;AACA,wBAAgE,KAAKC,KAArE;AAAA,UAAQS,OAAR,eAAQA,OAAR;AAAA,UAAiBC,QAAjB,eAAiBA,QAAjB;AAAA,UAA2BC,UAA3B,eAA2BA,UAA3B;AAAA,UAAuClB,KAAvC,eAAuCA,KAAvC;AAAA,UAA8CmB,aAA9C,eAA8CA,aAA9C;AACA,UAAMC,UAAU,GAAGD,aAAa,GAAG,EAAH,GAAQ;AAAEE,QAAAA,SAAS,EAAE;AAAb,OAAxC;AAGA,0BACE,gCAAC,iBAAD,CAAO,QAAP,qBACE;AACE,QAAA,KAAK,EAAE;AACLzC,UAAAA,UAAU,EAAE,QADP;AAELE,UAAAA,OAAO,EAAE,MAFJ;AAGLW,UAAAA,cAAc,EAAE;AAHX;AADT,sBAOE,gCAAC,yBAAD;AACE,QAAA,SAAS,EAAE,4BAAWuB,OAAO,CAAC/B,MAAnB,EAA2Be,KAAK,IAAIgB,OAAO,CAACd,UAA5C,CADb;AAEE,QAAA,KAAK,EAAEI,KAFT;AAGE,QAAA,QAAQ,EAAE,KAAKG,QAHjB;AAIE,QAAA,UAAU,EAAE,CAJd;AAKE,QAAA,gBAAgB,MALlB;AAME,QAAA,UAAU,EAAES,UANd;AAOE,QAAA,UAAU,EAAEE;AAPd,QAPF,eAgBE,gCAAC,sBAAD;AAAY,sBAAW,QAAvB;AAAgC,QAAA,SAAS,EAAEJ,OAAO,CAAC5B,SAAnD;AAA8D,QAAA,OAAO,EAAE6B;AAAvE,sBACE,gCAAC,kBAAD,OADF,CAhBF,CADF,EAqBGjB,KAAK,iBAAI;AAAK,QAAA,SAAS,EAAEgB,OAAO,CAACpB;AAAxB,SAAoCI,KAApC,CArBZ,CADF;AAyBD;;;EA9DyBsB,kBAAMC,S;;;iCAArBlB,M,eACQ;AACjBW,EAAAA,OAAO,EAAEQ,sBAAUC,MADF;AAEjBzB,EAAAA,KAAK,EAAEwB,sBAAUE,MAFA;AAGjBlB,EAAAA,MAAM,EAAEgB,sBAAUE,MAHD;AAIjBjB,EAAAA,QAAQ,EAAEe,sBAAUG,IAAV,CAAeC,UAJR;AAKjBX,EAAAA,QAAQ,EAAEO,sBAAUG,IAAV,CAAeC,UALR;AAMjBtB,EAAAA,KAAK,EAAEkB,sBAAUE,MANA;AAOjBR,EAAAA,UAAU,EAAEM,sBAAUK,IAPL;AAQjBV,EAAAA,aAAa,EAAEK,sBAAUK;AARR,C;;IAgERC,gB;;;;;;;;;;;;;;;+FAgBH,E;+GAUgB,UAACvB,KAAD,EAAW;AACjC,UACE,CAAC,OAAKQ,KAAL,CAAWgB,OAAZ,IACA,CAAC,yBAAQxB,KAAK,CAACwB,OAAd,EAAuB,OAAKhB,KAAL,CAAWgB,OAAlC,CADD,IAEA,CAAC,yBAAQxB,KAAK,CAACwB,OAAd,EAAuB,OAAKxB,KAAL,CAAWwB,OAAlC,CAHH,EAIE;AACA,eAAKnB,QAAL,CAAc;AACZmB,UAAAA,OAAO,EAAExB,KAAK,CAACwB;AADH,SAAd;AAGD;AACF,K;sGAEc,UAACrB,CAAD,EAAO;AACpB,yBAAoC,OAAKH,KAAzC;AAAA,UAAQyB,QAAR,gBAAQA,QAAR;AAAA,UAAkBC,aAAlB,gBAAkBA,aAAlB;AACA,UAAQ3B,KAAR,GAAkBI,CAAC,CAACC,MAApB,CAAQL,KAAR;AAEA0B,MAAAA,QAAQ,CAACC,aAAa,CAACC,IAAd,CAAmB,UAACC,CAAD;AAAA,eAAOA,CAAC,CAAC7B,KAAF,KAAYA,KAAnB;AAAA,OAAnB,CAAD,CAAR;AACD,K;qGAEa,YAAM;AAClB,UAAQyB,OAAR,GAAoB,OAAKhB,KAAzB,CAAQgB,OAAR;;AAEA,UAAIA,OAAO,CAACK,MAAR,IAAkBL,OAAO,CAACA,OAAO,CAACK,MAAR,GAAiB,CAAlB,CAAP,CAA4BC,KAA5B,KAAsC,EAA5D,EAAgE;AAC9D,YAAM/B,KAAK,GAAG,qBAAIyB,OAAO,CAACO,GAAR,CAAY,UAACH,CAAD;AAAA,iBAAOI,QAAQ,CAACJ,CAAC,CAAC7B,KAAH,CAAf;AAAA,SAAZ,EAAsCkC,MAAtC,CAA6C,UAACC,EAAD;AAAA,iBAAQ,CAACC,KAAK,CAACD,EAAD,CAAd;AAAA,SAA7C,CAAJ,KAAyE,CAAvF;;AAEA,eAAK7B,QAAL,CAAc;AACZmB,UAAAA,OAAO,gDACFA,OADE,IAEL;AACEzB,YAAAA,KAAK,YAAKA,KAAK,GAAG,CAAb,CADP;AAEE+B,YAAAA,KAAK,EAAE;AAFT,WAFK;AADK,SAAd;AASD;AACF,K;yGAEiB,UAACpD,MAAD,EAASqB,KAAT,EAAgBqC,KAAhB,EAA0B;AAC1C,0BAA6D,OAAKpC,KAAlE;AAAA,UAAQqC,aAAR,iBAAQA,aAAR;AAAA,UAAuBC,aAAvB,iBAAuBA,aAAvB;AAAA,UAAsCxB,SAAtC,iBAAsCA,SAAtC;AAAA,UAAiDU,OAAjD,iBAAiDA,OAAjD;AAEA,UAAMe,eAAe,GAAGf,OAAO,CAACO,GAAR,CAAY,UAACrD,MAAD;AAAA,eAAY,CAACA,MAAM,CAACoD,KAAP,IAAgB,EAAjB,EAAqBD,MAAjC;AAAA,OAAZ,CAAxB;AACAU,MAAAA,eAAe,CAACH,KAAD,CAAf,GAAyBrC,KAAK,CAAC8B,MAA/B;AAEA,UAAMW,SAAS,GAAGC,IAAI,CAACC,GAAL,OAAAD,IAAI,sCAAQF,eAAR,EAAtB;AAEAF,MAAAA,aAAa,iCACR3D,MADQ;AAEXoD,QAAAA,KAAK,EAAE/B;AAFI,SAAb;;AAKA,UAAIyC,SAAS,GAAG1B,SAAZ,IAAyB0B,SAAS,GAAG,EAAZ,IAAkB1B,SAA/C,EAA0D;AACxDwB,QAAAA,aAAa,CAAC,oCAAkBE,SAAlB,CAAD,CAAb;AACD;AACF,K;wGAEgB,UAAC9D,MAAD,EAAY;AAC3B,UAAQiE,aAAR,GAA0B,OAAK3C,KAA/B,CAAQ2C,aAAR;AAEAA,MAAAA,aAAa,CAACjE,MAAM,CAACqB,KAAR,CAAb;AACD,K;6GAEqB,YAAM;AAC1B,UAAQyB,OAAR,GAAoB,OAAKhB,KAAzB,CAAQgB,OAAR;;AAEA,UAAI,CAACA,OAAL,EAAc;AACZ,eAAO,CAAP;AACD;;AAED,UAAMe,eAAe,GAAGf,OAAO,CAACO,GAAR,CAAY,UAACrD,MAAD;AAAA,eAAY,CAACA,MAAM,CAACoD,KAAP,IAAgB,EAAjB,EAAqBD,MAAjC;AAAA,OAAZ,CAAxB;AAEA,aAAOY,IAAI,CAACC,GAAL,OAAAD,IAAI,sCAAQF,eAAR,EAAX;AACD,K;sGAEc,UAACK,KAAD,EAAW;AACxB,UAAQN,aAAR,GAA0B,OAAKtC,KAA/B,CAAQsC,aAAR;AACA,UAAMO,WAAW,GAAGb,QAAQ,CAACY,KAAK,CAACxC,MAAN,CAAaL,KAAd,EAAqB,EAArB,CAA5B;;AACA,UAAM+C,SAAS,GAAG,OAAKC,mBAAL,EAAlB;;AAEA,UAAIF,WAAW,IAAIA,WAAW,IAAIC,SAA9B,IAA2CD,WAAW,IAAIC,SAAS,GAAG,EAA1E,EAA8E;AAC5ER,QAAAA,aAAa,CAACO,WAAD,CAAb;AACD;AACF,K;;;;;;WAzFD,0CAAiCtC,SAAjC,EAA4C;AAC1C,WAAKyC,qBAAL,CAA2BzC,SAA3B;AACD;;;WAED,6BAAoB;AAClB,WAAKyC,qBAAL,CAA2B,KAAKhD,KAAhC;AACD;;;WAqFD,kBAAS;AAAA;;AACP,yBAAwF,KAAKA,KAA7F;AAAA,UAAQS,OAAR,gBAAQA,OAAR;AAAA,UAAiBiB,aAAjB,gBAAiBA,aAAjB;AAAA,UAAgCZ,SAAhC,gBAAgCA,SAAhC;AAAA,UAA2CF,aAA3C,gBAA2CA,aAA3C;AAAA,UAA0Db,KAA1D,gBAA0DA,KAA1D;AAAA,UAAiEY,UAAjE,gBAAiEA,UAAjE;AAAA,UAA6EsC,MAA7E,gBAA6EA,MAA7E;AACA,UAAQzB,OAAR,GAAoB,KAAKhB,KAAzB,CAAQgB,OAAR;AACA,UAAMsB,SAAS,GAAG,KAAKC,mBAAL,EAAlB;AAEA,0BACE;AAAK,QAAA,SAAS,EAAEtC,OAAO,CAACzC;AAAxB,sBACE;AAAK,QAAA,SAAS,EAAEyC,OAAO,CAACxB;AAAxB,sBACE,gCAAC,kBAAD;AACE,QAAA,SAAS,EAAEwB,OAAO,CAACyC,MADrB;AAEE,QAAA,YAAY,MAFd;AAGE,QAAA,QAAQ,EAAE,KAAKC,YAHjB;AAIE,QAAA,KAAK,EAAEpD,KAAK,IAAI,EAJlB;AAKE,QAAA,QAAQ,EAAEa;AALZ,sBAOE,gCAAC,oBAAD;AAAU,QAAA,KAAK,EAAC;AAAhB,sBACE,4CAAKb,KAAK,GAAG,kBAAH,GAAwB,mBAAlC,CADF,CAPF,EAUG2B,aAAa,CAACK,GAAd,CAAkB,UAACH,CAAD,EAAIQ,KAAJ;AAAA,4BACjB,gCAAC,oBAAD;AAAU,UAAA,GAAG,EAAEA,KAAf;AAAsB,UAAA,KAAK,EAAER,CAAF,aAAEA,CAAF,uBAAEA,CAAC,CAAE7B;AAAhC,WACG6B,CADH,aACGA,CADH,uBACGA,CAAC,CAAEE,KADN,CADiB;AAAA,OAAlB,CAVH,CADF,EAkBGN,OAAO,IAAIA,OAAO,CAACK,MAAR,GAAiB,CAA5B,iBACC;AAAK,QAAA,SAAS,EAAEpB,OAAO,CAACtB;AAAxB,SACG2B,SAAS,IAAIF,aAAb,iBACC,gCAAC,qBAAD;AACE,QAAA,SAAS,EAAEH,OAAO,CAACrB,WADrB;AAEE,QAAA,KAAK,EAAC,6BAFR;AAGE,QAAA,IAAI,EAAC,QAHP;AAIE,QAAA,UAAU,EAAE;AACVgE,UAAAA,GAAG,EAAEN,SADK;AAEVJ,UAAAA,GAAG,EAAEI,SAAS,GAAG;AAFP,SAJd;AAQE,QAAA,KAAK,EAAEhC,SART;AASE,QAAA,QAAQ,EAAE,KAAKuC;AATjB,QAFJ,eAcE,gCAAC,kBAAD;AAAQ,QAAA,SAAS,EAAE5C,OAAO,CAAC6C,SAA3B;AAAsC,QAAA,OAAO,EAAC,WAA9C;AAA0D,QAAA,KAAK,EAAC,SAAhE;AAA0E,QAAA,OAAO,EAAE,KAAKC;AAAxF,eAdF,CAnBJ,CADF,EAwCGN,MAAM,IAAIA,MAAM,CAAC,CAAD,CAAhB,iBAAuB;AAAK,QAAA,SAAS,EAAExC,OAAO,CAACpB;AAAxB,SAAoC4D,MAAM,CAAC,CAAD,CAA1C,CAxC1B,eA0CE;AAAK,QAAA,SAAS,EAAExC,OAAO,CAACrC;AAAxB,SACGoD,OAAO,IACNA,OAAO,CAACO,GAAR,CACE,UAACH,CAAD,EAAIQ,KAAJ;AAAA,eACEA,KAAK,GAAG,CAAR,iBACE,gCAAC,MAAD;AACE,UAAA,GAAG,EAAEA,KADP;AAEE,UAAA,OAAO,EAAE3B,OAFX;AAGE,UAAA,MAAM,EAAEmB,CAAC,CAACE,KAHZ;AAIE,UAAA,QAAQ,EAAE,kBAAC0B,GAAD;AAAA,mBAAS,MAAI,CAACC,eAAL,CAAqB7B,CAArB,EAAwB4B,GAAxB,EAA6BpB,KAA7B,CAAT;AAAA,WAJZ;AAKE,UAAA,QAAQ,EAAE;AAAA,mBAAM,MAAI,CAACsB,cAAL,CAAoB9B,CAApB,CAAN;AAAA,WALZ;AAME,UAAA,UAAU,EAAEjB,UANd;AAOE,UAAA,KAAK,EAAEsC,MAAM,IAAIA,MAAM,CAACb,KAAD,CAPzB;AAQE,UAAA,aAAa,EAAExB;AARjB,UAFJ;AAAA,OADF,CAFJ,CA1CF,CADF;AA+DD;;;EAjLmCG,kBAAMC,S;;;iCAA/BO,gB,eACQ;AACjBC,EAAAA,OAAO,EAAEP,sBAAU0C,KADF;AAEjBjC,EAAAA,aAAa,EAAET,sBAAU0C,KAAV,CAAgBtC,UAFd;AAGjBZ,EAAAA,OAAO,EAAEQ,sBAAUC,MAAV,CAAiBG,UAHT;AAIjB4B,EAAAA,MAAM,EAAEhC,sBAAUC,MAJD;AAKjBO,EAAAA,QAAQ,EAAER,sBAAUG,IAAV,CAAeC,UALR;AAMjBgB,EAAAA,aAAa,EAAEpB,sBAAUG,IAAV,CAAeC,UANb;AAOjBiB,EAAAA,aAAa,EAAErB,sBAAUG,IAPR;AAQjBuB,EAAAA,aAAa,EAAE1B,sBAAUG,IAAV,CAAeC,UARb;AASjBtB,EAAAA,KAAK,EAAEkB,sBAAUE,MATA;AAUjBL,EAAAA,SAAS,EAAEG,sBAAU2C,MAVJ;AAWjBhD,EAAAA,aAAa,EAAEK,sBAAUK,IAXR;AAYjBX,EAAAA,UAAU,EAAEM,sBAAUK;AAZL,C;AAmLrB,IAAMuC,MAAM,GAAG,wBAAW/F,MAAX,EAAmByD,gBAAnB,CAAf;eAEesC,M","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 = (theme) => ({\n design: {\n marginBottom: theme.spacing.unit / 2,\n },\n altChoices: {\n alignItems: 'flex-start',\n flexDirection: 'column',\n display: 'flex',\n paddingTop: theme.spacing.unit * 2.5,\n '& > *': {\n marginBottom: theme.spacing.unit * 2.5,\n width: '100%',\n },\n },\n choice: {\n flex: '1',\n marginRight: theme.spacing.unit * 2.5,\n },\n deleteBtn: {\n fill: theme.palette.grey[600],\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: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n inputError: {\n border: `2px solid ${theme.palette.error.main}`,\n borderRadius: '6px',\n },\n});\n\nexport class Choice extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n error: PropTypes.string,\n markup: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n value: PropTypes.string,\n spellCheck: PropTypes.bool,\n showMaxLength: PropTypes.bool,\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, showMaxLength } = this.props;\n const inputProps = showMaxLength ? {} : { maxLength: 25 };\n\n\n return (\n <React.Fragment>\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 inputProps={inputProps}\n />\n <IconButton aria-label=\"delete\" className={classes.deleteBtn} onClick={onDelete}>\n <Delete />\n </IconButton>\n </div>\n {error && <div className={classes.errorText}>{error}</div>}\n </React.Fragment>\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 errors: PropTypes.object,\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 spellCheck: 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 (\n !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 { classes, selectChoices, maxLength, showMaxLength, value, spellCheck, errors } = this.props;\n const { choices } = this.state;\n const minLength = this.getChoicesMaxLength();\n\n return (\n <div className={classes.design}>\n <div className={classes.selectContainer}>\n <Select\n className={classes.select}\n displayEmpty\n onChange={this.handleSelect}\n value={value || ''}\n readOnly={showMaxLength}\n >\n <MenuItem value=\"\">\n <em>{value ? 'Remove selection' : 'Select a response'}</em>\n </MenuItem>\n {selectChoices.map((c, index) => (\n <MenuItem key={index} value={c?.value}>\n {c?.label}\n </MenuItem>\n ))}\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 className={classes.addButton} variant=\"contained\" color=\"primary\" onClick={this.onAddChoice}>\n Add\n </Button>\n </div>\n )}\n </div>\n {errors && errors[0] && <div className={classes.errorText}>{errors[0]}</div>}\n\n <div className={classes.altChoices}>\n {choices &&\n choices.map(\n (c, index) =>\n 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 showMaxLength={showMaxLength}\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","theme","design","marginBottom","spacing","unit","altChoices","alignItems","flexDirection","display","paddingTop","width","choice","flex","marginRight","deleteBtn","fill","palette","grey","selectContainer","justifyContent","rightContainer","lengthField","errorText","fontSize","typography","color","error","main","inputError","border","borderRadius","Choice","value","props","markup","onChange","e","strippedValue","setState","updateText","nextProps","state","classes","onDelete","spellCheck","showMaxLength","pluginProps","inputProps","maxLength","language","React","Component","PropTypes","object","string","func","isRequired","bool","AlternateSection","choices","onSelect","selectChoices","target","find","c","length","label","map","parseInt","filter","id","isNaN","index","choiceChanged","lengthChanged","labelLengthsArr","newLength","Math","max","choiceRemoved","event","numberValue","minLength","getChoicesMaxLength","updateChoicesIfNeeded","errors","select","handleSelect","min","changeLength","addButton","onAddChoice","val","onChoiceChanged","onRemoveChoice","array","number","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';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { stripHtmlTags, getAdjustedLength } from './markupUtils';\n\nconst styles = (theme) => ({\n design: {\n marginBottom: theme.spacing.unit / 2,\n },\n altChoices: {\n alignItems: 'flex-start',\n flexDirection: 'column',\n display: 'flex',\n paddingTop: theme.spacing.unit * 2.5,\n '& > *': {\n marginBottom: theme.spacing.unit * 2.5,\n width: '100%',\n },\n },\n choice: {\n flex: '1',\n marginRight: theme.spacing.unit * 2.5,\n },\n deleteBtn: {\n fill: theme.palette.grey[600],\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: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n inputError: {\n border: `2px solid ${theme.palette.error.main}`,\n borderRadius: '6px',\n },\n});\n\nexport class Choice extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n error: PropTypes.string,\n markup: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n value: PropTypes.string,\n spellCheck: PropTypes.bool,\n showMaxLength: PropTypes.bool,\n pluginProps: PropTypes.object\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 strippedValue = stripHtmlTags(e);\n this.setState({ value: strippedValue });\n this.updateText(strippedValue);\n };\n\n render() {\n const { value } = this.state;\n const { classes, onDelete, spellCheck, error, showMaxLength, pluginProps } = this.props;\n const inputProps = showMaxLength ? {} : { maxLength: 25 };\n\n return (\n <React.Fragment>\n <div\n style={{\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-between',\n }}\n >\n <EditableHtml\n className={classnames(classes.choice, error && classes.inputError)}\n disableUnderline\n onChange={this.onChange}\n markup={value || ''}\n activePlugins={['languageCharacters']}\n pluginProps={pluginProps}\n languageCharactersProps={[{ language: 'spanish' }]}\n spellCheck={spellCheck}\n {...inputProps}\n />\n <IconButton aria-label=\"delete\" className={classes.deleteBtn} onClick={onDelete}>\n <Delete />\n </IconButton>\n </div>\n {error && <div className={classes.errorText}>{error}</div>}\n </React.Fragment>\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 errors: PropTypes.object,\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 spellCheck: PropTypes.bool,\n pluginProps: PropTypes.object\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 (\n !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 { classes, selectChoices, maxLength, showMaxLength, value, spellCheck, errors, pluginProps } = this.props;\n const { choices } = this.state;\n const minLength = this.getChoicesMaxLength();\n\n return (\n <div className={classes.design}>\n <div className={classes.selectContainer}>\n <Select\n className={classes.select}\n displayEmpty\n onChange={this.handleSelect}\n value={value || ''}\n readOnly={showMaxLength}\n >\n <MenuItem value=\"\">\n <em>{value ? 'Remove selection' : 'Select a response'}</em>\n </MenuItem>\n {selectChoices.map((c, index) => (\n <MenuItem key={index} value={c?.value}>\n {c?.label}\n </MenuItem>\n ))}\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 className={classes.addButton} variant=\"contained\" color=\"primary\" onClick={this.onAddChoice}>\n Add\n </Button>\n </div>\n )}\n </div>\n {errors && errors[0] && <div className={classes.errorText}>{errors[0]}</div>}\n\n <div className={classes.altChoices}>\n {choices &&\n choices.map(\n (c, index) =>\n 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 showMaxLength={showMaxLength}\n pluginProps={pluginProps}\n />\n ),\n )}\n </div>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(AlternateSection);\n\nexport default Styled;\n"],"file":"alternateSection.js"}
|
|
@@ -19,7 +19,8 @@ var _default = {
|
|
|
19
19
|
studentInstructionsEnabled: true,
|
|
20
20
|
teacherInstructions: '',
|
|
21
21
|
teacherInstructionsEnabled: true,
|
|
22
|
-
toolbarEditorPosition: 'bottom'
|
|
22
|
+
toolbarEditorPosition: 'bottom',
|
|
23
|
+
responseAreaInputConfiguration: {}
|
|
23
24
|
},
|
|
24
25
|
configuration: {
|
|
25
26
|
baseInputConfiguration: {
|
|
@@ -154,6 +155,17 @@ var _default = {
|
|
|
154
155
|
languageChoices: {
|
|
155
156
|
label: 'Language Choices',
|
|
156
157
|
options: []
|
|
158
|
+
},
|
|
159
|
+
responseAreaInputConfiguration: {
|
|
160
|
+
inputConfiguration: {
|
|
161
|
+
characters: {
|
|
162
|
+
disabled: true
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
spanishButton: {
|
|
167
|
+
settings: true,
|
|
168
|
+
label: 'Disable Spanish Characters'
|
|
157
169
|
}
|
|
158
170
|
}
|
|
159
171
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","choices","displayType","markup","maxLengthPerChoiceEnabled","playerSpellCheckEnabled","prompt","promptEnabled","rationale","rationaleEnabled","spellCheckEnabled","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","html","disabled","audio","video","image","settings","label","inputConfiguration","required","partialScoring","settingsPanelDisabled","spellCheck","enabled","editSource","playerSpellCheck","template","h3","blockquote","maxLengthPerChoice","maxResponseAreas","maxImageWidth","maxImageHeight","withRubric","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,OAAO,EAAE,EADJ;AAELC,IAAAA,WAAW,EAAE,OAFR;AAGLC,IAAAA,MAAM,EAAE,EAHH;AAILC,IAAAA,yBAAyB,EAAE,IAJtB;AAKLC,IAAAA,uBAAuB,EAAE,IALpB;AAMLC,IAAAA,MAAM,EAAE,EANH;AAOLC,IAAAA,aAAa,EAAE,IAPV;AAQLC,IAAAA,SAAS,EAAE,EARN;AASLC,IAAAA,gBAAgB,EAAE,IATb;AAULC,IAAAA,iBAAiB,EAAE,IAVd;AAWLC,IAAAA,0BAA0B,EAAE,IAXvB;AAYLC,IAAAA,mBAAmB,EAAE,EAZhB;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,qBAAqB,EAAE;
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","choices","displayType","markup","maxLengthPerChoiceEnabled","playerSpellCheckEnabled","prompt","promptEnabled","rationale","rationaleEnabled","spellCheckEnabled","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","responseAreaInputConfiguration","configuration","baseInputConfiguration","html","disabled","audio","video","image","settings","label","inputConfiguration","required","partialScoring","settingsPanelDisabled","spellCheck","enabled","editSource","playerSpellCheck","template","h3","blockquote","maxLengthPerChoice","maxResponseAreas","maxImageWidth","maxImageHeight","withRubric","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options","characters","spanishButton"],"mappings":"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","sourcesContent":["export default {\n model: {\n choices: {},\n displayType: 'block',\n markup: '',\n maxLengthPerChoiceEnabled: true,\n playerSpellCheckEnabled: true,\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n spellCheckEnabled: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n responseAreaInputConfiguration: {},\n },\n configuration: {\n baseInputConfiguration: {\n html: { disabled: true },\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n editSource: {\n label: 'Edit Source',\n settings: false,\n enabled: false,\n },\n playerSpellCheck: {\n label: 'Student Spellcheck',\n settings: true,\n enabled: true,\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n template: {\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n h3: { disabled: true },\n blockquote: { disabled: true },\n },\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 withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n responseAreaInputConfiguration: {\n inputConfiguration: {\n characters: {\n disabled: true\n },\n },\n },\n spanishButton: {\n settings: true,\n label: 'Disable Spanish Characters',\n },\n },\n};\n"],"file":"defaults.js"}
|
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = exports.ECRToolbar = void 0;
|
|
9
9
|
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
10
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
13
|
|
|
12
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -27,7 +29,9 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
27
29
|
|
|
28
30
|
var _styles = require("@material-ui/core/styles");
|
|
29
31
|
|
|
30
|
-
var
|
|
32
|
+
var _editableHtml = require("@pie-lib/pie-toolbox/editable-html");
|
|
33
|
+
|
|
34
|
+
var _markupUtils = require("./markupUtils");
|
|
31
35
|
|
|
32
36
|
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; }
|
|
33
37
|
|
|
@@ -57,33 +61,51 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
57
61
|
|
|
58
62
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
59
63
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
60
|
-
markup: ''
|
|
64
|
+
markup: '',
|
|
65
|
+
toolbarStyle: {}
|
|
61
66
|
});
|
|
62
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDone", function () {
|
|
63
|
-
var newValue = _this.state.markup;
|
|
67
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDone", function (markup) {
|
|
64
68
|
var _this$props = _this.props,
|
|
65
69
|
node = _this$props.node,
|
|
66
70
|
value = _this$props.value,
|
|
67
71
|
onToolbarDone = _this$props.onToolbarDone,
|
|
68
72
|
onChangeResponse = _this$props.onChangeResponse;
|
|
73
|
+
var sanitizedMarkup = (0, _markupUtils.stripHtmlTags)(markup);
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
_this.setState({
|
|
76
|
+
markup: sanitizedMarkup
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
var updatedData = _objectSpread(_objectSpread({}, node.data.toJSON()), {}, {
|
|
80
|
+
value: sanitizedMarkup
|
|
72
81
|
});
|
|
73
82
|
|
|
74
83
|
var change = value.change().setNodeByKey(node.key, {
|
|
75
|
-
data:
|
|
84
|
+
data: updatedData
|
|
76
85
|
});
|
|
77
86
|
var nextText = value.document.getNextText(node.key);
|
|
78
87
|
change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);
|
|
79
88
|
onToolbarDone(change, true);
|
|
80
|
-
onChangeResponse(
|
|
89
|
+
onChangeResponse(sanitizedMarkup);
|
|
81
90
|
});
|
|
82
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "
|
|
83
|
-
|
|
84
|
-
|
|
91
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRespAreaChange", function (respAreaMarkup) {
|
|
92
|
+
_this.setState({
|
|
93
|
+
respAreaMarkup: respAreaMarkup
|
|
85
94
|
});
|
|
86
95
|
});
|
|
96
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onKeyDown", function (event) {
|
|
97
|
+
if (event.key === 'Enter') {
|
|
98
|
+
_this.onAddChoice();
|
|
99
|
+
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onBlur", function () {
|
|
104
|
+
if (_this.clickedInside) {
|
|
105
|
+
_this.clickedInside = false;
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
87
109
|
return _this;
|
|
88
110
|
}
|
|
89
111
|
|
|
@@ -109,7 +131,7 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
109
131
|
position: 'absolute',
|
|
110
132
|
top: "".concat(top + domNodeRect.height + 20, "px"),
|
|
111
133
|
left: "".concat(left + 20, "px"),
|
|
112
|
-
width: domNodeRect.width
|
|
134
|
+
width: "".concat(domNodeRect.width - 4, "px")
|
|
113
135
|
}
|
|
114
136
|
});
|
|
115
137
|
}
|
|
@@ -117,9 +139,13 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
117
139
|
}, {
|
|
118
140
|
key: "render",
|
|
119
141
|
value: function render() {
|
|
142
|
+
var _this2 = this;
|
|
143
|
+
|
|
120
144
|
var _this$props3 = this.props,
|
|
121
145
|
classes = _this$props3.classes,
|
|
122
|
-
maxLengthPerChoiceEnabled = _this$props3.maxLengthPerChoiceEnabled
|
|
146
|
+
maxLengthPerChoiceEnabled = _this$props3.maxLengthPerChoiceEnabled,
|
|
147
|
+
pluginProps = _this$props3.pluginProps,
|
|
148
|
+
spellCheck = _this$props3.spellCheck;
|
|
123
149
|
var _this$state = this.state,
|
|
124
150
|
markup = _this$state.markup,
|
|
125
151
|
toolbarStyle = _this$state.toolbarStyle;
|
|
@@ -127,23 +153,45 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
127
153
|
maxLength: 25
|
|
128
154
|
};
|
|
129
155
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
130
|
-
style:
|
|
131
|
-
|
|
132
|
-
})
|
|
133
|
-
}, /*#__PURE__*/_react["default"].createElement(_OutlinedInput["default"], {
|
|
134
|
-
style: {
|
|
135
|
-
width: '100%'
|
|
136
|
-
},
|
|
156
|
+
style: toolbarStyle
|
|
157
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, (0, _extends2["default"])({
|
|
137
158
|
autoFocus: true,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
159
|
+
className: classes.markup,
|
|
160
|
+
disableUnderline: true,
|
|
161
|
+
onChange: function onChange(respAreaMarkup) {
|
|
162
|
+
if (_this2.preventDone) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
_this2.onRespAreaChange(respAreaMarkup);
|
|
167
|
+
},
|
|
168
|
+
onDone: function onDone(val) {
|
|
169
|
+
if (_this2.preventDone) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
_this2.onDone(val);
|
|
174
|
+
},
|
|
175
|
+
onBlur: function onBlur(e) {
|
|
176
|
+
var inInInsertCharacter = e.relatedTarget && e.relatedTarget.closest('.insert-character-dialog');
|
|
177
|
+
_this2.preventDone = inInInsertCharacter;
|
|
178
|
+
|
|
179
|
+
_this2.onBlur(e);
|
|
141
180
|
},
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
181
|
+
onKeyDown: this.onKeyDown,
|
|
182
|
+
markup: markup || '',
|
|
183
|
+
activePlugins: ['languageCharacters'],
|
|
184
|
+
pluginProps: pluginProps,
|
|
185
|
+
languageCharactersProps: [{
|
|
186
|
+
language: 'spanish'
|
|
187
|
+
}],
|
|
188
|
+
minHeight: '10px',
|
|
189
|
+
maxHeight: '10px',
|
|
190
|
+
spellCheck: spellCheck,
|
|
191
|
+
toolbarOpts: {
|
|
192
|
+
minWidth: 'auto'
|
|
193
|
+
}
|
|
194
|
+
}, inputProps)));
|
|
147
195
|
}
|
|
148
196
|
}]);
|
|
149
197
|
return ECRToolbar;
|
|
@@ -163,19 +211,15 @@ exports.ECRToolbar = ECRToolbar;
|
|
|
163
211
|
getNextText: _propTypes["default"].func.isRequired
|
|
164
212
|
})
|
|
165
213
|
}),
|
|
166
|
-
maxLengthPerChoiceEnabled: _propTypes["default"].bool
|
|
214
|
+
maxLengthPerChoiceEnabled: _propTypes["default"].bool,
|
|
215
|
+
pluginProps: _propTypes["default"].object,
|
|
216
|
+
spellCheck: _propTypes["default"].bool
|
|
167
217
|
});
|
|
168
218
|
var StyledECRToolbar = (0, _styles.withStyles)(function (theme) {
|
|
169
219
|
return {
|
|
170
|
-
|
|
171
|
-
backgroundColor: theme.palette.common.white
|
|
172
|
-
},
|
|
173
|
-
input: {
|
|
220
|
+
markup: {
|
|
174
221
|
backgroundColor: theme.palette.common.white,
|
|
175
|
-
|
|
176
|
-
},
|
|
177
|
-
errorInput: {
|
|
178
|
-
border: "2px solid ".concat(theme.palette.error.main)
|
|
222
|
+
outline: 'none'
|
|
179
223
|
}
|
|
180
224
|
};
|
|
181
225
|
})(ECRToolbar);
|
|
@@ -1 +1 @@
|
|
|
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","maxLengthPerChoiceEnabled","inputProps","maxLength","backgroundColor","input","onChange","onDone","React","Component","PropTypes","object","func","isRequired","shape","bool","StyledECRToolbar","theme","respArea","palette","common","white","padding","errorInput","border","error","main"],"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';\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 maxLengthPerChoiceEnabled: PropTypes.bool,\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, maxLengthPerChoiceEnabled } = this.props;\n const { markup, toolbarStyle } = this.state;\n const inputProps = maxLengthPerChoiceEnabled ? {} : { maxLength: 25 };\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 inputProps={inputProps}\n />\n </div>\n );\n }\n}\n\nconst StyledECRToolbar = withStyles((theme) => ({\n respArea: {\n backgroundColor: theme.palette.common.white,\n },\n input: {\n backgroundColor: theme.palette.common.white,\n padding: '10px 20px 10px 10px',\n },\n errorInput: {\n border: `2px solid ${theme.palette.error.main}`,\n },\n}))(ECRToolbar);\n\nexport default StyledECRToolbar;\n"],"file":"ecr-toolbar.js"}
|
|
1
|
+
{"version":3,"sources":["../src/ecr-toolbar.jsx"],"names":["findSlateNode","key","window","document","querySelector","ECRToolbar","markup","toolbarStyle","props","node","value","onToolbarDone","onChangeResponse","sanitizedMarkup","setState","updatedData","data","toJSON","change","setNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","respAreaMarkup","event","onAddChoice","clickedInside","correctChoice","choice","domNode","domNodeRect","getBoundingClientRect","editor","closest","editorRect","top","left","label","position","height","width","classes","maxLengthPerChoiceEnabled","pluginProps","spellCheck","state","inputProps","maxLength","preventDone","onRespAreaChange","val","onDone","e","inInInsertCharacter","relatedTarget","onBlur","onKeyDown","language","minWidth","React","Component","PropTypes","object","func","isRequired","shape","bool","StyledECRToolbar","theme","backgroundColor","palette","common","white","outline"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { stripHtmlTags } from './markupUtils';\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 maxLengthPerChoiceEnabled: PropTypes.bool,\n pluginProps: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n state = {\n markup: '',\n toolbarStyle: {},\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 - 4}px`,\n },\n });\n }\n }\n\n onDone = (markup) => {\n const { node, value, onToolbarDone, onChangeResponse } = this.props;\n const sanitizedMarkup = stripHtmlTags(markup);\n this.setState({ markup: sanitizedMarkup });\n\n const updatedData = { ...node.data.toJSON(), value: sanitizedMarkup };\n const change = value.change().setNodeByKey(node.key, { data: updatedData });\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n onToolbarDone(change, true);\n onChangeResponse(sanitizedMarkup);\n };\n\n onRespAreaChange = (respAreaMarkup) => {\n this.setState({ respAreaMarkup });\n };\n\n onKeyDown = (event) => {\n if (event.key === 'Enter') {\n this.onAddChoice();\n return false;\n }\n };\n\n onBlur = () => {\n if (this.clickedInside) {\n this.clickedInside = false;\n return;\n }\n };\n\n render() {\n const { classes, maxLengthPerChoiceEnabled, pluginProps, spellCheck } = this.props;\n const { markup, toolbarStyle } = this.state;\n const inputProps = maxLengthPerChoiceEnabled ? {} : { maxLength: 25 };\n\n return (\n <div style={toolbarStyle}>\n <EditableHtml\n autoFocus={true}\n className={classes.markup}\n disableUnderline\n onChange={(respAreaMarkup) => {\n if (this.preventDone) {\n return;\n }\n\n this.onRespAreaChange(respAreaMarkup);\n }}\n onDone={(val) => {\n if (this.preventDone) {\n return;\n }\n\n this.onDone(val);\n }}\n onBlur={(e) => {\n const inInInsertCharacter = e.relatedTarget && e.relatedTarget.closest('.insert-character-dialog');\n\n this.preventDone = inInInsertCharacter;\n\n this.onBlur(e);\n }}\n onKeyDown={this.onKeyDown}\n markup={markup || ''}\n activePlugins={['languageCharacters']}\n pluginProps={pluginProps}\n languageCharactersProps={[{ language: 'spanish' }]}\n minHeight={'10px'}\n maxHeight={'10px'}\n spellCheck={spellCheck}\n toolbarOpts={{\n minWidth: 'auto'\n }}\n {...inputProps}\n />\n </div>\n );\n }\n}\n\nconst StyledECRToolbar = withStyles((theme) => ({\n markup: {\n backgroundColor: theme.palette.common.white,\n outline: 'none',\n },\n}))(ECRToolbar);\n\nexport default StyledECRToolbar;\n"],"file":"ecr-toolbar.js"}
|