@pie-element/math-templated 2.14.3-next.0 → 2.14.3-next.15
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/configure/lib/design.js +8 -5
- package/configure/lib/design.js.map +1 -1
- package/configure/lib/index.js +17 -1
- package/configure/lib/index.js.map +1 -1
- package/configure/package.json +1 -1
- package/controller/lib/index.js +17 -1
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/module/configure.js +72 -40
- package/module/controller.js +22 -4
- package/module/element.js +22 -2
- package/module/print.js +22 -2
- package/package.json +3 -3
package/configure/lib/design.js
CHANGED
|
@@ -133,7 +133,11 @@ var Design = /*#__PURE__*/function (_React$Component) {
|
|
|
133
133
|
});
|
|
134
134
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (markup) {
|
|
135
135
|
var _this$props4 = _this.props,
|
|
136
|
-
|
|
136
|
+
_this$props4$model = _this$props4.model,
|
|
137
|
+
responses = _this$props4$model.responses,
|
|
138
|
+
validationDefault = _this$props4$model.validationDefault,
|
|
139
|
+
allowTrailingZerosDefault = _this$props4$model.allowTrailingZerosDefault,
|
|
140
|
+
ignoreOrderDefault = _this$props4$model.ignoreOrderDefault,
|
|
137
141
|
onModelChanged = _this$props4.onModelChanged;
|
|
138
142
|
var newResponses = {};
|
|
139
143
|
var domMarkup = createElementFromHTML(markup);
|
|
@@ -148,11 +152,10 @@ var Design = /*#__PURE__*/function (_React$Component) {
|
|
|
148
152
|
}
|
|
149
153
|
|
|
150
154
|
newResponses[dataIndex] = responses[dataIndex] || {
|
|
151
|
-
// TODO: Initialize with customizable defaults
|
|
152
155
|
allowSpaces: true,
|
|
153
|
-
validation: 'symbolic',
|
|
154
|
-
allowTrailingZeros: false,
|
|
155
|
-
ignoreOrder: false,
|
|
156
|
+
validation: validationDefault || 'symbolic',
|
|
157
|
+
allowTrailingZeros: allowTrailingZerosDefault || false,
|
|
158
|
+
ignoreOrder: ignoreOrderDefault || false,
|
|
156
159
|
answer: '',
|
|
157
160
|
alternates: {}
|
|
158
161
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/design.jsx"],"names":["Panel","settings","toggle","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","Design","key","value","props","onModelChanged","model","updatedModel","response","index","newModel","responses","newVal","answer","id","allowSpaces","markup","newResponses","domMarkup","responseAreas","querySelectorAll","forEach","element","dataset","dataIndex","validation","allowTrailingZeros","ignoreOrder","alternates","processedMarkup","callback","slateMarkup","setState","cachedChoices","undefined","nodes","cachedResponses","state","newChoices","newCachedResponses","node","keyForNode","data","get","Object","assign","hasOwnProperty","trailing","leading","e","relatedTarget","currentTarget","getParentWithRoleTooltip","depth","parent","offsetParent","getAttribute","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","activeAnswerBlock","classes","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","contentDimensions","prompt","rationale","settingsPanelDisabled","teacherInstructions","language","languageChoices","spellCheck","playerSpellCheck","maxImageWidth","maxImageHeight","mathMlOptions","template","editSource","cIgnoreOrder","cAllowTrailingZeros","partialScoring","maxResponseAreas","errors","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","equationEditor","promptError","rationaleError","responseAreasError","teacherInstructionsError","responsesErrors","validationMessage","panelSettings","label","enabled","options","panelProperties","playerSpellCheckEnabled","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","getPluginProps","Settings","Properties","promptHolder","handleChange","inputConfiguration","errorText","tooltipContainer","title","tooltip","ALL_PLUGINS","type","respAreaToolbar","error","onHandleAreaChange","onChange","onBlur","responseAreaError","selectContainer","select","event","target","keys","map","responseKey","idx","onResponseChange","math","controlledKeypadMode","React","Component","PropTypes","object","isRequired","func","shape","add","theme","width","paddingTop","spacing","unit","marginBottom","color","palette","main","fontSize","marginTop","typography","fontWeight","display","alignItems","gap","whiteSpace","maxWidth"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport cloneDeep from 'lodash/cloneDeep';\nimport pick from 'lodash/pick';\nimport throttle from 'lodash/throttle';\nimport {\n InputContainer,\n settings,\n layout,\n} from '@pie-lib/pie-toolbox/config-ui';\nimport {\n ALL_PLUGINS,\n EditableHtml,\n} from '@pie-lib/pie-toolbox/editable-html';\nimport { dropdown } from '@pie-lib/pie-toolbox/code/config-ui/settings';\n\nimport Response from './response';\nimport { processMarkup } from './markupUtils';\nimport { generateValidationMessage } from './utils';\n\nconst { Panel, toggle } = settings;\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nclass Design extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.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 { model: { slateMarkup } } = this.props;\n\n this.setState({ markup: slateMarkup });\n\n }\n\n handleChange = (key, value) => {\n const { onModelChanged, model } = this.props;\n const updatedModel = cloneDeep(model);\n updatedModel[key] = value;\n onModelChanged(updatedModel);\n };\n\n onResponseChange = (response, index) => {\n const { model, onModelChanged } = this.props;\n const newModel = { ...model };\n\n newModel.responses[index] = response;\n onModelChanged(newModel);\n };\n\n onChangeResponse = (index, newVal) => {\n const { model, onModelChanged } = this.props;\n const { responses } = model;\n\n if (!responses[index]) {\n responses[index] = [{ answer: newVal || '', id: 'response' + index, allowSpaces: true }];\n } else {\n responses[index][0].answer = newVal || '';\n }\n\n onModelChanged({ ...model, responses });\n };\n\n onResponsesChanged = (responses) => {\n this.props.onModelChanged({ ...this.props.model, responses });\n };\n\n onChange = (markup) => {\n const {\n model: { responses },\n onModelChanged,\n } = this.props;\n const newResponses = {};\n const domMarkup = createElementFromHTML(markup);\n const responseAreas = domMarkup.querySelectorAll('[data-type=\"math_templated\"]');\n\n responseAreas.forEach((element) => {\n const { value, index: dataIndex } = element.dataset;\n\n if (!value) {\n element.dataset.value = `R ${dataIndex}`;\n }\n\n newResponses[dataIndex] = responses[dataIndex] || {\n // TODO: Initialize with customizable defaults\n allowSpaces: true,\n validation: 'symbolic',\n allowTrailingZeros: false,\n ignoreOrder: false,\n answer: '',\n alternates: {},\n };\n\n element.dataset.index = dataIndex;\n });\n\n const processedMarkup = processMarkup(markup);\n\n const callback = () =>\n onModelChanged({\n ...this.props.model,\n slateMarkup: domMarkup.innerHTML,\n responses: newResponses,\n markup: processedMarkup\n });\n\n this.setState({ cachedChoices: undefined }, callback);\n };\n\n onHandleAreaChange = throttle(\n (nodes) => {\n const {\n model: { responses },\n onModelChanged,\n } = this.props;\n const { cachedResponses } = this.state;\n\n if (!nodes) {\n return;\n }\n\n const newChoices = responses ? cloneDeep(responses) : {};\n const newCachedResponses = cachedResponses ? cloneDeep(cachedResponses) : {};\n\n nodes.forEach((node) => {\n const keyForNode = node.data.get('index');\n\n if (!newChoices[keyForNode] && newCachedResponses[keyForNode]) {\n Object.assign(newChoices, pick(newCachedResponses, keyForNode));\n\n if (newCachedResponses.hasOwnProperty(keyForNode)) {\n delete newCachedResponses[keyForNode];\n }\n } else {\n Object.assign(newCachedResponses, pick(newChoices, keyForNode));\n\n if (newChoices.hasOwnProperty(keyForNode)) {\n delete newChoices[keyForNode];\n }\n }\n });\n\n const callback = () => onModelChanged({ ...this.props.model, responses: newChoices });\n\n this.setState({ cachedResponses: newCachedResponses }, callback);\n },\n 500,\n { trailing: false, leading: true },\n );\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n render() {\n const {\n classes,\n configuration,\n imageSupport,\n model,\n onConfigurationChanged,\n onModelChanged,\n uploadSoundSupport,\n } = this.props;\n\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n teacherInstructions = {},\n language = {},\n languageChoices = {},\n spellCheck = {},\n playerSpellCheck = {},\n maxImageWidth = {},\n maxImageHeight = {},\n mathMlOptions = {},\n template = {},\n editSource = {},\n ignoreOrder: cIgnoreOrder = {},\n allowTrailingZeros: cAllowTrailingZeros = {},\n partialScoring = {},\n maxResponseAreas,\n } = configuration || {};\n\n const {\n errors,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n responses,\n equationEditor,\n } = model || {};\n\n const {\n prompt: promptError,\n rationale: rationaleError,\n responseAreas: responseAreasError,\n teacherInstructions: teacherInstructionsError,\n responses: responsesErrors = {},\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const panelSettings = {\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\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 'editSource.enabled': editSource?.settings && toggle(editSource.label, true),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n };\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 getPluginProps = (props = {}, baseInputConfiguration = {}) => ({\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={(updatedModel) => onModelChanged(updatedModel)}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={(value) => this.handleChange('teacherInstructions', value)}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(\n teacherInstructions?.inputConfiguration,\n baseInputConfiguration\n )}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.teacherInstructions) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.teacherInstructions) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && (\n <div className={classes.errorText}>{teacherInstructionsError}</div>\n )}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={(value) => this.handleChange('prompt', value)}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(\n teacherInstructions?.inputConfiguration,\n baseInputConfiguration\n )}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && (\n <div className={classes.errorText}>{promptError}</div>\n )}\n </InputContainer>\n )}\n <div className={classes.tooltipContainer}>\n <Typography className={classes.title}>Response Template</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'} />\n </Tooltip>\n </div>\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(\n template?.inputConfiguration,\n baseInputConfiguration\n )}\n responseAreaProps={{\n type: 'math-templated',\n respAreaToolbar: null,\n error: () => responsesErrors,\n onHandleAreaChange: this.onHandleAreaChange,\n maxResponseAreas: maxResponseAreas,\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={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {responseAreasError && (\n <div className={classes.responseAreaError}>{responseAreasError}</div>\n )}\n\n <Typography className={classes.title}>Define Response</Typography>\n\n <InputContainer\n label=\"Response Template Equation Editor\"\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n onChange={(event) =>\n this.handleChange('equationEditor', event.target.value)\n }\n value={equationEditor}\n >\n <MenuItem value=\"non-negative-integers\">\n Numeric - Non-Negative Integers\n </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'}>\n Advanced Algebra\n </MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </InputContainer>\n\n {Object.keys(responses || {}).map((responseKey, idx) => {\n const response = responses[responseKey];\n\n if (response) {\n return (\n <Response\n key={responseKey}\n responseKey={responseKey}\n mode={equationEditor}\n response={response}\n onResponseChange={this.onResponseChange}\n index={idx}\n cIgnoreOrder={cIgnoreOrder}\n cAllowTrailingZeros={cAllowTrailingZeros}\n error={responsesErrors && responsesErrors[idx]}\n />\n );\n }\n\n return null;\n })}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={(value) => this.handleChange('rationale', value)}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration, {\n ...baseInputConfiguration,\n math: {\n controlledKeypadMode: false,\n },\n })}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.rationale) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.rationale) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && (\n <div className={classes.errorText}>{rationaleError}</div>\n )}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles((theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n width: '100%',\n },\n errorText: {\n color: theme.palette.error.main,\n fontSize: '0.75rem',\n marginTop: theme.spacing.unit,\n },\n responseAreaError: {\n color: theme.palette.error.main,\n fontSize: '0.75rem',\n marginBottom: theme.spacing.unit,\n },\n markup: {\n width: '100%',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 3,\n },\n selectContainer: {\n width: '100%',\n marginTop: theme.spacing.unit * 2,\n },\n select: {\n width: '100%',\n },\n title: {\n fontSize: theme.typography.fontSize * 1.25,\n fontWeight: 'bold',\n },\n tooltipContainer: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n}))(Design);\n"],"file":"design.js"}
|
|
1
|
+
{"version":3,"sources":["../src/design.jsx"],"names":["Panel","settings","toggle","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","Design","key","value","props","onModelChanged","model","updatedModel","response","index","newModel","responses","newVal","answer","id","allowSpaces","markup","validationDefault","allowTrailingZerosDefault","ignoreOrderDefault","newResponses","domMarkup","responseAreas","querySelectorAll","forEach","element","dataset","dataIndex","validation","allowTrailingZeros","ignoreOrder","alternates","processedMarkup","callback","slateMarkup","setState","cachedChoices","undefined","nodes","cachedResponses","state","newChoices","newCachedResponses","node","keyForNode","data","get","Object","assign","hasOwnProperty","trailing","leading","e","relatedTarget","currentTarget","getParentWithRoleTooltip","depth","parent","offsetParent","getAttribute","getDeepChildDataKeypad","child","children","attributes","parentWithTooltipRole","childWithDataKeypad","activeAnswerBlock","classes","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","baseInputConfiguration","contentDimensions","prompt","rationale","settingsPanelDisabled","teacherInstructions","language","languageChoices","spellCheck","playerSpellCheck","maxImageWidth","maxImageHeight","mathMlOptions","template","editSource","cIgnoreOrder","cAllowTrailingZeros","partialScoring","maxResponseAreas","errors","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","equationEditor","promptError","rationaleError","responseAreasError","teacherInstructionsError","responsesErrors","validationMessage","panelSettings","label","enabled","options","panelProperties","playerSpellCheckEnabled","defaultImageMaxWidth","defaultImageMaxHeight","toolbarOpts","position","getPluginProps","Settings","Properties","promptHolder","handleChange","inputConfiguration","errorText","tooltipContainer","title","tooltip","ALL_PLUGINS","type","respAreaToolbar","error","onHandleAreaChange","onChange","onBlur","responseAreaError","selectContainer","select","event","target","keys","map","responseKey","idx","onResponseChange","math","controlledKeypadMode","React","Component","PropTypes","object","isRequired","func","shape","add","theme","width","paddingTop","spacing","unit","marginBottom","color","palette","main","fontSize","marginTop","typography","fontWeight","display","alignItems","gap","whiteSpace","maxWidth"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport cloneDeep from 'lodash/cloneDeep';\nimport pick from 'lodash/pick';\nimport throttle from 'lodash/throttle';\nimport {\n InputContainer,\n settings,\n layout,\n} from '@pie-lib/pie-toolbox/config-ui';\nimport {\n ALL_PLUGINS,\n EditableHtml,\n} from '@pie-lib/pie-toolbox/editable-html';\nimport { dropdown } from '@pie-lib/pie-toolbox/code/config-ui/settings';\n\nimport Response from './response';\nimport { processMarkup } from './markupUtils';\nimport { generateValidationMessage } from './utils';\n\nconst { Panel, toggle } = settings;\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n\n return div;\n};\n\nclass Design extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.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 { model: { slateMarkup } } = this.props;\n\n this.setState({ markup: slateMarkup });\n\n }\n\n handleChange = (key, value) => {\n const { onModelChanged, model } = this.props;\n const updatedModel = cloneDeep(model);\n updatedModel[key] = value;\n onModelChanged(updatedModel);\n };\n\n onResponseChange = (response, index) => {\n const { model, onModelChanged } = this.props;\n const newModel = { ...model };\n\n newModel.responses[index] = response;\n onModelChanged(newModel);\n };\n\n onChangeResponse = (index, newVal) => {\n const { model, onModelChanged } = this.props;\n const { responses } = model;\n\n if (!responses[index]) {\n responses[index] = [{ answer: newVal || '', id: 'response' + index, allowSpaces: true }];\n } else {\n responses[index][0].answer = newVal || '';\n }\n\n onModelChanged({ ...model, responses });\n };\n\n onResponsesChanged = (responses) => {\n this.props.onModelChanged({ ...this.props.model, responses });\n };\n\n onChange = (markup) => {\n const {\n model: { responses, validationDefault, allowTrailingZerosDefault, ignoreOrderDefault },\n onModelChanged,\n } = this.props;\n const newResponses = {};\n const domMarkup = createElementFromHTML(markup);\n const responseAreas = domMarkup.querySelectorAll('[data-type=\"math_templated\"]');\n\n responseAreas.forEach((element) => {\n const { value, index: dataIndex } = element.dataset;\n\n if (!value) {\n element.dataset.value = `R ${dataIndex}`;\n }\n\n newResponses[dataIndex] = responses[dataIndex] || {\n allowSpaces: true,\n validation: validationDefault || 'symbolic',\n allowTrailingZeros: allowTrailingZerosDefault || false,\n ignoreOrder: ignoreOrderDefault || false,\n answer: '',\n alternates: {},\n };\n\n element.dataset.index = dataIndex;\n });\n\n const processedMarkup = processMarkup(markup);\n\n const callback = () =>\n onModelChanged({\n ...this.props.model,\n slateMarkup: domMarkup.innerHTML,\n responses: newResponses,\n markup: processedMarkup\n });\n\n this.setState({ cachedChoices: undefined }, callback);\n };\n\n onHandleAreaChange = throttle(\n (nodes) => {\n const {\n model: { responses },\n onModelChanged,\n } = this.props;\n const { cachedResponses } = this.state;\n\n if (!nodes) {\n return;\n }\n\n const newChoices = responses ? cloneDeep(responses) : {};\n const newCachedResponses = cachedResponses ? cloneDeep(cachedResponses) : {};\n\n nodes.forEach((node) => {\n const keyForNode = node.data.get('index');\n\n if (!newChoices[keyForNode] && newCachedResponses[keyForNode]) {\n Object.assign(newChoices, pick(newCachedResponses, keyForNode));\n\n if (newCachedResponses.hasOwnProperty(keyForNode)) {\n delete newCachedResponses[keyForNode];\n }\n } else {\n Object.assign(newCachedResponses, pick(newChoices, keyForNode));\n\n if (newChoices.hasOwnProperty(keyForNode)) {\n delete newChoices[keyForNode];\n }\n }\n });\n\n const callback = () => onModelChanged({ ...this.props.model, responses: newChoices });\n\n this.setState({ cachedResponses: newCachedResponses }, callback);\n },\n 500,\n { trailing: false, leading: true },\n );\n\n onBlur = (e) => {\n const { relatedTarget, currentTarget } = e || {};\n\n function getParentWithRoleTooltip(element, depth = 0) {\n // only run this max 16 times\n if (!element || depth >= 16) return null;\n\n const parent = element.offsetParent;\n\n if (!parent) return null;\n\n if (parent.getAttribute('role') === 'tooltip') {\n return parent;\n }\n\n return getParentWithRoleTooltip(parent, depth + 1);\n }\n\n function getDeepChildDataKeypad(element, depth = 0) {\n // only run this max 4 times\n if (!element || depth >= 4) return null;\n\n const child = element?.children?.[0];\n\n if (!child) return null;\n\n if (child.attributes && child.attributes['data-keypad']) {\n return child;\n }\n\n return getDeepChildDataKeypad(child, depth + 1);\n }\n\n const parentWithTooltipRole = getParentWithRoleTooltip(relatedTarget);\n const childWithDataKeypad = parentWithTooltipRole ? getDeepChildDataKeypad(parentWithTooltipRole) : null;\n\n if (!relatedTarget || !currentTarget || !childWithDataKeypad?.attributes['data-keypad']) {\n this.setState({ activeAnswerBlock: '' });\n }\n };\n\n render() {\n const {\n classes,\n configuration,\n imageSupport,\n model,\n onConfigurationChanged,\n onModelChanged,\n uploadSoundSupport,\n } = this.props;\n\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n teacherInstructions = {},\n language = {},\n languageChoices = {},\n spellCheck = {},\n playerSpellCheck = {},\n maxImageWidth = {},\n maxImageHeight = {},\n mathMlOptions = {},\n template = {},\n editSource = {},\n ignoreOrder: cIgnoreOrder = {},\n allowTrailingZeros: cAllowTrailingZeros = {},\n partialScoring = {},\n maxResponseAreas,\n } = configuration || {};\n\n const {\n errors,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n responses,\n equationEditor,\n } = model || {};\n\n const {\n prompt: promptError,\n rationale: rationaleError,\n responseAreas: responseAreasError,\n teacherInstructions: teacherInstructionsError,\n responses: responsesErrors = {},\n } = errors || {};\n const validationMessage = generateValidationMessage(configuration);\n\n const panelSettings = {\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\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 'editSource.enabled': editSource?.settings && toggle(editSource.label, true),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n };\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 getPluginProps = (props = {}, baseInputConfiguration = {}) => ({\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={(updatedModel) => onModelChanged(updatedModel)}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={(value) => this.handleChange('teacherInstructions', value)}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(\n teacherInstructions?.inputConfiguration,\n baseInputConfiguration\n )}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.teacherInstructions) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.teacherInstructions) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && (\n <div className={classes.errorText}>{teacherInstructionsError}</div>\n )}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={(value) => this.handleChange('prompt', value)}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n error={promptError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(\n teacherInstructions?.inputConfiguration,\n baseInputConfiguration\n )}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && (\n <div className={classes.errorText}>{promptError}</div>\n )}\n </InputContainer>\n )}\n <div className={classes.tooltipContainer}>\n <Typography className={classes.title}>Response Template</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'} />\n </Tooltip>\n </div>\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(\n template?.inputConfiguration,\n baseInputConfiguration\n )}\n responseAreaProps={{\n type: 'math-templated',\n respAreaToolbar: null,\n error: () => responsesErrors,\n onHandleAreaChange: this.onHandleAreaChange,\n maxResponseAreas: maxResponseAreas,\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={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {responseAreasError && (\n <div className={classes.responseAreaError}>{responseAreasError}</div>\n )}\n\n <Typography className={classes.title}>Define Response</Typography>\n\n <InputContainer\n label=\"Response Template Equation Editor\"\n className={classes.selectContainer}\n >\n <Select\n className={classes.select}\n onChange={(event) =>\n this.handleChange('equationEditor', event.target.value)\n }\n value={equationEditor}\n >\n <MenuItem value=\"non-negative-integers\">\n Numeric - Non-Negative Integers\n </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'}>\n Advanced Algebra\n </MenuItem>\n <MenuItem value={'statistics'}>Statistics</MenuItem>\n <MenuItem value={'item-authoring'}>Item Authoring</MenuItem>\n </Select>\n </InputContainer>\n\n {Object.keys(responses || {}).map((responseKey, idx) => {\n const response = responses[responseKey];\n\n if (response) {\n return (\n <Response\n key={responseKey}\n responseKey={responseKey}\n mode={equationEditor}\n response={response}\n onResponseChange={this.onResponseChange}\n index={idx}\n cIgnoreOrder={cIgnoreOrder}\n cAllowTrailingZeros={cAllowTrailingZeros}\n error={responsesErrors && responsesErrors[idx]}\n />\n );\n }\n\n return null;\n })}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={(value) => this.handleChange('rationale', value)}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={rationaleError}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(rationale?.inputConfiguration, {\n ...baseInputConfiguration,\n math: {\n controlledKeypadMode: false,\n },\n })}\n spellCheck={spellCheckEnabled}\n maxImageWidth={\n (maxImageWidth && maxImageWidth.rationale) ||\n defaultImageMaxWidth\n }\n maxImageHeight={\n (maxImageHeight && maxImageHeight.rationale) ||\n defaultImageMaxHeight\n }\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[\n { language: 'spanish' },\n { language: 'special' },\n ]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && (\n <div className={classes.errorText}>{rationaleError}</div>\n )}\n </InputContainer>\n )}\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles((theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n width: '100%',\n },\n errorText: {\n color: theme.palette.error.main,\n fontSize: '0.75rem',\n marginTop: theme.spacing.unit,\n },\n responseAreaError: {\n color: theme.palette.error.main,\n fontSize: '0.75rem',\n marginBottom: theme.spacing.unit,\n },\n markup: {\n width: '100%',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 3,\n },\n selectContainer: {\n width: '100%',\n marginTop: theme.spacing.unit * 2,\n },\n select: {\n width: '100%',\n },\n title: {\n fontSize: theme.typography.fontSize * 1.25,\n fontWeight: 'bold',\n },\n tooltipContainer: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n}))(Design);\n"],"file":"design.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -196,8 +196,24 @@ var MathTemplateConfigure = /*#__PURE__*/function (_HTMLElement) {
|
|
|
196
196
|
exports["default"] = MathTemplateConfigure;
|
|
197
197
|
(0, _defineProperty2["default"])(MathTemplateConfigure, "prepareModel", function () {
|
|
198
198
|
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
199
|
+
var validationDefault = model.validationDefault,
|
|
200
|
+
allowTrailingZerosDefault = model.allowTrailingZerosDefault,
|
|
201
|
+
ignoreOrderDefault = model.ignoreOrderDefault,
|
|
202
|
+
_model$responses = model.responses,
|
|
203
|
+
responses = _model$responses === void 0 ? {} : _model$responses;
|
|
204
|
+
var updatedResponses = Object.keys(responses).reduce(function (acc, responseId) {
|
|
205
|
+
var correctResponse = responses[responseId];
|
|
206
|
+
acc[responseId] = _objectSpread(_objectSpread({}, correctResponse), {}, {
|
|
207
|
+
validation: correctResponse.validation || validationDefault,
|
|
208
|
+
allowTrailingZeros: correctResponse.allowTrailingZeros || allowTrailingZerosDefault,
|
|
209
|
+
ignoreOrder: correctResponse.ignoreOrder || ignoreOrderDefault
|
|
210
|
+
});
|
|
211
|
+
return acc;
|
|
212
|
+
}, {});
|
|
199
213
|
|
|
200
|
-
var joinedObj = _objectSpread(_objectSpread({}, _defaults2["default"].model), model)
|
|
214
|
+
var joinedObj = _objectSpread(_objectSpread(_objectSpread({}, _defaults2["default"].model), model), {}, {
|
|
215
|
+
responses: updatedResponses
|
|
216
|
+
});
|
|
201
217
|
|
|
202
218
|
var slateMarkup = joinedObj.slateMarkup || (0, _markupUtils.createSlateMarkup)(joinedObj.markup, joinedObj.responses);
|
|
203
219
|
var processedMarkup = (0, _markupUtils.processMarkup)(slateMarkup); // this was added to treat an exception, when the model has responses without the "answer" property
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["log","MathTemplateConfigure","_model","prepareModel","_configuration","sensibleDefaults","configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","element","React","createElement","Main","model","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement","joinedObj","slateMarkup","markup","responses","processedMarkup","Object","keys","forEach","key","map","item","index","answer"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport defaults from 'lodash/defaults';\nimport isArray from 'lodash/isArray';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './design';\n\nimport sensibleDefaults from './defaults';\nimport { processMarkup, createSlateMarkup } from './markupUtils';\n\nconst log = debug('math-templated:configure');\n\nexport default class MathTemplateConfigure extends HTMLElement {\n static prepareModel = (model = {}) => {\n const joinedObj = {\n ...sensibleDefaults.model,\n ...model,\n };\n const slateMarkup = joinedObj.slateMarkup || createSlateMarkup(joinedObj.markup, joinedObj.responses);\n const processedMarkup = processMarkup(slateMarkup);\n\n // this was added to treat an exception, when the model has responses without the \"answer\" property\n if (joinedObj.responses) {\n Object.keys(joinedObj.responses).forEach((key) => {\n if (isArray(joinedObj.responses[key])) {\n joinedObj.responses[key] = (joinedObj.responses[key] || []).map((item, index) => {\n if (!item.answer) {\n log('Choice does not contain \"answer\" property, which is required.', item);\n return { answer: `${index}`, ...item };\n }\n\n return item;\n });\n }\n });\n }\n\n return {\n ...joinedObj,\n slateMarkup,\n markup: processedMarkup,\n };\n };\n\n constructor() {\n super();\n this._model = MathTemplateConfigure.prepareModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MathTemplateConfigure.prepareModel(s);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = defaults(c, sensibleDefaults.configuration);\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (c.language?.enabled) {\n if (c.languageChoices?.options?.length) {\n this._model.language = c.languageChoices.options[0].value;\n }\n } else if (c.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find(option => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = MathTemplateConfigure.prepareModel(m);\n this._render();\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = c;\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["log","MathTemplateConfigure","_model","prepareModel","_configuration","sensibleDefaults","configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","element","React","createElement","Main","model","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement","validationDefault","allowTrailingZerosDefault","ignoreOrderDefault","responses","updatedResponses","Object","keys","reduce","acc","responseId","correctResponse","validation","allowTrailingZeros","ignoreOrder","joinedObj","slateMarkup","markup","processedMarkup","forEach","key","map","item","index","answer"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport defaults from 'lodash/defaults';\nimport isArray from 'lodash/isArray';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './design';\n\nimport sensibleDefaults from './defaults';\nimport { processMarkup, createSlateMarkup } from './markupUtils';\n\nconst log = debug('math-templated:configure');\n\nexport default class MathTemplateConfigure extends HTMLElement {\n static prepareModel = (model = {}) => {\n const { validationDefault, allowTrailingZerosDefault, ignoreOrderDefault, responses = {} } = model;\n\n const updatedResponses = Object.keys(responses).reduce((acc, responseId) => {\n const correctResponse = responses[responseId];\n\n acc[responseId] = {\n ...correctResponse,\n validation: correctResponse.validation || validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || ignoreOrderDefault,\n };\n\n return acc;\n }, {});\n\n const joinedObj = {\n ...sensibleDefaults.model,\n ...model,\n responses: updatedResponses\n };\n\n const slateMarkup = joinedObj.slateMarkup || createSlateMarkup(joinedObj.markup, joinedObj.responses);\n const processedMarkup = processMarkup(slateMarkup);\n\n // this was added to treat an exception, when the model has responses without the \"answer\" property\n if (joinedObj.responses) {\n Object.keys(joinedObj.responses).forEach((key) => {\n if (isArray(joinedObj.responses[key])) {\n joinedObj.responses[key] = (joinedObj.responses[key] || []).map((item, index) => {\n if (!item.answer) {\n log('Choice does not contain \"answer\" property, which is required.', item);\n return { answer: `${index}`, ...item };\n }\n\n return item;\n });\n }\n });\n }\n\n return {\n ...joinedObj,\n slateMarkup,\n markup: processedMarkup,\n };\n };\n\n constructor() {\n super();\n this._model = MathTemplateConfigure.prepareModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MathTemplateConfigure.prepareModel(s);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = defaults(c, sensibleDefaults.configuration);\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (c.language?.enabled) {\n if (c.languageChoices?.options?.length) {\n this._model.language = c.languageChoices.options[0].value;\n }\n } else if (c.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find(option => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = MathTemplateConfigure.prepareModel(m);\n this._render();\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = c;\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
|
package/configure/package.json
CHANGED
package/controller/lib/index.js
CHANGED
|
@@ -177,7 +177,23 @@ exports.outcome = outcome;
|
|
|
177
177
|
|
|
178
178
|
var createDefaultModel = function createDefaultModel() {
|
|
179
179
|
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
180
|
-
|
|
180
|
+
var validationDefault = model.validationDefault,
|
|
181
|
+
allowTrailingZerosDefault = model.allowTrailingZerosDefault,
|
|
182
|
+
ignoreOrderDefault = model.ignoreOrderDefault,
|
|
183
|
+
_model$responses = model.responses,
|
|
184
|
+
responses = _model$responses === void 0 ? {} : _model$responses;
|
|
185
|
+
var updatedResponses = Object.keys(responses).reduce(function (acc, responseId) {
|
|
186
|
+
var correctResponse = responses[responseId];
|
|
187
|
+
acc[responseId] = _objectSpread(_objectSpread({}, correctResponse), {}, {
|
|
188
|
+
validation: correctResponse.validation || validationDefault,
|
|
189
|
+
allowTrailingZeros: correctResponse.allowTrailingZeros || allowTrailingZerosDefault,
|
|
190
|
+
ignoreOrder: correctResponse.ignoreOrder || ignoreOrderDefault
|
|
191
|
+
});
|
|
192
|
+
return acc;
|
|
193
|
+
}, {});
|
|
194
|
+
return _objectSpread(_objectSpread(_objectSpread({}, _defaults["default"].model), model), {}, {
|
|
195
|
+
responses: updatedResponses
|
|
196
|
+
});
|
|
181
197
|
};
|
|
182
198
|
|
|
183
199
|
exports.createDefaultModel = createDefaultModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","log","getFeedback","value","getContent","html","replace","getIsAnswerCorrect","correctResponse","answerItem","answerCorrect","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","Object","values","alternates","mv","latexEqual","e","getResponseCorrectness","question","sessionResponse","correctResponses","responses","correctness","score","correct","correctAnswers","correctResponsesCount","keys","length","forEach","responseId","fullyCorrect","toFixed","getCorrectness","env","session","answers","getPartialScore","outcome","Promise","resolve","empty","partialScoringEnabled","partialScoring","enabled","console","normalizeSession","undefined","completed","createDefaultModel","model","s","getTextFromHTML","prepareVal","trim","normalizedQuestion","language","note","showNote","t","lng","out","prompt","promptEnabled","markup","equationEditor","customKeys","disabled","view","feedback","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","createCorrectResponseSession","reduce","acc","id","validate","config","maxResponseAreas","responsesErrors","errors","field","required","entries","index","key","response","reversedAlternates","reverse","alternatesErrors","responseError","identicalAnswer","slice","some","val","nbOfResponseAreas","match","responseAreas"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nimport * as mv from '@pie-framework/math-validation';\n\nimport defaults from './defaults';\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\n\nconst { translator } = Translator;\nconst log = debug('@pie-element:math-templated:controller');\n\nconst getFeedback = value => value ? 'correct' : 'incorrect';\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nconst getIsAnswerCorrect = (correctResponse, answerItem) => {\n let answerCorrect = false;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n ...(correctResponse.validation === 'literal' && {\n literal: {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n }\n })\n };\n\n if (!answerCorrect) {\n const acceptedValues = [\n correctResponse.answer,\n ...Object.values(correctResponse.alternates || {})\n ];\n\n try {\n for (const value of acceptedValues) {\n answerCorrect = mv.latexEqual(answerItem.value, value, opts);\n if (answerCorrect) break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', e, correctResponse, answerItem);\n answerCorrect = false;\n }\n }\n\n return answerCorrect;\n};\n\nconst getResponseCorrectness = (question, sessionResponse) => {\n const correctResponses = question.responses;\n\n if (!sessionResponse) {\n return {\n correctness: 'unanswered',\n score: 0,\n correct: false,\n };\n } else {\n let correctAnswers = 0;\n let score = 0;\n let correct = false;\n const correctResponsesCount = Object.keys(correctResponses || {}).length;\n\n Object.keys(correctResponses).forEach((responseId) => {\n const answerItem = sessionResponse['r' + responseId];\n const correctResponse = correctResponses[responseId] || {};\n\n const answerCorrect = getIsAnswerCorrect(correctResponse, answerItem);\n if (answerCorrect) {\n correctAnswers++;\n }\n });\n\n const fullyCorrect = correctAnswers === correctResponsesCount;\n\n // partial credit scoring: each correct answer is worth 1 / total answers point\n // dichotomous scoring: for credit to be awarded, a correct answer must be entered for every response area\n score = (correctAnswers / Object.keys(correctResponses).length).toFixed(2);\n\n return {\n correctness: fullyCorrect ? 'correct' : 'incorrect',\n score: correctAnswers > 0 ? score : 0,\n correct\n };\n }\n};\n\nexport const getCorrectness = (question, env, session) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n session && session.answers\n );\n }\n};\n\nexport const getPartialScore = (question, session) => {\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n return 1;\n};\n\nexport const outcome = (question, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n const partialScoringEnabled = partialScoring.enabled(question, env);\n console.log('partialScoringEnabled: ', partialScoringEnabled);\n session = normalizeSession(session);\n\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n const score = correctness.score;\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0 });\n }\n });\n\nexport const createDefaultModel = (model = {}) => ({\n ...defaults.model,\n ...model,\n});\n\nexport const normalizeSession = (s) => ({ ...s });\n\nconst getTextFromHTML = html => (html || '').replace(/<\\/?[^>]+(>|$)/g, '');\n\nexport const prepareVal = html => getTextFromHTML(html).trim();\n\nexport const model = (question, session, env) => {\n return new Promise((resolve) => {\n session = session || {};\n const normalizedQuestion = createDefaultModel(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { responses, language } = normalizedQuestion;\n let { note } = normalizedQuestion;\n let showNote = false;\n\n // check if there is at least one alternate response or if the validation for at least one response is not literal\n Object.keys(responses).forEach((responseId) => {\n const correctResponse = responses[responseId] || {};\n if (correctResponse.alternates && Object.keys(correctResponse.alternates).length > 0) {\n showNote = true;\n } else if (correctResponse.validation !== 'literal') {\n showNote = true;\n }\n });\n\n if (!note) {\n note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n }\n\n const out = {\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n markup: normalizedQuestion.markup,\n responses: env.mode === 'gather' ? null : normalizedQuestion.responses,\n language: normalizedQuestion.language,\n equationEditor: normalizedQuestion.equationEditor,\n customKeys: normalizedQuestion.customKeys,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n correctness,\n env,\n };\n\n const { answers = {} } = session || {};\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n Object.keys(responses).forEach((responseId) => {\n const answerItem = answers['r' + responseId];\n const correctResponse = responses[responseId];\n feedback[responseId] = getIsAnswerCorrect(correctResponse, answerItem);\n });\n }\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.showNote = showNote;\n out.note = note;\n out.feedback = feedback;\n } else {\n out.responses = {};\n out.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n log('out: ', out);\n resolve(out);\n });\n};\n\nexport const createCorrectResponseSession = (question, env) =>\n new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const correctResponse = Object.keys(question.responses).reduce((acc, responseId) => {\n acc['r' + responseId] = { value: question.responses[responseId].answer };\n return acc;\n }, {});\n\n resolve({ id: '1', answers: correctResponse });\n } else {\n resolve(null);\n }\n });\n\nexport const validate = (model = {}, config = {}) => {\n const { responses, markup } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(responses || {}).forEach(([key, response], index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreas = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreas = 'There should be at least 1 response area defined.';\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responses = responsesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","log","getFeedback","value","getContent","html","replace","getIsAnswerCorrect","correctResponse","answerItem","answerCorrect","opts","mode","validation","defaults","validationDefault","literal","allowTrailingZeros","ignoreOrder","acceptedValues","answer","Object","values","alternates","mv","latexEqual","e","getResponseCorrectness","question","sessionResponse","correctResponses","responses","correctness","score","correct","correctAnswers","correctResponsesCount","keys","length","forEach","responseId","fullyCorrect","toFixed","getCorrectness","env","session","answers","getPartialScore","outcome","Promise","resolve","empty","partialScoringEnabled","partialScoring","enabled","console","normalizeSession","undefined","completed","createDefaultModel","model","allowTrailingZerosDefault","ignoreOrderDefault","updatedResponses","reduce","acc","s","getTextFromHTML","prepareVal","trim","normalizedQuestion","language","note","showNote","t","lng","out","prompt","promptEnabled","markup","equationEditor","customKeys","disabled","view","feedback","role","rationale","rationaleEnabled","teacherInstructions","teacherInstructionsEnabled","createCorrectResponseSession","id","validate","config","maxResponseAreas","responsesErrors","errors","field","required","entries","index","key","response","reversedAlternates","reverse","alternatesErrors","responseError","identicalAnswer","slice","some","val","nbOfResponseAreas","match","responseAreas"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/pie-toolbox/translator';\nimport * as mv from '@pie-framework/math-validation';\n\nimport defaults from './defaults';\nimport { partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\n\nconst { translator } = Translator;\nconst log = debug('@pie-element:math-templated:controller');\n\nconst getFeedback = value => value ? 'correct' : 'incorrect';\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nconst getIsAnswerCorrect = (correctResponse, answerItem) => {\n let answerCorrect = false;\n\n const opts = {\n mode: correctResponse.validation || defaults.validationDefault,\n ...(correctResponse.validation === 'literal' && {\n literal: {\n allowTrailingZeros: correctResponse.allowTrailingZeros || false,\n ignoreOrder: correctResponse.ignoreOrder || false,\n }\n })\n };\n\n if (!answerCorrect) {\n const acceptedValues = [\n correctResponse.answer,\n ...Object.values(correctResponse.alternates || {})\n ];\n\n try {\n for (const value of acceptedValues) {\n answerCorrect = mv.latexEqual(answerItem.value, value, opts);\n if (answerCorrect) break;\n }\n } catch (e) {\n log('Parse failure when evaluating math', e, correctResponse, answerItem);\n answerCorrect = false;\n }\n }\n\n return answerCorrect;\n};\n\nconst getResponseCorrectness = (question, sessionResponse) => {\n const correctResponses = question.responses;\n\n if (!sessionResponse) {\n return {\n correctness: 'unanswered',\n score: 0,\n correct: false,\n };\n } else {\n let correctAnswers = 0;\n let score = 0;\n let correct = false;\n const correctResponsesCount = Object.keys(correctResponses || {}).length;\n\n Object.keys(correctResponses).forEach((responseId) => {\n const answerItem = sessionResponse['r' + responseId];\n const correctResponse = correctResponses[responseId] || {};\n\n const answerCorrect = getIsAnswerCorrect(correctResponse, answerItem);\n if (answerCorrect) {\n correctAnswers++;\n }\n });\n\n const fullyCorrect = correctAnswers === correctResponsesCount;\n\n // partial credit scoring: each correct answer is worth 1 / total answers point\n // dichotomous scoring: for credit to be awarded, a correct answer must be entered for every response area\n score = (correctAnswers / Object.keys(correctResponses).length).toFixed(2);\n\n return {\n correctness: fullyCorrect ? 'correct' : 'incorrect',\n score: correctAnswers > 0 ? score : 0,\n correct\n };\n }\n};\n\nexport const getCorrectness = (question, env, session) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(\n question,\n session && session.answers\n );\n }\n};\n\nexport const getPartialScore = (question, session) => {\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n return 1;\n};\n\nexport const outcome = (question, session, env) =>\n new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n const partialScoringEnabled = partialScoring.enabled(question, env);\n console.log('partialScoringEnabled: ', partialScoringEnabled);\n session = normalizeSession(session);\n\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n const correctness = getCorrectness(question, env, session, true);\n const score = correctness.score;\n\n resolve({ score: partialScoringEnabled ? score : score === 1 ? 1 : 0 });\n }\n });\n\nexport const createDefaultModel = (model = {}) => {\n const { validationDefault, allowTrailingZerosDefault, ignoreOrderDefault, responses = {} } = model;\n\n const updatedResponses = Object.keys(responses).reduce((acc, responseId) => {\n const correctResponse = responses[responseId];\n\n acc[responseId] = {\n ...correctResponse,\n validation: correctResponse.validation || validationDefault,\n allowTrailingZeros: correctResponse.allowTrailingZeros || allowTrailingZerosDefault,\n ignoreOrder: correctResponse.ignoreOrder || ignoreOrderDefault,\n };\n\n return acc;\n }, {});\n\n return {\n ...defaults.model,\n ...model,\n responses: updatedResponses\n };\n};\n\nexport const normalizeSession = (s) => ({ ...s });\n\nconst getTextFromHTML = html => (html || '').replace(/<\\/?[^>]+(>|$)/g, '');\n\nexport const prepareVal = html => getTextFromHTML(html).trim();\n\nexport const model = (question, session, env) => {\n return new Promise((resolve) => {\n session = session || {};\n const normalizedQuestion = createDefaultModel(question);\n const correctness = getCorrectness(normalizedQuestion, env, session);\n const { responses, language } = normalizedQuestion;\n let { note } = normalizedQuestion;\n let showNote = false;\n\n // check if there is at least one alternate response or if the validation for at least one response is not literal\n Object.keys(responses).forEach((responseId) => {\n const correctResponse = responses[responseId] || {};\n if (correctResponse.alternates && Object.keys(correctResponse.alternates).length > 0) {\n showNote = true;\n } else if (correctResponse.validation !== 'literal') {\n showNote = true;\n }\n });\n\n if (!note) {\n note = translator.t('mathInline.primaryCorrectWithAlternates', { lng: language });\n }\n\n const out = {\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n markup: normalizedQuestion.markup,\n responses: env.mode === 'gather' ? null : normalizedQuestion.responses,\n language: normalizedQuestion.language,\n equationEditor: normalizedQuestion.equationEditor,\n customKeys: normalizedQuestion.customKeys,\n disabled: env.mode !== 'gather',\n view: env.mode === 'view',\n correctness,\n env,\n };\n\n const { answers = {} } = session || {};\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n Object.keys(responses).forEach((responseId) => {\n const answerItem = answers['r' + responseId];\n const correctResponse = responses[responseId];\n feedback[responseId] = getIsAnswerCorrect(correctResponse, answerItem);\n });\n }\n\n if (env.mode === 'evaluate') {\n out.correctResponse = {};\n out.showNote = showNote;\n out.note = note;\n out.feedback = feedback;\n } else {\n out.responses = {};\n out.showNote = false;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n log('out: ', out);\n resolve(out);\n });\n};\n\nexport const createCorrectResponseSession = (question, env) =>\n new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const correctResponse = Object.keys(question.responses).reduce((acc, responseId) => {\n acc['r' + responseId] = { value: question.responses[responseId].answer };\n return acc;\n }, {});\n\n resolve({ id: '1', answers: correctResponse });\n } else {\n resolve(null);\n }\n });\n\nexport const validate = (model = {}, config = {}) => {\n const { responses, markup } = model;\n const { maxResponseAreas } = config;\n const responsesErrors = {};\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n Object.entries(responses || {}).forEach(([key, response], index) => {\n const { answer } = response;\n const reversedAlternates = [...Object.entries(response.alternates || {})].reverse();\n const alternatesErrors = {};\n const responseError = {};\n\n if (answer === '') {\n responseError.answer = 'Content should not be empty.';\n }\n\n reversedAlternates.forEach(([key, value], index) => {\n if (value === '') {\n alternatesErrors[key] = 'Content should not be empty.';\n } else {\n const identicalAnswer =\n answer === value || reversedAlternates.slice(index + 1).some(([, val]) => val === value);\n\n if (identicalAnswer) {\n alternatesErrors[key] = 'Content should be unique.';\n }\n }\n });\n\n if (!isEmpty(responseError) || !isEmpty(alternatesErrors)) {\n responsesErrors[index] = { ...responseError, ...alternatesErrors };\n }\n });\n\n const nbOfResponseAreas = (markup.match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreas = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreas = 'There should be at least 1 response area defined.';\n }\n\n if (!isEmpty(responsesErrors)) {\n errors.responses = responsesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/package.json
CHANGED
package/module/configure.js
CHANGED
|
@@ -42319,7 +42319,7 @@ var _interopRequireDefault$r = interopRequireDefault.exports;
|
|
|
42319
42319
|
Object.defineProperty(color, "__esModule", {
|
|
42320
42320
|
value: true
|
|
42321
42321
|
});
|
|
42322
|
-
color.v = color.text = color.secondaryText = color.secondaryLight = color.secondaryDark = color.secondaryBackground = color.secondary = color.primaryText = color.primaryLight = color.primaryDark = color.primary = color.missing = color.incorrectSecondary = color.incorrect = color.disabledSecondary = color.disabled = color.defaults = color.correctSecondary = color.correct = color.black = color.background = void 0;
|
|
42322
|
+
color.white = color.v = color.text = color.secondaryText = color.secondaryLight = color.secondaryDark = color.secondaryBackground = color.secondary = color.primaryText = color.primaryLight = color.primaryDark = color.primary = color.missingWithIcon = color.missing = color.incorrectWithIcon = color.incorrectSecondary = color.incorrect = color.disabledSecondary = color.disabled = color.defaults = color.correctWithIcon = color.correctSecondary = color.correct = color.black = color.background = void 0;
|
|
42323
42323
|
var _green = _interopRequireDefault$r(green$1);
|
|
42324
42324
|
var _orange = _interopRequireDefault$r(orange$1);
|
|
42325
42325
|
var _pink = _interopRequireDefault$r(pink$1);
|
|
@@ -42331,9 +42331,12 @@ var defaults$1 = {
|
|
|
42331
42331
|
DISABLED_SECONDARY: '#ABABAB',
|
|
42332
42332
|
CORRECT: _green["default"][500],
|
|
42333
42333
|
CORRECT_SECONDARY: _green["default"][50],
|
|
42334
|
+
CORRECT_WITH_ICON: '#087D38',
|
|
42334
42335
|
INCORRECT: _orange["default"][500],
|
|
42335
42336
|
INCORRECT_SECONDARY: _red["default"][50],
|
|
42337
|
+
INCORRECT_WITH_ICON: '#BF0D00',
|
|
42336
42338
|
MISSING: _red["default"][700],
|
|
42339
|
+
MISSING_WITH_ICON: '#6A78A1',
|
|
42337
42340
|
PRIMARY: _indigo["default"][500],
|
|
42338
42341
|
PRIMARY_LIGHT: _indigo["default"][200],
|
|
42339
42342
|
PRIMARY_DARK: _indigo["default"][800],
|
|
@@ -42342,7 +42345,8 @@ var defaults$1 = {
|
|
|
42342
42345
|
SECONDARY_DARK: _pink["default"][900],
|
|
42343
42346
|
BACKGROUND: 'rgba(255,255,255,0)',
|
|
42344
42347
|
SECONDARY_BACKGROUND: 'rgba(241,241,241,1)',
|
|
42345
|
-
BLACK: '#000000'
|
|
42348
|
+
BLACK: '#000000',
|
|
42349
|
+
WHITE: '#ffffff'
|
|
42346
42350
|
};
|
|
42347
42351
|
color.defaults = defaults$1;
|
|
42348
42352
|
Object.freeze(defaults$1);
|
|
@@ -42379,10 +42383,18 @@ var correctSecondary = function correctSecondary() {
|
|
|
42379
42383
|
return pv('correct-secondary', defaults$1.CORRECT_SECONDARY);
|
|
42380
42384
|
};
|
|
42381
42385
|
color.correctSecondary = correctSecondary;
|
|
42386
|
+
var correctWithIcon = function correctWithIcon() {
|
|
42387
|
+
return pv('correct-icon', defaults$1.CORRECT_WITH_ICON);
|
|
42388
|
+
};
|
|
42389
|
+
color.correctWithIcon = correctWithIcon;
|
|
42382
42390
|
var incorrect = function incorrect() {
|
|
42383
42391
|
return pv('incorrect', defaults$1.INCORRECT);
|
|
42384
42392
|
};
|
|
42385
42393
|
color.incorrect = incorrect;
|
|
42394
|
+
var incorrectWithIcon = function incorrectWithIcon() {
|
|
42395
|
+
return pv('incorrect-icon', defaults$1.INCORRECT_WITH_ICON);
|
|
42396
|
+
};
|
|
42397
|
+
color.incorrectWithIcon = incorrectWithIcon;
|
|
42386
42398
|
var incorrectSecondary = function incorrectSecondary() {
|
|
42387
42399
|
return pv('incorrect-secondary', defaults$1.INCORRECT_SECONDARY);
|
|
42388
42400
|
};
|
|
@@ -42391,6 +42403,10 @@ var missing = function missing() {
|
|
|
42391
42403
|
return pv('missing', defaults$1.MISSING);
|
|
42392
42404
|
};
|
|
42393
42405
|
color.missing = missing;
|
|
42406
|
+
var missingWithIcon = function missingWithIcon() {
|
|
42407
|
+
return pv('missing-icon', defaults$1.MISSING_WITH_ICON);
|
|
42408
|
+
};
|
|
42409
|
+
color.missingWithIcon = missingWithIcon;
|
|
42394
42410
|
var primary = function primary() {
|
|
42395
42411
|
return pv('primary', defaults$1.PRIMARY);
|
|
42396
42412
|
};
|
|
@@ -42435,6 +42451,10 @@ var black = function black() {
|
|
|
42435
42451
|
return pv('black', defaults$1.BLACK);
|
|
42436
42452
|
};
|
|
42437
42453
|
color.black = black;
|
|
42454
|
+
var white = function white() {
|
|
42455
|
+
return pv('white', defaults$1.WHITE);
|
|
42456
|
+
};
|
|
42457
|
+
color.white = white;
|
|
42438
42458
|
const require$$9$8 = _dll_react;
|
|
42439
42459
|
const require$$11$7 = _dll_classnames;
|
|
42440
42460
|
const require$$12$5 = _dll_prop_types;
|
|
@@ -107484,7 +107504,7 @@ class Design extends React$1.Component {
|
|
|
107484
107504
|
}
|
|
107485
107505
|
__init6() {
|
|
107486
107506
|
this.onChange = markup => {
|
|
107487
|
-
const {model: {responses}, onModelChanged} = this.props;
|
|
107507
|
+
const {model: {responses, validationDefault, allowTrailingZerosDefault, ignoreOrderDefault}, onModelChanged} = this.props;
|
|
107488
107508
|
const newResponses = {};
|
|
107489
107509
|
const domMarkup = createElementFromHTML(markup);
|
|
107490
107510
|
const responseAreas = domMarkup.querySelectorAll('[data-type="math_templated"]');
|
|
@@ -107495,9 +107515,9 @@ class Design extends React$1.Component {
|
|
|
107495
107515
|
}
|
|
107496
107516
|
newResponses[dataIndex] = responses[dataIndex] || ({
|
|
107497
107517
|
allowSpaces: true,
|
|
107498
|
-
validation: 'symbolic',
|
|
107499
|
-
allowTrailingZeros: false,
|
|
107500
|
-
ignoreOrder: false,
|
|
107518
|
+
validation: validationDefault || 'symbolic',
|
|
107519
|
+
allowTrailingZeros: allowTrailingZerosDefault || false,
|
|
107520
|
+
ignoreOrder: ignoreOrderDefault || false,
|
|
107501
107521
|
answer: '',
|
|
107502
107522
|
alternates: {}
|
|
107503
107523
|
});
|
|
@@ -107623,13 +107643,13 @@ class Design extends React$1.Component {
|
|
|
107623
107643
|
__self: this,
|
|
107624
107644
|
__source: {
|
|
107625
107645
|
fileName: _jsxFileName,
|
|
107626
|
-
lineNumber:
|
|
107646
|
+
lineNumber: 299
|
|
107627
107647
|
}
|
|
107628
107648
|
}),
|
|
107629
107649
|
__self: this,
|
|
107630
107650
|
__source: {
|
|
107631
107651
|
fileName: _jsxFileName,
|
|
107632
|
-
lineNumber:
|
|
107652
|
+
lineNumber: 295
|
|
107633
107653
|
}
|
|
107634
107654
|
}, teacherInstructionsEnabled && React$1.createElement(InputContainer, {
|
|
107635
107655
|
label: teacherInstructions.label,
|
|
@@ -107637,7 +107657,7 @@ class Design extends React$1.Component {
|
|
|
107637
107657
|
__self: this,
|
|
107638
107658
|
__source: {
|
|
107639
107659
|
fileName: _jsxFileName,
|
|
107640
|
-
lineNumber:
|
|
107660
|
+
lineNumber: 312
|
|
107641
107661
|
}
|
|
107642
107662
|
}, React$1.createElement(EditableHtml, {
|
|
107643
107663
|
className: classes.prompt,
|
|
@@ -107661,14 +107681,14 @@ class Design extends React$1.Component {
|
|
|
107661
107681
|
__self: this,
|
|
107662
107682
|
__source: {
|
|
107663
107683
|
fileName: _jsxFileName,
|
|
107664
|
-
lineNumber:
|
|
107684
|
+
lineNumber: 316
|
|
107665
107685
|
}
|
|
107666
107686
|
}), teacherInstructionsError && React$1.createElement('div', {
|
|
107667
107687
|
className: classes.errorText,
|
|
107668
107688
|
__self: this,
|
|
107669
107689
|
__source: {
|
|
107670
107690
|
fileName: _jsxFileName,
|
|
107671
|
-
lineNumber:
|
|
107691
|
+
lineNumber: 345
|
|
107672
107692
|
}
|
|
107673
107693
|
}, teacherInstructionsError)), promptEnabled && React$1.createElement(InputContainer, {
|
|
107674
107694
|
label: prompt.label,
|
|
@@ -107676,7 +107696,7 @@ class Design extends React$1.Component {
|
|
|
107676
107696
|
__self: this,
|
|
107677
107697
|
__source: {
|
|
107678
107698
|
fileName: _jsxFileName,
|
|
107679
|
-
lineNumber:
|
|
107699
|
+
lineNumber: 351
|
|
107680
107700
|
}
|
|
107681
107701
|
}, React$1.createElement(EditableHtml, {
|
|
107682
107702
|
className: classes.prompt,
|
|
@@ -107701,28 +107721,28 @@ class Design extends React$1.Component {
|
|
|
107701
107721
|
__self: this,
|
|
107702
107722
|
__source: {
|
|
107703
107723
|
fileName: _jsxFileName,
|
|
107704
|
-
lineNumber:
|
|
107724
|
+
lineNumber: 355
|
|
107705
107725
|
}
|
|
107706
107726
|
}), promptError && React$1.createElement('div', {
|
|
107707
107727
|
className: classes.errorText,
|
|
107708
107728
|
__self: this,
|
|
107709
107729
|
__source: {
|
|
107710
107730
|
fileName: _jsxFileName,
|
|
107711
|
-
lineNumber:
|
|
107731
|
+
lineNumber: 379
|
|
107712
107732
|
}
|
|
107713
107733
|
}, promptError)), React$1.createElement('div', {
|
|
107714
107734
|
className: classes.tooltipContainer,
|
|
107715
107735
|
__self: this,
|
|
107716
107736
|
__source: {
|
|
107717
107737
|
fileName: _jsxFileName,
|
|
107718
|
-
lineNumber:
|
|
107738
|
+
lineNumber: 383
|
|
107719
107739
|
}
|
|
107720
107740
|
}, React$1.createElement(Typography, {
|
|
107721
107741
|
className: classes.title,
|
|
107722
107742
|
__self: this,
|
|
107723
107743
|
__source: {
|
|
107724
107744
|
fileName: _jsxFileName,
|
|
107725
|
-
lineNumber:
|
|
107745
|
+
lineNumber: 384
|
|
107726
107746
|
}
|
|
107727
107747
|
}, "Response Template"), React$1.createElement(Tooltip, {
|
|
107728
107748
|
classes: {
|
|
@@ -107735,7 +107755,7 @@ class Design extends React$1.Component {
|
|
|
107735
107755
|
__self: this,
|
|
107736
107756
|
__source: {
|
|
107737
107757
|
fileName: _jsxFileName,
|
|
107738
|
-
lineNumber:
|
|
107758
|
+
lineNumber: 385
|
|
107739
107759
|
}
|
|
107740
107760
|
}, React$1.createElement(default_1$1, {
|
|
107741
107761
|
fontSize: 'small',
|
|
@@ -107743,7 +107763,7 @@ class Design extends React$1.Component {
|
|
|
107743
107763
|
__self: this,
|
|
107744
107764
|
__source: {
|
|
107745
107765
|
fileName: _jsxFileName,
|
|
107746
|
-
lineNumber:
|
|
107766
|
+
lineNumber: 392
|
|
107747
107767
|
}
|
|
107748
107768
|
}))), React$1.createElement(EditableHtml, {
|
|
107749
107769
|
activePlugins: ALL_PLUGINS,
|
|
@@ -107778,21 +107798,21 @@ class Design extends React$1.Component {
|
|
|
107778
107798
|
__self: this,
|
|
107779
107799
|
__source: {
|
|
107780
107800
|
fileName: _jsxFileName,
|
|
107781
|
-
lineNumber:
|
|
107801
|
+
lineNumber: 395
|
|
107782
107802
|
}
|
|
107783
107803
|
}), responseAreasError && React$1.createElement('div', {
|
|
107784
107804
|
className: classes.responseAreaError,
|
|
107785
107805
|
__self: this,
|
|
107786
107806
|
__source: {
|
|
107787
107807
|
fileName: _jsxFileName,
|
|
107788
|
-
lineNumber:
|
|
107808
|
+
lineNumber: 427
|
|
107789
107809
|
}
|
|
107790
107810
|
}, responseAreasError), React$1.createElement(Typography, {
|
|
107791
107811
|
className: classes.title,
|
|
107792
107812
|
__self: this,
|
|
107793
107813
|
__source: {
|
|
107794
107814
|
fileName: _jsxFileName,
|
|
107795
|
-
lineNumber:
|
|
107815
|
+
lineNumber: 430
|
|
107796
107816
|
}
|
|
107797
107817
|
}, "Define Response"), React$1.createElement(InputContainer, {
|
|
107798
107818
|
label: "Response Template Equation Editor",
|
|
@@ -107800,7 +107820,7 @@ class Design extends React$1.Component {
|
|
|
107800
107820
|
__self: this,
|
|
107801
107821
|
__source: {
|
|
107802
107822
|
fileName: _jsxFileName,
|
|
107803
|
-
lineNumber:
|
|
107823
|
+
lineNumber: 432
|
|
107804
107824
|
}
|
|
107805
107825
|
}, React$1.createElement(Select, {
|
|
107806
107826
|
className: classes.select,
|
|
@@ -107809,91 +107829,91 @@ class Design extends React$1.Component {
|
|
|
107809
107829
|
__self: this,
|
|
107810
107830
|
__source: {
|
|
107811
107831
|
fileName: _jsxFileName,
|
|
107812
|
-
lineNumber:
|
|
107832
|
+
lineNumber: 436
|
|
107813
107833
|
}
|
|
107814
107834
|
}, React$1.createElement(MenuItem, {
|
|
107815
107835
|
value: "non-negative-integers",
|
|
107816
107836
|
__self: this,
|
|
107817
107837
|
__source: {
|
|
107818
107838
|
fileName: _jsxFileName,
|
|
107819
|
-
lineNumber:
|
|
107839
|
+
lineNumber: 443
|
|
107820
107840
|
}
|
|
107821
107841
|
}, "Numeric - Non-Negative Integers"), React$1.createElement(MenuItem, {
|
|
107822
107842
|
value: "integers",
|
|
107823
107843
|
__self: this,
|
|
107824
107844
|
__source: {
|
|
107825
107845
|
fileName: _jsxFileName,
|
|
107826
|
-
lineNumber:
|
|
107846
|
+
lineNumber: 446
|
|
107827
107847
|
}
|
|
107828
107848
|
}, "Numeric - Integers"), React$1.createElement(MenuItem, {
|
|
107829
107849
|
value: "decimals",
|
|
107830
107850
|
__self: this,
|
|
107831
107851
|
__source: {
|
|
107832
107852
|
fileName: _jsxFileName,
|
|
107833
|
-
lineNumber:
|
|
107853
|
+
lineNumber: 447
|
|
107834
107854
|
}
|
|
107835
107855
|
}, "Numeric - Decimals"), React$1.createElement(MenuItem, {
|
|
107836
107856
|
value: "fractions",
|
|
107837
107857
|
__self: this,
|
|
107838
107858
|
__source: {
|
|
107839
107859
|
fileName: _jsxFileName,
|
|
107840
|
-
lineNumber:
|
|
107860
|
+
lineNumber: 448
|
|
107841
107861
|
}
|
|
107842
107862
|
}, "Numeric - Fractions"), React$1.createElement(MenuItem, {
|
|
107843
107863
|
value: 1,
|
|
107844
107864
|
__self: this,
|
|
107845
107865
|
__source: {
|
|
107846
107866
|
fileName: _jsxFileName,
|
|
107847
|
-
lineNumber:
|
|
107867
|
+
lineNumber: 449
|
|
107848
107868
|
}
|
|
107849
107869
|
}, "Grade 1 - 2"), React$1.createElement(MenuItem, {
|
|
107850
107870
|
value: 3,
|
|
107851
107871
|
__self: this,
|
|
107852
107872
|
__source: {
|
|
107853
107873
|
fileName: _jsxFileName,
|
|
107854
|
-
lineNumber:
|
|
107874
|
+
lineNumber: 450
|
|
107855
107875
|
}
|
|
107856
107876
|
}, "Grade 3 - 5"), React$1.createElement(MenuItem, {
|
|
107857
107877
|
value: 6,
|
|
107858
107878
|
__self: this,
|
|
107859
107879
|
__source: {
|
|
107860
107880
|
fileName: _jsxFileName,
|
|
107861
|
-
lineNumber:
|
|
107881
|
+
lineNumber: 451
|
|
107862
107882
|
}
|
|
107863
107883
|
}, "Grade 6 - 7"), React$1.createElement(MenuItem, {
|
|
107864
107884
|
value: 8,
|
|
107865
107885
|
__self: this,
|
|
107866
107886
|
__source: {
|
|
107867
107887
|
fileName: _jsxFileName,
|
|
107868
|
-
lineNumber:
|
|
107888
|
+
lineNumber: 452
|
|
107869
107889
|
}
|
|
107870
107890
|
}, "Grade 8 - HS"), React$1.createElement(MenuItem, {
|
|
107871
107891
|
value: 'geometry',
|
|
107872
107892
|
__self: this,
|
|
107873
107893
|
__source: {
|
|
107874
107894
|
fileName: _jsxFileName,
|
|
107875
|
-
lineNumber:
|
|
107895
|
+
lineNumber: 453
|
|
107876
107896
|
}
|
|
107877
107897
|
}, "Geometry"), React$1.createElement(MenuItem, {
|
|
107878
107898
|
value: 'advanced-algebra',
|
|
107879
107899
|
__self: this,
|
|
107880
107900
|
__source: {
|
|
107881
107901
|
fileName: _jsxFileName,
|
|
107882
|
-
lineNumber:
|
|
107902
|
+
lineNumber: 454
|
|
107883
107903
|
}
|
|
107884
107904
|
}, "Advanced Algebra"), React$1.createElement(MenuItem, {
|
|
107885
107905
|
value: 'statistics',
|
|
107886
107906
|
__self: this,
|
|
107887
107907
|
__source: {
|
|
107888
107908
|
fileName: _jsxFileName,
|
|
107889
|
-
lineNumber:
|
|
107909
|
+
lineNumber: 457
|
|
107890
107910
|
}
|
|
107891
107911
|
}, "Statistics"), React$1.createElement(MenuItem, {
|
|
107892
107912
|
value: 'item-authoring',
|
|
107893
107913
|
__self: this,
|
|
107894
107914
|
__source: {
|
|
107895
107915
|
fileName: _jsxFileName,
|
|
107896
|
-
lineNumber:
|
|
107916
|
+
lineNumber: 458
|
|
107897
107917
|
}
|
|
107898
107918
|
}, "Item Authoring"))), Object.keys(responses || ({})).map((responseKey, idx) => {
|
|
107899
107919
|
const response = responses[responseKey];
|
|
@@ -107911,7 +107931,7 @@ class Design extends React$1.Component {
|
|
|
107911
107931
|
__self: this,
|
|
107912
107932
|
__source: {
|
|
107913
107933
|
fileName: _jsxFileName,
|
|
107914
|
-
lineNumber:
|
|
107934
|
+
lineNumber: 467
|
|
107915
107935
|
}
|
|
107916
107936
|
});
|
|
107917
107937
|
}
|
|
@@ -107922,7 +107942,7 @@ class Design extends React$1.Component {
|
|
|
107922
107942
|
__self: this,
|
|
107923
107943
|
__source: {
|
|
107924
107944
|
fileName: _jsxFileName,
|
|
107925
|
-
lineNumber:
|
|
107945
|
+
lineNumber: 485
|
|
107926
107946
|
}
|
|
107927
107947
|
}, React$1.createElement(EditableHtml, {
|
|
107928
107948
|
className: classes.prompt,
|
|
@@ -107951,14 +107971,14 @@ class Design extends React$1.Component {
|
|
|
107951
107971
|
__self: this,
|
|
107952
107972
|
__source: {
|
|
107953
107973
|
fileName: _jsxFileName,
|
|
107954
|
-
lineNumber:
|
|
107974
|
+
lineNumber: 489
|
|
107955
107975
|
}
|
|
107956
107976
|
}), rationaleError && React$1.createElement('div', {
|
|
107957
107977
|
className: classes.errorText,
|
|
107958
107978
|
__self: this,
|
|
107959
107979
|
__source: {
|
|
107960
107980
|
fileName: _jsxFileName,
|
|
107961
|
-
lineNumber:
|
|
107981
|
+
lineNumber: 520
|
|
107962
107982
|
}
|
|
107963
107983
|
}, rationaleError)));
|
|
107964
107984
|
}
|
|
@@ -108189,9 +108209,21 @@ const log = debug('math-templated:configure');
|
|
|
108189
108209
|
class MathTemplateConfigure extends HTMLElement {
|
|
108190
108210
|
static __initStatic() {
|
|
108191
108211
|
this.prepareModel = (model = {}) => {
|
|
108212
|
+
const {validationDefault, allowTrailingZerosDefault, ignoreOrderDefault, responses = {}} = model;
|
|
108213
|
+
const updatedResponses = Object.keys(responses).reduce((acc, responseId) => {
|
|
108214
|
+
const correctResponse = responses[responseId];
|
|
108215
|
+
acc[responseId] = {
|
|
108216
|
+
...correctResponse,
|
|
108217
|
+
validation: correctResponse.validation || validationDefault,
|
|
108218
|
+
allowTrailingZeros: correctResponse.allowTrailingZeros || allowTrailingZerosDefault,
|
|
108219
|
+
ignoreOrder: correctResponse.ignoreOrder || ignoreOrderDefault
|
|
108220
|
+
};
|
|
108221
|
+
return acc;
|
|
108222
|
+
}, {});
|
|
108192
108223
|
const joinedObj = {
|
|
108193
108224
|
...sensibleDefaults.model,
|
|
108194
|
-
...model
|
|
108225
|
+
...model,
|
|
108226
|
+
responses: updatedResponses
|
|
108195
108227
|
};
|
|
108196
108228
|
const slateMarkup = joinedObj.slateMarkup || createSlateMarkup(joinedObj.markup);
|
|
108197
108229
|
const processedMarkup = processMarkup(slateMarkup);
|
package/module/controller.js
CHANGED
|
@@ -22901,10 +22901,28 @@ const outcome = (question, session, env) =>
|
|
|
22901
22901
|
}
|
|
22902
22902
|
});
|
|
22903
22903
|
|
|
22904
|
-
const createDefaultModel = (model = {}) =>
|
|
22905
|
-
|
|
22906
|
-
|
|
22907
|
-
|
|
22904
|
+
const createDefaultModel = (model = {}) => {
|
|
22905
|
+
const { validationDefault, allowTrailingZerosDefault, ignoreOrderDefault, responses = {} } = model;
|
|
22906
|
+
|
|
22907
|
+
const updatedResponses = Object.keys(responses).reduce((acc, responseId) => {
|
|
22908
|
+
const correctResponse = responses[responseId];
|
|
22909
|
+
|
|
22910
|
+
acc[responseId] = {
|
|
22911
|
+
...correctResponse,
|
|
22912
|
+
validation: correctResponse.validation || validationDefault,
|
|
22913
|
+
allowTrailingZeros: correctResponse.allowTrailingZeros || allowTrailingZerosDefault,
|
|
22914
|
+
ignoreOrder: correctResponse.ignoreOrder || ignoreOrderDefault,
|
|
22915
|
+
};
|
|
22916
|
+
|
|
22917
|
+
return acc;
|
|
22918
|
+
}, {});
|
|
22919
|
+
|
|
22920
|
+
return {
|
|
22921
|
+
...defaults.model,
|
|
22922
|
+
...model,
|
|
22923
|
+
responses: updatedResponses
|
|
22924
|
+
};
|
|
22925
|
+
};
|
|
22908
22926
|
|
|
22909
22927
|
const normalizeSession = (s) => ({ ...s });
|
|
22910
22928
|
|
package/module/element.js
CHANGED
|
@@ -118995,7 +118995,7 @@ var _interopRequireDefault$B = interopRequireDefault.exports;
|
|
|
118995
118995
|
Object.defineProperty(color$1, "__esModule", {
|
|
118996
118996
|
value: true
|
|
118997
118997
|
});
|
|
118998
|
-
color$1.v = color$1.text = color$1.secondaryText = color$1.secondaryLight = color$1.secondaryDark = color$1.secondaryBackground = color$1.secondary = color$1.primaryText = color$1.primaryLight = color$1.primaryDark = color$1.primary = color$1.missing = color$1.incorrectSecondary = color$1.incorrect = color$1.disabledSecondary = color$1.disabled = color$1.defaults = color$1.correctSecondary = color$1.correct = color$1.black = color$1.background = void 0;
|
|
118998
|
+
color$1.white = color$1.v = color$1.text = color$1.secondaryText = color$1.secondaryLight = color$1.secondaryDark = color$1.secondaryBackground = color$1.secondary = color$1.primaryText = color$1.primaryLight = color$1.primaryDark = color$1.primary = color$1.missingWithIcon = color$1.missing = color$1.incorrectWithIcon = color$1.incorrectSecondary = color$1.incorrect = color$1.disabledSecondary = color$1.disabled = color$1.defaults = color$1.correctWithIcon = color$1.correctSecondary = color$1.correct = color$1.black = color$1.background = void 0;
|
|
118999
118999
|
var _green = _interopRequireDefault$B(green$1);
|
|
119000
119000
|
var _orange = _interopRequireDefault$B(orange$1);
|
|
119001
119001
|
var _pink = _interopRequireDefault$B(pink$1);
|
|
@@ -119007,9 +119007,12 @@ var defaults = {
|
|
|
119007
119007
|
DISABLED_SECONDARY: '#ABABAB',
|
|
119008
119008
|
CORRECT: _green["default"][500],
|
|
119009
119009
|
CORRECT_SECONDARY: _green["default"][50],
|
|
119010
|
+
CORRECT_WITH_ICON: '#087D38',
|
|
119010
119011
|
INCORRECT: _orange["default"][500],
|
|
119011
119012
|
INCORRECT_SECONDARY: _red["default"][50],
|
|
119013
|
+
INCORRECT_WITH_ICON: '#BF0D00',
|
|
119012
119014
|
MISSING: _red["default"][700],
|
|
119015
|
+
MISSING_WITH_ICON: '#6A78A1',
|
|
119013
119016
|
PRIMARY: _indigo["default"][500],
|
|
119014
119017
|
PRIMARY_LIGHT: _indigo["default"][200],
|
|
119015
119018
|
PRIMARY_DARK: _indigo["default"][800],
|
|
@@ -119018,7 +119021,8 @@ var defaults = {
|
|
|
119018
119021
|
SECONDARY_DARK: _pink["default"][900],
|
|
119019
119022
|
BACKGROUND: 'rgba(255,255,255,0)',
|
|
119020
119023
|
SECONDARY_BACKGROUND: 'rgba(241,241,241,1)',
|
|
119021
|
-
BLACK: '#000000'
|
|
119024
|
+
BLACK: '#000000',
|
|
119025
|
+
WHITE: '#ffffff'
|
|
119022
119026
|
};
|
|
119023
119027
|
color$1.defaults = defaults;
|
|
119024
119028
|
Object.freeze(defaults);
|
|
@@ -119055,10 +119059,18 @@ var correctSecondary = function correctSecondary() {
|
|
|
119055
119059
|
return pv('correct-secondary', defaults.CORRECT_SECONDARY);
|
|
119056
119060
|
};
|
|
119057
119061
|
color$1.correctSecondary = correctSecondary;
|
|
119062
|
+
var correctWithIcon = function correctWithIcon() {
|
|
119063
|
+
return pv('correct-icon', defaults.CORRECT_WITH_ICON);
|
|
119064
|
+
};
|
|
119065
|
+
color$1.correctWithIcon = correctWithIcon;
|
|
119058
119066
|
var incorrect = function incorrect() {
|
|
119059
119067
|
return pv('incorrect', defaults.INCORRECT);
|
|
119060
119068
|
};
|
|
119061
119069
|
color$1.incorrect = incorrect;
|
|
119070
|
+
var incorrectWithIcon = function incorrectWithIcon() {
|
|
119071
|
+
return pv('incorrect-icon', defaults.INCORRECT_WITH_ICON);
|
|
119072
|
+
};
|
|
119073
|
+
color$1.incorrectWithIcon = incorrectWithIcon;
|
|
119062
119074
|
var incorrectSecondary = function incorrectSecondary() {
|
|
119063
119075
|
return pv('incorrect-secondary', defaults.INCORRECT_SECONDARY);
|
|
119064
119076
|
};
|
|
@@ -119067,6 +119079,10 @@ var missing = function missing() {
|
|
|
119067
119079
|
return pv('missing', defaults.MISSING);
|
|
119068
119080
|
};
|
|
119069
119081
|
color$1.missing = missing;
|
|
119082
|
+
var missingWithIcon = function missingWithIcon() {
|
|
119083
|
+
return pv('missing-icon', defaults.MISSING_WITH_ICON);
|
|
119084
|
+
};
|
|
119085
|
+
color$1.missingWithIcon = missingWithIcon;
|
|
119070
119086
|
var primary = function primary() {
|
|
119071
119087
|
return pv('primary', defaults.PRIMARY);
|
|
119072
119088
|
};
|
|
@@ -119111,6 +119127,10 @@ var black = function black() {
|
|
|
119111
119127
|
return pv('black', defaults.BLACK);
|
|
119112
119128
|
};
|
|
119113
119129
|
color$1.black = black;
|
|
119130
|
+
var white = function white() {
|
|
119131
|
+
return pv('white', defaults.WHITE);
|
|
119132
|
+
};
|
|
119133
|
+
color$1.white = white;
|
|
119114
119134
|
const require$$9$g = _dll_react;
|
|
119115
119135
|
const require$$11$7 = _dll_classnames;
|
|
119116
119136
|
const require$$12$7 = _dll_prop_types;
|
package/module/print.js
CHANGED
|
@@ -118958,7 +118958,7 @@ var _interopRequireDefault$B = interopRequireDefault.exports;
|
|
|
118958
118958
|
Object.defineProperty(color$1, "__esModule", {
|
|
118959
118959
|
value: true
|
|
118960
118960
|
});
|
|
118961
|
-
color$1.v = color$1.text = color$1.secondaryText = color$1.secondaryLight = color$1.secondaryDark = color$1.secondaryBackground = color$1.secondary = color$1.primaryText = color$1.primaryLight = color$1.primaryDark = color$1.primary = color$1.missing = color$1.incorrectSecondary = color$1.incorrect = color$1.disabledSecondary = color$1.disabled = color$1.defaults = color$1.correctSecondary = color$1.correct = color$1.black = color$1.background = void 0;
|
|
118961
|
+
color$1.white = color$1.v = color$1.text = color$1.secondaryText = color$1.secondaryLight = color$1.secondaryDark = color$1.secondaryBackground = color$1.secondary = color$1.primaryText = color$1.primaryLight = color$1.primaryDark = color$1.primary = color$1.missingWithIcon = color$1.missing = color$1.incorrectWithIcon = color$1.incorrectSecondary = color$1.incorrect = color$1.disabledSecondary = color$1.disabled = color$1.defaults = color$1.correctWithIcon = color$1.correctSecondary = color$1.correct = color$1.black = color$1.background = void 0;
|
|
118962
118962
|
var _green = _interopRequireDefault$B(green$1);
|
|
118963
118963
|
var _orange = _interopRequireDefault$B(orange$1);
|
|
118964
118964
|
var _pink = _interopRequireDefault$B(pink$1);
|
|
@@ -118970,9 +118970,12 @@ var defaults = {
|
|
|
118970
118970
|
DISABLED_SECONDARY: '#ABABAB',
|
|
118971
118971
|
CORRECT: _green["default"][500],
|
|
118972
118972
|
CORRECT_SECONDARY: _green["default"][50],
|
|
118973
|
+
CORRECT_WITH_ICON: '#087D38',
|
|
118973
118974
|
INCORRECT: _orange["default"][500],
|
|
118974
118975
|
INCORRECT_SECONDARY: _red["default"][50],
|
|
118976
|
+
INCORRECT_WITH_ICON: '#BF0D00',
|
|
118975
118977
|
MISSING: _red["default"][700],
|
|
118978
|
+
MISSING_WITH_ICON: '#6A78A1',
|
|
118976
118979
|
PRIMARY: _indigo["default"][500],
|
|
118977
118980
|
PRIMARY_LIGHT: _indigo["default"][200],
|
|
118978
118981
|
PRIMARY_DARK: _indigo["default"][800],
|
|
@@ -118981,7 +118984,8 @@ var defaults = {
|
|
|
118981
118984
|
SECONDARY_DARK: _pink["default"][900],
|
|
118982
118985
|
BACKGROUND: 'rgba(255,255,255,0)',
|
|
118983
118986
|
SECONDARY_BACKGROUND: 'rgba(241,241,241,1)',
|
|
118984
|
-
BLACK: '#000000'
|
|
118987
|
+
BLACK: '#000000',
|
|
118988
|
+
WHITE: '#ffffff'
|
|
118985
118989
|
};
|
|
118986
118990
|
color$1.defaults = defaults;
|
|
118987
118991
|
Object.freeze(defaults);
|
|
@@ -119018,10 +119022,18 @@ var correctSecondary = function correctSecondary() {
|
|
|
119018
119022
|
return pv('correct-secondary', defaults.CORRECT_SECONDARY);
|
|
119019
119023
|
};
|
|
119020
119024
|
color$1.correctSecondary = correctSecondary;
|
|
119025
|
+
var correctWithIcon = function correctWithIcon() {
|
|
119026
|
+
return pv('correct-icon', defaults.CORRECT_WITH_ICON);
|
|
119027
|
+
};
|
|
119028
|
+
color$1.correctWithIcon = correctWithIcon;
|
|
119021
119029
|
var incorrect = function incorrect() {
|
|
119022
119030
|
return pv('incorrect', defaults.INCORRECT);
|
|
119023
119031
|
};
|
|
119024
119032
|
color$1.incorrect = incorrect;
|
|
119033
|
+
var incorrectWithIcon = function incorrectWithIcon() {
|
|
119034
|
+
return pv('incorrect-icon', defaults.INCORRECT_WITH_ICON);
|
|
119035
|
+
};
|
|
119036
|
+
color$1.incorrectWithIcon = incorrectWithIcon;
|
|
119025
119037
|
var incorrectSecondary = function incorrectSecondary() {
|
|
119026
119038
|
return pv('incorrect-secondary', defaults.INCORRECT_SECONDARY);
|
|
119027
119039
|
};
|
|
@@ -119030,6 +119042,10 @@ var missing = function missing() {
|
|
|
119030
119042
|
return pv('missing', defaults.MISSING);
|
|
119031
119043
|
};
|
|
119032
119044
|
color$1.missing = missing;
|
|
119045
|
+
var missingWithIcon = function missingWithIcon() {
|
|
119046
|
+
return pv('missing-icon', defaults.MISSING_WITH_ICON);
|
|
119047
|
+
};
|
|
119048
|
+
color$1.missingWithIcon = missingWithIcon;
|
|
119033
119049
|
var primary = function primary() {
|
|
119034
119050
|
return pv('primary', defaults.PRIMARY);
|
|
119035
119051
|
};
|
|
@@ -119074,6 +119090,10 @@ var black = function black() {
|
|
|
119074
119090
|
return pv('black', defaults.BLACK);
|
|
119075
119091
|
};
|
|
119076
119092
|
color$1.black = black;
|
|
119093
|
+
var white = function white() {
|
|
119094
|
+
return pv('white', defaults.WHITE);
|
|
119095
|
+
};
|
|
119096
|
+
color$1.white = white;
|
|
119077
119097
|
const require$$9$g = _dll_react;
|
|
119078
119098
|
const require$$11$7 = _dll_classnames;
|
|
119079
119099
|
const require$$12$7 = _dll_prop_types;
|
package/package.json
CHANGED
|
@@ -4,19 +4,19 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "2.14.3-next.
|
|
7
|
+
"version": "2.14.3-next.15+38332888b",
|
|
8
8
|
"description": "",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.9.2",
|
|
11
11
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
12
|
-
"@pie-lib/pie-toolbox": "1.
|
|
12
|
+
"@pie-lib/pie-toolbox": "1.22.0",
|
|
13
13
|
"prop-types": "^15.6.1",
|
|
14
14
|
"react": "^16.8.1",
|
|
15
15
|
"react-dom": "^16.8.1"
|
|
16
16
|
},
|
|
17
17
|
"author": "",
|
|
18
18
|
"license": "ISC",
|
|
19
|
-
"gitHead": "
|
|
19
|
+
"gitHead": "38332888bf478c18151415ee6f8063106679208e",
|
|
20
20
|
"scripts": {
|
|
21
21
|
"postpublish": "../../scripts/postpublish"
|
|
22
22
|
},
|