@pie-element/explicit-constructed-response 7.1.4 → 7.1.5-next.12

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.
@@ -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 value = e.target.value;
136
+ var strippedValue = (0, _markupUtils.stripHtmlTags)(e);
133
137
 
134
138
  _this.setState({
135
- value: value
139
+ value: strippedValue
136
140
  });
137
141
 
138
- _this.updateText(value);
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(_OutlinedInput["default"], {
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
- spellCheck: spellCheck,
178
- inputProps: inputProps
179
- }), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
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":"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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 = (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":"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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 },\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 },\n};\n"],"file":"defaults.js"}
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 _OutlinedInput = _interopRequireDefault(require("@material-ui/core/OutlinedInput"));
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
- var update = _objectSpread(_objectSpread({}, node.data.toJSON()), {}, {
71
- value: newValue
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: update
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(newValue);
89
+ onChangeResponse(sanitizedMarkup);
81
90
  });
82
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e) {
83
- return _this.setState({
84
- markup: e.target.value
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: _objectSpread(_objectSpread({}, toolbarStyle), {}, {
131
- backgroundColor: '#E0E1E6'
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
- labelWidth: 0,
139
- classes: {
140
- input: classes.input
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
- onChange: this.onChange,
143
- onBlur: this.onDone,
144
- value: markup || '',
145
- inputProps: inputProps
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
- respArea: {
171
- backgroundColor: theme.palette.common.white
172
- },
173
- input: {
220
+ markup: {
174
221
  backgroundColor: theme.palette.common.white,
175
- padding: '10px 20px 10px 10px'
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"}