@pie-element/math-inline 5.6.0 → 5.6.1-beta.587

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +509 -0
  2. package/configure/CHANGELOG.md +471 -0
  3. package/configure/lib/configure.js +73 -31
  4. package/configure/lib/configure.js.map +1 -1
  5. package/configure/lib/defaults.js +37 -2
  6. package/configure/lib/defaults.js.map +1 -1
  7. package/configure/lib/general-config-block.js +123 -29
  8. package/configure/lib/general-config-block.js.map +1 -1
  9. package/configure/lib/index.js +31 -3
  10. package/configure/lib/index.js.map +1 -1
  11. package/configure/lib/response.js +90 -37
  12. package/configure/lib/response.js.map +1 -1
  13. package/configure/lib/utils.js +18 -1
  14. package/configure/lib/utils.js.map +1 -1
  15. package/configure/package.json +7 -8
  16. package/controller/CHANGELOG.md +145 -0
  17. package/controller/lib/defaults.js +2 -1
  18. package/controller/lib/defaults.js.map +1 -1
  19. package/controller/lib/index.js +148 -131
  20. package/controller/lib/index.js.map +1 -1
  21. package/controller/lib/utils.js.map +1 -1
  22. package/controller/package.json +4 -4
  23. package/docs/config-schema.json +168 -0
  24. package/docs/config-schema.json.md +132 -1
  25. package/docs/demo/config.js +2 -2
  26. package/docs/demo/generate.js +20 -16
  27. package/docs/demo/session.js +1 -1
  28. package/docs/pie-schema.json +128 -3
  29. package/docs/pie-schema.json.md +107 -3
  30. package/lib/index.js +7 -4
  31. package/lib/index.js.map +1 -1
  32. package/lib/main.js +230 -55
  33. package/lib/main.js.map +1 -1
  34. package/lib/print.js +133 -0
  35. package/lib/print.js.map +1 -0
  36. package/lib/simple-question-block.js +50 -38
  37. package/lib/simple-question-block.js.map +1 -1
  38. package/lib/utils.js.map +1 -1
  39. package/package.json +13 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configure.jsx"],"names":["log","Panel","settings","toggle","radio","styles","theme","title","fontSize","display","marginTop","spacing","unit","marginBottom","content","promptHolder","width","paddingTop","prompt","Configure","model","props","onModelChanged","teacherInstructions","feedback","classes","imageSupport","configuration","onConfigurationChanged","responseType","studentInstructions","rationale","scoringType","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","feedbackEnabled","config","label","ResponseTypes","simple","advanced","studentInstructionsEnabled","changeTeacherInstructions","onChange","onFeedbackChange","React","Component","PropTypes","func","object","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport {\n FeedbackConfig,\n settings,\n layout,\n InputContainer,\n} from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport EditableHtml from '@pie-lib/editable-html';\nimport GeneralConfigBlock from './general-config-block';\nimport { ResponseTypes } from './utils';\n\nconst log = debug('@pie-element:math-inline:configure');\nconst { Panel, toggle, radio } = settings;\n\nconst styles = theme => ({\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit\n },\n content: {\n marginTop: theme.spacing.unit * 2\n },\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n});\n\nexport class Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n imageSupport: PropTypes.object\n };\n\n onChange = model => {\n this.props.onModelChanged(model);\n };\n\n changeTeacherInstructions = teacherInstructions => {\n this.props.onModelChanged({\n ...this.props.model,\n teacherInstructions\n });\n };\n\n onFeedbackChange = feedback => {\n const { model, onModelChanged } = this.props;\n model.feedback = feedback;\n onModelChanged(model);\n };\n\n render() {\n const { classes, model, imageSupport, onModelChanged, configuration, onConfigurationChanged } = this.props;\n const {\n feedback = {},\n responseType = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n prompt = {},\n scoringType = {}\n } = configuration || {};\n log('[render] model', model);\n const { rationaleEnabled, promptEnabled, teacherInstructionsEnabled, feedbackEnabled } = model || {};\n\n return (\n <div>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => onModelChanged(model)}\n onChangeConfiguration={config => onConfigurationChanged(config)}\n groups={{\n 'Settings': {\n responseType: responseType.settings &&\n radio(responseType.label, [ResponseTypes.simple, ResponseTypes.advanced]),\n feedbackEnabled: feedback.settings &&\n toggle(feedback.label),\n 'promptEnabled': prompt.settings &&\n toggle(prompt.label)\n },\n 'Properties': {\n teacherInstructionsEnabled: teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings &&\n toggle(studentInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n scoringType: scoringType.settings &&\n radio(scoringType.label, ['auto', 'rubric']),\n },\n }}\n />\n }\n >\n <div>\n <div className={classes.content}>\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n />\n </InputContainer>\n )}\n\n <GeneralConfigBlock\n imageSupport={imageSupport}\n model={model}\n configuration={configuration}\n onChange={this.onChange}\n rationaleEnabled={rationaleEnabled}\n promptEnabled={promptEnabled}\n />\n {\n feedbackEnabled && (\n <FeedbackConfig\n feedback={model.feedback}\n onChange={this.onFeedbackChange}\n />\n )\n }\n </div>\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Configure);\n"],"file":"configure.js"}
1
+ {"version":3,"sources":["../src/configure.jsx"],"names":["log","Panel","settings","toggle","radio","styles","theme","title","fontSize","display","marginTop","spacing","unit","marginBottom","content","promptHolder","width","paddingTop","prompt","Configure","model","props","onModelChanged","teacherInstructions","feedback","classes","imageSupport","configuration","onConfigurationChanged","uploadSoundSupport","allowTrailingZeros","ignoreOrder","maxImageWidth","maxImageHeight","rationale","responseType","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","toolbarOpts","position","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","label","ResponseTypes","simple","advanced","panelProperties","studentInstructionsEnabled","rubricEnabled","config","Settings","Properties","changeTeacherInstructions","language","onChange","onFeedbackChange","React","Component","PropTypes","func","object","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport EditableHtml from '@pie-lib/editable-html';\nimport GeneralConfigBlock from './general-config-block';\nimport { ResponseTypes } from './utils';\n\nconst log = debug('@pie-element:math-inline:configure');\nconst { Panel, toggle, radio } = settings;\n\nconst styles = (theme) => ({\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n content: {\n marginTop: theme.spacing.unit * 2,\n },\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n});\n\nexport class Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n classes: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n };\n\n onChange = (model) => {\n this.props.onModelChanged(model);\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n this.props.onModelChanged({\n ...this.props.model,\n teacherInstructions,\n });\n };\n\n onFeedbackChange = (feedback) => {\n const { model, onModelChanged } = this.props;\n model.feedback = feedback;\n onModelChanged(model);\n };\n\n render() {\n const { classes, model, imageSupport, onModelChanged, configuration, onConfigurationChanged, uploadSoundSupport } =\n this.props;\n const {\n allowTrailingZeros = {},\n feedback = {},\n ignoreOrder = {},\n maxImageWidth = {},\n maxImageHeight = {},\n prompt = {},\n rationale = {},\n responseType = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n } = configuration || {};\n const {\n feedbackEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n log('[render] model', model);\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\n responseType: responseType.settings && radio(responseType.label, [ResponseTypes.simple, ResponseTypes.advanced]),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n 'ignoreOrder.enabled': ignoreOrder.settings && toggle(ignoreOrder.label),\n 'allowTrailingZeros.enabled': allowTrailingZeros.settings && toggle(allowTrailingZeros.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n return (\n <div>\n <layout.ConfigLayout\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n <div>\n <div className={classes.content}>\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <GeneralConfigBlock\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n model={model}\n configuration={configuration}\n onChange={this.onChange}\n rationaleEnabled={rationaleEnabled}\n promptEnabled={promptEnabled}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n />\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.onFeedbackChange} toolbarOpts={toolbarOpts} />\n )}\n </div>\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Configure);\n"],"file":"configure.js"}
@@ -30,9 +30,10 @@ var _default = {
30
30
  type: 'none'
31
31
  }
