@pie-element/ebsr 10.1.6-next.3 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/configure/CHANGELOG.md +16 -0
- package/configure/lib/main.js +3 -1
- package/configure/lib/main.js.map +1 -1
- package/configure/package.json +3 -3
- package/configure/src/main.jsx +2 -1
- package/controller/CHANGELOG.md +16 -0
- package/controller/lib/index.js +1 -0
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/controller/src/index.js +1 -0
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/module/configure.js +10 -9
- package/module/controller.js +1 -0
- package/module/element.js +35 -7
- package/module/manifest.json +2 -2
- package/module/print.js +13 -7
- package/package.json +4 -4
- package/src/index.js +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [10.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr@10.1.5...@pie-element/ebsr@10.2.0) (2024-10-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* fixed all tests after updating pie-toolbox [PD-1460] ([9f5293d](https://github.com/pie-framework/pie-elements/commit/9f5293d618edc06f69fabb27a042ec5eee66e151))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* used configlayout, preview layout or uilayout to enable extraCSSRules inside author and player elements [PD-1460] ([eeebb02](https://github.com/pie-framework/pie-elements/commit/eeebb02f200208620c1af56366a22bf65944ba3e))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
## [10.1.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr@10.1.4...@pie-element/ebsr@10.1.5) (2024-10-28)
|
|
7
23
|
|
|
8
24
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [10.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr-configure@10.0.8...@pie-element/ebsr-configure@10.1.0) (2024-10-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* fixed all tests after updating pie-toolbox [PD-1460] ([9f5293d](https://github.com/pie-framework/pie-elements/commit/9f5293d618edc06f69fabb27a042ec5eee66e151))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* used configlayout, preview layout or uilayout to enable extraCSSRules inside author and player elements [PD-1460] ([eeebb02](https://github.com/pie-framework/pie-elements/commit/eeebb02f200208620c1af56366a22bf65944ba3e))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
## [10.0.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr-configure@10.0.7...@pie-element/ebsr-configure@10.0.8) (2024-10-28)
|
|
7
23
|
|
|
8
24
|
|
package/configure/lib/main.js
CHANGED
|
@@ -119,7 +119,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
119
119
|
onConfigurationChanged = _this$props.onConfigurationChanged;
|
|
120
120
|
var partLabelType = model.partLabelType,
|
|
121
121
|
modelPartA = model.partA,
|
|
122
|
-
modelPartB = model.partB
|
|
122
|
+
modelPartB = model.partB,
|
|
123
|
+
extraCSSRules = model.extraCSSRules;
|
|
123
124
|
var _configuration$conten = configuration.contentDimensions,
|
|
124
125
|
contentDimensions = _configuration$conten === void 0 ? {} : _configuration$conten,
|
|
125
126
|
_configuration$partA = configuration.partA,
|
|
@@ -240,6 +241,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
240
241
|
'partB.spellCheckEnabled': spellCheckB.settings && toggle(spellCheckB.label)
|
|
241
242
|
};
|
|
242
243
|
return /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
|
|
244
|
+
extraCSSRules: extraCSSRules,
|
|
243
245
|
dimensions: contentDimensions,
|
|
244
246
|
hideSettings: settingsPanelDisabled,
|
|
245
247
|
settings: /*#__PURE__*/_react["default"].createElement(Panel, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["Panel","settings","toggle","radio","dropdown","styles","theme","partLabel","paddingBottom","spacing","unit","divider","flex","height","Main","choices","correctFound","map","choice","correct","model","key","onModelChanged","props","partA","choiceMode","removeExtraChoices","partB","classes","configuration","onConfigurationChanged","partLabelType","modelPartA","modelPartB","contentDimensions","partialScoring","settingsPanelDisabled","scoringType","language","languageChoices","generalConfiguration","feedback","feedbackA","choiceModeA","choicePrefix","choicePrefixA","lockChoiceOrder","lockChoiceOrderA","prompt","promptA","teacherInstructions","teacherInstructionsA","studentInstructions","studentInstructionsA","choicesLayout","choicesLayoutA","gridColumns","gridColumnsA","rationale","rationaleA","spellCheck","spellCheckA","feedbackB","choiceModeB","choicePrefixB","lockChoiceOrderB","promptB","teacherInstructionsB","studentInstructionsB","choicesLayoutB","gridColumnsB","rationaleB","spellCheckB","type","typeIsNumber","firstPart","secondPart","nrOfColumnsAvailable","length","Array","from","_","i","panelSettings","partLabels","label","enabled","options","panelSettingsPartA","panelPropertiesPartA","panelSettingsPartB","panelPropertiesPartB","ref","_model","errors","React","Component","PropTypes","object","func","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { settings, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst styles = (theme) => ({\n partLabel: {\n paddingBottom: theme.spacing.unit * 2,\n },\n divider: {\n flex: 1,\n height: theme.spacing.unit * 2.5,\n },\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n configuration: PropTypes.object,\n model: PropTypes.object,\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n };\n\n removeExtraChoices = (choices) => {\n let correctFound = false;\n\n return (choices || []).map((choice) => {\n if (correctFound) {\n choice.correct = false;\n\n return choice;\n }\n\n if (choice.correct) {\n correctFound = true;\n }\n\n return choice;\n });\n };\n\n onModelChanged = (model, key) => {\n const { onModelChanged } = this.props;\n\n if (key === 'partA.choiceMode' && model.partA.choiceMode === 'radio') {\n model.partA.choices = this.removeExtraChoices(model.partA.choices);\n\n return onModelChanged(model, true);\n }\n\n if (key === 'partB.choiceMode' && model.partB.choiceMode === 'radio') {\n model.partB.choices = this.removeExtraChoices(model.partB.choices);\n\n return onModelChanged(model, true);\n }\n\n return onModelChanged(model);\n };\n\n render() {\n const { classes, model, configuration, onConfigurationChanged } = this.props;\n const { partLabelType, partA: modelPartA, partB: modelPartB } = model;\n const {\n contentDimensions = {},\n partA = {},\n partB = {},\n partialScoring = {},\n settingsPanelDisabled,\n scoringType = {},\n language = {},\n languageChoices = {},\n ...generalConfiguration\n } = configuration;\n const {\n feedback: feedbackA = {},\n choiceMode: choiceModeA = {},\n choicePrefix: choicePrefixA = {},\n lockChoiceOrder: lockChoiceOrderA = {},\n prompt: promptA = {},\n teacherInstructions: teacherInstructionsA = {},\n studentInstructions: studentInstructionsA = {},\n choicesLayout: choicesLayoutA = {},\n gridColumns: gridColumnsA = {},\n rationale: rationaleA = {},\n spellCheck: spellCheckA = {},\n } = partA || {};\n const {\n feedback: feedbackB = {},\n choiceMode: choiceModeB = {},\n choicePrefix: choicePrefixB = {},\n lockChoiceOrder: lockChoiceOrderB = {},\n prompt: promptB = {},\n teacherInstructions: teacherInstructionsB = {},\n studentInstructions: studentInstructionsB = {},\n choicesLayout: choicesLayoutB = {},\n gridColumns: gridColumnsB = {},\n rationale: rationaleB = {},\n spellCheck: spellCheckB = {},\n } = partB || {};\n\n const type = partLabelType || 'Numbers';\n const typeIsNumber = type === 'Numbers';\n const firstPart = `Part ${typeIsNumber ? '1' : 'A'}`;\n const secondPart = `Part ${typeIsNumber ? '2' : 'B'}`;\n const nrOfColumnsAvailable = {\n partA:\n modelPartA.choices && modelPartA.choices.length\n ? Array.from({ length: modelPartA.choices.length }, (_, i) => `${i + 1}`)\n : [],\n partB:\n modelPartB.choices && modelPartB.choices.length\n ? Array.from({ length: modelPartB.choices.length }, (_, i) => `${i + 1}`)\n : [],\n };\n\n const panelSettings = {\n partLabels: generalConfiguration.partLabels.settings && toggle(generalConfiguration.partLabels.label),\n partLabelType: model.partLabels && dropdown('', ['Numbers', 'Letters']),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelSettingsPartA = {\n 'partA.choiceMode': choiceModeA.settings && radio(choiceModeA.label, ['checkbox', 'radio']),\n 'partA.choicePrefix': choicePrefixA.settings && radio(choicePrefixA.label, ['numbers', 'letters']),\n 'partA.lockChoiceOrder': lockChoiceOrderA.settings && toggle(lockChoiceOrderA.label),\n 'partA.choicesLayout':\n choicesLayoutA.settings && dropdown(choicesLayoutA.label, ['vertical', 'grid', 'horizontal']),\n 'partA.gridColumns':\n choicesLayoutA.settings &&\n modelPartA.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.partA.length > 0 &&\n dropdown(gridColumnsA.label, nrOfColumnsAvailable.partA),\n };\n const panelPropertiesPartA = {\n 'partA.feedbackEnabled': feedbackA.settings && toggle(feedbackA.label),\n 'partA.promptEnabled': promptA.settings && toggle(promptA.label),\n 'partA.teacherInstructionsEnabled': teacherInstructionsA.settings && toggle(teacherInstructionsA.label),\n 'partA.studentInstructionsEnabled': studentInstructionsA.settings && toggle(studentInstructionsA.label),\n 'partA.rationaleEnabled': rationaleA.settings && toggle(rationaleA.label),\n 'partA.spellCheckEnabled': spellCheckA.settings && toggle(spellCheckA.label),\n };\n\n const panelSettingsPartB = {\n 'partB.choiceMode': choiceModeB.settings && radio(choiceModeB.label, ['checkbox', 'radio']),\n 'partB.choicePrefix': choicePrefixB.settings && radio(choicePrefixB.label, ['numbers', 'letters']),\n 'partB.lockChoiceOrder': lockChoiceOrderB.settings && toggle(lockChoiceOrderB.label),\n 'partB.choicesLayout':\n choicesLayoutB.settings && dropdown(choicesLayoutB.label, ['vertical', 'grid', 'horizontal']),\n 'partB.gridColumns':\n choicesLayoutB.settings &&\n modelPartB.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.partB.length > 0 &&\n dropdown(gridColumnsB.label, nrOfColumnsAvailable.partB),\n };\n const panelPropertiesPartB = {\n 'partB.feedbackEnabled': feedbackB.settings && toggle(feedbackB.label),\n 'partB.promptEnabled': promptB.settings && toggle(promptB.label),\n 'partB.teacherInstructionsEnabled': teacherInstructionsB.settings && toggle(teacherInstructionsB.label),\n 'partB.studentInstructionsEnabled': studentInstructionsB.settings && toggle(studentInstructionsB.label),\n 'partB.rationaleEnabled': rationaleB.settings && toggle(rationaleB.label),\n 'partB.spellCheckEnabled': spellCheckB.settings && toggle(spellCheckB.label),\n };\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.onModelChanged}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n 'Settings for both': panelSettings,\n [`Settings ${firstPart}`]: panelSettingsPartA,\n [`Properties ${firstPart}`]: panelPropertiesPartA,\n [`Settings ${secondPart}`]: panelSettingsPartB,\n [`Properties ${secondPart}`]: panelPropertiesPartB,\n }}\n />\n }\n >\n {model.partLabels && <div className={classes.partLabel}>{firstPart}</div>}\n <ebsr-multiple-choice-configure\n id=\"A\"\n key=\"partA\"\n ref={(ref) => {\n if (ref) {\n // do not use destructuring to get model from props\n this.partA = ref;\n this.partA._model = {\n ...this.props.model.partA,\n errors: (this.props.model.errors && this.props.model.errors.partA) || {},\n };\n this.partA.configuration = {\n ...partA,\n ...generalConfiguration,\n };\n }\n }}\n />\n\n <div className={classes.divider} />\n\n {model.partLabels && <div className={classes.partLabel}>{secondPart}</div>}\n <ebsr-multiple-choice-configure\n id=\"B\"\n key=\"partB\"\n ref={(ref) => {\n if (ref) {\n // do not use destructuring to get model from props\n this.partB = ref;\n this.partB._model = {\n ...this.props.model.partB,\n errors: (this.props.model.errors && this.props.model.errors.partB) || {},\n };\n this.partB.configuration = {\n ...partB,\n ...generalConfiguration,\n };\n }\n }}\n />\n </layout.ConfigLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["Panel","settings","toggle","radio","dropdown","styles","theme","partLabel","paddingBottom","spacing","unit","divider","flex","height","Main","choices","correctFound","map","choice","correct","model","key","onModelChanged","props","partA","choiceMode","removeExtraChoices","partB","classes","configuration","onConfigurationChanged","partLabelType","modelPartA","modelPartB","extraCSSRules","contentDimensions","partialScoring","settingsPanelDisabled","scoringType","language","languageChoices","generalConfiguration","feedback","feedbackA","choiceModeA","choicePrefix","choicePrefixA","lockChoiceOrder","lockChoiceOrderA","prompt","promptA","teacherInstructions","teacherInstructionsA","studentInstructions","studentInstructionsA","choicesLayout","choicesLayoutA","gridColumns","gridColumnsA","rationale","rationaleA","spellCheck","spellCheckA","feedbackB","choiceModeB","choicePrefixB","lockChoiceOrderB","promptB","teacherInstructionsB","studentInstructionsB","choicesLayoutB","gridColumnsB","rationaleB","spellCheckB","type","typeIsNumber","firstPart","secondPart","nrOfColumnsAvailable","length","Array","from","_","i","panelSettings","partLabels","label","enabled","options","panelSettingsPartA","panelPropertiesPartA","panelSettingsPartB","panelPropertiesPartB","ref","_model","errors","React","Component","PropTypes","object","func","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { settings, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst { Panel, toggle, radio, dropdown } = settings;\n\nconst styles = (theme) => ({\n partLabel: {\n paddingBottom: theme.spacing.unit * 2,\n },\n divider: {\n flex: 1,\n height: theme.spacing.unit * 2.5,\n },\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n configuration: PropTypes.object,\n model: PropTypes.object,\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n };\n\n removeExtraChoices = (choices) => {\n let correctFound = false;\n\n return (choices || []).map((choice) => {\n if (correctFound) {\n choice.correct = false;\n\n return choice;\n }\n\n if (choice.correct) {\n correctFound = true;\n }\n\n return choice;\n });\n };\n\n onModelChanged = (model, key) => {\n const { onModelChanged } = this.props;\n\n if (key === 'partA.choiceMode' && model.partA.choiceMode === 'radio') {\n model.partA.choices = this.removeExtraChoices(model.partA.choices);\n\n return onModelChanged(model, true);\n }\n\n if (key === 'partB.choiceMode' && model.partB.choiceMode === 'radio') {\n model.partB.choices = this.removeExtraChoices(model.partB.choices);\n\n return onModelChanged(model, true);\n }\n\n return onModelChanged(model);\n };\n\n render() {\n const { classes, model, configuration, onConfigurationChanged } = this.props;\n const { partLabelType, partA: modelPartA, partB: modelPartB, extraCSSRules } = model;\n const {\n contentDimensions = {},\n partA = {},\n partB = {},\n partialScoring = {},\n settingsPanelDisabled,\n scoringType = {},\n language = {},\n languageChoices = {},\n ...generalConfiguration\n } = configuration;\n const {\n feedback: feedbackA = {},\n choiceMode: choiceModeA = {},\n choicePrefix: choicePrefixA = {},\n lockChoiceOrder: lockChoiceOrderA = {},\n prompt: promptA = {},\n teacherInstructions: teacherInstructionsA = {},\n studentInstructions: studentInstructionsA = {},\n choicesLayout: choicesLayoutA = {},\n gridColumns: gridColumnsA = {},\n rationale: rationaleA = {},\n spellCheck: spellCheckA = {},\n } = partA || {};\n const {\n feedback: feedbackB = {},\n choiceMode: choiceModeB = {},\n choicePrefix: choicePrefixB = {},\n lockChoiceOrder: lockChoiceOrderB = {},\n prompt: promptB = {},\n teacherInstructions: teacherInstructionsB = {},\n studentInstructions: studentInstructionsB = {},\n choicesLayout: choicesLayoutB = {},\n gridColumns: gridColumnsB = {},\n rationale: rationaleB = {},\n spellCheck: spellCheckB = {},\n } = partB || {};\n\n const type = partLabelType || 'Numbers';\n const typeIsNumber = type === 'Numbers';\n const firstPart = `Part ${typeIsNumber ? '1' : 'A'}`;\n const secondPart = `Part ${typeIsNumber ? '2' : 'B'}`;\n const nrOfColumnsAvailable = {\n partA:\n modelPartA.choices && modelPartA.choices.length\n ? Array.from({ length: modelPartA.choices.length }, (_, i) => `${i + 1}`)\n : [],\n partB:\n modelPartB.choices && modelPartB.choices.length\n ? Array.from({ length: modelPartB.choices.length }, (_, i) => `${i + 1}`)\n : [],\n };\n\n const panelSettings = {\n partLabels: generalConfiguration.partLabels.settings && toggle(generalConfiguration.partLabels.label),\n partLabelType: model.partLabels && dropdown('', ['Numbers', 'Letters']),\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const panelSettingsPartA = {\n 'partA.choiceMode': choiceModeA.settings && radio(choiceModeA.label, ['checkbox', 'radio']),\n 'partA.choicePrefix': choicePrefixA.settings && radio(choicePrefixA.label, ['numbers', 'letters']),\n 'partA.lockChoiceOrder': lockChoiceOrderA.settings && toggle(lockChoiceOrderA.label),\n 'partA.choicesLayout':\n choicesLayoutA.settings && dropdown(choicesLayoutA.label, ['vertical', 'grid', 'horizontal']),\n 'partA.gridColumns':\n choicesLayoutA.settings &&\n modelPartA.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.partA.length > 0 &&\n dropdown(gridColumnsA.label, nrOfColumnsAvailable.partA),\n };\n const panelPropertiesPartA = {\n 'partA.feedbackEnabled': feedbackA.settings && toggle(feedbackA.label),\n 'partA.promptEnabled': promptA.settings && toggle(promptA.label),\n 'partA.teacherInstructionsEnabled': teacherInstructionsA.settings && toggle(teacherInstructionsA.label),\n 'partA.studentInstructionsEnabled': studentInstructionsA.settings && toggle(studentInstructionsA.label),\n 'partA.rationaleEnabled': rationaleA.settings && toggle(rationaleA.label),\n 'partA.spellCheckEnabled': spellCheckA.settings && toggle(spellCheckA.label),\n };\n\n const panelSettingsPartB = {\n 'partB.choiceMode': choiceModeB.settings && radio(choiceModeB.label, ['checkbox', 'radio']),\n 'partB.choicePrefix': choicePrefixB.settings && radio(choicePrefixB.label, ['numbers', 'letters']),\n 'partB.lockChoiceOrder': lockChoiceOrderB.settings && toggle(lockChoiceOrderB.label),\n 'partB.choicesLayout':\n choicesLayoutB.settings && dropdown(choicesLayoutB.label, ['vertical', 'grid', 'horizontal']),\n 'partB.gridColumns':\n choicesLayoutB.settings &&\n modelPartB.choicesLayout === 'grid' &&\n nrOfColumnsAvailable.partB.length > 0 &&\n dropdown(gridColumnsB.label, nrOfColumnsAvailable.partB),\n };\n const panelPropertiesPartB = {\n 'partB.feedbackEnabled': feedbackB.settings && toggle(feedbackB.label),\n 'partB.promptEnabled': promptB.settings && toggle(promptB.label),\n 'partB.teacherInstructionsEnabled': teacherInstructionsB.settings && toggle(teacherInstructionsB.label),\n 'partB.studentInstructionsEnabled': studentInstructionsB.settings && toggle(studentInstructionsB.label),\n 'partB.rationaleEnabled': rationaleB.settings && toggle(rationaleB.label),\n 'partB.spellCheckEnabled': spellCheckB.settings && toggle(spellCheckB.label),\n };\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.onModelChanged}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n 'Settings for both': panelSettings,\n [`Settings ${firstPart}`]: panelSettingsPartA,\n [`Properties ${firstPart}`]: panelPropertiesPartA,\n [`Settings ${secondPart}`]: panelSettingsPartB,\n [`Properties ${secondPart}`]: panelPropertiesPartB,\n }}\n />\n }\n >\n {model.partLabels && <div className={classes.partLabel}>{firstPart}</div>}\n <ebsr-multiple-choice-configure\n id=\"A\"\n key=\"partA\"\n ref={(ref) => {\n if (ref) {\n // do not use destructuring to get model from props\n this.partA = ref;\n this.partA._model = {\n ...this.props.model.partA,\n errors: (this.props.model.errors && this.props.model.errors.partA) || {},\n };\n this.partA.configuration = {\n ...partA,\n ...generalConfiguration,\n };\n }\n }}\n />\n\n <div className={classes.divider} />\n\n {model.partLabels && <div className={classes.partLabel}>{secondPart}</div>}\n <ebsr-multiple-choice-configure\n id=\"B\"\n key=\"partB\"\n ref={(ref) => {\n if (ref) {\n // do not use destructuring to get model from props\n this.partB = ref;\n this.partB._model = {\n ...this.props.model.partB,\n errors: (this.props.model.errors && this.props.model.errors.partB) || {},\n };\n this.partB.configuration = {\n ...partB,\n ...generalConfiguration,\n };\n }\n }}\n />\n </layout.ConfigLayout>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
|
package/configure/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/ebsr-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "10.0
|
|
4
|
+
"version": "10.1.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
8
8
|
"author": "",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.9.2",
|
|
11
|
-
"@pie-element/multiple-choice": "^9.
|
|
11
|
+
"@pie-element/multiple-choice": "^9.3.0",
|
|
12
12
|
"@pie-framework/pie-configure-events": "^1.2.0",
|
|
13
|
-
"@pie-lib/pie-toolbox": "2.0
|
|
13
|
+
"@pie-lib/pie-toolbox": "2.1.0",
|
|
14
14
|
"lodash": "^4.17.15",
|
|
15
15
|
"prop-types": "^15.6.2",
|
|
16
16
|
"react": "^16.8.1",
|
package/configure/src/main.jsx
CHANGED
|
@@ -62,7 +62,7 @@ export class Main extends React.Component {
|
|
|
62
62
|
|
|
63
63
|
render() {
|
|
64
64
|
const { classes, model, configuration, onConfigurationChanged } = this.props;
|
|
65
|
-
const { partLabelType, partA: modelPartA, partB: modelPartB } = model;
|
|
65
|
+
const { partLabelType, partA: modelPartA, partB: modelPartB, extraCSSRules } = model;
|
|
66
66
|
const {
|
|
67
67
|
contentDimensions = {},
|
|
68
68
|
partA = {},
|
|
@@ -169,6 +169,7 @@ export class Main extends React.Component {
|
|
|
169
169
|
|
|
170
170
|
return (
|
|
171
171
|
<layout.ConfigLayout
|
|
172
|
+
extraCSSRules={extraCSSRules}
|
|
172
173
|
dimensions={contentDimensions}
|
|
173
174
|
hideSettings={settingsPanelDisabled}
|
|
174
175
|
settings={
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [8.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr-controller@8.0.6...@pie-element/ebsr-controller@8.1.0) (2024-10-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* fixed all tests after updating pie-toolbox [PD-1460] ([9f5293d](https://github.com/pie-framework/pie-elements/commit/9f5293d618edc06f69fabb27a042ec5eee66e151))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* used configlayout, preview layout or uilayout to enable extraCSSRules inside author and player elements [PD-1460] ([eeebb02](https://github.com/pie-framework/pie-elements/commit/eeebb02f200208620c1af56366a22bf65944ba3e))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
6
22
|
## [8.0.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/ebsr-controller@8.0.5...@pie-element/ebsr-controller@8.0.6) (2024-10-28)
|
|
7
23
|
|
|
8
24
|
|
package/controller/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","prepareChoice","model","env","defaultFeedback","choice","out","label","value","role","mode","rationale","rationaleEnabled","correct","feedbackEnabled","feedbackType","feedback","type","parsePart","part","key","session","Object","assign","incorrect","choices","map","disabled","complete","min","filter","c","length","responseCorrect","undefined","normalizePart","base","choicesLayout","verticalMode","normalize","partA","partB","language","question","defaults","updateSession","normalizedQuestion","shuffledValues","us","id","element","update","Promise","resolve","partASession","partALockChoiceOrder","partAChoices","partBChoices","partBSession","partBLockChoiceOrder","e","console","error","partLabels","partLabel","t","lng","index","partLabelType","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","createDefaultModel","isCorrect","getScore","config","sessionPart","partialScoringEnabled","maxScore","sessionPartValue","chosen","find","v","correctAndNotChosen","incorrectAndChosen","correctChoices","reduce","total","parseFloat","toFixed","outcome","score","scoreA","scoreB","empty","partialScoring","enabled","max","returnPartCorrect","answers","forEach","i","push","createCorrectResponseSession","partACorrect","partBCorrect","getInnerText","html","replaceAll","getContent","replace","validatePart","minAnswerChoices","maxAnswerChoices","reversedChoices","reverse","errors","choicesErrors","rationaleErrors","hasCorrectResponse","field","required","identicalAnswer","slice","some","nbOfChoices","answerChoices","correctResponse","validate","partAConfig","partBConfig","partAErrors","partBErrors"],"mappings":"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","sourcesContent":["import defaults from './defaults';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport { isResponseCorrect } from './utils';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\n\nconst prepareChoice = (model, env, defaultFeedback) => (choice) => {\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = model.rationaleEnabled ? choice.rationale : null;\n } else {\n out.rationale = null;\n }\n\n if (env.mode === 'evaluate') {\n out.correct = !!choice.correct;\n\n if (model.feedbackEnabled) {\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback[choice.correct ? 'correct' : 'incorrect'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n }\n\n return out;\n};\n\nconst parsePart = (part, key, session, env) => {\n const defaultFeedback = Object.assign({ correct: 'Correct', incorrect: 'Incorrect' }, part.defaultFeedback);\n\n let choices = part.choices ? part.choices.map(prepareChoice(part, env, defaultFeedback)) : [];\n\n return {\n ...part,\n choices,\n disabled: env.mode !== 'gather',\n complete: {\n min: part.choices.filter((c) => c.correct).length,\n },\n responseCorrect: env.mode === 'evaluate' ? isResponseCorrect(part, key, session) : undefined,\n };\n};\n\nconst normalizePart = (model, base) => ({\n ...base,\n ...model,\n choicesLayout: model.choicesLayout || (model.verticalMode === false && 'horizontal') || 'vertical',\n});\n\nexport const normalize = ({ partA = {}, partB = {}, language, ...question }) => ({\n ...defaults,\n ...question,\n partA: normalizePart(partA, { ...defaults.partA, language }),\n partB: normalizePart(partB, { ...defaults.partB, language }),\n});\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n const partA = parsePart(normalizedQuestion.partA, 'partA', session, env);\n const partB = parsePart(normalizedQuestion.partB, 'partB', session, env);\n\n const shuffledValues = {};\n\n const us = (part) => (id, element, update) =>\n new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n\n const partASession = get(session, 'value.partA');\n const partALockChoiceOrder = lockChoices(normalizedQuestion.partA, partASession, env);\n\n const { choices: partAChoices } = partA || {};\n const { choices: partBChoices } = partB || {};\n\n if (!partALockChoiceOrder && partAChoices && partAChoices.length) {\n partA.choices = await getShuffledChoices(\n partAChoices,\n { shuffledValues: (session.shuffledValues || {}).partA },\n us('partA'),\n 'value',\n );\n }\n\n const partBSession = get(session, 'value.partB');\n const partBLockChoiceOrder = lockChoices(normalizedQuestion.partB, partBSession, env);\n\n if (!partBLockChoiceOrder && partBChoices && partBChoices.length) {\n partB.choices = await getShuffledChoices(\n partBChoices,\n { shuffledValues: (session.shuffledValues || {}).partB },\n us('partB'),\n 'value',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.error('update session failed', e);\n });\n }\n }\n\n if (normalizedQuestion.partLabels) {\n const language = normalizedQuestion.language;\n partA.partLabel = translator.t('ebsr.part', {\n lng: language,\n index: normalizedQuestion.partLabelType === 'Letters' ? 'A' : '1',\n });\n partB.partLabel = translator.t('ebsr.part', {\n lng: language,\n index: normalizedQuestion.partLabelType === 'Letters' ? 'B' : '2',\n });\n } else {\n partA.partLabel = undefined;\n partB.partLabel = undefined;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n partA.teacherInstructions = normalizedQuestion.partA.teacherInstructionsEnabled\n ? normalizedQuestion.partA.teacherInstructions\n : null;\n partB.teacherInstructions = normalizedQuestion.partB.teacherInstructionsEnabled\n ? normalizedQuestion.partB.teacherInstructions\n : null;\n } else {\n partA.teacherInstructions = null;\n partB.teacherInstructions = null;\n }\n\n partA.prompt = normalizedQuestion.partA.promptEnabled ? normalizedQuestion.partA.prompt : null;\n partB.prompt = normalizedQuestion.partB.promptEnabled ? normalizedQuestion.partB.prompt : null;\n\n return new Promise((resolve) => {\n resolve({\n disabled: env.mode !== 'gather',\n mode: env.mode,\n partA,\n partB,\n });\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nconst isCorrect = (c) => c.correct === true;\n\nconst getScore = (config, sessionPart, key, partialScoringEnabled) => {\n const { choices = [] } = (config && config[key]) || {};\n const maxScore = choices.length;\n const { value: sessionPartValue } = sessionPart || {};\n\n const chosen = (c) => !!(sessionPartValue || []).find((v) => v === c.value);\n const correctAndNotChosen = (c) => isCorrect(c) && !chosen(c);\n const incorrectAndChosen = (c) => !isCorrect(c) && chosen(c);\n const correctChoices = choices.reduce((total, choice) => {\n if (correctAndNotChosen(choice) || incorrectAndChosen(choice)) {\n return total - 1;\n } else {\n return total;\n }\n }, choices.length);\n\n // determine score for a part\n if (!partialScoringEnabled && correctChoices < maxScore) {\n return 0;\n }\n\n return parseFloat(maxScore ? (correctChoices / maxScore).toFixed(2) : 0);\n};\n\nexport function outcome(config, session, env) {\n return new Promise((resolve) => {\n const { value } = session || {};\n\n if (!session || !value) {\n resolve({ score: 0, scoreA: 0, scoreB: 0, empty: true });\n }\n\n if (value) {\n const { partA, partB } = value || {};\n\n const partialScoringEnabled = partialScoring.enabled(config, env);\n\n const scoreA = getScore(config, partA, 'partA', partialScoringEnabled);\n const scoreB = getScore(config, partB, 'partB', partialScoringEnabled);\n\n if (!partialScoringEnabled) {\n // The EBSR item is worth 1 point\n // That point is awarded if and only if both parts are fully correct, otherwise no points are awarded\n resolve({ score: scoreA === 1 && scoreB === 1 ? 1 : 0, scoreA, scoreB, max: 1 });\n } else {\n // The EBSR item is worth 2 points\n if (scoreA === 1) {\n if (scoreB === 1) {\n // If Part A and Part B are both correct, 2 points are awarded\n resolve({ score: 2, scoreA, scoreB, max: 2 });\n } else {\n // If Part A is correct and part B is incorrect, 1 point is awarded\n resolve({ score: 1, scoreA, scoreB, max: 2 });\n }\n } else {\n // For all other combinations, no points are awarded\n resolve({ score: 0, scoreA, scoreB, max: 2 });\n }\n }\n }\n });\n}\n\nconst returnPartCorrect = (choices) => {\n let answers = [];\n\n choices.forEach((i) => {\n const { correct, value } = i;\n if (correct) {\n answers.push(value);\n }\n });\n return answers;\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { partA, partB } = question;\n\n const partACorrect = returnPartCorrect(partA.choices);\n const partBCorrect = returnPartCorrect(partB.choices);\n\n resolve({\n value: {\n partA: {\n id: 'partA',\n value: partACorrect,\n },\n partB: {\n id: 'partB',\n value: partBCorrect,\n },\n },\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nconst validatePart = (model = {}, config = {}) => {\n const { choices } = model;\n const { minAnswerChoices = 2, maxAnswerChoices } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const rationaleErrors = {};\n let hasCorrectResponse = false;\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n reversedChoices.forEach((choice, index) => {\n const { correct, value, label, rationale } = choice;\n\n if (correct) {\n hasCorrectResponse = true;\n }\n\n if (!getContent(label)) {\n choicesErrors[value] = 'Content should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.label === label);\n\n if (identicalAnswer) {\n choicesErrors[value] = 'Content should be unique.';\n }\n }\n\n if (config.rationale?.required && !getContent(rationale)) {\n rationaleErrors[value] = 'This field is required.';\n }\n });\n\n const nbOfChoices = (choices || []).length;\n\n if (nbOfChoices < minAnswerChoices) {\n errors.answerChoices = `There should be at least ${minAnswerChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.answerChoices = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (!hasCorrectResponse) {\n errors.correctResponse = 'No correct response defined.';\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choices = choicesErrors;\n }\n\n if (!isEmpty(rationaleErrors)) {\n errors.rationale = rationaleErrors;\n }\n\n return errors;\n};\n\nexport const validate = (model = {}, config = {}) => {\n const { partA, partB } = model || {};\n const { partA: partAConfig, partB: partBConfig } = config || {};\n\n const partAErrors = validatePart(partA, partAConfig);\n const partBErrors = validatePart(partB, partBConfig);\n\n return { partA: partAErrors, partB: partBErrors };\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","prepareChoice","model","env","defaultFeedback","choice","out","label","value","role","mode","rationale","rationaleEnabled","correct","feedbackEnabled","feedbackType","feedback","type","parsePart","part","key","session","Object","assign","incorrect","choices","map","disabled","complete","min","filter","c","length","responseCorrect","undefined","normalizePart","base","choicesLayout","verticalMode","normalize","partA","partB","language","question","defaults","updateSession","normalizedQuestion","shuffledValues","us","id","element","update","Promise","resolve","partASession","partALockChoiceOrder","partAChoices","partBChoices","partBSession","partBLockChoiceOrder","e","console","error","partLabels","partLabel","t","lng","index","partLabelType","teacherInstructions","teacherInstructionsEnabled","prompt","promptEnabled","extraCSSRules","createDefaultModel","isCorrect","getScore","config","sessionPart","partialScoringEnabled","maxScore","sessionPartValue","chosen","find","v","correctAndNotChosen","incorrectAndChosen","correctChoices","reduce","total","parseFloat","toFixed","outcome","score","scoreA","scoreB","empty","partialScoring","enabled","max","returnPartCorrect","answers","forEach","i","push","createCorrectResponseSession","partACorrect","partBCorrect","getInnerText","html","replaceAll","getContent","replace","validatePart","minAnswerChoices","maxAnswerChoices","reversedChoices","reverse","errors","choicesErrors","rationaleErrors","hasCorrectResponse","field","required","identicalAnswer","slice","some","nbOfChoices","answerChoices","correctResponse","validate","partAConfig","partBConfig","partAErrors","partBErrors"],"mappings":"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","sourcesContent":["import defaults from './defaults';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport { isResponseCorrect } from './utils';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\n\nconst prepareChoice = (model, env, defaultFeedback) => (choice) => {\n const out = {\n label: choice.label,\n value: choice.value,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.rationale = model.rationaleEnabled ? choice.rationale : null;\n } else {\n out.rationale = null;\n }\n\n if (env.mode === 'evaluate') {\n out.correct = !!choice.correct;\n\n if (model.feedbackEnabled) {\n const feedbackType = (choice.feedback && choice.feedback.type) || 'none';\n\n if (feedbackType === 'default') {\n out.feedback = defaultFeedback[choice.correct ? 'correct' : 'incorrect'];\n } else if (feedbackType === 'custom') {\n out.feedback = choice.feedback.value;\n }\n }\n }\n\n return out;\n};\n\nconst parsePart = (part, key, session, env) => {\n const defaultFeedback = Object.assign({ correct: 'Correct', incorrect: 'Incorrect' }, part.defaultFeedback);\n\n let choices = part.choices ? part.choices.map(prepareChoice(part, env, defaultFeedback)) : [];\n\n return {\n ...part,\n choices,\n disabled: env.mode !== 'gather',\n complete: {\n min: part.choices.filter((c) => c.correct).length,\n },\n responseCorrect: env.mode === 'evaluate' ? isResponseCorrect(part, key, session) : undefined,\n };\n};\n\nconst normalizePart = (model, base) => ({\n ...base,\n ...model,\n choicesLayout: model.choicesLayout || (model.verticalMode === false && 'horizontal') || 'vertical',\n});\n\nexport const normalize = ({ partA = {}, partB = {}, language, ...question }) => ({\n ...defaults,\n ...question,\n partA: normalizePart(partA, { ...defaults.partA, language }),\n partB: normalizePart(partB, { ...defaults.partB, language }),\n});\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n const partA = parsePart(normalizedQuestion.partA, 'partA', session, env);\n const partB = parsePart(normalizedQuestion.partB, 'partB', session, env);\n\n const shuffledValues = {};\n\n const us = (part) => (id, element, update) =>\n new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n\n const partASession = get(session, 'value.partA');\n const partALockChoiceOrder = lockChoices(normalizedQuestion.partA, partASession, env);\n\n const { choices: partAChoices } = partA || {};\n const { choices: partBChoices } = partB || {};\n\n if (!partALockChoiceOrder && partAChoices && partAChoices.length) {\n partA.choices = await getShuffledChoices(\n partAChoices,\n { shuffledValues: (session.shuffledValues || {}).partA },\n us('partA'),\n 'value',\n );\n }\n\n const partBSession = get(session, 'value.partB');\n const partBLockChoiceOrder = lockChoices(normalizedQuestion.partB, partBSession, env);\n\n if (!partBLockChoiceOrder && partBChoices && partBChoices.length) {\n partB.choices = await getShuffledChoices(\n partBChoices,\n { shuffledValues: (session.shuffledValues || {}).partB },\n us('partB'),\n 'value',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.error('update session failed', e);\n });\n }\n }\n\n if (normalizedQuestion.partLabels) {\n const language = normalizedQuestion.language;\n partA.partLabel = translator.t('ebsr.part', {\n lng: language,\n index: normalizedQuestion.partLabelType === 'Letters' ? 'A' : '1',\n });\n partB.partLabel = translator.t('ebsr.part', {\n lng: language,\n index: normalizedQuestion.partLabelType === 'Letters' ? 'B' : '2',\n });\n } else {\n partA.partLabel = undefined;\n partB.partLabel = undefined;\n }\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n partA.teacherInstructions = normalizedQuestion.partA.teacherInstructionsEnabled\n ? normalizedQuestion.partA.teacherInstructions\n : null;\n partB.teacherInstructions = normalizedQuestion.partB.teacherInstructionsEnabled\n ? normalizedQuestion.partB.teacherInstructions\n : null;\n } else {\n partA.teacherInstructions = null;\n partB.teacherInstructions = null;\n }\n\n partA.prompt = normalizedQuestion.partA.promptEnabled ? normalizedQuestion.partA.prompt : null;\n partB.prompt = normalizedQuestion.partB.promptEnabled ? normalizedQuestion.partB.prompt : null;\n\n return new Promise((resolve) => {\n resolve({\n disabled: env.mode !== 'gather',\n mode: env.mode,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n partA,\n partB,\n });\n });\n}\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nconst isCorrect = (c) => c.correct === true;\n\nconst getScore = (config, sessionPart, key, partialScoringEnabled) => {\n const { choices = [] } = (config && config[key]) || {};\n const maxScore = choices.length;\n const { value: sessionPartValue } = sessionPart || {};\n\n const chosen = (c) => !!(sessionPartValue || []).find((v) => v === c.value);\n const correctAndNotChosen = (c) => isCorrect(c) && !chosen(c);\n const incorrectAndChosen = (c) => !isCorrect(c) && chosen(c);\n const correctChoices = choices.reduce((total, choice) => {\n if (correctAndNotChosen(choice) || incorrectAndChosen(choice)) {\n return total - 1;\n } else {\n return total;\n }\n }, choices.length);\n\n // determine score for a part\n if (!partialScoringEnabled && correctChoices < maxScore) {\n return 0;\n }\n\n return parseFloat(maxScore ? (correctChoices / maxScore).toFixed(2) : 0);\n};\n\nexport function outcome(config, session, env) {\n return new Promise((resolve) => {\n const { value } = session || {};\n\n if (!session || !value) {\n resolve({ score: 0, scoreA: 0, scoreB: 0, empty: true });\n }\n\n if (value) {\n const { partA, partB } = value || {};\n\n const partialScoringEnabled = partialScoring.enabled(config, env);\n\n const scoreA = getScore(config, partA, 'partA', partialScoringEnabled);\n const scoreB = getScore(config, partB, 'partB', partialScoringEnabled);\n\n if (!partialScoringEnabled) {\n // The EBSR item is worth 1 point\n // That point is awarded if and only if both parts are fully correct, otherwise no points are awarded\n resolve({ score: scoreA === 1 && scoreB === 1 ? 1 : 0, scoreA, scoreB, max: 1 });\n } else {\n // The EBSR item is worth 2 points\n if (scoreA === 1) {\n if (scoreB === 1) {\n // If Part A and Part B are both correct, 2 points are awarded\n resolve({ score: 2, scoreA, scoreB, max: 2 });\n } else {\n // If Part A is correct and part B is incorrect, 1 point is awarded\n resolve({ score: 1, scoreA, scoreB, max: 2 });\n }\n } else {\n // For all other combinations, no points are awarded\n resolve({ score: 0, scoreA, scoreB, max: 2 });\n }\n }\n }\n });\n}\n\nconst returnPartCorrect = (choices) => {\n let answers = [];\n\n choices.forEach((i) => {\n const { correct, value } = i;\n if (correct) {\n answers.push(value);\n }\n });\n return answers;\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { partA, partB } = question;\n\n const partACorrect = returnPartCorrect(partA.choices);\n const partBCorrect = returnPartCorrect(partB.choices);\n\n resolve({\n value: {\n partA: {\n id: 'partA',\n value: partACorrect,\n },\n partB: {\n id: 'partB',\n value: partBCorrect,\n },\n },\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nconst validatePart = (model = {}, config = {}) => {\n const { choices } = model;\n const { minAnswerChoices = 2, maxAnswerChoices } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const rationaleErrors = {};\n let hasCorrectResponse = false;\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n reversedChoices.forEach((choice, index) => {\n const { correct, value, label, rationale } = choice;\n\n if (correct) {\n hasCorrectResponse = true;\n }\n\n if (!getContent(label)) {\n choicesErrors[value] = 'Content should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.label === label);\n\n if (identicalAnswer) {\n choicesErrors[value] = 'Content should be unique.';\n }\n }\n\n if (config.rationale?.required && !getContent(rationale)) {\n rationaleErrors[value] = 'This field is required.';\n }\n });\n\n const nbOfChoices = (choices || []).length;\n\n if (nbOfChoices < minAnswerChoices) {\n errors.answerChoices = `There should be at least ${minAnswerChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.answerChoices = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (!hasCorrectResponse) {\n errors.correctResponse = 'No correct response defined.';\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choices = choicesErrors;\n }\n\n if (!isEmpty(rationaleErrors)) {\n errors.rationale = rationaleErrors;\n }\n\n return errors;\n};\n\nexport const validate = (model = {}, config = {}) => {\n const { partA, partB } = model || {};\n const { partA: partAConfig, partB: partBConfig } = config || {};\n\n const partAErrors = validatePart(partA, partAConfig);\n const partBErrors = validatePart(partB, partBConfig);\n\n return { partA: partAErrors, partB: partBErrors };\n};\n"],"file":"index.js"}
|
package/controller/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/ebsr-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "8.0
|
|
4
|
+
"version": "8.1.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@pie-lib/pie-toolbox": "2.0
|
|
10
|
+
"@pie-lib/pie-toolbox": "2.1.0",
|
|
11
11
|
"lodash": "^4.17.15"
|
|
12
12
|
},
|
|
13
13
|
"author": "",
|
package/controller/src/index.js
CHANGED
package/lib/index.js
CHANGED
|
@@ -192,9 +192,11 @@ var Ebsr = /*#__PURE__*/function (_HTMLElement) {
|
|
|
192
192
|
}, {
|
|
193
193
|
key: "_render",
|
|
194
194
|
value: function _render() {
|
|
195
|
+
var _this$_model, _this$_model$extraCSS;
|
|
196
|
+
|
|
195
197
|
this.ariaLabel = 'Two-Part Question';
|
|
196
198
|
this.role = 'region';
|
|
197
|
-
this.innerHTML = "\n <style>\n .srOnly {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n left: -10000px;\n top: auto;\n }\n </style>\n <h2 class=\"srOnly\">Two-Part Question</h2>\n <".concat(MC_TAG_NAME, " id=\"a\"></").concat(MC_TAG_NAME, ">\n <").concat(MC_TAG_NAME, " id=\"b\"></").concat(MC_TAG_NAME, ">\n "); // when item is re-rendered (due to connectedCallback), if the custom element is already defined,
|
|
199
|
+
this.innerHTML = "\n <style>\n .srOnly {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n left: -10000px;\n top: auto;\n }\n ".concat((_this$_model = this._model) === null || _this$_model === void 0 ? void 0 : (_this$_model$extraCSS = _this$_model.extraCSSRules) === null || _this$_model$extraCSS === void 0 ? void 0 : _this$_model$extraCSS.rules, "\n </style>\n <h2 class=\"srOnly\">Two-Part Question</h2>\n <").concat(MC_TAG_NAME, " id=\"a\"></").concat(MC_TAG_NAME, ">\n <").concat(MC_TAG_NAME, " id=\"b\"></").concat(MC_TAG_NAME, ">\n "); // when item is re-rendered (due to connectedCallback), if the custom element is already defined,
|
|
198
200
|
// we need to set the model and session, otherwise the setters are not reached again
|
|
199
201
|
|
|
200
202
|
if (customElements.get(MC_TAG_NAME)) {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","mode","model","keyMode","choicePrefix","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","ariaLabel","role","innerHTML","HTMLElement"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","mode","model","keyMode","choicePrefix","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","ariaLabel","role","innerHTML","extraCSSRules","rules","HTMLElement"],"mappings":"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","sourcesContent":["import { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport get from 'lodash/get';\nimport debug from 'debug';\n\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst log = debug('pie-elements:ebsr');\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n get session() {\n return this._session;\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n const { mode } = this._model;\n\n part.model = {\n ...this._model[key],\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n }\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.ariaLabel = 'Two-Part Question';\n this.role = 'region';\n this.innerHTML = `\n <style>\n .srOnly {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n left: -10000px;\n top: auto;\n }\n ${this._model?.extraCSSRules?.rules}\n </style>\n <h2 class=\"srOnly\">Two-Part Question</h2>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n `;\n\n // when item is re-rendered (due to connectedCallback), if the custom element is already defined,\n // we need to set the model and session, otherwise the setters are not reached again\n if (customElements.get(MC_TAG_NAME)) {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n }\n }\n}\n"],"file":"index.js"}
|
package/module/configure.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_lodash, _dll_react_dom} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_lodash, _dll_react_dom} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.14/module/index.js";
|
|
2
2
|
import MultipleChoiceConfigure from '@pie-element/multiple-choice/configure/lib';
|
|
3
|
-
import {_dll_pie_lib__pie_toolbox_config_ui} from "../../../@pie-lib/pie-toolbox-module@5.0.
|
|
3
|
+
import {_dll_pie_lib__pie_toolbox_config_ui} from "../../../@pie-lib/pie-toolbox-module@5.0.13/module/index.js";
|
|
4
4
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
5
5
|
function getDefaultExportFromCjs(x) {
|
|
6
6
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
@@ -5556,7 +5556,7 @@ class Main extends React$1.Component {
|
|
|
5556
5556
|
}
|
|
5557
5557
|
render() {
|
|
5558
5558
|
const {classes, model, configuration, onConfigurationChanged} = this.props;
|
|
5559
|
-
const {partLabelType, partA: modelPartA, partB: modelPartB} = model;
|
|
5559
|
+
const {partLabelType, partA: modelPartA, partB: modelPartB, extraCSSRules} = model;
|
|
5560
5560
|
const {contentDimensions = {}, partA = {}, partB = {}, partialScoring = {}, settingsPanelDisabled, scoringType = {}, language = {}, languageChoices = {}, ...generalConfiguration} = configuration;
|
|
5561
5561
|
const {feedback: feedbackA = {}, choiceMode: choiceModeA = {}, choicePrefix: choicePrefixA = {}, lockChoiceOrder: lockChoiceOrderA = {}, prompt: promptA = {}, teacherInstructions: teacherInstructionsA = {}, studentInstructions: studentInstructionsA = {}, choicesLayout: choicesLayoutA = {}, gridColumns: gridColumnsA = {}, rationale: rationaleA = {}, spellCheck: spellCheckA = {}} = partA || ({});
|
|
5562
5562
|
const {feedback: feedbackB = {}, choiceMode: choiceModeB = {}, choicePrefix: choicePrefixB = {}, lockChoiceOrder: lockChoiceOrderB = {}, prompt: promptB = {}, teacherInstructions: teacherInstructionsB = {}, studentInstructions: studentInstructionsB = {}, choicesLayout: choicesLayoutB = {}, gridColumns: gridColumnsB = {}, rationale: rationaleB = {}, spellCheck: spellCheckB = {}} = partB || ({});
|
|
@@ -5611,6 +5611,7 @@ class Main extends React$1.Component {
|
|
|
5611
5611
|
'partB.spellCheckEnabled': spellCheckB.settings && toggle(spellCheckB.label)
|
|
5612
5612
|
};
|
|
5613
5613
|
return React$1.createElement(layout.ConfigLayout, {
|
|
5614
|
+
extraCSSRules: extraCSSRules,
|
|
5614
5615
|
dimensions: contentDimensions,
|
|
5615
5616
|
hideSettings: settingsPanelDisabled,
|
|
5616
5617
|
settings: React$1.createElement(Panel, {
|
|
@@ -5628,7 +5629,7 @@ class Main extends React$1.Component {
|
|
|
5628
5629
|
__self: this,
|
|
5629
5630
|
__source: {
|
|
5630
5631
|
fileName: _jsxFileName,
|
|
5631
|
-
lineNumber:
|
|
5632
|
+
lineNumber: 176
|
|
5632
5633
|
}
|
|
5633
5634
|
}),
|
|
5634
5635
|
__self: this,
|
|
@@ -5641,7 +5642,7 @@ class Main extends React$1.Component {
|
|
|
5641
5642
|
__self: this,
|
|
5642
5643
|
__source: {
|
|
5643
5644
|
fileName: _jsxFileName,
|
|
5644
|
-
lineNumber:
|
|
5645
|
+
lineNumber: 191
|
|
5645
5646
|
}
|
|
5646
5647
|
}, firstPart), React$1.createElement('ebsr-multiple-choice-configure', {
|
|
5647
5648
|
id: "A",
|
|
@@ -5662,21 +5663,21 @@ class Main extends React$1.Component {
|
|
|
5662
5663
|
__self: this,
|
|
5663
5664
|
__source: {
|
|
5664
5665
|
fileName: _jsxFileName,
|
|
5665
|
-
lineNumber:
|
|
5666
|
+
lineNumber: 192
|
|
5666
5667
|
}
|
|
5667
5668
|
}), React$1.createElement('div', {
|
|
5668
5669
|
className: classes.divider,
|
|
5669
5670
|
__self: this,
|
|
5670
5671
|
__source: {
|
|
5671
5672
|
fileName: _jsxFileName,
|
|
5672
|
-
lineNumber:
|
|
5673
|
+
lineNumber: 211
|
|
5673
5674
|
}
|
|
5674
5675
|
}), model.partLabels && React$1.createElement('div', {
|
|
5675
5676
|
className: classes.partLabel,
|
|
5676
5677
|
__self: this,
|
|
5677
5678
|
__source: {
|
|
5678
5679
|
fileName: _jsxFileName,
|
|
5679
|
-
lineNumber:
|
|
5680
|
+
lineNumber: 213
|
|
5680
5681
|
}
|
|
5681
5682
|
}, secondPart), React$1.createElement('ebsr-multiple-choice-configure', {
|
|
5682
5683
|
id: "B",
|
|
@@ -5697,7 +5698,7 @@ class Main extends React$1.Component {
|
|
|
5697
5698
|
__self: this,
|
|
5698
5699
|
__source: {
|
|
5699
5700
|
fileName: _jsxFileName,
|
|
5700
|
-
lineNumber:
|
|
5701
|
+
lineNumber: 214
|
|
5701
5702
|
}
|
|
5702
5703
|
}));
|
|
5703
5704
|
}
|
package/module/controller.js
CHANGED
|
@@ -23836,6 +23836,7 @@ async function model(question, session, env, updateSession) {
|
|
|
23836
23836
|
resolve({
|
|
23837
23837
|
disabled: env.mode !== 'gather',
|
|
23838
23838
|
mode: env.mode,
|
|
23839
|
+
extraCSSRules: normalizedQuestion.extraCSSRules,
|
|
23839
23840
|
partA,
|
|
23840
23841
|
partB,
|
|
23841
23842
|
});
|
package/module/element.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_debug, _dll_pie_lib__pie_toolbox_math_rendering_accessible} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.
|
|
2
|
-
import {_dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.0.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_debug, _dll_pie_lib__pie_toolbox_math_rendering_accessible} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.14/module/index.js";
|
|
2
|
+
import {_dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.0.13/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
5
5
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
@@ -9648,7 +9648,11 @@ class Main extends React$1.Component {
|
|
|
9648
9648
|
session: PropTypes.object,
|
|
9649
9649
|
onChoiceChanged: PropTypes.func,
|
|
9650
9650
|
classes: PropTypes.object.isRequired,
|
|
9651
|
-
onShowCorrectToggle: PropTypes.func
|
|
9651
|
+
onShowCorrectToggle: PropTypes.func,
|
|
9652
|
+
extraCSSRules: PropTypes.shape({
|
|
9653
|
+
names: PropTypes.arrayOf(PropTypes.string),
|
|
9654
|
+
rules: PropTypes.string
|
|
9655
|
+
})
|
|
9652
9656
|
};
|
|
9653
9657
|
}
|
|
9654
9658
|
static __initStatic2() {
|
|
@@ -9662,11 +9666,13 @@ class Main extends React$1.Component {
|
|
|
9662
9666
|
}
|
|
9663
9667
|
render() {
|
|
9664
9668
|
const {model, onChoiceChanged, session, onShowCorrectToggle} = this.props;
|
|
9669
|
+
const {extraCSSRules} = model;
|
|
9665
9670
|
return React$1.createElement(PreviewLayout, {
|
|
9671
|
+
extraCSSRules: extraCSSRules,
|
|
9666
9672
|
__self: this,
|
|
9667
9673
|
__source: {
|
|
9668
9674
|
fileName: _jsxFileName,
|
|
9669
|
-
lineNumber:
|
|
9675
|
+
lineNumber: 37
|
|
9670
9676
|
}
|
|
9671
9677
|
}, React$1.createElement(MultipleChoice$2, {
|
|
9672
9678
|
...model,
|
|
@@ -9676,7 +9682,7 @@ class Main extends React$1.Component {
|
|
|
9676
9682
|
__self: this,
|
|
9677
9683
|
__source: {
|
|
9678
9684
|
fileName: _jsxFileName,
|
|
9679
|
-
lineNumber:
|
|
9685
|
+
lineNumber: 38
|
|
9680
9686
|
}
|
|
9681
9687
|
}));
|
|
9682
9688
|
}
|
|
@@ -9696,14 +9702,14 @@ const Root = props => React$1.createElement(styles$b.MuiThemeProvider, {
|
|
|
9696
9702
|
__self: undefined,
|
|
9697
9703
|
__source: {
|
|
9698
9704
|
fileName: _jsxFileName,
|
|
9699
|
-
lineNumber:
|
|
9705
|
+
lineNumber: 58
|
|
9700
9706
|
}
|
|
9701
9707
|
}, React$1.createElement(Styled, {
|
|
9702
9708
|
...props,
|
|
9703
9709
|
__self: undefined,
|
|
9704
9710
|
__source: {
|
|
9705
9711
|
fileName: _jsxFileName,
|
|
9706
|
-
lineNumber:
|
|
9712
|
+
lineNumber: 59
|
|
9707
9713
|
}
|
|
9708
9714
|
}));
|
|
9709
9715
|
const {concat: concat} = _dll_lodash;
|
|
@@ -9818,6 +9824,27 @@ class MultipleChoice extends HTMLElement {
|
|
|
9818
9824
|
}
|
|
9819
9825
|
const {get: get} = _dll_lodash;
|
|
9820
9826
|
const debug = _dll_debug;
|
|
9827
|
+
function _optionalChain(ops) {
|
|
9828
|
+
let lastAccessLHS = undefined;
|
|
9829
|
+
let value = ops[0];
|
|
9830
|
+
let i = 1;
|
|
9831
|
+
while (i < ops.length) {
|
|
9832
|
+
const op = ops[i];
|
|
9833
|
+
const fn = ops[i + 1];
|
|
9834
|
+
i += 2;
|
|
9835
|
+
if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
|
|
9836
|
+
return undefined;
|
|
9837
|
+
}
|
|
9838
|
+
if (op === 'access' || op === 'optionalAccess') {
|
|
9839
|
+
lastAccessLHS = value;
|
|
9840
|
+
value = fn(value);
|
|
9841
|
+
} else if (op === 'call' || op === 'optionalCall') {
|
|
9842
|
+
value = fn((...args) => value.call(lastAccessLHS, ...args));
|
|
9843
|
+
lastAccessLHS = undefined;
|
|
9844
|
+
}
|
|
9845
|
+
}
|
|
9846
|
+
return value;
|
|
9847
|
+
}
|
|
9821
9848
|
const SESSION_CHANGED = SessionChangedEvent_1.TYPE;
|
|
9822
9849
|
const MC_TAG_NAME = 'ebsr-multiple-choice';
|
|
9823
9850
|
const log = debug('pie-elements:ebsr');
|
|
@@ -9930,6 +9957,7 @@ class Ebsr extends HTMLElement {
|
|
|
9930
9957
|
left: -10000px;
|
|
9931
9958
|
top: auto;
|
|
9932
9959
|
}
|
|
9960
|
+
${_optionalChain([this, 'access', _ => _._model, 'optionalAccess', _2 => _2.extraCSSRules, 'optionalAccess', _3 => _3.rules])}
|
|
9933
9961
|
</style>
|
|
9934
9962
|
<h2 class="srOnly">Two-Part Question</h2>
|
|
9935
9963
|
<${MC_TAG_NAME} id="a"></${MC_TAG_NAME}>
|
package/module/manifest.json
CHANGED
package/module/print.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_debug, _dll_pie_lib__pie_toolbox_math_rendering_accessible} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.
|
|
2
|
-
import {_dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.0.
|
|
1
|
+
import {_dll_react, _dll_prop_types, _dll_classnames, _dll_react_dom, _dll_lodash, _dll_debug, _dll_pie_lib__pie_toolbox_math_rendering_accessible} from "../../../@pie-lib/pie-toolbox-math-rendering-module@2.0.14/module/index.js";
|
|
2
|
+
import {_dll_pie_lib__pie_toolbox_render_ui, _dll_pie_lib__pie_toolbox_correct_answer_toggle} from "../../../@pie-lib/pie-toolbox-module@5.0.13/module/index.js";
|
|
3
3
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
5
5
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
@@ -9611,7 +9611,11 @@ class Main extends React$1.Component {
|
|
|
9611
9611
|
session: PropTypes.object,
|
|
9612
9612
|
onChoiceChanged: PropTypes.func,
|
|
9613
9613
|
classes: PropTypes.object.isRequired,
|
|
9614
|
-
onShowCorrectToggle: PropTypes.func
|
|
9614
|
+
onShowCorrectToggle: PropTypes.func,
|
|
9615
|
+
extraCSSRules: PropTypes.shape({
|
|
9616
|
+
names: PropTypes.arrayOf(PropTypes.string),
|
|
9617
|
+
rules: PropTypes.string
|
|
9618
|
+
})
|
|
9615
9619
|
};
|
|
9616
9620
|
}
|
|
9617
9621
|
static __initStatic2() {
|
|
@@ -9625,11 +9629,13 @@ class Main extends React$1.Component {
|
|
|
9625
9629
|
}
|
|
9626
9630
|
render() {
|
|
9627
9631
|
const {model, onChoiceChanged, session, onShowCorrectToggle} = this.props;
|
|
9632
|
+
const {extraCSSRules} = model;
|
|
9628
9633
|
return React$1.createElement(PreviewLayout, {
|
|
9634
|
+
extraCSSRules: extraCSSRules,
|
|
9629
9635
|
__self: this,
|
|
9630
9636
|
__source: {
|
|
9631
9637
|
fileName: _jsxFileName,
|
|
9632
|
-
lineNumber:
|
|
9638
|
+
lineNumber: 37
|
|
9633
9639
|
}
|
|
9634
9640
|
}, React$1.createElement(MultipleChoice$2, {
|
|
9635
9641
|
...model,
|
|
@@ -9639,7 +9645,7 @@ class Main extends React$1.Component {
|
|
|
9639
9645
|
__self: this,
|
|
9640
9646
|
__source: {
|
|
9641
9647
|
fileName: _jsxFileName,
|
|
9642
|
-
lineNumber:
|
|
9648
|
+
lineNumber: 38
|
|
9643
9649
|
}
|
|
9644
9650
|
}));
|
|
9645
9651
|
}
|
|
@@ -9659,14 +9665,14 @@ const Root = props => React$1.createElement(styles$b.MuiThemeProvider, {
|
|
|
9659
9665
|
__self: undefined,
|
|
9660
9666
|
__source: {
|
|
9661
9667
|
fileName: _jsxFileName,
|
|
9662
|
-
lineNumber:
|
|
9668
|
+
lineNumber: 58
|
|
9663
9669
|
}
|
|
9664
9670
|
}, React$1.createElement(Styled, {
|
|
9665
9671
|
...props,
|
|
9666
9672
|
__self: undefined,
|
|
9667
9673
|
__source: {
|
|
9668
9674
|
fileName: _jsxFileName,
|
|
9669
|
-
lineNumber:
|
|
9675
|
+
lineNumber: 59
|
|
9670
9676
|
}
|
|
9671
9677
|
}));
|
|
9672
9678
|
const {concat: concat} = _dll_lodash;
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/ebsr",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.2.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": "pie-framework/pie-elements",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@pie-element/multiple-choice": "^9.
|
|
10
|
+
"@pie-element/multiple-choice": "^9.3.0",
|
|
11
11
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
12
|
-
"@pie-lib/pie-toolbox": "2.0
|
|
12
|
+
"@pie-lib/pie-toolbox": "2.1.0",
|
|
13
13
|
"classnames": "^2.2.5",
|
|
14
14
|
"debug": "^4.1.1",
|
|
15
15
|
"lodash": "^4.17.11"
|
|
16
16
|
},
|
|
17
17
|
"author": "pie framework developers",
|
|
18
18
|
"license": "ISC",
|
|
19
|
-
"gitHead": "
|
|
19
|
+
"gitHead": "0ceacdb80b0be7b4cae60b1eff7974170b088358",
|
|
20
20
|
"scripts": {
|
|
21
21
|
"postpublish": "../../scripts/postpublish"
|
|
22
22
|
},
|
package/src/index.js
CHANGED