@pie-element/explicit-constructed-response 7.1.5-next.3 → 7.2.1-next.0

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.
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@pie-element/explicit-constructed-response-controller",
3
3
  "private": true,
4
- "version": "5.0.6",
4
+ "version": "5.1.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
8
8
  "author": "",
9
9
  "license": "ISC",
10
10
  "dependencies": {
11
- "@pie-lib/pie-toolbox": "2.0.15",
11
+ "@pie-lib/pie-toolbox": "2.1.0",
12
12
  "debug": "^3.1.0",
13
13
  "lodash": "^4.17.15",
14
14
  "type-of": "^2.0.1"
@@ -1614,6 +1614,22 @@
1614
1614
  ],
1615
1615
  "title": "languageChoices"
1616
1616
  },
1617
+ "spanishInput": {
1618
+ "title": "ConfigureProp",
1619
+ "type": "object",
1620
+ "properties": {
1621
+ "settings": {
1622
+ "description": "Indicates if the item has to be displayed in the Settings Panel",
1623
+ "type": "boolean",
1624
+ "title": "settings"
1625
+ },
1626
+ "label": {
1627
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel",
1628
+ "type": "string",
1629
+ "title": "label"
1630
+ }
1631
+ }
1632
+ },
1617
1633
  "showPrompt": {
1618
1634
  "description": "Determines whether prompt field will be displayed or not",
1619
1635
  "default": true,
@@ -1187,6 +1187,18 @@ Value of the language option
1187
1187
 
1188
1188
  Label of the language option
1189
1189
 
1190
+ # `spanishInput` (object)
1191
+
1192
+ Properties of the `spanishInput` object:
1193
+
1194
+ ## `settings` (boolean)
1195
+
1196
+ Indicates if the item has to be displayed in the Settings Panel
1197
+
1198
+ ## `label` (string)
1199
+
1200
+ Indicates the label for the item that has to be displayed in the Settings Panel
1201
+
1190
1202
  # `showPrompt` (boolean)
1191
1203
 
1192
1204
  Determines whether prompt field will be displayed or not
@@ -141,6 +141,12 @@
141
141
  "type": "string",
142
142
  "title": "language"
143
143
  },
144
+ "spanishInputEnabled": {
145
+ "description": "Whether a control to allow insertion of spanish characters should be displayed",
146
+ "default": true,
147
+ "type": "boolean",
148
+ "title": "spanishInputEnabled"
149
+ },
144
150
  "id": {
145
151
  "description": "Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.",
146
152
  "type": "string",
@@ -98,6 +98,12 @@ Indicates if Rubric is enabled
98
98
  Indicates the language of the component
99
99
  Supported options: en, es, en_US, en-US, es_ES, es-ES, es_MX, es-MX
100
100
 
101
+ # `spanishInputEnabled` (boolean)
102
+
103
+ Whether a control to allow insertion of spanish characters should be displayed
104
+
105
+ Default: `true`
106
+
101
107
  # `id` (string, required)
102
108
 
103
109
  Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.
package/lib/index.js CHANGED
@@ -69,7 +69,8 @@ var InlineDropdown = /*#__PURE__*/function (_HTMLElement) {
69
69
  role: _this._model.role,
70
70
  showNote: _this._model.showNote,
71
71
  teacherInstructions: _this._model.teacherInstructions,
72
- value: _this._session.value
72
+ value: _this._session.value,
73
+ responseAreaInputConfiguration: _this._model.responseAreaInputConfiguration
73
74
  });
74
75
 