32
32
  },
33
- equationEditor: '3',
33
+ equationEditor: '8',
34
34
  expression: '',
35
35
  rationale: 'Rationale goes here.',
36
+ note: 'The answer shown above is the primary correct answer specified by the author for this item, but other answers may also be recognized as correct.',
36
37
  prompt: '',
37
38
  responses: [],
38
39
  customKeys: [],
@@ -41,7 +42,11 @@ var _default = {
41
42
  promptEnabled: true,
42
43
  rationaleEnabled: true,
43
44
  teacherInstructionsEnabled: true,
44
- studentInstructionsEnabled: true
45
+ studentInstructionsEnabled: true,
46
+ toolbarEditorPosition: 'bottom',
47
+ validationDefault: 'literal',
48
+ ignoreOrderDefault: false,
49
+ allowTrailingZerosDefault: false
45
50
  },
46
51
  configuration: {
47
52
  prompt: {
@@ -60,6 +65,12 @@ var _default = {
60
65
  settings: true,
61
66
  label: 'Rationale'
62
67
  },
68
+ settingsPanelDisabled: false,
69
+ spellCheck: {
70
+ label: 'Spellcheck',
71
+ settings: false,
72
+ enabled: true
73
+ },
63
74
  scoringType: {
64
75
  settings: false,
65
76
  label: 'Scoring Type'
@@ -75,6 +86,30 @@ var _default = {
75
86
  partialScoring: {
76
87
  settings: false,
77
88
  label: 'Allow Partial Scoring'
89
+ },
90
+ ignoreOrder: {
91
+ settings: false,
92
+ label: 'Ignore Order',
93
+ enabled: true
94
+ },
95
+ allowTrailingZeros: {
96
+ settings: false,
97
+ label: 'Allow Trailing Zeros',
98
+ enabled: true
99
+ },
100
+ maxImageWidth: {
101
+ teacherInstructions: 300,
102
+ prompt: 300,
103
+ rationale: 300
104
+ },
105
+ maxImageHeight: {
106
+ teacherInstructions: 300,
107
+ prompt: 300,
108
+ rationale: 300
109
+ },
110
+ withRubric: {
111
+ settings: false,
112
+ label: 'Add Rubric'
78
113
  }
79
114
  }
80
115
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","partialScoring","responseType","ResponseTypes","advanced","element","feedback","correct","type","incorrect","partial","equationEditor","expression","rationale","prompt","responses","customKeys","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","configuration","settings","label","studentInstructions","teacherInstructions"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACA;AACA;eAEe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,cAAc,EAAE,IADX;AAELC,IAAAA,YAAY,EAAEC,qBAAcC,QAFvB;AAGLC,IAAAA,OAAO,EAAE,aAHJ;AAILC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,OAAO,EAAE;AACP,mBAAS,SADF;AAEPC,QAAAA,IAAI,EAAE;AAFC,OADD;AAKRC,MAAAA,SAAS,EAAE;AACT,mBAAS,WADA;AAETD,QAAAA,IAAI,EAAE;AAFG,OALH;AASRE,MAAAA,OAAO,EAAE;AACP,mBAAS,QADF;AAEPF,QAAAA,IAAI,EAAE;AAFC;AATD,KAJL;AAkBLG,IAAAA,cAAc,EAAE,GAlBX;AAmBLC,IAAAA,UAAU,EAAE,EAnBP;AAoBLC,IAAAA,SAAS,EAAE,sBApBN;AAqBLC,IAAAA,MAAM,EAAE,EArBH;AAsBLC,IAAAA,SAAS,EAAE,EAtBN;AAuBLC,IAAAA,UAAU,EAAE,EAvBP;AAwBLC,IAAAA,WAAW,EAAE,MAxBR;AAyBLC,IAAAA,eAAe,EAAE,IAzBZ;AA0BLC,IAAAA,aAAa,EAAE,IA1BV;AA2BLC,IAAAA,gBAAgB,EAAE,IA3Bb;AA4BLC,IAAAA,0BAA0B,EAAE,IA5BvB;AA6BLC,IAAAA,0BAA0B,EAAE;AA7BvB,GADM;AAgCbC,EAAAA,aAAa,EAAE;AACbT,IAAAA,MAAM,EAAE;AACNU,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KADK;AAKbnB,IAAAA,QAAQ,EAAE;AACRkB,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KALG;AASbvB,IAAAA,YAAY,EAAE;AACZsB,MAAAA,QAAQ,EAAE,IADE;AAEZC,MAAAA,KAAK,EAAE;AAFK,KATD;AAabZ,IAAAA,SAAS,EAAE;AACTW,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KAbE;AAiBbR,IAAAA,WAAW,EAAE;AACXO,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KAjBA;AAqBbC,IAAAA,mBAAmB,EAAE;AACnBF,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KArBR;AAyBbE,IAAAA,mBAAmB,EAAE;AACnBH,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAzBR;AA6BbxB,IAAAA,cAAc,EAAE;AACduB,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO;AA7BH;AAhCF,C","sourcesContent":["import { ResponseTypes } from './utils';\n\n/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\n\nexport default {\n model: {\n partialScoring: true,\n responseType: ResponseTypes.advanced,\n element: 'math-inline',\n feedback: {\n correct: {\n default: 'Correct',\n type: 'none'\n },\n incorrect: {\n default: 'Incorrect',\n type: 'none'\n },\n partial: {\n default: 'Nearly',\n type: 'none'\n }\n },\n equationEditor: '3',\n expression: '',\n rationale: 'Rationale goes here.',\n prompt: '',\n responses: [],\n customKeys: [],\n scoringType: 'auto',\n feedbackEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true\n },\n configuration: {\n prompt: {\n settings: true,\n label: 'Prompt'\n },\n feedback: {\n settings: true,\n label: 'Feedback'\n },\n responseType: {\n settings: true,\n label: 'Response type'\n },\n rationale: {\n settings: true,\n label: 'Rationale'\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type'\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions'\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring'\n }\n }\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["model","partialScoring","responseType","ResponseTypes","advanced","element","feedback","correct","type","incorrect","partial","equationEditor","expression","rationale","note","prompt","responses","customKeys","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","validationDefault","ignoreOrderDefault","allowTrailingZerosDefault","configuration","settings","label","settingsPanelDisabled","spellCheck","enabled","studentInstructions","teacherInstructions","ignoreOrder","allowTrailingZeros","maxImageWidth","maxImageHeight","withRubric"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACA;AACA;eAEe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,cAAc,EAAE,IADX;AAELC,IAAAA,YAAY,EAAEC,qBAAcC,QAFvB;AAGLC,IAAAA,OAAO,EAAE,aAHJ;AAILC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,OAAO,EAAE;AACP,mBAAS,SADF;AAEPC,QAAAA,IAAI,EAAE;AAFC,OADD;AAKRC,MAAAA,SAAS,EAAE;AACT,mBAAS,WADA;AAETD,QAAAA,IAAI,EAAE;AAFG,OALH;AASRE,MAAAA,OAAO,EAAE;AACP,mBAAS,QADF;AAEPF,QAAAA,IAAI,EAAE;AAFC;AATD,KAJL;AAkBLG,IAAAA,cAAc,EAAE,GAlBX;AAmBLC,IAAAA,UAAU,EAAE,EAnBP;AAoBLC,IAAAA,SAAS,EAAE,sBApBN;AAqBLC,IAAAA,IAAI,EAAE,kJArBD;AAsBLC,IAAAA,MAAM,EAAE,EAtBH;AAuBLC,IAAAA,SAAS,EAAE,EAvBN;AAwBLC,IAAAA,UAAU,EAAE,EAxBP;AAyBLC,IAAAA,WAAW,EAAE,MAzBR;AA0BLC,IAAAA,eAAe,EAAE,IA1BZ;AA2BLC,IAAAA,aAAa,EAAE,IA3BV;AA4BLC,IAAAA,gBAAgB,EAAE,IA5Bb;AA6BLC,IAAAA,0BAA0B,EAAE,IA7BvB;AA8BLC,IAAAA,0BAA0B,EAAE,IA9BvB;AA+BLC,IAAAA,qBAAqB,EAAE,QA/BlB;AAgCLC,IAAAA,iBAAiB,EAAE,SAhCd;AAiCLC,IAAAA,kBAAkB,EAAE,KAjCf;AAkCLC,IAAAA,yBAAyB,EAAE;AAlCtB,GADM;AAqCbC,EAAAA,aAAa,EAAE;AACbb,IAAAA,MAAM,EAAE;AACNc,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KADK;AAKbxB,IAAAA,QAAQ,EAAE;AACRuB,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KALG;AASb5B,IAAAA,YAAY,EAAE;AACZ2B,MAAAA,QAAQ,EAAE,IADE;AAEZC,MAAAA,KAAK,EAAE;AAFK,KATD;AAabjB,IAAAA,SAAS,EAAE;AACTgB,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KAbE;AAiBbC,IAAAA,qBAAqB,EAAE,KAjBV;AAkBbC,IAAAA,UAAU,EAAE;AACVF,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAE,KAFA;AAGVI,MAAAA,OAAO,EAAE;AAHC,KAlBC;AAuBbf,IAAAA,WAAW,EAAE;AACXW,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KAvBA;AA2BbI,IAAAA,mBAAmB,EAAE;AACnBL,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KA3BR;AA+BbK,IAAAA,mBAAmB,EAAE;AACnBN,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KA/BR;AAmCb7B,IAAAA,cAAc,EAAE;AACd4B,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAnCH;AAuCbM,IAAAA,WAAW,EAAE;AACXP,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE,cAFI;AAGXG,MAAAA,OAAO,EAAE;AAHE,KAvCA;AA4CbI,IAAAA,kBAAkB,EAAE;AAClBR,MAAAA,QAAQ,EAAE,KADQ;AAElBC,MAAAA,KAAK,EAAE,sBAFW;AAGlBG,MAAAA,OAAO,EAAE;AAHS,KA5CP;AAiDbK,IAAAA,aAAa,EAAE;AACbH,MAAAA,mBAAmB,EAAE,GADR;AAEbpB,MAAAA,MAAM,EAAE,GAFK;AAGbF,MAAAA,SAAS,EAAE;AAHE,KAjDF;AAsDb0B,IAAAA,cAAc,EAAE;AACdJ,MAAAA,mBAAmB,EAAE,GADP;AAEdpB,MAAAA,MAAM,EAAE,GAFM;AAGdF,MAAAA,SAAS,EAAE;AAHG,KAtDH;AA2Db2B,IAAAA,UAAU,EAAE;AACVX,MAAAA,QAAQ,EAAE,KADA;AAEVC,MAAAA,KAAK,EAAE;AAFG;AA3DC;AArCF,C","sourcesContent":["import { ResponseTypes } from './utils';\n\n/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\n\nexport default {\n model: {\n partialScoring: true,\n responseType: ResponseTypes.advanced,\n element: 'math-inline',\n feedback: {\n correct: {\n default: 'Correct',\n type: 'none',\n },\n incorrect: {\n default: 'Incorrect',\n type: 'none',\n },\n partial: {\n default: 'Nearly',\n type: 'none',\n },\n },\n equationEditor: '8',\n expression: '',\n rationale: 'Rationale goes here.',\n note: 'The answer shown above is the primary correct answer specified by the author for this item, but other answers may also be recognized as correct.',\n prompt: '',\n responses: [],\n customKeys: [],\n scoringType: 'auto',\n feedbackEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n validationDefault: 'literal',\n ignoreOrderDefault: false,\n allowTrailingZerosDefault: false,\n },\n configuration: {\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n },\n responseType: {\n settings: true,\n label: 'Response type',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n ignoreOrder: {\n settings: false,\n label: 'Ignore Order',\n enabled: true,\n },\n allowTrailingZeros: {\n settings: false,\n label: 'Allow Trailing Zeros',\n enabled: true,\n },\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 },\n};\n"],"file":"defaults.js"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
@@ -41,8 +41,6 @@ var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel")
41
41
 
42
42
  var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
43
43
 
44
- var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
45
-
46
44
  var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
47
45
 
48
46
  var _response = _interopRequireDefault(require("./response"));
@@ -55,13 +53,21 @@ var _utils = require("./utils");
55
53
 
56
54
  var _mathquill = _interopRequireDefault(require("@pie-framework/mathquill"));
57
55
 
58
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
56
+ var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
57
+
58
+ var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
59
+
60
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
61
+
62
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
63
+
64
+ 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; }
59
65
 
60
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
66
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
61
67
 
62
68
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
63
69
 
64
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
70
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
65
71
 
66
72
  var registered = false;
67
73
 
@@ -103,7 +109,7 @@ var styles = function styles(theme) {
103
109
  justifyContent: 'center',
104
110
  width: '100%',
105
111
  minWidth: '500px',
106
- maxWidth: '900px',
112
+ maxWidth: 'inherit',
107
113
  height: 'auto',
108
114
  minHeight: '130px',
109
115
  textAlign: 'left',
@@ -128,6 +134,7 @@ var styles = function styles(theme) {
128
134
  margin: theme.spacing.unit / 2
129
135
  },
130
136
  blockResponse: {
137
+ fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',
131
138
  flex: 2,
132
139
  color: 'grey',
133
140
  background: 'lightgrey',
@@ -155,6 +162,15 @@ var styles = function styles(theme) {
155
162
  }
156
163
  }
157
164
  }
165
+ },
166
+ tooltip: {
167
+ fontSize: '12px',
168
+ whiteSpace: 'pre-wrap'
169
+ },
170
+ errorText: {
171
+ fontSize: '12px',
172
+ color: 'red',
173
+ padding: '5px 0'
158
174
  }
159
175
  };
160
176
  };
