@pie-element/explicit-constructed-response 6.12.1-next.9 → 6.12.2-next.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/configure/CHANGELOG.md +11 -0
- package/configure/lib/ecr-toolbar.js +19 -14
- package/configure/lib/ecr-toolbar.js.map +1 -1
- package/configure/lib/main.js +6 -5
- package/configure/lib/main.js.map +1 -1
- package/configure/package.json +2 -2
- package/controller/CHANGELOG.md +11 -0
- package/controller/package.json +2 -2
- package/package.json +3 -3
- package/module/configure.js +0 -17141
- package/module/controller.js +0 -24943
- package/module/demo.js +0 -45
- package/module/element.js +0 -128390
- package/module/index.html +0 -21
- package/module/manifest.json +0 -14
- package/module/print-demo.js +0 -83
- package/module/print.html +0 -18
- package/module/print.js +0 -128333
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.12.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response@6.12.0...@pie-element/explicit-constructed-response@6.12.1) (2024-04-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-3683, PD-3644 ([73734c5](https://github.com/pie-framework/pie-elements/commit/73734c50a1e4fcda6be4f67c725816d75aea222f))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [6.12.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response@6.11.1...@pie-element/explicit-constructed-response@6.12.0) (2024-04-22)
|
|
7
18
|
|
|
8
19
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.11.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response-configure@6.11.0...@pie-element/explicit-constructed-response-configure@6.11.1) (2024-04-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-3683, PD-3644 ([73734c5](https://github.com/pie-framework/pie-elements/commit/73734c50a1e4fcda6be4f67c725816d75aea222f))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [6.11.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response-configure@6.10.1...@pie-element/explicit-constructed-response-configure@6.11.0) (2024-04-22)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -63,20 +63,26 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
63
63
|
var newValue = _this.state.markup;
|
|
64
64
|
var _this$props = _this.props,
|
|
65
65
|
node = _this$props.node,
|
|
66
|
-
|
|
66
|
+
nodePath = _this$props.nodePath,
|
|
67
|
+
editor = _this$props.editor,
|
|
67
68
|
onToolbarDone = _this$props.onToolbarDone,
|
|
68
69
|
onChangeResponse = _this$props.onChangeResponse;
|
|
69
70
|
|
|
70
|
-
var update = _objectSpread(_objectSpread({}, node.data
|
|
71
|
+
var update = _objectSpread(_objectSpread({}, node.data), {}, {
|
|
71
72
|
value: newValue
|
|
72
73
|
});
|
|
73
74
|
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
editor && editor.apply({
|
|
76
|
+
type: 'set_node',
|
|
77
|
+
path: nodePath,
|
|
78
|
+
properties: {
|
|
79
|
+
data: node.data
|
|
80
|
+
},
|
|
81
|
+
newProperties: {
|
|
82
|
+
data: update
|
|
83
|
+
}
|
|
76
84
|
});
|
|
77
|
-
|
|
78
|
-
change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);
|
|
79
|
-
onToolbarDone(change, true);
|
|
85
|
+
onToolbarDone(true);
|
|
80
86
|
onChangeResponse(newValue);
|
|
81
87
|
});
|
|
82
88
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e) {
|
|
@@ -117,8 +123,11 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
117
123
|
}, {
|
|
118
124
|
key: "render",
|
|
119
125
|
value: function render() {
|
|
126
|
+
var _node$data;
|
|
127
|
+
|
|
120
128
|
var _this$props3 = this.props,
|
|
121
129
|
classes = _this$props3.classes,
|
|
130
|
+
node = _this$props3.node,
|
|
122
131
|
maxLengthPerChoiceEnabled = _this$props3.maxLengthPerChoiceEnabled;
|
|
123
132
|
var _this$state = this.state,
|
|
124
133
|
markup = _this$state.markup,
|
|
@@ -141,7 +150,7 @@ var ECRToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
141
150
|
},
|
|
142
151
|
onChange: this.onChange,
|
|
143
152
|
onBlur: this.onDone,
|
|
144
|
-
value: markup || '',
|
|
153
|
+
value: markup || (node === null || node === void 0 ? void 0 : (_node$data = node.data) === null || _node$data === void 0 ? void 0 : _node$data.value) || '',
|
|
145
154
|
inputProps: inputProps
|
|
146
155
|
}));
|
|
147
156
|
}
|
|
@@ -154,15 +163,11 @@ exports.ECRToolbar = ECRToolbar;
|
|
|
154
163
|
correctChoice: _propTypes["default"].object,
|
|
155
164
|
classes: _propTypes["default"].object,
|
|
156
165
|
node: _propTypes["default"].object,
|
|
166
|
+
nodePath: _propTypes["default"].array,
|
|
157
167
|
onDone: _propTypes["default"].func,
|
|
158
168
|
onChangeResponse: _propTypes["default"].func.isRequired,
|
|
159
169
|
onToolbarDone: _propTypes["default"].func.isRequired,
|
|
160
|
-
|
|
161
|
-
change: _propTypes["default"].func.isRequired,
|
|
162
|
-
document: _propTypes["default"].shape({
|
|
163
|
-
getNextText: _propTypes["default"].func.isRequired
|
|
164
|
-
})
|
|
165
|
-
}),
|
|
170
|
+
editor: _propTypes["default"].object,
|
|
166
171
|
maxLengthPerChoiceEnabled: _propTypes["default"].bool
|
|
167
172
|
});
|
|
168
173
|
var StyledECRToolbar = (0, _styles.withStyles)(function (theme) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ecr-toolbar.jsx"],"names":["findSlateNode","key","window","document","querySelector","ECRToolbar","markup","newValue","state","props","node","
|
|
1
|
+
{"version":3,"sources":["../src/ecr-toolbar.jsx"],"names":["findSlateNode","key","window","document","querySelector","ECRToolbar","markup","newValue","state","props","node","nodePath","editor","onToolbarDone","onChangeResponse","update","data","value","apply","type","path","properties","newProperties","e","setState","target","correctChoice","choice","domNode","domNodeRect","getBoundingClientRect","closest","editorRect","top","left","label","toolbarStyle","position","height","width","classes","maxLengthPerChoiceEnabled","inputProps","maxLength","backgroundColor","input","onChange","onDone","React","Component","PropTypes","object","array","func","isRequired","bool","StyledECRToolbar","theme","respArea","palette","common","white","padding","errorInput","border","error","main"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport OutlinedInput from '@material-ui/core/OutlinedInput';\n\nconst findSlateNode = (key) => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nexport class ECRToolbar extends React.Component {\n static propTypes = {\n correctChoice: PropTypes.object,\n classes: PropTypes.object,\n node: PropTypes.object,\n nodePath: PropTypes.array,\n onDone: PropTypes.func,\n onChangeResponse: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n editor: PropTypes.object,\n maxLengthPerChoiceEnabled: PropTypes.bool,\n };\n\n state = {\n markup: '',\n };\n\n componentDidMount() {\n const { correctChoice, node } = this.props;\n const choice = correctChoice || {};\n\n const domNode = findSlateNode(node.key);\n\n if (domNode) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editor = domNode.closest('[data-slate-editor]');\n const editorRect = editor.getBoundingClientRect();\n const top = domNodeRect.top - editorRect.top;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n markup: choice.label,\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 20}px`,\n left: `${left + 20}px`,\n width: domNodeRect.width,\n },\n });\n }\n }\n\n onDone = () => {\n const { markup: newValue } = this.state;\n const { node, nodePath, editor, onToolbarDone, onChangeResponse } = this.props;\n const update = { ...node.data, value: newValue };\n\n editor && editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: { data: update }\n });\n\n onToolbarDone(true);\n onChangeResponse(newValue);\n };\n\n onChange = (e) => this.setState({ markup: e.target.value });\n\n render() {\n const { classes, node, maxLengthPerChoiceEnabled } = this.props;\n const { markup, toolbarStyle } = this.state;\n const inputProps = maxLengthPerChoiceEnabled ? {} : { maxLength: 25 };\n\n return (\n <div\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6',\n }}\n >\n <OutlinedInput\n style={{ width: '100%' }}\n autoFocus\n labelWidth={0}\n classes={{\n input: classes.input,\n }}\n onChange={this.onChange}\n onBlur={this.onDone}\n value={markup || node?.data?.value || ''}\n inputProps={inputProps}\n />\n </div>\n );\n }\n}\n\nconst StyledECRToolbar = withStyles((theme) => ({\n respArea: {\n backgroundColor: theme.palette.common.white,\n },\n input: {\n backgroundColor: theme.palette.common.white,\n padding: '10px 20px 10px 10px',\n },\n errorInput: {\n border: `2px solid ${theme.palette.error.main}`,\n },\n}))(ECRToolbar);\n\nexport default StyledECRToolbar;\n"],"file":"ecr-toolbar.js"}
|
package/configure/lib/main.js
CHANGED
|
@@ -260,7 +260,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
260
260
|
var newChoices = choices ? (0, _cloneDeep["default"])(choices) : {};
|
|
261
261
|
var newCachedChoices = cachedChoices ? (0, _cloneDeep["default"])(cachedChoices) : {};
|
|
262
262
|
nodes.forEach(function (node) {
|
|
263
|
-
var keyForNode = node.data.
|
|
263
|
+
var keyForNode = node.data.index;
|
|
264
264
|
|
|
265
265
|
if (!newChoices[keyForNode] && newCachedChoices[keyForNode]) {
|
|
266
266
|
Object.assign(newChoices, (0, _pick["default"])(newCachedChoices, keyForNode));
|
|
@@ -514,16 +514,17 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
514
514
|
duplicates: true
|
|
515
515
|
},
|
|
516
516
|
maxResponseAreas: maxResponseAreas,
|
|
517
|
-
respAreaToolbar: function respAreaToolbar(node,
|
|
517
|
+
respAreaToolbar: function respAreaToolbar(node, nodePath, editor, onToolbarDone) {
|
|
518
518
|
var model = _this2.props.model;
|
|
519
|
-
var correctChoice = (model.choices[node.data.
|
|
519
|
+
var correctChoice = (model.choices[node.data.index] || [])[0];
|
|
520
520
|
return function () {
|
|
521
521
|
return /*#__PURE__*/_react["default"].createElement(_ecrToolbar["default"], {
|
|
522
522
|
onChangeResponse: function onChangeResponse(newVal) {
|
|
523
|
-
return _this2.onChangeResponse(node.data.
|
|
523
|
+
return _this2.onChangeResponse(node.data.index, newVal);
|
|
524
524
|
},
|
|
525
525
|
node: node,
|
|
526
|
-
|
|
526
|
+
nodePath: nodePath,
|
|
527
|
+
editor: editor,
|
|
527
528
|
onToolbarDone: onToolbarDone,
|
|
528
529
|
correctChoice: correctChoice,
|
|
529
530
|
maxLengthPerChoiceEnabled: maxLengthPerChoiceEnabled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","dropdown","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","markup","minHeight","choiceConfiguration","paddingBottom","switchElement","justifyContent","margin","addButton","text","fontSize","typography","tooltip","whiteSpace","maxWidth","errorText","color","palette","error","main","flexContainer","display","alignItems","responseHeader","marginTop","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","Main","newVal","props","onModelChanged","model","prompt","rationale","teacherInstructions","slateMarkup","choices","maxLengthPerChoice","index","newValLength","length","label","value","nbOfMissingChoices","Array","fill","splice","domMarkup","allRespAreas","querySelectorAll","allChoices","updatedMaxLengthPerChoice","forEach","el","newChoices","dataset","callback","setState","cachedChoices","undefined","nodes","state","newCachedChoices","node","keyForNode","data","get","Object","assign","hasOwnProperty","trailing","leading","undefinedLengths","values","choice","labelLengthsArr","map","Math","max","classes","configuration","onConfigurationChanged","imageSupport","uploadSoundSupport","baseInputConfiguration","contentDimensions","maxImageWidth","maxImageHeight","maxResponseAreas","partialScoring","playerSpellCheck","template","settingsPanelDisabled","spellCheck","editSource","withRubric","mathMlOptions","language","languageChoices","errors","maxLengthPerChoiceEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","choicesErrors","promptError","rationaleError","responseAreasError","responseAreas","teacherInstructionsError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","enabled","options","panelProperties","playerSpellCheckEnabled","rubricEnabled","getPluginProps","onModelChange","Settings","Properties","onTeacherInstructionsChanged","inputConfiguration","onPromptChanged","marginLeft","ALL_PLUGINS","type","duplicates","respAreaToolbar","onToolbarDone","correctChoice","onChangeResponse","onHandleAreaChange","onChange","onBlur","onResponsesChanged","onLengthChanged","onRationaleChanged","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEmpty from 'lodash/isEmpty';\nimport pick from 'lodash/pick';\nimport throttle from 'lodash/throttle';\nimport { EditableHtml, ALL_PLUGINS } from '@pie-lib/pie-toolbox/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/pie-toolbox/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport ECRToolbar from './ecr-toolbar';\nimport AlternateResponses from './alternateResponses';\nimport { getAdjustedLength } from './markupUtils';\nimport { generateValidationMessage } from './utils';\nimport classnames from 'classnames';\n\nconst { toggle, Panel, dropdown } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px',\n },\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n float: 'right',\n },\n text: {\n fontSize: theme.typography.fontSize + 2,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'end',\n },\n responseHeader: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit,\n },\n});\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.object,\n };\n\n state = {};\n\n componentDidMount() {\n const {\n model: { slateMarkup, choices, maxLengthPerChoice = [] },\n onModelChanged,\n } = this.props;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n this.setState({ markup: slateMarkup });\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = (choice || []).map((choice) => (choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n onModelChanged({ ...this.props.model, maxLengthPerChoice });\n }\n\n onModelChange = (newVal) => {\n this.props.onModelChanged({ ...this.props.model, ...newVal });\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onRationaleChanged = (rationale) => {\n this.props.onModelChanged({ ...this.props.model, rationale });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n onMarkupChanged = (slateMarkup) => {\n this.props.onModelChanged({ ...this.props.model, slateMarkup });\n };\n\n onResponsesChanged = (choices) => {\n this.props.onModelChanged({ ...this.props.model, choices });\n };\n\n onLengthChanged = (maxLengthPerChoice) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, maxLengthPerChoice });\n };\n\n onChangeResponse = (index, newVal) => {\n const { model, onModelChanged } = this.props;\n const { choices } = model;\n let { maxLengthPerChoice } = model;\n const newValLength = (newVal || '').length;\n\n if (!choices[index]) {\n choices[index] = [{ label: newVal || '', value: '0' }];\n\n // add default values for missing choices up to the new index position\n const nbOfMissingChoices = index > maxLengthPerChoice.length ? index - maxLengthPerChoice.length : 0;\n\n maxLengthPerChoice = [...maxLengthPerChoice, ...Array(nbOfMissingChoices).fill(1)];\n\n maxLengthPerChoice.splice(index, 0, getAdjustedLength(newValLength));\n } else {\n choices[index][0].label = newVal || '';\n\n if (\n maxLengthPerChoice &&\n (maxLengthPerChoice[index] < newValLength || maxLengthPerChoice[index] > newValLength + 10)\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(newValLength);\n }\n }\n\n onModelChanged({ ...model, choices, maxLengthPerChoice });\n };\n\n onChange = (markup) => {\n const {\n model: { choices, maxLengthPerChoice },\n onModelChanged,\n } = this.props;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll('[data-type=\"explicit_constructed_response\"]');\n\n const allChoices = {};\n const updatedMaxLengthPerChoice = [];\n\n allRespAreas.forEach((el, index) => {\n const newChoices = cloneDeep(choices[el.dataset.index]);\n\n if (newChoices) {\n newChoices[0] = {\n label: el.dataset.value || '',\n value: '0',\n };\n\n updatedMaxLengthPerChoice[index] = maxLengthPerChoice[el.dataset.index];\n }\n\n allChoices[index] = newChoices;\n el.dataset.index = index;\n });\n\n const callback = () =>\n onModelChanged({\n ...this.props.model,\n choices: allChoices,\n slateMarkup: domMarkup.innerHTML,\n maxLengthPerChoice: updatedMaxLengthPerChoice,\n });\n\n this.setState({ cachedChoices: undefined }, callback);\n };\n\n onHandleAreaChange = throttle(\n (nodes) => {\n const {\n model: { choices },\n onModelChanged,\n } = this.props;\n const { cachedChoices } = this.state;\n\n if (!nodes) {\n return;\n }\n\n const newChoices = choices ? cloneDeep(choices) : {};\n const newCachedChoices = cachedChoices ? cloneDeep(cachedChoices) : {};\n\n nodes.forEach((node) => {\n const keyForNode = node.data.get('index');\n\n if (!newChoices[keyForNode] && newCachedChoices[keyForNode]) {\n Object.assign(newChoices, pick(newCachedChoices, keyForNode));\n\n if (newCachedChoices.hasOwnProperty(keyForNode)) {\n delete newCachedChoices[keyForNode];\n }\n } else {\n Object.assign(newCachedChoices, pick(newChoices, keyForNode));\n\n if (newChoices.hasOwnProperty(keyForNode)) {\n delete newChoices[keyForNode];\n }\n }\n });\n\n const callback = () => onModelChanged({ ...this.props.model, choices: newChoices });\n\n this.setState({ cachedChoices: newCachedChoices }, callback);\n },\n 500,\n { trailing: false, leading: true },\n );\n\n render() {\n const { classes, model, configuration, onConfigurationChanged, imageSupport, uploadSoundSupport } = this.props;\n\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n maxLengthPerChoice = {},\n maxResponseAreas,\n partialScoring = {},\n playerSpellCheck = {},\n prompt = {},\n rationale = {},\n template = {},\n settingsPanelDisabled,\n spellCheck = {},\n editSource = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n maxLengthPerChoiceEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n const {\n choices: choicesErrors = {},\n prompt: promptError,\n rationale: rationaleError,\n responseAreas: responseAreasError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n maxLengthPerChoiceEnabled: maxLengthPerChoice.settings && toggle(maxLengthPerChoice.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n playerSpellCheckEnabled: playerSpellCheck.settings && toggle(playerSpellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n 'editSource.enabled': editSource?.settings && toggle(editSource.label, true),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => this.onModelChange(model)}\n onChangeConfiguration={(configuration) => onConfigurationChanged(configuration, true)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.text}>Define Template, Choices, and Correct Responses</Typography>\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: '8px' }} />\n </Tooltip>\n </div>\n\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(template?.inputConfiguration)}\n responseAreaProps={{\n type: 'explicit-constructed-response',\n options: {\n duplicates: true,\n },\n maxResponseAreas: maxResponseAreas,\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { model } = this.props;\n const correctChoice = (model.choices[node.data.get('index')] || [])[0];\n\n return () => (\n <ECRToolbar\n onChangeResponse={(newVal) => this.onChangeResponse(node.data.get('index'), newVal)}\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n correctChoice={correctChoice}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n />\n );\n },\n error: () => choicesErrors,\n onHandleAreaChange: this.onHandleAreaChange,\n }}\n className={classes.markup}\n markup={model.slateMarkup}\n onChange={this.onChange}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n\n {!isEmpty(model.choices) && (\n <Typography className={classnames(classes.text, classes.responseHeader)}>\n {`Define Alternates ${maxLengthPerChoiceEnabled ? 'and Character Limits' : ''}`}\n </Typography>\n )}\n <AlternateResponses\n model={model}\n onChange={this.onResponsesChanged}\n onLengthChange={this.onLengthChanged}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n spellCheck={spellCheckEnabled}\n choicesErrors={choicesErrors}\n />\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","dropdown","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","markup","minHeight","choiceConfiguration","paddingBottom","switchElement","justifyContent","margin","addButton","text","fontSize","typography","tooltip","whiteSpace","maxWidth","errorText","color","palette","error","main","flexContainer","display","alignItems","responseHeader","marginTop","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","Main","newVal","props","onModelChanged","model","prompt","rationale","teacherInstructions","slateMarkup","choices","maxLengthPerChoice","index","newValLength","length","label","value","nbOfMissingChoices","Array","fill","splice","domMarkup","allRespAreas","querySelectorAll","allChoices","updatedMaxLengthPerChoice","forEach","el","newChoices","dataset","callback","setState","cachedChoices","undefined","nodes","state","newCachedChoices","node","keyForNode","data","Object","assign","hasOwnProperty","trailing","leading","undefinedLengths","values","choice","labelLengthsArr","map","Math","max","classes","configuration","onConfigurationChanged","imageSupport","uploadSoundSupport","baseInputConfiguration","contentDimensions","maxImageWidth","maxImageHeight","maxResponseAreas","partialScoring","playerSpellCheck","template","settingsPanelDisabled","spellCheck","editSource","withRubric","mathMlOptions","language","languageChoices","errors","maxLengthPerChoiceEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","choicesErrors","promptError","rationaleError","responseAreasError","responseAreas","teacherInstructionsError","validationMessage","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","panelSettings","enabled","options","panelProperties","playerSpellCheckEnabled","rubricEnabled","getPluginProps","onModelChange","Settings","Properties","onTeacherInstructionsChanged","inputConfiguration","onPromptChanged","marginLeft","ALL_PLUGINS","type","duplicates","respAreaToolbar","nodePath","editor","onToolbarDone","correctChoice","onChangeResponse","onHandleAreaChange","onChange","onBlur","onResponsesChanged","onLengthChanged","onRationaleChanged","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEmpty from 'lodash/isEmpty';\nimport pick from 'lodash/pick';\nimport throttle from 'lodash/throttle';\nimport { EditableHtml, ALL_PLUGINS } from '@pie-lib/pie-toolbox/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/pie-toolbox/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport ECRToolbar from './ecr-toolbar';\nimport AlternateResponses from './alternateResponses';\nimport { getAdjustedLength } from './markupUtils';\nimport { generateValidationMessage } from './utils';\nimport classnames from 'classnames';\n\nconst { toggle, Panel, dropdown } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px',\n },\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n float: 'right',\n },\n text: {\n fontSize: theme.typography.fontSize + 2,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'end',\n },\n responseHeader: {\n marginTop: theme.spacing.unit * 3,\n marginBottom: theme.spacing.unit,\n },\n});\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.object,\n };\n\n state = {};\n\n componentDidMount() {\n const {\n model: { slateMarkup, choices, maxLengthPerChoice = [] },\n onModelChanged,\n } = this.props;\n const undefinedLengths = !maxLengthPerChoice.length;\n\n this.setState({ markup: slateMarkup });\n\n // calculate maxLengthPerChoice array if it is not defined or defined incorrectly\n Object.values(choices).forEach((choice, index) => {\n const labelLengthsArr = (choice || []).map((choice) => (choice.label || '').length);\n const length = Math.max(...labelLengthsArr);\n\n if (\n undefinedLengths ||\n !maxLengthPerChoice[index] ||\n maxLengthPerChoice[index] < length ||\n maxLengthPerChoice[index] > length + 10\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(length);\n }\n });\n\n onModelChanged({ ...this.props.model, maxLengthPerChoice });\n }\n\n onModelChange = (newVal) => {\n this.props.onModelChanged({ ...this.props.model, ...newVal });\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onRationaleChanged = (rationale) => {\n this.props.onModelChanged({ ...this.props.model, rationale });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n onMarkupChanged = (slateMarkup) => {\n this.props.onModelChanged({ ...this.props.model, slateMarkup });\n };\n\n onResponsesChanged = (choices) => {\n this.props.onModelChanged({ ...this.props.model, choices });\n };\n\n onLengthChanged = (maxLengthPerChoice) => {\n const { model, onModelChanged } = this.props;\n\n onModelChanged({ ...model, maxLengthPerChoice });\n };\n\n onChangeResponse = (index, newVal) => {\n const { model, onModelChanged } = this.props;\n const { choices } = model;\n let { maxLengthPerChoice } = model;\n const newValLength = (newVal || '').length;\n\n if (!choices[index]) {\n choices[index] = [{ label: newVal || '', value: '0' }];\n\n // add default values for missing choices up to the new index position\n const nbOfMissingChoices = index > maxLengthPerChoice.length ? index - maxLengthPerChoice.length : 0;\n\n maxLengthPerChoice = [...maxLengthPerChoice, ...Array(nbOfMissingChoices).fill(1)];\n\n maxLengthPerChoice.splice(index, 0, getAdjustedLength(newValLength));\n } else {\n choices[index][0].label = newVal || '';\n\n if (\n maxLengthPerChoice &&\n (maxLengthPerChoice[index] < newValLength || maxLengthPerChoice[index] > newValLength + 10)\n ) {\n maxLengthPerChoice[index] = getAdjustedLength(newValLength);\n }\n }\n\n onModelChanged({ ...model, choices, maxLengthPerChoice });\n };\n\n onChange = (markup) => {\n const {\n model: { choices, maxLengthPerChoice },\n onModelChanged,\n } = this.props;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll('[data-type=\"explicit_constructed_response\"]');\n\n const allChoices = {};\n const updatedMaxLengthPerChoice = [];\n\n allRespAreas.forEach((el, index) => {\n const newChoices = cloneDeep(choices[el.dataset.index]);\n\n if (newChoices) {\n newChoices[0] = {\n label: el.dataset.value || '',\n value: '0',\n };\n\n updatedMaxLengthPerChoice[index] = maxLengthPerChoice[el.dataset.index];\n }\n\n allChoices[index] = newChoices;\n el.dataset.index = index;\n });\n\n const callback = () =>\n onModelChanged({\n ...this.props.model,\n choices: allChoices,\n slateMarkup: domMarkup.innerHTML,\n maxLengthPerChoice: updatedMaxLengthPerChoice,\n });\n\n this.setState({ cachedChoices: undefined }, callback);\n };\n\n onHandleAreaChange = throttle(\n (nodes) => {\n const {\n model: { choices },\n onModelChanged,\n } = this.props;\n const { cachedChoices } = this.state;\n\n if (!nodes) {\n return;\n }\n\n const newChoices = choices ? cloneDeep(choices) : {};\n const newCachedChoices = cachedChoices ? cloneDeep(cachedChoices) : {};\n\n nodes.forEach((node) => {\n const keyForNode = node.data.index;\n\n if (!newChoices[keyForNode] && newCachedChoices[keyForNode]) {\n Object.assign(newChoices, pick(newCachedChoices, keyForNode));\n\n if (newCachedChoices.hasOwnProperty(keyForNode)) {\n delete newCachedChoices[keyForNode];\n }\n } else {\n Object.assign(newCachedChoices, pick(newChoices, keyForNode));\n\n if (newChoices.hasOwnProperty(keyForNode)) {\n delete newChoices[keyForNode];\n }\n }\n });\n\n const callback = () => onModelChanged({ ...this.props.model, choices: newChoices });\n\n this.setState({ cachedChoices: newCachedChoices }, callback);\n },\n 500,\n { trailing: false, leading: true },\n );\n\n render() {\n const { classes, model, configuration, onConfigurationChanged, imageSupport, uploadSoundSupport } = this.props;\n\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n maxLengthPerChoice = {},\n maxResponseAreas,\n partialScoring = {},\n playerSpellCheck = {},\n prompt = {},\n rationale = {},\n template = {},\n settingsPanelDisabled,\n spellCheck = {},\n editSource = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n errors,\n maxLengthPerChoiceEnabled,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n\n const {\n choices: choicesErrors = {},\n prompt: promptError,\n rationale: rationaleError,\n responseAreas: responseAreasError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n maxLengthPerChoiceEnabled: maxLengthPerChoice.settings && toggle(maxLengthPerChoice.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n playerSpellCheckEnabled: playerSpellCheck.settings && toggle(playerSpellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n 'editSource.enabled': editSource?.settings && toggle(editSource.label, true),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => this.onModelChange(model)}\n onChangeConfiguration={(configuration) => onConfigurationChanged(configuration, true)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.text}>Define Template, Choices, and Correct Responses</Typography>\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: '8px' }} />\n </Tooltip>\n </div>\n\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(template?.inputConfiguration)}\n responseAreaProps={{\n type: 'explicit-constructed-response',\n options: {\n duplicates: true,\n },\n maxResponseAreas: maxResponseAreas,\n respAreaToolbar: (node, nodePath, editor, onToolbarDone) => {\n const { model } = this.props;\n const correctChoice = (model.choices[node.data.index] || [])[0];\n\n return () => (\n <ECRToolbar\n onChangeResponse={(newVal) => this.onChangeResponse(node.data.index, newVal)}\n node={node}\n nodePath={nodePath}\n editor={editor}\n onToolbarDone={onToolbarDone}\n correctChoice={correctChoice}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n />\n );\n },\n error: () => choicesErrors,\n onHandleAreaChange: this.onHandleAreaChange,\n }}\n className={classes.markup}\n markup={model.slateMarkup}\n onChange={this.onChange}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n\n {!isEmpty(model.choices) && (\n <Typography className={classnames(classes.text, classes.responseHeader)}>\n {`Define Alternates ${maxLengthPerChoiceEnabled ? 'and Character Limits' : ''}`}\n </Typography>\n )}\n <AlternateResponses\n model={model}\n onChange={this.onResponsesChanged}\n onLengthChange={this.onLengthChanged}\n maxLengthPerChoiceEnabled={maxLengthPerChoiceEnabled}\n spellCheck={spellCheckEnabled}\n choicesErrors={choicesErrors}\n />\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration)}\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 mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|
package/configure/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/explicit-constructed-response-configure",
|
|
3
|
-
"version": "6.11.
|
|
3
|
+
"version": "6.11.1",
|
|
4
4
|
"private": true,
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"modue": "src/index.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"@material-ui/core": "^3.9.2",
|
|
9
9
|
"@material-ui/icons": "^3.0.1",
|
|
10
10
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
11
|
-
"@pie-lib/pie-toolbox": "
|
|
11
|
+
"@pie-lib/pie-toolbox": "next",
|
|
12
12
|
"classnames": "^2.2.6",
|
|
13
13
|
"debug": "^3.1.0",
|
|
14
14
|
"lodash": "^4.17.15",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.10.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response-controller@4.10.0...@pie-element/explicit-constructed-response-controller@4.10.1) (2024-04-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-3683, PD-3644 ([73734c5](https://github.com/pie-framework/pie-elements/commit/73734c50a1e4fcda6be4f67c725816d75aea222f))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [4.10.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/explicit-constructed-response-controller@4.9.1...@pie-element/explicit-constructed-response-controller@4.10.0) (2024-04-22)
|
|
7
18
|
|
|
8
19
|
|
package/controller/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/explicit-constructed-response-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "4.10.
|
|
4
|
+
"version": "4.10.1",
|
|
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": "
|
|
11
|
+
"@pie-lib/pie-toolbox": "next",
|
|
12
12
|
"debug": "^3.1.0",
|
|
13
13
|
"lodash": "^4.17.15",
|
|
14
14
|
"type-of": "^2.0.1"
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "6.12.
|
|
7
|
+
"version": "6.12.2-next.18+eac18faba",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"postpublish": "../../scripts/postpublish"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@material-ui/core": "^3.9.2",
|
|
14
14
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
15
|
-
"@pie-lib/pie-toolbox": "
|
|
15
|
+
"@pie-lib/pie-toolbox": "next",
|
|
16
16
|
"classnames": "^2.2.5",
|
|
17
17
|
"lodash": "^4.17.10",
|
|
18
18
|
"prop-types": "^15.6.1",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"author": "",
|
|
23
23
|
"license": "ISC",
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "eac18fabaf5f46e269d98cb3bdaedf47d2abe8f0",
|
|
25
25
|
"main": "lib/index.js",
|
|
26
26
|
"module": "src/index.js",
|
|
27
27
|
"exports": {
|