75
76
  _reactDom["default"].render(elem, (0, _assertThisInitialized2["default"])(_this), function () {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["InlineDropdown","_model","_session","elem","React","createElement","Main","choices","disabled","displayType","feedback","language","markup","maxLengthPerChoice","maxLengthPerChoiceEnabled","mode","note","onChange","changeSession","playerSpellCheckEnabled","prompt","rationale","role","showNote","teacherInstructions","value","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","lang","slice","setAttribute","m","ModelSetEvent","setLangAttribute","s","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering-accessible';\n\nimport Main from './main';\n\nexport default class InlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n }\n\n setLangAttribute() {\n const language = this._model && typeof this._model.language ? this._model.language : '';\n const lang = language ? language.slice(0, 2) : 'en';\n this.setAttribute('lang', lang);\n }\n\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(this.tagName.toLowerCase(), this.session && !!this.session.value, !!this._model),\n );\n this.setLangAttribute();\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(Main, {\n choices: this._model.choices,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n feedback: this._model.feedback,\n language: this._model.language,\n markup: this._model.markup,\n maxLengthPerChoice: this._model.maxLengthPerChoice,\n maxLengthPerChoiceEnabled: this._model.maxLengthPerChoiceEnabled,\n mode: this._model.mode,\n note: this._model.note,\n onChange: this.changeSession,\n playerSpellCheckEnabled: this._model.playerSpellCheckEnabled,\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n role: this._model.role,\n showNote: this._model.showNote,\n teacherInstructions: this._model.teacherInstructions,\n value: this._session.value,\n });\n\n ReactDOM.render(elem, this, () => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.session && !!this.session.value));\n };\n\n changeSession = (value) => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this.setAttribute('aria-label', 'Fill in the Blank Question');\n this.setAttribute('role', 'region');\n\n this._render();\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["InlineDropdown","_model","_session","elem","React","createElement","Main","choices","disabled","displayType","feedback","language","markup","maxLengthPerChoice","maxLengthPerChoiceEnabled","mode","note","onChange","changeSession","playerSpellCheckEnabled","prompt","rationale","role","showNote","teacherInstructions","value","responseAreaInputConfiguration","ReactDOM","render","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","session","dispatchChangedEvent","_render","lang","slice","setAttribute","m","ModelSetEvent","setLangAttribute","s","HTMLElement"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelSetEvent, SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/pie-toolbox/math-rendering-accessible';\n\nimport Main from './main';\n\nexport default class InlineDropdown extends HTMLElement {\n constructor() {\n super();\n this._model = null;\n this._session = null;\n }\n\n setLangAttribute() {\n const language = this._model && typeof this._model.language ? this._model.language : '';\n const lang = language ? language.slice(0, 2) : 'en';\n this.setAttribute('lang', lang);\n }\n\n set model(m) {\n this._model = m;\n this.dispatchEvent(\n new ModelSetEvent(this.tagName.toLowerCase(), this.session && !!this.session.value, !!this._model),\n );\n this.setLangAttribute();\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n _render = () => {\n if (this._model && this._session) {\n let elem = React.createElement(Main, {\n choices: this._model.choices,\n disabled: this._model.disabled,\n displayType: this._model.displayType,\n feedback: this._model.feedback,\n language: this._model.language,\n markup: this._model.markup,\n maxLengthPerChoice: this._model.maxLengthPerChoice,\n maxLengthPerChoiceEnabled: this._model.maxLengthPerChoiceEnabled,\n mode: this._model.mode,\n note: this._model.note,\n onChange: this.changeSession,\n playerSpellCheckEnabled: this._model.playerSpellCheckEnabled,\n prompt: this._model.prompt,\n rationale: this._model.rationale,\n role: this._model.role,\n showNote: this._model.showNote,\n teacherInstructions: this._model.teacherInstructions,\n value: this._session.value,\n responseAreaInputConfiguration: this._model.responseAreaInputConfiguration,\n });\n\n ReactDOM.render(elem, this, () => {\n renderMath(this);\n });\n }\n };\n\n dispatchChangedEvent = () => {\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.session && !!this.session.value));\n };\n\n changeSession = (value) => {\n this.session.value = value;\n this.dispatchChangedEvent();\n this._render();\n };\n\n connectedCallback() {\n this.setAttribute('aria-label', 'Fill in the Blank Question');\n this.setAttribute('role', 'region');\n\n this._render();\n }\n}\n"],"file":"index.js"}
package/lib/main.js CHANGED
@@ -149,7 +149,13 @@ var Main = /*#__PURE__*/function (_React$Component) {
149
149
  prompt = _this$props2.prompt,
150
150
  rationale = _this$props2.rationale,
151
151
  showNote = _this$props2.showNote,
152
- teacherInstructions = _this$props2.teacherInstructions;
152
+ teacherInstructions = _this$props2.teacherInstructions,
153
+ responseAreaInputConfiguration = _this$props2.responseAreaInputConfiguration,
154
+ model = _this$props2.model;
155
+
156
+ var _ref = model || {},
157
+ extraCSSRules = _ref.extraCSSRules;
158
+
153
159
  var displayNote = (showCorrectAnswer || mode === 'view' && role === 'instructor') && showNote && note;
154
160
  var mainClasses = (0, _classnames["default"])([classes.mainContainer, (0, _defineProperty2["default"])({}, classes.noBorderColor, alwaysShowCorrect)]);
155
161
 
@@ -162,7 +168,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
162
168
  prompt: rationale
163
169
  });
164
170
 