@@ -250,7 +266,6 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
250
266
 
251
267
  if (!(0, _isEqual["default"])(responseAreas, _this.state.responseAreas)) {
252
268
  _this.setState({
253
- showKeypad: false,
254
269
  responseAreas: responseAreas
255
270
  }, function () {
256
271
  if (_this.root && Object.keys(responseAreas).length) {
@@ -385,25 +400,44 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
385
400
  classes = _this$props4.classes,
386
401
  model = _this$props4.model,
387
402
  imageSupport = _this$props4.imageSupport,
403
+ uploadSoundSupport = _this$props4.uploadSoundSupport,
388
404
  configuration = _this$props4.configuration,
389
405
  promptEnabled = _this$props4.promptEnabled,
390
- rationaleEnabled = _this$props4.rationaleEnabled;
406
+ rationaleEnabled = _this$props4.rationaleEnabled,
407
+ toolbarOpts = _this$props4.toolbarOpts;
391
408
  var showKeypad = this.state.showKeypad;
392
409
  var prompt = model.prompt,
393
410
  expression = model.expression,
394
411
  equationEditor = model.equationEditor,
395
412
  _model$promptEquation = model.promptEquationEditor,
396
- promptEquationEditor = _model$promptEquation === void 0 ? 'miscellaneous' : _model$promptEquation,
413
+ promptEquationEditor = _model$promptEquation === void 0 ? '8' : _model$promptEquation,
397
414
  responses = model.responses,
398
415
  responseType = model.responseType,
399
- rationale = model.rationale;
416
+ rationale = model.rationale,
417
+ spellCheckEnabled = model.spellCheckEnabled,
418
+ _model$errors = model.errors,
419
+ errors = _model$errors === void 0 ? {} : _model$errors;
400
420
 
401
421
  var _ref = configuration || {},
402
422
  _ref$rationale = _ref.rationale,
403
423
  cRationale = _ref$rationale === void 0 ? {} : _ref$rationale,
404
424
  _ref$prompt = _ref.prompt,
405
- cPrompt = _ref$prompt === void 0 ? {} : _ref$prompt;
406
-
425
+ cPrompt = _ref$prompt === void 0 ? {} : _ref$prompt,
426
+ _ref$ignoreOrder = _ref.ignoreOrder,
427
+ cIgnoreOrder = _ref$ignoreOrder === void 0 ? {} : _ref$ignoreOrder,
428
+ _ref$allowTrailingZer = _ref.allowTrailingZeros,
429
+ cAllowTrailingZeros = _ref$allowTrailingZer === void 0 ? {} : _ref$allowTrailingZer,
430
+ maxResponseAreas = _ref.maxResponseAreas,
431
+ _ref$maxImageWidth = _ref.maxImageWidth,
432
+ maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
433
+ _ref$maxImageHeight = _ref.maxImageHeight,
434
+ maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight;
435
+
436
+ var validationMessage = (0, _utils.generateValidationMessage)(configuration, model);
437
+ var responsesErrors = errors.responsesErrors,
438
+ responseAreasError = errors.responseAreasError;
439
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
440
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
407
441
  var classNames = {
408
442
  editor: classes.responseEditor,
409
443
  mathToolbar: classes.mathToolbar
@@ -423,7 +457,17 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
423
457
  markup: prompt || '',
424
458
  onChange: this.onChange('prompt'),
425
459
  imageSupport: imageSupport,
426
- nonEmpty: false
460
+ nonEmpty: false,
461
+ toolbarOpts: toolbarOpts,
462
+ spellCheck: spellCheckEnabled,
463
+ maxImageWidth: defaultImageMaxWidth,
464
+ maxImageHeight: defaultImageMaxHeight,
465
+ uploadSoundSupport: uploadSoundSupport,
466
+ languageCharactersProps: [{
467
+ language: 'spanish'
468
+ }, {
469
+ language: 'special'
470
+ }]
427
471
  })), rationaleEnabled && /*#__PURE__*/React.createElement(_configUi.InputContainer, {
428
472
  label: cRationale.label,
429
473
  className: classes.promptHolder
@@ -437,8 +481,39 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
437
481
  },
438
482
  onChange: this.onChange('rationale'),
439
483
  imageSupport: imageSupport,
440
- nonEmpty: false
441
- })), responseType === _utils.ResponseTypes.advanced && [/*#__PURE__*/React.createElement(_configUi.InputContainer, {
484
+ nonEmpty: false,
485
+ toolbarOpts: toolbarOpts,
486
+ spellCheck: spellCheckEnabled,
487
+ maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
488
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
489
+ uploadSoundSupport: uploadSoundSupport,
490
+ languageCharactersProps: [{
491
+ language: 'spanish'
492
+ }, {
493
+ language: 'special'
494
+ }]
495
+ })), /*#__PURE__*/React.createElement("div", {
496
+ className: classes.flexContainer,
497
+ style: {
498
+ justifyContent: 'flex-start'
499
+ }
500
+ }, /*#__PURE__*/React.createElement("h3", null, "Define Response"), /*#__PURE__*/React.createElement(_Tooltip["default"], {
501
+ classes: {
502
+ tooltip: classes.tooltip
503
+ },
504
+ disableFocusListener: true,
505
+ disableTouchListener: true,
506
+ placement: 'right',
507
+ title: validationMessage
508
+ }, /*#__PURE__*/React.createElement(_Info["default"], {
509
+ fontSize: 'small',
510
+ color: 'primary',
511
+ style: {
512
+ marginLeft: '5px'
513
+ }
514
+ }))), responseAreasError && /*#__PURE__*/React.createElement("div", {
515
+ className: classes.errorText
516
+ }, responseAreasError), responseType === _utils.ResponseTypes.advanced && [/*#__PURE__*/React.createElement(_configUi.InputContainer, {
442
517
  key: "templateEditorType",
443
518
  label: "Response Template Equation Editor",
444
519
  className: classes.selectContainer
@@ -447,6 +522,14 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
447
522
  onChange: this.onChange('promptEquationEditor'),
448
523
  value: promptEquationEditor
449
524
  }, /*#__PURE__*/React.createElement(_MenuItem["default"], {
525
+ value: "non-negative-integers"
526
+ }, "Numeric - Non-Negative Integers"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
527
+ value: "integers"
528
+ }, "Numeric - Integers"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
529
+ value: "decimals"
530
+ }, "Numeric - Decimals"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
531
+ value: "fractions"
532
+ }, "Numeric - Fractions"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
450
533
  value: 1
