@pie-element/explicit-constructed-response 3.9.3-next.397 → 3.9.3-next.408

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/lib/main.js CHANGED
@@ -31,6 +31,8 @@ var _debounce = _interopRequireDefault(require("lodash/debounce"));
31
31
 
32
32
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
33
33
 
34
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
35
+
34
36
  var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
35
37
 
36
38
  var _maskMarkup = require("@pie-lib/mask-markup");
@@ -64,12 +66,19 @@ var Main = /*#__PURE__*/function (_React$Component) {
64
66
  showCorrectAnswer: _this.props.alwaysShowCorrect || false,
65
67
  value: _this.props.value
66
68
  });
69
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getChangeSession", function (maxLengthPerChoice) {
70
+ return maxLengthPerChoice && maxLengthPerChoice.every(function (val, i, arr) {
71
+ return val === arr[0] && val === 1;
72
+ }) ? _this.props.onChange : (0, _debounce["default"])(_this.props.onChange, 1500, {
73
+ maxWait: 1500
74
+ });
75
+ });
67
76
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleShowCorrect", function () {
68
77
  _this.setState({
69
78
  showCorrectAnswer: !_this.state.showCorrectAnswer
70
79
  });
71
80
  });
72
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeSession", (0, _debounce["default"])(_this.props.onChange, 1500));
81
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeSession", _this.getChangeSession(_this.props.maxLengthPerChoice));
73
82
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (value) {
74
83
  _this.setState({
75
84
  value: value
@@ -83,6 +92,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
83
92
  (0, _createClass2["default"])(Main, [{
84
93
  key: "UNSAFE_componentWillReceiveProps",
85
94
  value: function UNSAFE_componentWillReceiveProps(nextProps) {
95
+ var maxLengthPerChoice = this.props.maxLengthPerChoice;
96
+
86
97
  if ((0, _isEmpty["default"])(nextProps.feedback)) {
87
98
  this.setState({
88
99
  showCorrectAnswer: false
@@ -94,6 +105,10 @@ var Main = /*#__PURE__*/function (_React$Component) {
94
105
  showCorrectAnswer: true
95
106
  });
96
107
  }
108
+
109
+ if (maxLengthPerChoice && !(0, _isEqual["default"])(maxLengthPerChoice, nextProps.maxLengthPerChoice)) {
110
+ this.changeSession = this.getChangeSession(nextProps.maxLengthPerChoice);
111
+ }
97
112
  }
98
113
  }, {
99
114
  key: "render",
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.js"],"names":["Main","showCorrectAnswer","props","alwaysShowCorrect","value","setState","state","onChange","changeSession","nextProps","feedback","classes","mode","prompt","rationale","teacherInstructions","note","showNote","env","animationsDisabled","maxLengthPerChoice","role","displayNote","mainClasses","mainContainer","noBorderColor","teacherInstructionsDiv","__html","rationaleDiv","collapsible","hidden","visible","toggleShowCorrect","React","Component","PropTypes","object","isRequired","string","bool","disabled","markup","func","array","styles","theme","padding","spacing","unit","color","text","backgroundColor","background","margin","borderColor"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEmpty from 'lodash/isEmpty';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { ConstructedResponse } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n prompt: PropTypes.string,\n note: PropTypes.string,\n showNote: PropTypes.bool,\n env: PropTypes.object,\n rationale: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n teacherInstructions: PropTypes.string,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n maxLengthPerChoice: PropTypes.array\n };\n\n static defaultProps = {\n value: {}\n };\n\n state = {\n showCorrectAnswer: this.props.alwaysShowCorrect || false,\n value: this.props.value\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrectAnswer: true });\n }\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n changeSession = debounce(this.props.onChange, 1500);\n\n onChange = value => {\n this.setState({ value });\n\n this.changeSession(value);\n };\n\n render() {\n const { showCorrectAnswer, value } = this.state;\n const {\n classes,\n mode,\n prompt,\n rationale,\n teacherInstructions,\n note,\n showNote,\n env,\n animationsDisabled,\n alwaysShowCorrect,\n maxLengthPerChoice\n } = this.props;\n const { role } = env || {};\n const displayNote = (showCorrectAnswer || mode === 'view' && role === 'instructor') && showNote && note;\n const mainClasses = classNames([classes.mainContainer, alwaysShowCorrect ? classes.noBorderColor : {}]);\n\n const teacherInstructionsDiv = <div\n className=\"teacher-instructions\"\n dangerouslySetInnerHTML={{ __html: teacherInstructions }}\n />;\n\n const rationaleDiv = <div className=\"rationale\" dangerouslySetInnerHTML={{ __html: rationale }}/>;\n\n return (\n <div className={mainClasses}>\n {\n teacherInstructions && hasText(teacherInstructions) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n : teacherInstructionsDiv}\n </div>\n )\n }\n {!alwaysShowCorrect && <CorrectAnswerToggle\n show={mode === 'evaluate'}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />}\n {prompt && <div className=\"prompt\" dangerouslySetInnerHTML={{ __html: prompt }}/>}\n <ConstructedResponse\n {...this.props}\n onChange={this.onChange}\n showCorrectAnswer={showCorrectAnswer}\n value={value}\n maxLength={maxLengthPerChoice}\n />\n {displayNote && (\n <div\n className={classNames(classes.note, 'note')}\n dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }}\n />\n )}\n {rationale && hasText(rationale) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n >\n {rationaleDiv}\n </Collapsible>\n : rationaleDiv}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n mainContainer: {\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background()\n },\n note: {\n padding: '5px 0',\n },\n collapsible: {\n margin: `${theme.spacing.unit * 2}px 0`,\n },\n noBorderColor: {\n '& *': {\n borderColor: `${color.text()} !important`\n }\n }\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.js"],"names":["Main","showCorrectAnswer","props","alwaysShowCorrect","value","maxLengthPerChoice","every","val","i","arr","onChange","maxWait","setState","state","getChangeSession","changeSession","nextProps","feedback","classes","mode","prompt","rationale","teacherInstructions","note","showNote","env","animationsDisabled","role","displayNote","mainClasses","mainContainer","noBorderColor","teacherInstructionsDiv","__html","rationaleDiv","collapsible","hidden","visible","toggleShowCorrect","React","Component","PropTypes","object","isRequired","string","bool","disabled","markup","func","array","styles","theme","padding","spacing","unit","color","text","backgroundColor","background","margin","borderColor"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { ConstructedResponse } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n prompt: PropTypes.string,\n note: PropTypes.string,\n showNote: PropTypes.bool,\n env: PropTypes.object,\n rationale: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n teacherInstructions: PropTypes.string,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n maxLengthPerChoice: PropTypes.array\n };\n\n static defaultProps = {\n value: {}\n };\n\n state = {\n showCorrectAnswer: this.props.alwaysShowCorrect || false,\n value: this.props.value\n };\n\n // if for all responses max length is 1, call onChange for each keystroke\n getChangeSession = maxLengthPerChoice =>\n maxLengthPerChoice && maxLengthPerChoice.every((val, i, arr) => val === arr[0] && val === 1) ? this.props.onChange\n : debounce(this.props.onChange, 1500, { maxWait: 1500 });\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { maxLengthPerChoice } = this.props;\n\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrectAnswer: true });\n }\n\n if (maxLengthPerChoice && !isEqual(maxLengthPerChoice, nextProps.maxLengthPerChoice)) {\n this.changeSession = this.getChangeSession(nextProps.maxLengthPerChoice);\n }\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n changeSession = this.getChangeSession(this.props.maxLengthPerChoice);\n\n onChange = value => {\n this.setState({ value });\n\n this.changeSession(value);\n };\n\n render() {\n const { showCorrectAnswer, value } = this.state;\n const {\n classes,\n mode,\n prompt,\n rationale,\n teacherInstructions,\n note,\n showNote,\n env,\n animationsDisabled,\n alwaysShowCorrect,\n maxLengthPerChoice\n } = this.props;\n const { role } = env || {};\n const displayNote = (showCorrectAnswer || mode === 'view' && role === 'instructor') && showNote && note;\n const mainClasses = classNames([classes.mainContainer, alwaysShowCorrect ? classes.noBorderColor : {}]);\n\n const teacherInstructionsDiv = <div\n className=\"teacher-instructions\"\n dangerouslySetInnerHTML={{ __html: teacherInstructions }}\n />;\n\n const rationaleDiv = <div className=\"rationale\" dangerouslySetInnerHTML={{ __html: rationale }}/>;\n\n return (\n <div className={mainClasses}>\n {\n teacherInstructions && hasText(teacherInstructions) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n : teacherInstructionsDiv}\n </div>\n )\n }\n {!alwaysShowCorrect && <CorrectAnswerToggle\n show={mode === 'evaluate'}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />}\n {prompt && <div className=\"prompt\" dangerouslySetInnerHTML={{ __html: prompt }}/>}\n <ConstructedResponse\n {...this.props}\n onChange={this.onChange}\n showCorrectAnswer={showCorrectAnswer}\n value={value}\n maxLength={maxLengthPerChoice}\n />\n {displayNote && (\n <div\n className={classNames(classes.note, 'note')}\n dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }}\n />\n )}\n {rationale && hasText(rationale) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n >\n {rationaleDiv}\n </Collapsible>\n : rationaleDiv}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n mainContainer: {\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background()\n },\n note: {\n padding: '5px 0',\n },\n collapsible: {\n margin: `${theme.spacing.unit * 2}px 0`,\n },\n noBorderColor: {\n '& *': {\n borderColor: `${color.text()} !important`\n }\n }\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "3.9.3-next.397+0a8e6d4b0",
7
+ "version": "3.9.3-next.408+744045a60",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "author": "",
27
27
  "license": "ISC",
28
- "gitHead": "0a8e6d4b0496dde6902ea349f979612452d7d3c8",
28
+ "gitHead": "744045a6013d2715e551bc0959fcd90a6e2a820b",
29
29
  "main": "lib/index.js",
30
30
  "module": "src/index.js",
31
31
  "exports": {