165
- return /*#__PURE__*/_react["default"].createElement("div", {
171
+ return /*#__PURE__*/_react["default"].createElement(_renderUi.UiLayout, {
172
+ extraCSSRules: extraCSSRules,
166
173
  className: mainClasses,
167
174
  style: {
168
175
  display: "".concat(displayType)
@@ -189,7 +196,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
189
196
  value: value,
190
197
  maxLength: maxLengthPerChoice,
191
198
  adjustedLimit: maxLengthPerChoiceEnabled,
192
- spellCheck: playerSpellCheckEnabled
199
+ spellCheck: playerSpellCheckEnabled,
200
+ pluginProps: responseAreaInputConfiguration
193
201
  })), displayNote && /*#__PURE__*/_react["default"].createElement("div", {
194
202
  className: (0, _classnames["default"])(classes.note, 'note'),
195
203
  dangerouslySetInnerHTML: {
@@ -229,7 +237,9 @@ exports.Main = Main;
229
237
  role: _propTypes["default"].string,
230
238
  showNote: _propTypes["default"].bool,
231
239
  teacherInstructions: _propTypes["default"].string,
232
- value: _propTypes["default"].object
240
+ value: _propTypes["default"].object,
241
+ responseAreaInputConfiguration: _propTypes["default"].object,
242
+ model: _propTypes["default"].object.isRequired
233
243
  });
234
244
  (0, _defineProperty2["default"])(Main, "defaultProps", {
235
245
  value: {}
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.js"],"names":["translator","Translator","Main","showCorrectAnswer","props","alwaysShowCorrect","value","maxLengthPerChoice","every","val","i","arr","onChange","maxWait","setState","state","getChangeSession","changeSession","nextProps","language","note","feedback","t","lng","animationsDisabled","classes","mode","displayType","role","maxLengthPerChoiceEnabled","playerSpellCheckEnabled","prompt","rationale","showNote","teacherInstructions","displayNote","mainClasses","mainContainer","noBorderColor","teacherInstructionsDiv","rationaleDiv","display","srOnly","collapsible","hidden","visible","toggleShowCorrect","__html","React","Component","PropTypes","bool","object","isRequired","disabled","string","markup","array","func","styles","theme","color","text","backgroundColor","background","inlineDisplay","blockDisplay","marginBottom","spacing","unit","borderColor","position","left","top","width","height","overflow"],"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/pie-toolbox/correct-answer-toggle';\nimport { ConstructedResponse } from '@pie-lib/pie-toolbox/mask-markup';\nimport { color, Collapsible, hasText, PreviewPrompt } from '@pie-lib/pie-toolbox/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\n\nexport class Main extends React.Component {\n static propTypes = {\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n displayType: PropTypes.string,\n feedback: PropTypes.object,\n language: PropTypes.string,\n markup: PropTypes.string,\n maxLengthPerChoice: PropTypes.array,\n maxLengthPerChoiceEnabled: PropTypes.bool,\n mode: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n playerSpellCheckEnabled: PropTypes.bool,\n prompt: PropTypes.string,\n rationale: PropTypes.string,\n role: PropTypes.string,\n showNote: PropTypes.bool,\n teacherInstructions: PropTypes.string,\n value: PropTypes.object,\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)\n ? this.props.onChange\n : debounce(this.props.onChange, 1500, { maxWait: 1500 });\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { maxLengthPerChoice, language } = this.props;\n let { note } = 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 // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n note &&\n language &&\n language !== nextProps.language &&\n note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: language })\n ) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextProps.language });\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 alwaysShowCorrect,\n animationsDisabled,\n classes,\n mode,\n displayType,\n role,\n language,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n note,\n playerSpellCheckEnabled,\n prompt,\n rationale,\n showNote,\n teacherInstructions,\n } = this.props;\n\n const displayNote = (showCorrectAnswer || (mode === 'view' && role === 'instructor')) && showNote && note;\n const mainClasses = classNames([\n classes.mainContainer,\n {\n [classes.noBorderColor]: alwaysShowCorrect,\n },\n ]);\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const rationaleDiv = <PreviewPrompt prompt={rationale} />;\n\n return (\n <div className={mainClasses} style={{ display: `${displayType}` }}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Fill in the Blank Question</h2>}\n\n {teacherInstructions && hasText(teacherInstructions) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n {prompt && <PreviewPrompt prompt={prompt} />}\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={mode === 'evaluate'}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n )}\n\n <ConstructedResponse\n {...this.props}\n onChange={this.onChange}\n showCorrectAnswer={showCorrectAnswer}\n value={value}\n maxLength={maxLengthPerChoice}\n adjustedLimit={maxLengthPerChoiceEnabled}\n spellCheck={playerSpellCheckEnabled}\n />\n\n {displayNote && <div className={classNames(classes.note, 'note')} dangerouslySetInnerHTML={{ __html: note }} />}\n\n {rationale && hasText(rationale) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>{rationaleDiv}</Collapsible>\n ) : (\n rationaleDiv\n )}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n inlineDisplay: {\n display: 'inline-block',\n },\n blockDisplay: {\n display: 'block',\n },\n note: {\n marginBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n noBorderColor: {\n '& *': {\n borderColor: `${color.text()} !important`,\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.js"],"names":["translator","Translator","Main","showCorrectAnswer","props","alwaysShowCorrect","value","maxLengthPerChoice","every","val","i","arr","onChange","maxWait","setState","state","getChangeSession","changeSession","nextProps","language","note","feedback","t","lng","animationsDisabled","classes","mode","displayType","role","maxLengthPerChoiceEnabled","playerSpellCheckEnabled","prompt","rationale","showNote","teacherInstructions","responseAreaInputConfiguration","model","extraCSSRules","displayNote","mainClasses","mainContainer","noBorderColor","teacherInstructionsDiv","rationaleDiv","display","srOnly","collapsible","hidden","visible","toggleShowCorrect","__html","React","Component","PropTypes","bool","object","isRequired","disabled","string","markup","array","func","styles","theme","color","text","backgroundColor","background","inlineDisplay","blockDisplay","marginBottom","spacing","unit","borderColor","position","left","top","width","height","overflow"],"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/pie-toolbox/correct-answer-toggle';\nimport { ConstructedResponse } from '@pie-lib/pie-toolbox/mask-markup';\nimport { color, Collapsible, hasText, PreviewPrompt, UiLayout } from '@pie-lib/pie-toolbox/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\n\nexport class Main extends React.Component {\n static propTypes = {\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n disabled: PropTypes.bool,\n displayType: PropTypes.string,\n feedback: PropTypes.object,\n language: PropTypes.string,\n markup: PropTypes.string,\n maxLengthPerChoice: PropTypes.array,\n maxLengthPerChoiceEnabled: PropTypes.bool,\n mode: PropTypes.string,\n note: PropTypes.string,\n onChange: PropTypes.func,\n playerSpellCheckEnabled: PropTypes.bool,\n prompt: PropTypes.string,\n rationale: PropTypes.string,\n role: PropTypes.string,\n showNote: PropTypes.bool,\n teacherInstructions: PropTypes.string,\n value: PropTypes.object,\n responseAreaInputConfiguration: PropTypes.object,\n model: PropTypes.object.isRequired,\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)\n ? this.props.onChange\n : debounce(this.props.onChange, 1500, { maxWait: 1500 });\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { maxLengthPerChoice, language } = this.props;\n let { note } = 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 // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n note &&\n language &&\n language !== nextProps.language &&\n note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: language })\n ) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextProps.language });\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 alwaysShowCorrect,\n animationsDisabled,\n classes,\n mode,\n displayType,\n role,\n language,\n maxLengthPerChoice,\n maxLengthPerChoiceEnabled,\n note,\n playerSpellCheckEnabled,\n prompt,\n rationale,\n showNote,\n teacherInstructions,\n responseAreaInputConfiguration,\n model,\n } = this.props;\n\n const { extraCSSRules } = model || {};\n const displayNote = (showCorrectAnswer || (mode === 'view' && role === 'instructor')) && showNote && note;\n const mainClasses = classNames([\n classes.mainContainer,\n {\n [classes.noBorderColor]: alwaysShowCorrect,\n },\n ]);\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const rationaleDiv = <PreviewPrompt prompt={rationale} />;\n\n return (\n <UiLayout extraCSSRules={extraCSSRules} className={mainClasses} style={{ display: `${displayType}` }}>\n {mode === 'gather' && <h2 className={classes.srOnly}>Fill in the Blank Question</h2>}\n\n {teacherInstructions && hasText(teacherInstructions) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </div>\n )}\n\n {prompt && <PreviewPrompt prompt={prompt} />}\n\n {!alwaysShowCorrect && (\n <CorrectAnswerToggle\n show={mode === 'evaluate'}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n )}\n\n <ConstructedResponse\n {...this.props}\n onChange={this.onChange}\n showCorrectAnswer={showCorrectAnswer}\n value={value}\n maxLength={maxLengthPerChoice}\n adjustedLimit={maxLengthPerChoiceEnabled}\n spellCheck={playerSpellCheckEnabled}\n pluginProps={responseAreaInputConfiguration}\n />\n\n {displayNote && <div className={classNames(classes.note, 'note')} dangerouslySetInnerHTML={{ __html: note }} />}\n\n {rationale && hasText(rationale) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>{rationaleDiv}</Collapsible>\n ) : (\n rationaleDiv\n )}\n </div>\n )}\n </UiLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n },\n inlineDisplay: {\n display: 'inline-block',\n },\n blockDisplay: {\n display: 'block',\n },\n note: {\n marginBottom: theme.spacing.unit * 2,\n },\n collapsible: {\n marginBottom: theme.spacing.unit * 2,\n },\n noBorderColor: {\n '& *': {\n borderColor: `${color.text()} !important`,\n },\n },\n srOnly: {\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n },\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}