451
534
  }, "Grade 1 - 2"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
452
535
  value: 3
@@ -461,8 +544,8 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
461
544
  }, "Advanced Algebra"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
462
545
  value: 'statistics'
463
546
  }, "Statistics"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
464
- value: 'miscellaneous'
465
- }, "Miscellaneous"))), /*#__PURE__*/React.createElement("div", {
547
+ value: 'item-authoring'
548
+ }, "Item Authoring"))), /*#__PURE__*/React.createElement("div", {
466
549
  className: classes.inputContainer,
467
550
  key: "templateHolder"
468
551
  }, /*#__PURE__*/React.createElement(_InputLabel["default"], {
@@ -476,8 +559,10 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
476
559
  latex: prepareForStatic(expression) || '',
477
560
  onChange: this.onChange('expression'),
478
561
  onFocus: this.onFocus,
479
- onDone: this.onDone
480
- }))], /*#__PURE__*/React.createElement("h3", null, "Define Correct Response"), /*#__PURE__*/React.createElement("div", {
562
+ onDone: this.onDone,
563
+ maxResponseAreas: maxResponseAreas,
564
+ error: responseAreasError
565
+ }))], /*#__PURE__*/React.createElement("h4", null, "Define Correct Response"), /*#__PURE__*/React.createElement("div", {
481
566
  className: classes.flexContainer
482
567
  }, /*#__PURE__*/React.createElement(_configUi.InputContainer, {
483
568
  label: "Equation Editor",
@@ -487,6 +572,14 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
487
572
  onChange: this.onChange('equationEditor'),
488
573
  value: equationEditor
489
574
  }, /*#__PURE__*/React.createElement(_MenuItem["default"], {
575
+ value: "non-negative-integers"
576
+ }, "Numeric - Non-Negative Integers"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
577
+ value: "integers"
578
+ }, "Numeric - Integers"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
579
+ value: "decimals"
580
+ }, "Numeric - Decimals"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
581
+ value: "fractions"
582
+ }, "Numeric - Fractions"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
490
583
  value: 1
491
584
  }, "Grade 1 - 2"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
492
585
  value: 3
@@ -501,19 +594,18 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
501
594
  }, "Advanced Algebra"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
502
595
  value: 'statistics'
503
596
  }, "Statistics"), /*#__PURE__*/React.createElement(_MenuItem["default"], {
504
- value: 'miscellaneous'
505
- }, "Miscellaneous"))), responseType === _utils.ResponseTypes.advanced && /*#__PURE__*/React.createElement(_Button["default"], {
506
- className: classes.addResponseButton,
507
- type: "primary",
508
- onClick: this.onAddResponse
509
- }, "+ Response")), responsesToUse.map(function (response, idx) {
597
+ value: 'item-authoring'
598
+ }, "Item Authoring")))), responsesToUse.map(function (response, idx) {
510
599
  return /*#__PURE__*/React.createElement(_response["default"], {
511
600
  key: response.id,
512
601
  mode: equationEditor,
513
602
  response: response,
514
603
  defaultResponse: responseType === _utils.ResponseTypes.simple,
515
604
  onResponseChange: _this2.onResponseChange,
516
- index: idx
605
+ index: idx,
606
+ cIgnoreOrder: cIgnoreOrder,
607
+ cAllowTrailingZeros: cAllowTrailingZeros,
608
+ error: responsesErrors && responsesErrors[idx]
517
609
  });
518
610
  }));
519
611
  }
@@ -525,10 +617,12 @@ var GeneralConfigBlock = /*#__PURE__*/function (_React$Component) {
525
617
  classes: _propTypes["default"].object.isRequired,
526
618
  model: _propTypes["default"].object.isRequired,
527
619
  imageSupport: _propTypes["default"].object,
620
+ uploadSoundSupport: _propTypes["default"].object,
528
621
  configuration: _propTypes["default"].object,
529
622
  onChange: _propTypes["default"].func.isRequired,
530
623
  promptEnabled: _propTypes["default"].bool,
531
- rationaleEnabled: _propTypes["default"].bool
624
+ rationaleEnabled: _propTypes["default"].bool,
625
+ toolbarOpts: _propTypes["default"].object
532
626
  });
533
627
 
534
628
  var _default = (0, _styles.withStyles)(styles)(GeneralConfigBlock);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/general-config-block.jsx"],"names":["registered","styles","theme","container","marginTop","spacing","unit","marginBottom","display","flexDirection","templateTitle","fontSize","addResponseButton","border","width","flexContainer","alignItems","justifyContent","selectContainer","flex","inputContainer","responseEditor","minWidth","maxWidth","height","minHeight","textAlign","padding","promptHolder","paddingBottom","prompt","paddingTop","blockContainer","margin","blockContainerGeneric","blockResponse","color","background","borderRight","blockResponseGeneric","blockMath","REGEX","TEMPORARY_RESPONSE_FIELD","ANSWER_BLOCK_REGEX","NEWLINE_BLOCK","NEWLINE_LATEX","prepareForStatic","expression","answerBlocks","replace","prepareForModel","GeneralConfigBlock","props","name","evtOrValue","model","onChange","newModel","target","value","setState","showKeypad","responseAreas","state","root","Object","keys","length","forEach","responseId","idx","el","querySelector","indexEl","MQ","MathQuill","getInterface","StaticMath","textContent","responseIdCounter","newCounter","responses","find","response","id","validation","answer","alternates","concat","index","classes","window","registerEmbed","data","genericAnswerBlock","htmlString","text","latex","handleAnswerBlockDomUpdate","imageSupport","configuration","promptEnabled","rationaleEnabled","equationEditor","promptEquationEditor","responseType","rationale","cRationale","cPrompt","classNames","editor","mathToolbar","responsesToUse","ResponseTypes","advanced","slice","r","label","onPromptFocus","math","controlledKeypadMode","select","onFocus","onDone","onAddResponse","map","simple","onResponseChange","React","Component","PropTypes","object","isRequired","func","bool"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { InputContainer } from '@pie-lib/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Select from '@material-ui/core/Select';\nimport Button from '@material-ui/core/Button';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Response from './response';\nimport { MathToolbar } from '@pie-lib/math-toolbar';\nimport isEqual from 'lodash/isEqual';\nimport { ResponseTypes } from './utils';\nimport MathQuill from '@pie-framework/mathquill';\n\nlet registered = false;\n\nconst styles = (theme) => ({\n container: {\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column',\n },\n templateTitle: {\n fontSize: '0.85rem',\n },\n addResponseButton: {\n border: '1px solid lightgrey',\n float: 'right',\n width: '150px',\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n selectContainer: {\n flex: 'initial',\n width: '40%',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n marginBottom: theme.spacing.unit * 4,\n display: 'flex',\n flexDirection: 'column',\n width: '90%',\n },\n responseEditor: {\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n minWidth: '500px',\n maxWidth: '900px',\n height: 'auto',\n minHeight: '130px',\n textAlign: 'left',\n padding: theme.spacing.unit,\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n maxWidth: '600px',\n },\n blockContainer: {\n margin: theme.spacing.unit,\n display: 'inline-flex',\n border: '2px solid grey',\n },\n blockContainerGeneric: {\n margin: theme.spacing.unit / 2,\n },\n blockResponse: {\n flex: 2,\n color: 'grey',\n background: 'lightgrey',\n fontSize: '0.8rem',\n padding: theme.spacing.unit / 2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: '2px solid grey',\n },\n blockResponseGeneric: {\n borderRight: 0,\n },\n blockMath: {\n color: '#bdbdbd',\n padding: theme.spacing.unit / 2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 8,\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n});\n\nconst REGEX = /{{response}}/gm;\nconst TEMPORARY_RESPONSE_FIELD = /\\\\%response\\\\%/gm;\nconst ANSWER_BLOCK_REGEX = /\\\\embed\\{answerBlock\\}\\[r\\d*\\]/g;\nconst NEWLINE_BLOCK = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = /\\\\newline/g;\n\nfunction prepareForStatic(expression) {\n if (expression) {\n let answerBlocks = 1; // assume one at least\n\n return expression.replace(\n REGEX,\n () => `\\\\embed{answerBlock}[r${answerBlocks++}]`\n ).replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction prepareForModel(expression) {\n if (expression) {\n return expression\n .replace(ANSWER_BLOCK_REGEX, () => '{{response}}')\n .replace(TEMPORARY_RESPONSE_FIELD, () => '{{response}}')\n .replace(NEWLINE_BLOCK, () => '\\\\newline');\n }\n}\n\nclass GeneralConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.object,\n configuration: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n promptEnabled: PropTypes.bool,\n rationaleEnabled: PropTypes.bool,\n };\n\n constructor(props) {\n super(props);\n\n const responseAreas = {};\n\n if (props.model && props.model.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n props.model.expression.replace(REGEX, () => {\n responseAreas[`r${answerBlocks++}`] = {\n value: '',\n };\n });\n }\n\n this.state = {\n showKeypad: false,\n responseAreas,\n responseIdCounter: Object.keys(responseAreas).length,\n };\n }\n\n onChange = (name) => (evtOrValue) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (typeof evtOrValue === 'object') {\n newModel[name] = evtOrValue.target.value;\n } else {\n newModel[name] = evtOrValue;\n }\n\n if (name === 'expression') {\n newModel[name] = prepareForModel(evtOrValue);\n }\n\n onChange(newModel);\n };\n\n onDone = () => {\n this.setState({ showKeypad: false });\n };\n\n onFocus = () => {\n this.setState({ showKeypad: true });\n };\n\n onPromptFocus = () => {\n this.setState({ showKeypad: false });\n };\n\n UNSAFE_componentWillMount() {\n const { classes } = this.props;\n\n if (typeof window !== 'undefined') {\n // const MathQuill = require('@pie-framework/mathquill');\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n // not used until we implement individual answer tracking\n // const individualAnswerBlock = `<div class=\"${classes.blockContainer}\">\n // <div class=\"${classes.blockResponse}\" id=\"${data}Index\">R</div>\n // <div class=\"${classes.blockMath}\">\n // <span id=\"${data}\"></span>\n // </div>\n // </div>`;\n\n const genericAnswerBlock = `<div class=\"${cx(\n classes.blockContainer,\n classes.blockContainerGeneric\n )}\">\n <div class=\"${cx(\n classes.blockResponse,\n classes.blockResponseGeneric\n )}\" id=\"${data}Index\">Response</div>\n </div>`;\n\n return {\n htmlString: genericAnswerBlock,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = this.props;\n\n const responseAreas = {};\n\n if (model && model.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n model.expression.replace(REGEX, () => {\n responseAreas[`r${answerBlocks++}`] = {\n value: '',\n };\n });\n }\n\n if (!isEqual(responseAreas, this.state.responseAreas)) {\n this.setState(\n {\n showKeypad: false,\n responseAreas,\n },\n () => {\n if (this.root && Object.keys(responseAreas).length) {\n Object.keys(responseAreas).forEach((responseId, idx) => {\n const el = this.root.querySelector(`#${responseId}`);\n const indexEl = this.root.querySelector(`#${responseId}Index`);\n\n if (el) {\n // const MathQuill = require('@pie-framework/mathquill');\n let MQ = MathQuill.getInterface(2);\n // We no longer have individual answers, so we cannot set text content of blocks\n // el.textContent = response.answer;\n MQ.StaticMath(el);\n indexEl.textContent = `R${idx + 1}`;\n }\n });\n }\n }\n );\n }\n };\n\n onAddResponse = () => {\n const { model, onChange } = this.props;\n const { responseIdCounter } = this.state;\n const newModel = { ...model };\n\n let newCounter = responseIdCounter;\n\n while (model.responses.find((response) => response.id === newCounter)) {\n newCounter++;\n }\n\n const response = {\n id: newCounter,\n validation: 'literal',\n answer: '',\n alternates: {},\n };\n\n newModel.responses = newModel.responses.concat(response);\n onChange(newModel);\n\n this.setState({\n responseIdCounter: response.id,\n });\n };\n\n onResponseChange = (response, index) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.responses[index] = response;\n onChange(newModel);\n };\n\n render() {\n const {\n classes,\n model,\n imageSupport,\n configuration,\n promptEnabled,\n rationaleEnabled,\n } = this.props;\n const { showKeypad } = this.state;\n const {\n prompt,\n expression,\n equationEditor,\n promptEquationEditor = 'miscellaneous',\n responses,\n responseType,\n rationale,\n } = model;\n const { rationale: cRationale = {}, prompt: cPrompt = {} } = configuration || {};\n\n const classNames = {\n editor: classes.responseEditor,\n mathToolbar: classes.mathToolbar,\n };\n\n const responsesToUse =\n responseType === ResponseTypes.advanced\n ? responses\n : responses.slice(0, 1);\n\n return (\n <div\n ref={(r) => (this.root = r || this.root)}\n className={classes.container}\n >\n {promptEnabled && (\n <InputContainer label={cPrompt.label} className={classes.promptHolder}>\n <EditableHtml\n onFocus={this.onPromptFocus}\n className={classes.prompt}\n markup={prompt || ''}\n onChange={this.onChange('prompt')}\n imageSupport={imageSupport}\n nonEmpty={false}\n />\n </InputContainer>\n )}\n {rationaleEnabled && (\n <InputContainer\n label={cRationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={rationale || ''}\n pluginProps={{\n math: {\n controlledKeypadMode: false\n }\n }}\n onChange={this.onChange('rationale')}\n imageSupport={imageSupport}\n nonEmpty={false}\n />\n </InputContainer>\n )}\n {responseType === ResponseTypes.advanced && ([\n <InputContainer\n key=\"templateEditorType\"\n label=\"Response Template Equation Editor\"\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n onChange={this.onChange('promptEquationEditor')}\n value={promptEquationEditor}\n >\n <MenuItem value={1}>Grade 1 - 2</MenuItem>\n <MenuItem value={3}>Grade 3 - 5</MenuItem>\n <MenuItem value={6}>Grade 6 - 7</MenuItem>\n <MenuItem value={8}>Grade 8 - HS</MenuItem>\n <MenuItem value={'geometry'}>Geometry</MenuItem>\n <MenuItem value={'advanced-algebra'}>Advanced Algebra</MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'miscellaneous'}>Miscellaneous</MenuItem>\n </Select>\n </InputContainer>,\n <div className={classes.inputContainer} key=\"templateHolder\">\n <InputLabel className={classes.templateTitle}>\n RESPONSE TEMPLATE\n </InputLabel>\n <MathToolbar\n classNames={classNames}\n allowAnswerBlock\n keypadMode={promptEquationEditor}\n controlledKeypad\n showKeypad={showKeypad}\n latex={prepareForStatic(expression) || ''}\n onChange={this.onChange('expression')}\n onFocus={this.onFocus}\n onDone={this.onDone}\n />\n </div>\n ])}\n <h3>Define Correct Response</h3>\n <div className={classes.flexContainer}>\n <InputContainer\n label=\"Equation Editor\"\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n onChange={this.onChange('equationEditor')}\n value={equationEditor}\n >\n <MenuItem value={1}>Grade 1 - 2</MenuItem>\n <MenuItem value={3}>Grade 3 - 5</MenuItem>\n <MenuItem value={6}>Grade 6 - 7</MenuItem>\n <MenuItem value={8}>Grade 8 - HS</MenuItem>\n <MenuItem value={'geometry'}>Geometry</MenuItem>\n <MenuItem value={'advanced-algebra'}>Advanced Algebra</MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'miscellaneous'}>Miscellaneous</MenuItem>\n </Select>\n </InputContainer>\n {responseType === ResponseTypes.advanced && (\n <Button\n className={classes.addResponseButton}\n type=\"primary\"\n onClick={this.onAddResponse}\n >\n + Response\n </Button>\n )}\n </div>\n {responsesToUse.map((response, idx) => (\n <Response\n key={response.id}\n mode={equationEditor}\n response={response}\n defaultResponse={responseType === ResponseTypes.simple}\n onResponseChange={this.onResponseChange}\n index={idx}\n />\n ))}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(GeneralConfigBlock);\n"],"file":"general-config-block.js"}
1
+ {"version":3,"sources":["../src/general-config-block.jsx"],"names":["registered","styles","theme","container","marginTop","spacing","unit","marginBottom","display","flexDirection","templateTitle","fontSize","addResponseButton","border","width","flexContainer","alignItems","justifyContent","selectContainer","flex","inputContainer","responseEditor","minWidth","maxWidth","height","minHeight","textAlign","padding","promptHolder","paddingBottom","prompt","paddingTop","blockContainer","margin","blockContainerGeneric","blockResponse","fontFamily","color","background","borderRight","blockResponseGeneric","blockMath","tooltip","whiteSpace","errorText","REGEX","TEMPORARY_RESPONSE_FIELD","ANSWER_BLOCK_REGEX","NEWLINE_BLOCK","NEWLINE_LATEX","prepareForStatic","expression","answerBlocks","replace","prepareForModel","GeneralConfigBlock","props","name","evtOrValue","model","onChange","newModel","target","value","setState","showKeypad","responseAreas","state","root","Object","keys","length","forEach","responseId","idx","el","querySelector","indexEl","MQ","MathQuill","getInterface","StaticMath","textContent","responseIdCounter","newCounter","responses","find","response","id","validation","answer","alternates","concat","index","classes","window","registerEmbed","data","genericAnswerBlock","htmlString","text","latex","handleAnswerBlockDomUpdate","imageSupport","uploadSoundSupport","configuration","promptEnabled","rationaleEnabled","toolbarOpts","equationEditor","promptEquationEditor","responseType","rationale","spellCheckEnabled","errors","cRationale","cPrompt","ignoreOrder","cIgnoreOrder","allowTrailingZeros","cAllowTrailingZeros","maxResponseAreas","maxImageWidth","maxImageHeight","validationMessage","responsesErrors","responseAreasError","defaultImageMaxWidth","defaultImageMaxHeight","classNames","editor","mathToolbar","responsesToUse","ResponseTypes","advanced","slice","r","label","onPromptFocus","language","math","controlledKeypadMode","marginLeft","select","onFocus","onDone","map","simple","onResponseChange","React","Component","PropTypes","object","isRequired","func","bool"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { InputContainer } from '@pie-lib/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Response from './response';\nimport { MathToolbar } from '@pie-lib/math-toolbar';\nimport isEqual from 'lodash/isEqual';\nimport { ResponseTypes, generateValidationMessage } from './utils';\nimport MathQuill from '@pie-framework/mathquill';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nlet registered = false;\n\nconst styles = (theme) => ({\n container: {\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n display: 'flex',\n flexDirection: 'column',\n },\n templateTitle: {\n fontSize: '0.85rem',\n },\n addResponseButton: {\n border: '1px solid lightgrey',\n float: 'right',\n width: '150px',\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n selectContainer: {\n flex: 'initial',\n width: '40%',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n marginBottom: theme.spacing.unit * 4,\n display: 'flex',\n flexDirection: 'column',\n width: '90%',\n },\n responseEditor: {\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n minWidth: '500px',\n maxWidth: 'inherit',\n height: 'auto',\n minHeight: '130px',\n textAlign: 'left',\n padding: theme.spacing.unit,\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n maxWidth: '600px',\n },\n blockContainer: {\n margin: theme.spacing.unit,\n display: 'inline-flex',\n border: '2px solid grey',\n },\n blockContainerGeneric: {\n margin: theme.spacing.unit / 2,\n },\n blockResponse: {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif !important',\n flex: 2,\n color: 'grey',\n background: 'lightgrey',\n fontSize: '0.8rem',\n padding: theme.spacing.unit / 2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: '2px solid grey',\n },\n blockResponseGeneric: {\n borderRight: 0,\n },\n blockMath: {\n color: '#bdbdbd',\n padding: theme.spacing.unit / 2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flex: 8,\n '& > .mq-math-mode': {\n '& > .mq-hasCursor': {\n '& > .mq-cursor': {\n display: 'none',\n },\n },\n },\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre-wrap',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n padding: '5px 0',\n },\n});\n\nconst REGEX = /{{response}}/gm;\nconst TEMPORARY_RESPONSE_FIELD = /\\\\%response\\\\%/gm;\nconst ANSWER_BLOCK_REGEX = /\\\\embed\\{answerBlock\\}\\[r\\d*\\]/g;\nconst NEWLINE_BLOCK = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = /\\\\newline/g;\n\nfunction prepareForStatic(expression) {\n if (expression) {\n let answerBlocks = 1; // assume one at least\n\n return expression\n .replace(REGEX, () => `\\\\embed{answerBlock}[r${answerBlocks++}]`)\n .replace(NEWLINE_LATEX, '\\\\embed{newLine}[]');\n }\n}\n\nfunction prepareForModel(expression) {\n if (expression) {\n return expression\n .replace(ANSWER_BLOCK_REGEX, () => '{{response}}')\n .replace(TEMPORARY_RESPONSE_FIELD, () => '{{response}}')\n .replace(NEWLINE_BLOCK, () => '\\\\newline');\n }\n}\n\nclass GeneralConfigBlock extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n configuration: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n promptEnabled: PropTypes.bool,\n rationaleEnabled: PropTypes.bool,\n toolbarOpts: PropTypes.object,\n };\n\n constructor(props) {\n super(props);\n\n const responseAreas = {};\n\n if (props.model && props.model.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n props.model.expression.replace(REGEX, () => {\n responseAreas[`r${answerBlocks++}`] = {\n value: '',\n };\n });\n }\n\n this.state = {\n showKeypad: false,\n responseAreas,\n responseIdCounter: Object.keys(responseAreas).length,\n };\n }\n\n onChange = (name) => (evtOrValue) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n if (typeof evtOrValue === 'object') {\n newModel[name] = evtOrValue.target.value;\n } else {\n newModel[name] = evtOrValue;\n }\n\n if (name === 'expression') {\n newModel[name] = prepareForModel(evtOrValue);\n }\n\n onChange(newModel);\n };\n\n onDone = () => {\n this.setState({ showKeypad: false });\n };\n\n onFocus = () => {\n this.setState({ showKeypad: true });\n };\n\n onPromptFocus = () => {\n this.setState({ showKeypad: false });\n };\n\n UNSAFE_componentWillMount() {\n const { classes } = this.props;\n\n if (typeof window !== 'undefined') {\n // const MathQuill = require('@pie-framework/mathquill');\n let MQ = MathQuill.getInterface(2);\n\n if (!registered) {\n MQ.registerEmbed('answerBlock', (data) => {\n // not used until we implement individual answer tracking\n // const individualAnswerBlock = `<div class=\"${classes.blockContainer}\">\n // <div class=\"${classes.blockResponse}\" id=\"${data}Index\">R</div>\n // <div class=\"${classes.blockMath}\">\n // <span id=\"${data}\"></span>\n // </div>\n // </div>`;\n\n const genericAnswerBlock = `<div class=\"${cx(classes.blockContainer, classes.blockContainerGeneric)}\">\n <div class=\"${cx(classes.blockResponse, classes.blockResponseGeneric)}\" id=\"${data}Index\">Response</div>\n </div>`;\n\n return {\n htmlString: genericAnswerBlock,\n text: () => 'text',\n latex: () => `\\\\embed{answerBlock}[${data}]`,\n };\n });\n\n registered = true;\n }\n }\n }\n\n componentDidMount() {\n this.handleAnswerBlockDomUpdate();\n }\n\n componentDidUpdate() {\n this.handleAnswerBlockDomUpdate();\n }\n\n handleAnswerBlockDomUpdate = () => {\n const { model } = this.props;\n\n const responseAreas = {};\n\n if (model && model.expression) {\n let answerBlocks = 1; // assume one at least\n // build out local state model using responses declared in expression\n\n model.expression.replace(REGEX, () => {\n responseAreas[`r${answerBlocks++}`] = {\n value: '',\n };\n });\n }\n\n if (!isEqual(responseAreas, this.state.responseAreas)) {\n this.setState(\n {\n responseAreas,\n },\n () => {\n if (this.root && Object.keys(responseAreas).length) {\n Object.keys(responseAreas).forEach((responseId, idx) => {\n const el = this.root.querySelector(`#${responseId}`);\n const indexEl = this.root.querySelector(`#${responseId}Index`);\n\n if (el) {\n // const MathQuill = require('@pie-framework/mathquill');\n let MQ = MathQuill.getInterface(2);\n // We no longer have individual answers, so we cannot set text content of blocks\n // el.textContent = response.answer;\n MQ.StaticMath(el);\n indexEl.textContent = `R${idx + 1}`;\n }\n });\n }\n },\n );\n }\n };\n\n onAddResponse = () => {\n const { model, onChange } = this.props;\n const { responseIdCounter } = this.state;\n const newModel = { ...model };\n\n let newCounter = responseIdCounter;\n\n while (model.responses.find((response) => response.id === newCounter)) {\n newCounter++;\n }\n\n const response = {\n id: newCounter,\n validation: 'literal',\n answer: '',\n alternates: {},\n };\n\n newModel.responses = newModel.responses.concat(response);\n onChange(newModel);\n\n this.setState({\n responseIdCounter: response.id,\n });\n };\n\n onResponseChange = (response, index) => {\n const { model, onChange } = this.props;\n const newModel = { ...model };\n\n newModel.responses[index] = response;\n onChange(newModel);\n };\n\n render() {\n const {\n classes,\n model,\n imageSupport,\n uploadSoundSupport,\n configuration,\n promptEnabled,\n rationaleEnabled,\n toolbarOpts,\n } = this.props;\n const { showKeypad } = this.state;\n const {\n prompt,\n expression,\n equationEditor,\n promptEquationEditor = '8',\n responses,\n responseType,\n rationale,\n spellCheckEnabled,\n errors = {},\n } = model;\n const {\n rationale: cRationale = {},\n prompt: cPrompt = {},\n ignoreOrder: cIgnoreOrder = {},\n allowTrailingZeros: cAllowTrailingZeros = {},\n maxResponseAreas,\n maxImageWidth = {},\n maxImageHeight = {},\n } = configuration || {};\n const validationMessage = generateValidationMessage(configuration, model);\n const { responsesErrors, responseAreasError } = errors;\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const classNames = {\n editor: classes.responseEditor,\n mathToolbar: classes.mathToolbar,\n };\n\n const responsesToUse = responseType === ResponseTypes.advanced ? responses : responses.slice(0, 1);\n\n return (\n <div ref={(r) => (this.root = r || this.root)} className={classes.container}>\n {promptEnabled && (\n <InputContainer label={cPrompt.label} className={classes.promptHolder}>\n <EditableHtml\n onFocus={this.onPromptFocus}\n className={classes.prompt}\n markup={prompt || ''}\n onChange={this.onChange('prompt')}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n {rationaleEnabled && (\n <InputContainer label={cRationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={rationale || ''}\n pluginProps={{\n math: {\n controlledKeypadMode: false,\n },\n }}\n onChange={this.onChange('rationale')}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n <div className={classes.flexContainer} style={{ justifyContent: 'flex-start' }}>\n <h3>Define Response</h3>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n </div>\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n\n {responseType === ResponseTypes.advanced && [\n <InputContainer\n key=\"templateEditorType\"\n label=\"Response Template Equation Editor\"\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n onChange={this.onChange('promptEquationEditor')}\n value={promptEquationEditor}\n >\n <MenuItem value=\"non-negative-integers\">Numeric - Non-Negative Integers</MenuItem>\n <MenuItem value=\"integers\">Numeric - Integers</MenuItem>\n <MenuItem value=\"decimals\">Numeric - Decimals</MenuItem>\n <MenuItem value=\"fractions\">Numeric - Fractions</MenuItem>\n <MenuItem value={1}>Grade 1 - 2</MenuItem>\n <MenuItem value={3}>Grade 3 - 5</MenuItem>\n <MenuItem value={6}>Grade 6 - 7</MenuItem>\n <MenuItem value={8}>Grade 8 - HS</MenuItem>\n <MenuItem value={'geometry'}>Geometry</MenuItem>\n <MenuItem value={'advanced-algebra'}>Advanced Algebra</MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </InputContainer>,\n <div className={classes.inputContainer} key=\"templateHolder\">\n <InputLabel className={classes.templateTitle}>RESPONSE TEMPLATE</InputLabel>\n <MathToolbar\n classNames={classNames}\n allowAnswerBlock\n keypadMode={promptEquationEditor}\n controlledKeypad\n showKeypad={showKeypad}\n latex={prepareForStatic(expression) || ''}\n onChange={this.onChange('expression')}\n onFocus={this.onFocus}\n onDone={this.onDone}\n maxResponseAreas={maxResponseAreas}\n error={responseAreasError}\n />\n </div>,\n ]}\n <h4>Define Correct Response</h4>\n <div className={classes.flexContainer}>\n <InputContainer label=\"Equation Editor\" className={classes.selectContainer}>\n <Select className={classes.select} onChange={this.onChange('equationEditor')} value={equationEditor}>\n <MenuItem value=\"non-negative-integers\">Numeric - Non-Negative Integers</MenuItem>\n <MenuItem value=\"integers\">Numeric - Integers</MenuItem>\n <MenuItem value=\"decimals\">Numeric - Decimals</MenuItem>\n <MenuItem value=\"fractions\">Numeric - Fractions</MenuItem>\n <MenuItem value={1}>Grade 1 - 2</MenuItem>\n <MenuItem value={3}>Grade 3 - 5</MenuItem>\n <MenuItem value={6}>Grade 6 - 7</MenuItem>\n <MenuItem value={8}>Grade 8 - HS</MenuItem>\n <MenuItem value={'geometry'}>Geometry</MenuItem>\n <MenuItem value={'advanced-algebra'}>Advanced Algebra</MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </InputContainer>\n </div>\n {responsesToUse.map((response, idx) => (\n <Response\n key={response.id}\n mode={equationEditor}\n response={response}\n defaultResponse={responseType === ResponseTypes.simple}\n onResponseChange={this.onResponseChange}\n index={idx}\n cIgnoreOrder={cIgnoreOrder}\n cAllowTrailingZeros={cAllowTrailingZeros}\n error={responsesErrors && responsesErrors[idx]}\n />\n ))}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(GeneralConfigBlock);\n"],"file":"general-config-block.js"}