@pie-element/categorize 8.21.8-next.7 → 8.22.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 +20 -0
- package/configure/CHANGELOG.md +20 -0
- package/configure/lib/defaults.js +5 -0
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/design/categories/index.js +1 -1
- package/configure/lib/design/categories/index.js.map +1 -1
- package/configure/lib/design/choices/index.js +28 -17
- package/configure/lib/design/choices/index.js.map +1 -1
- package/configure/lib/design/header.js +18 -4
- package/configure/lib/design/header.js.map +1 -1
- package/configure/lib/design/index.js +10 -2
- package/configure/lib/design/index.js.map +1 -1
- package/configure/lib/index.js +6 -0
- package/configure/lib/index.js.map +1 -1
- package/configure/package.json +2 -2
- package/controller/CHANGELOG.md +13 -0
- package/controller/lib/defaults.js +1 -0
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +4 -5
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +2 -2
- package/docs/config-schema.json +16 -0
- package/docs/config-schema.json.md +12 -0
- package/docs/pie-schema.json +5 -0
- package/docs/pie-schema.json.md +4 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
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.22.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@8.21.7...@pie-element/categorize@8.22.0) (2024-07-26)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **categorize:** default names starting from 1 categories and choices PD-2953 ([cb34665](https://github.com/pie-framework/pie-elements/commit/cb346651fbb756a7629de9402cd0bb0b17a1fc56))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* **categorize:** Prevent Decrease in maxAnswerChoices & add warning in case of invalid model PD-3003 ([22a3c14](https://github.com/pie-framework/pie-elements/commit/22a3c14836f483063083b198c65deca9ad22249e))
|
|
17
|
+
* update pie-lib/pie-toolbox PD-2451, PD-3950, PD-3845 ([278d705](https://github.com/pie-framework/pie-elements/commit/278d7052dc7c17796ba196a2e397739e2e882b7f))
|
|
18
|
+
* update pie-lib/pie-toolbox PD-3944, PD-3946, Pd-2450 ([ac34d93](https://github.com/pie-framework/pie-elements/commit/ac34d93fcc97e79cacddcd38c7509f3c96b69976))
|
|
19
|
+
* **categorize:** Categorize authoring view settings should include a maxAnswerChoices property PD-3003 ([03e37d7](https://github.com/pie-framework/pie-elements/commit/03e37d7420ad11396b9b7c7dfb8488b9ebbba39e))
|
|
20
|
+
* **categorize:** Update snapshots PD-3003 ([cdb25fe](https://github.com/pie-framework/pie-elements/commit/cdb25fe4ad3967efd9d15f03881f913fa5de18fb))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
6
26
|
## [8.21.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@8.21.6...@pie-element/categorize@8.21.7) (2024-07-19)
|
|
7
27
|
|
|
8
28
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
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
|
+
# [7.21.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@7.20.7...@pie-element/categorize-configure@7.21.0) (2024-07-26)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **categorize:** default names starting from 1 categories and choices PD-2953 ([cb34665](https://github.com/pie-framework/pie-elements/commit/cb346651fbb756a7629de9402cd0bb0b17a1fc56))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* **categorize:** Prevent Decrease in maxAnswerChoices & add warning in case of invalid model PD-3003 ([22a3c14](https://github.com/pie-framework/pie-elements/commit/22a3c14836f483063083b198c65deca9ad22249e))
|
|
17
|
+
* update pie-lib/pie-toolbox PD-2451, PD-3950, PD-3845 ([278d705](https://github.com/pie-framework/pie-elements/commit/278d7052dc7c17796ba196a2e397739e2e882b7f))
|
|
18
|
+
* update pie-lib/pie-toolbox PD-3944, PD-3946, Pd-2450 ([ac34d93](https://github.com/pie-framework/pie-elements/commit/ac34d93fcc97e79cacddcd38c7509f3c96b69976))
|
|
19
|
+
* **categorize:** Categorize authoring view settings should include a maxAnswerChoices property PD-3003 ([03e37d7](https://github.com/pie-framework/pie-elements/commit/03e37d7420ad11396b9b7c7dfb8488b9ebbba39e))
|
|
20
|
+
* **categorize:** Update snapshots PD-3003 ([cdb25fe](https://github.com/pie-framework/pie-elements/commit/cdb25fe4ad3967efd9d15f03881f913fa5de18fb))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
6
26
|
## [7.20.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@7.20.6...@pie-element/categorize-configure@7.20.7) (2024-07-19)
|
|
7
27
|
|
|
8
28
|
|
|
@@ -17,6 +17,7 @@ var _default = {
|
|
|
17
17
|
allowAlternateEnabled: true,
|
|
18
18
|
allowMaxChoicesPerCategory: false,
|
|
19
19
|
maxChoicesPerCategory: 0,
|
|
20
|
+
maxAnswerChoices: 6,
|
|
20
21
|
categoriesPerRow: 2,
|
|
21
22
|
categories: [],
|
|
22
23
|
alternates: [],
|
|
@@ -188,6 +189,10 @@ var _default = {
|
|
|
188
189
|
label: 'Add Rubric'
|
|
189
190
|
},
|
|
190
191
|
minCategoriesPerRow: 1,
|
|
192
|
+
allowMaxAnswerChoices: {
|
|
193
|
+
settings: true,
|
|
194
|
+
label: 'Max answer choices'
|
|
195
|
+
},
|
|
191
196
|
mathMlOptions: {
|
|
192
197
|
mmlOutput: false,
|
|
193
198
|
mmlEditing: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","choices","choicesPosition","choicesLabel","lockChoiceOrder","allowMultiplePlacementsEnabled","multiplePlacements","enabled","allowAlternateEnabled","allowMaxChoicesPerCategory","maxChoicesPerCategory","categoriesPerRow","categories","alternates","correctResponse","rowLabels","partialScoring","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","audio","disabled","video","image","spellCheck","label","settings","feedback","allowMultiplePlacements","maxPlacements","allowAlternate","prompt","required","inputConfiguration","rationale","scoringType","settingsPanelDisabled","studentInstructions","teacherInstructions","headers","maxImageWidth","rowLabel","categoryLabel","maxImageHeight","withRubric","minCategoriesPerRow","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":";;;;;;;AAAA;;eAEe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,OAAO,EAAE,EADJ;AAELC,IAAAA,eAAe,EAAE,OAFZ;AAGLC,IAAAA,YAAY,EAAE,EAHT;AAILC,IAAAA,eAAe,EAAE,IAJZ;AAKLC,IAAAA,8BAA8B,EAAEC,0BAAmBC,OAL9C;AAMLC,IAAAA,qBAAqB,EAAE,IANlB;AAOLC,IAAAA,0BAA0B,EAAE,KAPvB;AAQLC,IAAAA,qBAAqB,EAAE,CARlB;AASLC,IAAAA,gBAAgB,EAAE,CATb;AAULC,IAAAA,
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","choices","choicesPosition","choicesLabel","lockChoiceOrder","allowMultiplePlacementsEnabled","multiplePlacements","enabled","allowAlternateEnabled","allowMaxChoicesPerCategory","maxChoicesPerCategory","maxAnswerChoices","categoriesPerRow","categories","alternates","correctResponse","rowLabels","partialScoring","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","audio","disabled","video","image","spellCheck","label","settings","feedback","allowMultiplePlacements","maxPlacements","allowAlternate","prompt","required","inputConfiguration","rationale","scoringType","settingsPanelDisabled","studentInstructions","teacherInstructions","headers","maxImageWidth","rowLabel","categoryLabel","maxImageHeight","withRubric","minCategoriesPerRow","allowMaxAnswerChoices","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"mappings":"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","sourcesContent":["import { multiplePlacements } from './utils';\n\nexport default {\n model: {\n choices: [],\n choicesPosition: 'below',\n choicesLabel: '',\n lockChoiceOrder: true,\n allowMultiplePlacementsEnabled: multiplePlacements.enabled,\n allowAlternateEnabled: true,\n allowMaxChoicesPerCategory: false,\n maxChoicesPerCategory: 0,\n maxAnswerChoices: 6,\n categoriesPerRow: 2,\n categories: [],\n alternates: [],\n correctResponse: [],\n rowLabels: [''],\n partialScoring: true,\n feedbackEnabled: false,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n enabled: true,\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n choicesPosition: {\n settings: true,\n label: 'Choices Position',\n },\n allowMultiplePlacements: {\n settings: true,\n label: 'Allow Multiple Placements',\n },\n maxPlacements: {\n settings: true,\n label: 'Max choices per category',\n },\n allowAlternate: {\n settings: true,\n label: 'Allow Alternate Correct Answers',\n },\n categoriesPerRow: {\n settings: true,\n label: 'Categories per row',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n settingsPanelDisabled: false,\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n required: false,\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n headers: {\n inputConfiguration: {\n audio: { disabled: true },\n video: { disabled: true },\n image: { disabled: false },\n },\n },\n rowLabels: {\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n rowLabel: 200,\n categoryLabel: 260,\n choices: 240,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n rowLabel: 100,\n categoryLabel: 100,\n choices: 150,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n minCategoriesPerRow: 1,\n allowMaxAnswerChoices: {\n settings: true,\n label: 'Max answer choices',\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n },\n};\n"],"file":"defaults.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/design/categories/index.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","tooltip","fontSize","typography","whiteSpace","maxWidth","errorText","color","palette","error","main","paddingTop","Categories","focusedEl","props","model","oldCategories","categoriesPerRow","correctResponse","allowAlternateEnabled","id","utils","firstAvailableIndex","map","a","data","label","addRowLabel","length","rowLabels","push","setState","onModelChanged","concat","category","choices","alternateResponses","index","findIndex","splice","c","addedChoice","categoryId","maxChoicesPerCategory","choice","find","undefined","categoryCount","maxCategoryChoices","choiceIndex","choiceId","from","to","val","newRowLabels","classes","className","imageSupport","uploadSoundSupport","toolbarOpts","spellCheck","configuration","defaultImageMaxHeight","defaultImageMaxWidth","mathMlOptions","errors","associationError","categoriesError","categoriesErrors","maxCategories","maxImageWidth","maxImageHeight","holderStyle","validationMessage","add","marginLeft","hasRowLabel","rowIndex","changeRowLabel","state","deleteFocusedEl","change","addChoiceToCategory","moveChoice","deleteChoiceFromCategory","categoryLabel","React","Component","PropTypes","number","shape","func","isRequired","object","string","array","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { choiceUtils as utils } from '@pie-lib/pie-toolbox/config-ui';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\n moveChoiceToCategory,\n removeCategory,\n removeChoiceFromCategory,\n verifyAllowMultiplePlacements,\n} from '@pie-lib/pie-toolbox/categorize';\n\nimport Category from './category';\nimport Header from '../header';\nimport { generateValidationMessage, getMaxCategoryChoices } from '../../utils';\nimport { RowLabel } from './RowLabel';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 3,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport class Categories extends React.Component {\n static propTypes = {\n defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n state = {\n focusedEl: null,\n };\n\n add = () => {\n const { model, categories: oldCategories } = this.props;\n const { categoriesPerRow, correctResponse, allowAlternateEnabled } = model;\n\n const id = utils.firstAvailableIndex(\n model.categories.map((a) => a.id),\n 0,\n );\n const data = { id, label: 'Category ' + id };\n const addRowLabel = model.categories.length % categoriesPerRow === 0;\n const rowLabels = [...model.rowLabels];\n\n if (addRowLabel) {\n rowLabels.push('');\n }\n\n this.setState(\n {\n focusedEl: oldCategories.length,\n },\n () => {\n this.props.onModelChanged({\n rowLabels,\n categories: model.categories.concat([data]),\n correctResponse: allowAlternateEnabled\n ? [...correctResponse, { category: id, choices: [], alternateResponses: [] }]\n : correctResponse,\n });\n },\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n delete = (category) => {\n const { model, onModelChanged } = this.props;\n const index = model.categories.findIndex((a) => a.id === category.id);\n\n if (index !== -1) {\n model.categories.splice(index, 1);\n model.correctResponse = removeCategory(category.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n change = (c) => {\n const { categories } = this.props;\n const index = categories.findIndex((a) => a.id === c.id);\n\n if (index !== -1) {\n categories.splice(index, 1, c);\n this.props.onModelChanged({ categories });\n }\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const { model, onModelChanged } = this.props;\n let { choices = [], correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === addedChoice.id);\n correctResponse = moveChoiceToCategory(addedChoice.id, undefined, categoryId, 0, model.correctResponse);\n // if multiplePlacements not allowed, ensure the consistency in the other categories\n if (choice.categoryCount !== 0) {\n correctResponse = verifyAllowMultiplePlacements(addedChoice, categoryId, correctResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = removeChoiceFromCategory(choice.id, category.id, choiceIndex, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n if (to === from || !choice) {\n return;\n }\n if (choice.categoryCount !== 0) {\n correctResponse = moveChoiceToCategory(choice.id, from, to, choiceIndex, correctResponse);\n correctResponse = verifyAllowMultiplePlacements(choice, to, correctResponse);\n } else if (choice.categoryCount === 0) {\n correctResponse = moveChoiceToCategory(choice.id, undefined, to, 0, correctResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n changeRowLabel = (val, index) => {\n const { model } = this.props;\n const { rowLabels } = model;\n const newRowLabels = [...rowLabels];\n\n if (newRowLabels.length < index) {\n newRowLabels.push(val);\n } else {\n newRowLabels[index] = val;\n }\n\n this.props.onModelChanged({\n rowLabels: newRowLabels,\n });\n };\n\n render() {\n const {\n model,\n classes,\n className,\n categories,\n imageSupport,\n uploadSoundSupport,\n toolbarOpts,\n spellCheck,\n configuration,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n mathMlOptions = {},\n } = this.props;\n\n const { categoriesPerRow, rowLabels, errors } = model;\n const { associationError, categoriesError, categoriesErrors } = errors || {};\n const { maxCategories, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classNames(classes.categories, className)}>\n <Header\n label=\"Categories\"\n buttonLabel=\"ADD A CATEGORY\"\n onAdd={this.add}\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n }\n buttonDisabled={maxCategories && categories && maxCategories === categories.length}\n />\n\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n disabled={false}\n rowIndex={rowIndex}\n markup={rowLabels[rowIndex] || ''}\n onChange={(val) => this.changeRowLabel(val, rowIndex)}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n configuration={configuration}\n />\n )}\n\n <Category\n imageSupport={imageSupport}\n focusedEl={this.state.focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n index={index}\n category={category}\n error={categoriesErrors && categoriesErrors[category.id]}\n onChange={this.change}\n onDelete={() => this.delete(category)}\n onAddChoice={this.addChoiceToCategory}\n onMoveChoice={(choiceId, from, to, choiceIndex) => this.moveChoice(choiceId, from, to, choiceIndex)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n maxImageWidth={(maxImageWidth && maxImageWidth.categoryLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.categoryLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n </React.Fragment>\n );\n })}\n </div>\n\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</div>}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Categories);\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/design/categories/index.jsx"],"names":["styles","theme","categories","marginBottom","spacing","unit","categoriesHolder","display","gridRowGap","gridColumnGap","row","gridTemplateColumns","alignItems","width","marginTop","rowLabel","gridColumn","rowLabelHolder","tooltip","fontSize","typography","whiteSpace","maxWidth","errorText","color","palette","error","main","paddingTop","Categories","focusedEl","props","model","oldCategories","categoriesPerRow","correctResponse","allowAlternateEnabled","id","utils","firstAvailableIndex","map","a","data","label","addRowLabel","length","rowLabels","push","setState","onModelChanged","concat","category","choices","alternateResponses","index","findIndex","splice","c","addedChoice","categoryId","maxChoicesPerCategory","choice","find","undefined","categoryCount","maxCategoryChoices","choiceIndex","choiceId","from","to","val","newRowLabels","classes","className","imageSupport","uploadSoundSupport","toolbarOpts","spellCheck","configuration","defaultImageMaxHeight","defaultImageMaxWidth","mathMlOptions","errors","associationError","categoriesError","categoriesErrors","maxCategories","maxImageWidth","maxImageHeight","holderStyle","validationMessage","add","marginLeft","hasRowLabel","rowIndex","changeRowLabel","state","deleteFocusedEl","change","addChoiceToCategory","moveChoice","deleteChoiceFromCategory","categoryLabel","React","Component","PropTypes","number","shape","func","isRequired","object","string","array","bool"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { choiceUtils as utils } from '@pie-lib/pie-toolbox/config-ui';\nimport classNames from 'classnames';\nimport Info from '@material-ui/icons/Info';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\n moveChoiceToCategory,\n removeCategory,\n removeChoiceFromCategory,\n verifyAllowMultiplePlacements,\n} from '@pie-lib/pie-toolbox/categorize';\n\nimport Category from './category';\nimport Header from '../header';\nimport { generateValidationMessage, getMaxCategoryChoices } from '../../utils';\nimport { RowLabel } from './RowLabel';\n\nconst styles = (theme) => ({\n categories: {\n marginBottom: theme.spacing.unit * 3,\n },\n categoriesHolder: {\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n row: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridColumnGap: `${theme.spacing.unit}px`,\n alignItems: 'baseline',\n width: '100%',\n marginTop: theme.spacing.unit,\n marginBottom: 2 * theme.spacing.unit,\n },\n rowLabel: {\n gridColumn: '1/3',\n },\n rowLabelHolder: {\n width: '100%',\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport class Categories extends React.Component {\n static propTypes = {\n defaultImageMaxHeight: PropTypes.number,\n defaultImageMaxWidth: PropTypes.number,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n categories: PropTypes.array,\n onModelChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n state = {\n focusedEl: null,\n };\n\n add = () => {\n const { model, categories: oldCategories } = this.props;\n const { categoriesPerRow, correctResponse, allowAlternateEnabled } = model;\n\n const id = utils.firstAvailableIndex(\n model.categories.map((a) => a.id),\n 1,\n );\n const data = { id, label: 'Category ' + id };\n const addRowLabel = model.categories.length % categoriesPerRow === 0;\n const rowLabels = [...model.rowLabels];\n\n if (addRowLabel) {\n rowLabels.push('');\n }\n\n this.setState(\n {\n focusedEl: oldCategories.length,\n },\n () => {\n this.props.onModelChanged({\n rowLabels,\n categories: model.categories.concat([data]),\n correctResponse: allowAlternateEnabled\n ? [...correctResponse, { category: id, choices: [], alternateResponses: [] }]\n : correctResponse,\n });\n },\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n delete = (category) => {\n const { model, onModelChanged } = this.props;\n const index = model.categories.findIndex((a) => a.id === category.id);\n\n if (index !== -1) {\n model.categories.splice(index, 1);\n model.correctResponse = removeCategory(category.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n change = (c) => {\n const { categories } = this.props;\n const index = categories.findIndex((a) => a.id === c.id);\n\n if (index !== -1) {\n categories.splice(index, 1, c);\n this.props.onModelChanged({ categories });\n }\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const { model, onModelChanged } = this.props;\n let { choices = [], correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === addedChoice.id);\n correctResponse = moveChoiceToCategory(addedChoice.id, undefined, categoryId, 0, model.correctResponse);\n // if multiplePlacements not allowed, ensure the consistency in the other categories\n if (choice.categoryCount !== 0) {\n correctResponse = verifyAllowMultiplePlacements(addedChoice, categoryId, correctResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n const correctResponse = removeChoiceFromCategory(choice.id, category.id, choiceIndex, model.correctResponse);\n\n onModelChanged({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex) => {\n const { model, onModelChanged } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n if (to === from || !choice) {\n return;\n }\n if (choice.categoryCount !== 0) {\n correctResponse = moveChoiceToCategory(choice.id, from, to, choiceIndex, correctResponse);\n correctResponse = verifyAllowMultiplePlacements(choice, to, correctResponse);\n } else if (choice.categoryCount === 0) {\n correctResponse = moveChoiceToCategory(choice.id, undefined, to, 0, correctResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n onModelChanged({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n changeRowLabel = (val, index) => {\n const { model } = this.props;\n const { rowLabels } = model;\n const newRowLabels = [...rowLabels];\n\n if (newRowLabels.length < index) {\n newRowLabels.push(val);\n } else {\n newRowLabels[index] = val;\n }\n\n this.props.onModelChanged({\n rowLabels: newRowLabels,\n });\n };\n\n render() {\n const {\n model,\n classes,\n className,\n categories,\n imageSupport,\n uploadSoundSupport,\n toolbarOpts,\n spellCheck,\n configuration,\n defaultImageMaxHeight,\n defaultImageMaxWidth,\n mathMlOptions = {},\n } = this.props;\n\n const { categoriesPerRow, rowLabels, errors } = model;\n const { associationError, categoriesError, categoriesErrors } = errors || {};\n const { maxCategories, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const holderStyle = {\n gridTemplateColumns: `repeat(${categoriesPerRow}, 1fr)`,\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classNames(classes.categories, className)}>\n <Header\n label=\"Categories\"\n buttonLabel=\"ADD A CATEGORY\"\n onAdd={this.add}\n info={\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} style={{ marginLeft: '5px' }} />\n </Tooltip>\n }\n buttonDisabled={maxCategories && categories && maxCategories === categories.length}\n />\n\n <div className={classes.categoriesHolder} style={holderStyle}>\n {categories.map((category, index) => {\n const hasRowLabel = index % categoriesPerRow === 0;\n const rowIndex = index / categoriesPerRow;\n\n return (\n <React.Fragment key={index}>\n {hasRowLabel && (\n <RowLabel\n categoriesPerRow={categoriesPerRow}\n disabled={false}\n rowIndex={rowIndex}\n markup={rowLabels[rowIndex] || ''}\n onChange={(val) => this.changeRowLabel(val, rowIndex)}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n maxImageWidth={(maxImageWidth && maxImageWidth.rowLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rowLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n configuration={configuration}\n />\n )}\n\n <Category\n imageSupport={imageSupport}\n focusedEl={this.state.focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n index={index}\n category={category}\n error={categoriesErrors && categoriesErrors[category.id]}\n onChange={this.change}\n onDelete={() => this.delete(category)}\n onAddChoice={this.addChoiceToCategory}\n onMoveChoice={(choiceId, from, to, choiceIndex) => this.moveChoice(choiceId, from, to, choiceIndex)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n onDeleteChoice={(choice, choiceIndex) => this.deleteChoiceFromCategory(category, choice, choiceIndex)}\n maxImageWidth={(maxImageWidth && maxImageWidth.categoryLabel) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.categoryLabel) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n </React.Fragment>\n );\n })}\n </div>\n\n {associationError && <div className={classes.errorText}>{associationError}</div>}\n {categoriesError && <div className={classes.errorText}>{categoriesError}</div>}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Categories);\n"],"file":"index.js"}
|
|
@@ -85,14 +85,23 @@ var Choices = /*#__PURE__*/function (_React$Component) {
|
|
|
85
85
|
});
|
|
86
86
|
});
|
|
87
87
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addChoice", function () {
|
|
88
|
+
var _model$choices;
|
|
89
|
+
|
|
88
90
|
var _this$props2 = _this.props,
|
|
89
91
|
onModelChanged = _this$props2.onModelChanged,
|
|
90
92
|
model = _this$props2.model,
|
|
91
93
|
oldChoices = _this$props2.choices;
|
|
92
94
|
|
|
95
|
+
var _ref = model || {},
|
|
96
|
+
maxAnswerChoices = _ref.maxAnswerChoices;
|
|
97
|
+
|
|
98
|
+
if (maxAnswerChoices && ((_model$choices = model.choices) === null || _model$choices === void 0 ? void 0 : _model$choices.length) >= maxAnswerChoices) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
93
102
|
var id = _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (a) {
|
|
94
103
|
return a.id;
|
|
95
|
-
}),
|
|
104
|
+
}), 1);
|
|
96
105
|
|
|
97
106
|
var data = {
|
|
98
107
|
id: id,
|
|
@@ -127,12 +136,12 @@ var Choices = /*#__PURE__*/function (_React$Component) {
|
|
|
127
136
|
}
|
|
128
137
|
});
|
|
129
138
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "rearrangeChoices", function (indexFrom, indexTo) {
|
|
130
|
-
var
|
|
131
|
-
model =
|
|
132
|
-
onModelChanged =
|
|
139
|
+
var _ref2 = _this.props || {},
|
|
140
|
+
model = _ref2.model,
|
|
141
|
+
onModelChanged = _ref2.onModelChanged;
|
|
133
142
|
|
|
134
|
-
var
|
|
135
|
-
choices =
|
|
143
|
+
var _ref3 = model || [],
|
|
144
|
+
choices = _ref3.choices;
|
|
136
145
|
|
|
137
146
|
choices = (0, _categorize.rearrangeChoices)(choices, indexFrom, indexTo);
|
|
138
147
|
onModelChanged({
|
|
@@ -163,29 +172,31 @@ var Choices = /*#__PURE__*/function (_React$Component) {
|
|
|
163
172
|
defaultImageMaxHeight = _this$props4.defaultImageMaxHeight;
|
|
164
173
|
var errors = model.errors,
|
|
165
174
|
allowMultiplePlacementsEnabled = model.allowMultiplePlacementsEnabled,
|
|
166
|
-
lockChoiceOrder = model.lockChoiceOrder
|
|
175
|
+
lockChoiceOrder = model.lockChoiceOrder,
|
|
176
|
+
maxAnswerChoices = model.maxAnswerChoices;
|
|
167
177
|
|
|
168
|
-
var
|
|
169
|
-
choicesError =
|
|
170
|
-
choicesErrors =
|
|
178
|
+
var _ref4 = errors || {},
|
|
179
|
+
choicesError = _ref4.choicesError,
|
|
180
|
+
choicesErrors = _ref4.choicesErrors;
|
|
171
181
|
|
|
172
|
-
var
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
maxImageHeight = _ref4$maxImageHeight === void 0 ? {} : _ref4$maxImageHeight;
|
|
182
|
+
var _ref5 = configuration || {},
|
|
183
|
+
_ref5$maxImageWidth = _ref5.maxImageWidth,
|
|
184
|
+
maxImageWidth = _ref5$maxImageWidth === void 0 ? {} : _ref5$maxImageWidth,
|
|
185
|
+
_ref5$maxImageHeight = _ref5.maxImageHeight,
|
|
186
|
+
maxImageHeight = _ref5$maxImageHeight === void 0 ? {} : _ref5$maxImageHeight;
|
|
178
187
|
|
|
179
188
|
var choiceHolderStyle = {
|
|
180
189
|
gridTemplateColumns: "repeat(".concat(model.categoriesPerRow, ", 1fr)")
|
|
181
190
|
};
|
|
191
|
+
var addChoiceButtonTooltip = maxAnswerChoices && (choices === null || choices === void 0 ? void 0 : choices.length) >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '';
|
|
182
192
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
183
193
|
className: (0, _classnames["default"])(classes.choices, className)
|
|
184
194
|
}, /*#__PURE__*/_react["default"].createElement(_header["default"], {
|
|
185
195
|
label: "Choices",
|
|
186
196
|
buttonLabel: "ADD A CHOICE",
|
|
187
197
|
onAdd: this.addChoice,
|
|
188
|
-
buttonDisabled:
|
|
198
|
+
buttonDisabled: maxAnswerChoices && choices && (choices === null || choices === void 0 ? void 0 : choices.length) >= maxAnswerChoices,
|
|
199
|
+
tooltip: addChoiceButtonTooltip
|
|
189
200
|
}), /*#__PURE__*/_react["default"].createElement(_config["default"], {
|
|
190
201
|
config: model,
|
|
191
202
|
onModelChanged: onModelChanged,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/design/choices/index.jsx"],"names":["Choices","focusedEl","choice","props","choices","onModelChanged","index","findIndex","h","id","splice","count","c","categoryCount","model","oldChoices","utils","firstAvailableIndex","map","a","data","content","setState","length","concat","correctResponse","indexFrom","indexTo","state","classes","className","imageSupport","uploadSoundSupport","spellCheck","toolbarOpts","configuration","defaultImageMaxWidth","defaultImageMaxHeight","errors","allowMultiplePlacementsEnabled","lockChoiceOrder","choicesError","choicesErrors","maxChoices","maxImageWidth","maxImageHeight","choiceHolderStyle","gridTemplateColumns","categoriesPerRow","addChoice","choiceHolder","deleteFocusedEl","correctResponseCount","changeChoice","deleteChoice","rearrangeChoices","errorText","React","Component","PropTypes","object","isRequired","string","array","number","func","shape","add","bool","styles","theme","paddingTop","spacing","unit","paddingBottom","display","gridRowGap","gridColumnGap","marginBottom","fontSize","typography","color","palette","error","main"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Choice from './choice';\nimport Header from '../header';\nimport every from 'lodash/every';\nimport Config from './config';\nimport { choiceUtils as utils } from '@pie-lib/pie-toolbox/config-ui';\nimport { removeAllChoices } from '@pie-lib/pie-toolbox/categorize';\nimport { rearrangeChoices } from '@pie-lib/pie-toolbox/categorize';\n\nexport class Choices extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choices: PropTypes.array.isRequired,\n defaultImageMaxWidth: PropTypes.number,\n defaultImageMaxHeight: PropTypes.number,\n onModelChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n state = {\n focusedEl: null,\n };\n\n changeChoice = (choice) => {\n const { choices, onModelChanged } = this.props;\n const index = choices.findIndex((h) => h.id === choice.id);\n if (index !== -1) {\n choices.splice(index, 1, choice);\n onModelChanged({ choices });\n }\n };\n\n allChoicesHaveCount = (count) => {\n const { choices } = this.props;\n return every(choices, (c) => c.categoryCount === count);\n };\n\n addChoice = () => {\n const { onModelChanged, model, choices: oldChoices } = this.props;\n\n const id = utils.firstAvailableIndex(\n model.choices.map((a) => a.id),\n 0,\n );\n const data = { id, content: 'Choice ' + id };\n\n this.setState(\n {\n focusedEl: oldChoices.length,\n },\n () => {\n onModelChanged({ choices: model.choices.concat([data]) });\n },\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n deleteChoice = (choice) => {\n const { model, onModelChanged } = this.props;\n const index = model.choices.findIndex((a) => a.id === choice.id);\n if (index !== -1) {\n model.choices.splice(index, 1);\n model.correctResponse = removeAllChoices(choice.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n rearrangeChoices = (indexFrom, indexTo) => {\n const { model, onModelChanged } = this.props || {};\n let { choices } = model || [];\n choices = rearrangeChoices(choices, indexFrom, indexTo);\n onModelChanged({ choices });\n };\n\n render() {\n const { focusedEl } = this.state;\n const {\n classes,\n className,\n choices,\n model,\n imageSupport,\n uploadSoundSupport,\n onModelChanged,\n spellCheck,\n toolbarOpts,\n configuration,\n defaultImageMaxWidth,\n defaultImageMaxHeight,\n } = this.props;\n const { errors, allowMultiplePlacementsEnabled, lockChoiceOrder } = model;\n const { choicesError, choicesErrors } = errors || {};\n const { maxChoices, maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n\n const choiceHolderStyle = {\n gridTemplateColumns: `repeat(${model.categoriesPerRow}, 1fr)`,\n };\n\n return (\n <div className={classNames(classes.choices, className)}>\n <Header\n label=\"Choices\"\n buttonLabel=\"ADD A CHOICE\"\n onAdd={this.addChoice}\n buttonDisabled={maxChoices && choices && maxChoices === choices.length}\n />\n\n <Config config={model} onModelChanged={onModelChanged} spellCheck={spellCheck} />\n\n <div className={classes.choiceHolder} style={choiceHolderStyle}>\n {choices.map((h, index) => {\n return (\n <Choice\n choice={h}\n focusedEl={focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n correctResponseCount={h.correctResponseCount}\n allowMultiplePlacements={allowMultiplePlacementsEnabled}\n lockChoiceOrder={lockChoiceOrder}\n index={index}\n key={index}\n imageSupport={imageSupport}\n onChange={this.changeChoice}\n onDelete={() => this.deleteChoice(h)}\n rearrangeChoices={(indexFrom, indexTo) => this.rearrangeChoices(indexFrom, indexTo)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={choicesErrors && choicesErrors[h.id]}\n maxImageWidth={(maxImageWidth && maxImageWidth.choice) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choice) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n );\n })}\n </div>\n {choicesError && <div className={classes.errorText}>{choicesError}</div>}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n choiceHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n choices: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport default withStyles(styles)(Choices);\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/design/choices/index.jsx"],"names":["Choices","focusedEl","choice","props","choices","onModelChanged","index","findIndex","h","id","splice","count","c","categoryCount","model","oldChoices","maxAnswerChoices","length","utils","firstAvailableIndex","map","a","data","content","setState","concat","correctResponse","indexFrom","indexTo","state","classes","className","imageSupport","uploadSoundSupport","spellCheck","toolbarOpts","configuration","defaultImageMaxWidth","defaultImageMaxHeight","errors","allowMultiplePlacementsEnabled","lockChoiceOrder","choicesError","choicesErrors","maxImageWidth","maxImageHeight","choiceHolderStyle","gridTemplateColumns","categoriesPerRow","addChoiceButtonTooltip","addChoice","choiceHolder","deleteFocusedEl","correctResponseCount","changeChoice","deleteChoice","rearrangeChoices","errorText","React","Component","PropTypes","object","isRequired","string","array","number","func","shape","add","bool","styles","theme","paddingTop","spacing","unit","paddingBottom","display","gridRowGap","gridColumnGap","marginBottom","fontSize","typography","color","palette","error","main"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Choice from './choice';\nimport Header from '../header';\nimport every from 'lodash/every';\nimport Config from './config';\nimport { choiceUtils as utils } from '@pie-lib/pie-toolbox/config-ui';\nimport { removeAllChoices } from '@pie-lib/pie-toolbox/categorize';\nimport { rearrangeChoices } from '@pie-lib/pie-toolbox/categorize';\n\nexport class Choices extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n choices: PropTypes.array.isRequired,\n defaultImageMaxWidth: PropTypes.number,\n defaultImageMaxHeight: PropTypes.number,\n onModelChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n toolbarOpts: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n static defaultProps = {};\n\n state = {\n focusedEl: null,\n };\n\n changeChoice = (choice) => {\n const { choices, onModelChanged } = this.props;\n const index = choices.findIndex((h) => h.id === choice.id);\n if (index !== -1) {\n choices.splice(index, 1, choice);\n onModelChanged({ choices });\n }\n };\n\n allChoicesHaveCount = (count) => {\n const { choices } = this.props;\n return every(choices, (c) => c.categoryCount === count);\n };\n\n addChoice = () => {\n const { onModelChanged, model, choices: oldChoices } = this.props;\n let { maxAnswerChoices } = model || {};\n\n if (maxAnswerChoices && model.choices?.length >= maxAnswerChoices) {\n return;\n }\n\n const id = utils.firstAvailableIndex(\n model.choices.map((a) => a.id),\n 1,\n );\n const data = { id, content: 'Choice ' + id };\n\n this.setState(\n {\n focusedEl: oldChoices.length,\n },\n () => {\n onModelChanged({ choices: model.choices.concat([data]) });\n },\n );\n };\n\n deleteFocusedEl = () => {\n this.setState({\n focusedEl: null,\n });\n };\n\n deleteChoice = (choice) => {\n const { model, onModelChanged } = this.props;\n const index = model.choices.findIndex((a) => a.id === choice.id);\n if (index !== -1) {\n model.choices.splice(index, 1);\n model.correctResponse = removeAllChoices(choice.id, model.correctResponse);\n onModelChanged(model);\n }\n };\n\n rearrangeChoices = (indexFrom, indexTo) => {\n const { model, onModelChanged } = this.props || {};\n let { choices } = model || [];\n choices = rearrangeChoices(choices, indexFrom, indexTo);\n onModelChanged({ choices });\n };\n\n render() {\n const { focusedEl } = this.state;\n const {\n classes,\n className,\n choices,\n model,\n imageSupport,\n uploadSoundSupport,\n onModelChanged,\n spellCheck,\n toolbarOpts,\n configuration,\n defaultImageMaxWidth,\n defaultImageMaxHeight,\n } = this.props;\n const { errors, allowMultiplePlacementsEnabled, lockChoiceOrder, maxAnswerChoices } = model;\n const { choicesError, choicesErrors } = errors || {};\n const { maxImageWidth = {}, maxImageHeight = {} } = configuration || {};\n const choiceHolderStyle = {\n gridTemplateColumns: `repeat(${model.categoriesPerRow}, 1fr)`,\n };\n const addChoiceButtonTooltip =\n maxAnswerChoices && choices?.length >= maxAnswerChoices ? `Only ${maxAnswerChoices} allowed maximum` : '';\n\n return (\n <div className={classNames(classes.choices, className)}>\n <Header\n label=\"Choices\"\n buttonLabel=\"ADD A CHOICE\"\n onAdd={this.addChoice}\n buttonDisabled={maxAnswerChoices && choices && choices?.length >= maxAnswerChoices}\n tooltip={addChoiceButtonTooltip}\n />\n\n <Config config={model} onModelChanged={onModelChanged} spellCheck={spellCheck} />\n\n <div className={classes.choiceHolder} style={choiceHolderStyle}>\n {choices.map((h, index) => {\n return (\n <Choice\n choice={h}\n focusedEl={focusedEl}\n deleteFocusedEl={this.deleteFocusedEl}\n correctResponseCount={h.correctResponseCount}\n allowMultiplePlacements={allowMultiplePlacementsEnabled}\n lockChoiceOrder={lockChoiceOrder}\n index={index}\n key={index}\n imageSupport={imageSupport}\n onChange={this.changeChoice}\n onDelete={() => this.deleteChoice(h)}\n rearrangeChoices={(indexFrom, indexTo) => this.rearrangeChoices(indexFrom, indexTo)}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={choicesErrors && choicesErrors[h.id]}\n maxImageWidth={(maxImageWidth && maxImageWidth.choice) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.choice) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n configuration={configuration}\n />\n );\n })}\n </div>\n {choicesError && <div className={classes.errorText}>{choicesError}</div>}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n choiceHolder: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n display: 'grid',\n gridRowGap: `${theme.spacing.unit}px`,\n gridColumnGap: `${theme.spacing.unit}px`,\n },\n choices: {\n marginBottom: theme.spacing.unit * 2.5,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit / 2,\n },\n});\n\nexport default withStyles(styles)(Choices);\n"],"file":"index.js"}
|
|
@@ -23,6 +23,8 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
23
23
|
|
|
24
24
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
25
|
|
|
26
|
+
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
|
|
27
|
+
|
|
26
28
|
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
27
29
|
|
|
28
30
|
var _styles = require("@material-ui/core/styles");
|
|
@@ -56,7 +58,8 @@ var Header = /*#__PURE__*/function (_React$Component) {
|
|
|
56
58
|
buttonLabel = _this$props.buttonLabel,
|
|
57
59
|
info = _this$props.info,
|
|
58
60
|
buttonDisabled = _this$props.buttonDisabled,
|
|
59
|
-
variant = _this$props.variant
|
|
61
|
+
variant = _this$props.variant,
|
|
62
|
+
tooltip = _this$props.tooltip;
|
|
60
63
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
61
64
|
className: (0, _classnames["default"])(classes.header, className)
|
|
62
65
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -64,11 +67,16 @@ var Header = /*#__PURE__*/function (_React$Component) {
|
|
|
64
67
|
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
65
68
|
variant: variant || 'title',
|
|
66
69
|
className: classes.title
|
|
67
|
-
}, label), info), /*#__PURE__*/_react["default"].createElement(
|
|
70
|
+
}, label), info), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
71
|
+
title: tooltip || '',
|
|
72
|
+
classes: {
|
|
73
|
+
tooltip: classes.tooltip
|
|
74
|
+
}
|
|
75
|
+
}, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_buttons.AddButton, {
|
|
68
76
|
onClick: onAdd,
|
|
69
77
|
label: buttonLabel,
|
|
70
78
|
disabled: buttonDisabled
|
|
71
|
-
}));
|
|
79
|
+
}))));
|
|
72
80
|
}
|
|
73
81
|
}]);
|
|
74
82
|
return Header;
|
|
@@ -83,7 +91,8 @@ exports.Header = Header;
|
|
|
83
91
|
label: _propTypes["default"].string.isRequired,
|
|
84
92
|
info: _propTypes["default"].any,
|
|
85
93
|
buttonDisabled: _propTypes["default"].bool,
|
|
86
|
-
variant: _propTypes["default"].string
|
|
94
|
+
variant: _propTypes["default"].string,
|
|
95
|
+
tooltip: _propTypes["default"].string
|
|
87
96
|
});
|
|
88
97
|
(0, _defineProperty2["default"])(Header, "defaultProps", {});
|
|
89
98
|
|
|
@@ -97,6 +106,11 @@ var styles = function styles(theme) {
|
|
|
97
106
|
titleContainer: {
|
|
98
107
|
display: 'flex',
|
|
99
108
|
alignItems: 'center'
|
|
109
|
+
},
|
|
110
|
+
tooltip: {
|
|
111
|
+
fontSize: theme.typography.fontSize - 2,
|
|
112
|
+
whiteSpace: 'pre',
|
|
113
|
+
maxWidth: '500px'
|
|
100
114
|
}
|
|
101
115
|
};
|
|
102
116
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/design/header.jsx"],"names":["Header","props","classes","className","onAdd","label","buttonLabel","info","buttonDisabled","variant","header","titleContainer","title","React","Component","PropTypes","object","isRequired","string","func","any","bool","styles","theme","display","justifyContent","marginBottom","spacing","unit","alignItems"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,M;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/design/header.jsx"],"names":["Header","props","classes","className","onAdd","label","buttonLabel","info","buttonDisabled","variant","tooltip","header","titleContainer","title","React","Component","PropTypes","object","isRequired","string","func","any","bool","styles","theme","display","justifyContent","marginBottom","spacing","unit","alignItems","fontSize","typography","whiteSpace","maxWidth"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,M;;;;;;;;;;;;WAeX,kBAAS;AACP,wBAAkG,KAAKC,KAAvG;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,SAAjB,eAAiBA,SAAjB;AAAA,UAA4BC,KAA5B,eAA4BA,KAA5B;AAAA,UAAmCC,KAAnC,eAAmCA,KAAnC;AAAA,UAA0CC,WAA1C,eAA0CA,WAA1C;AAAA,UAAuDC,IAAvD,eAAuDA,IAAvD;AAAA,UAA6DC,cAA7D,eAA6DA,cAA7D;AAAA,UAA6EC,OAA7E,eAA6EA,OAA7E;AAAA,UAAsFC,OAAtF,eAAsFA,OAAtF;AACA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWR,OAAO,CAACS,MAAnB,EAA2BR,SAA3B;AAAhB,sBACE;AAAK,QAAA,SAAS,EAAED,OAAO,CAACU;AAAxB,sBACE,gCAAC,sBAAD;AAAY,QAAA,OAAO,EAAEH,OAAO,IAAI,OAAhC;AAAyC,QAAA,SAAS,EAAEP,OAAO,CAACW;AAA5D,SACGR,KADH,CADF,EAIGE,IAJH,CADF,eAOE,gCAAC,mBAAD;AAAS,QAAA,KAAK,EAAEG,OAAO,IAAI,EAA3B;AAA+B,QAAA,OAAO,EAAE;AAAEA,UAAAA,OAAO,EAAER,OAAO,CAACQ;AAAnB;AAAxC,sBACE,2DACE,gCAAC,kBAAD;AAAW,QAAA,OAAO,EAAEN,KAApB;AAA2B,QAAA,KAAK,EAAEE,WAAlC;AAA+C,QAAA,QAAQ,EAAEE;AAAzD,QADF,CADF,CAPF,CADF;AAeD;;;EAhCyBM,kBAAMC,S;;;iCAArBf,M,eACQ;AACjBE,EAAAA,OAAO,EAAEc,sBAAUC,MAAV,CAAiBC,UADT;AAEjBf,EAAAA,SAAS,EAAEa,sBAAUG,MAFJ;AAGjBb,EAAAA,WAAW,EAAEU,sBAAUG,MAHN;AAIjBf,EAAAA,KAAK,EAAEY,sBAAUI,IAAV,CAAeF,UAJL;AAKjBb,EAAAA,KAAK,EAAEW,sBAAUG,MAAV,CAAiBD,UALP;AAMjBX,EAAAA,IAAI,EAAES,sBAAUK,GANC;AAOjBb,EAAAA,cAAc,EAAEQ,sBAAUM,IAPT;AAQjBb,EAAAA,OAAO,EAAEO,sBAAUG,MARF;AASjBT,EAAAA,OAAO,EAAEM,sBAAUG;AATF,C;iCADRnB,M,kBAaW,E;;AAqBxB,IAAMuB,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBb,IAAAA,MAAM,EAAE;AACNc,MAAAA,OAAO,EAAE,MADH;AAENC,MAAAA,cAAc,EAAE,eAFV;AAGNC,MAAAA,YAAY,EAAEH,KAAK,CAACI,OAAN,CAAcC;AAHtB,KADiB;AAMzBjB,IAAAA,cAAc,EAAE;AACda,MAAAA,OAAO,EAAE,MADK;AAEdK,MAAAA,UAAU,EAAE;AAFE,KANS;AAUzBpB,IAAAA,OAAO,EAAE;AACPqB,MAAAA,QAAQ,EAAEP,KAAK,CAACQ,UAAN,CAAiBD,QAAjB,GAA4B,CAD/B;AAEPE,MAAAA,UAAU,EAAE,KAFL;AAGPC,MAAAA,QAAQ,EAAE;AAHH;AAVgB,GAAZ;AAAA,CAAf;;eAgBe,wBAAWX,MAAX,EAAmBvB,MAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport { AddButton } from './buttons';\n\nexport class Header extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n buttonLabel: PropTypes.string,\n onAdd: PropTypes.func.isRequired,\n label: PropTypes.string.isRequired,\n info: PropTypes.any,\n buttonDisabled: PropTypes.bool,\n variant: PropTypes.string,\n tooltip: PropTypes.string,\n };\n\n static defaultProps = {};\n\n render() {\n const { classes, className, onAdd, label, buttonLabel, info, buttonDisabled, variant, tooltip } = this.props;\n return (\n <div className={classNames(classes.header, className)}>\n <div className={classes.titleContainer}>\n <Typography variant={variant || 'title'} className={classes.title}>\n {label}\n </Typography>\n {info}\n </div>\n <Tooltip title={tooltip || ''} classes={{ tooltip: classes.tooltip }}>\n <span>\n <AddButton onClick={onAdd} label={buttonLabel} disabled={buttonDisabled} />\n </span>\n </Tooltip>\n </div>\n );\n }\n}\nconst styles = (theme) => ({\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n marginBottom: theme.spacing.unit,\n },\n titleContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n});\nexport default withStyles(styles)(Header);\n"],"file":"header.js"}
|
|
@@ -261,7 +261,9 @@ var Design = /*#__PURE__*/function (_React$Component) {
|
|
|
261
261
|
_ref2$language = _ref2.language,
|
|
262
262
|
language = _ref2$language === void 0 ? {} : _ref2$language,
|
|
263
263
|
_ref2$languageChoices = _ref2.languageChoices,
|
|
264
|
-
languageChoices = _ref2$languageChoices === void 0 ? {} : _ref2$languageChoices
|
|
264
|
+
languageChoices = _ref2$languageChoices === void 0 ? {} : _ref2$languageChoices,
|
|
265
|
+
_ref2$allowMaxAnswerC = _ref2.allowMaxAnswerChoices,
|
|
266
|
+
allowMaxAnswerChoices = _ref2$allowMaxAnswerC === void 0 ? {} : _ref2$allowMaxAnswerC;
|
|
265
267
|
|
|
266
268
|
var _ref3 = model || {},
|
|
267
269
|
allowAlternateEnabled = _ref3.allowAlternateEnabled,
|
|
@@ -273,7 +275,8 @@ var Design = /*#__PURE__*/function (_React$Component) {
|
|
|
273
275
|
rationaleEnabled = _ref3.rationaleEnabled,
|
|
274
276
|
spellCheckEnabled = _ref3.spellCheckEnabled,
|
|
275
277
|
teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
|
|
276
|
-
toolbarEditorPosition = _ref3.toolbarEditorPosition
|
|
278
|
+
toolbarEditorPosition = _ref3.toolbarEditorPosition,
|
|
279
|
+
maxAnswerChoices = _ref3.maxAnswerChoices;
|
|
277
280
|
|
|
278
281
|
var _ref4 = errors || {},
|
|
279
282
|
promptError = _ref4.prompt,
|
|
@@ -308,6 +311,11 @@ var Design = /*#__PURE__*/function (_React$Component) {
|
|
|
308
311
|
}),
|
|
309
312
|
choicesPosition: choicesPosition.settings && radio(choicesPosition.label, ['below', 'above', 'left', 'right']),
|
|
310
313
|
allowMultiplePlacementsEnabled: allowMultiplePlacements.settings && dropdown(allowMultiplePlacements.label, [_utils2.multiplePlacements.enabled, _utils2.multiplePlacements.disabled, _utils2.multiplePlacements.perChoice]),
|
|
314
|
+
maxAnswerChoices: allowMaxAnswerChoices.settings && numberField(allowMaxAnswerChoices.label, {
|
|
315
|
+
label: '',
|
|
316
|
+
min: (choices === null || choices === void 0 ? void 0 : choices.length) || 0,
|
|
317
|
+
max: 30
|
|
318
|
+
}),
|
|
311
319
|
allowMaxChoicesPerCategory: maxPlacements.settings && toggle(maxPlacements.label),
|
|
312
320
|
maxChoicesPerCategory: allowMaxChoicesPerCategory === true && numberField(maxPlacements.label, {
|
|
313
321
|
label: '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/design/index.jsx"],"names":["translator","Translator","dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","categories","id","label","h","content","maxChoicesPerCategory","allowMaxChoicesPerCategory","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","maxChoices","generateId","classes","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","allowAlternate","baseInputConfiguration","categoriesPerRow","choicesPosition","contentDimensions","lockChoiceOrder","maxImageHeight","maxImageWidth","maxPlacements","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","mathMlOptions","language","languageChoices","allowAlternateEnabled","errors","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","options","panelProperties","studentInstructionsEnabled","rubricEnabled","isOpened","isAlertModalOpened","alertMaxChoicesMsg","t","lng","Settings","Properties","onAlertModalCancel","inputContainer","input","changeTeacherInstructions","inputConfiguration","errorText","onPromptChanged","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeRationale","changeFeedback","React","Component","PropTypes","object","isRequired","className","string","func","shape","add","styles","theme","marginBottom","spacing","unit","text","paddingTop","paddingBottom","width","title","fontSize","typography","color","palette","error","main"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/pie-toolbox/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n ensureNoExtraChoicesInAlternate,\n} from '@pie-lib/pie-toolbox/categorize';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { uid, withDragContext } from '@pie-lib/pie-toolbox/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { getMaxCategoryChoices, multiplePlacements } from '../utils';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\nexport class Design extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n className: PropTypes.string,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uid: PropTypes.string,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n constructor(props) {\n super(props);\n this.uid = props.uid || uid.generateId();\n }\n\n updateModel = (props) => {\n const { model, onChange } = this.props;\n\n const updatedModel = {\n ...model,\n ...props,\n };\n\n updatedModel.choices = updatedModel.choices.map((c) => ({\n ...c,\n categoryCount: this.checkAllowMultiplePlacements(updatedModel.allowMultiplePlacementsEnabled, c),\n }));\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //Ensure that there are no extra choices in alternate responses, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAlternate(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //clean categories\n updatedModel.categories = updatedModel.categories.map((c) => ({\n id: c.id,\n label: c.label,\n }));\n\n updatedModel.choices = updatedModel.choices.map((h) => ({\n id: h.id,\n content: h.content,\n categoryCount: h.categoryCount,\n }));\n\n // ensure that maxChoicesPerCategory is reset if author switch back the corresponding switch (allowMaxChoicesPerCategory)\n updatedModel.maxChoicesPerCategory = updatedModel.allowMaxChoicesPerCategory\n ? updatedModel.maxChoicesPerCategory\n : 0;\n\n onChange(updatedModel);\n };\n\n changeRationale = (rationale) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n rationale,\n });\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n teacherInstructions,\n });\n };\n\n changeFeedback = (feedback) => {\n this.updateModel({ feedback });\n };\n\n onAddAlternateResponse = () => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: [...(cr.alternateResponses || []), []],\n })),\n });\n };\n\n onPromptChanged = (prompt) => this.updateModel({ prompt });\n\n onRemoveAlternateResponse = (index) => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: (cr.alternateResponses || []).filter((alt, altIndex) => altIndex !== index),\n })),\n });\n };\n\n countChoiceInCorrectResponse = (choice) => {\n const { model } = this.props;\n\n return countInAnswer(choice.id, model.correctResponse);\n };\n\n checkAllowMultiplePlacements = (allowMultiplePlacements, c) => {\n if (allowMultiplePlacements === multiplePlacements.enabled) {\n return 0;\n }\n\n if (allowMultiplePlacements === multiplePlacements.disabled) {\n return 1;\n }\n\n return c.categoryCount || 0;\n };\n\n isAlertModalOpened = () => {\n const { model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const maxChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so modal should not be opened\n return maxChoicesPerCategory !== 0 ? maxChoices > maxChoicesPerCategory : false;\n };\n\n onAlertModalCancel = () => {\n const { model } = this.props;\n const maxChoices = getMaxCategoryChoices(model);\n this.updateModel({ maxChoicesPerCategory: maxChoices });\n };\n\n render() {\n const { classes, configuration, imageSupport, model, uploadSoundSupport, onConfigurationChanged } = this.props;\n const {\n allowAlternate = {},\n allowMultiplePlacements = {},\n baseInputConfiguration = {},\n categoriesPerRow = {},\n choicesPosition = {},\n contentDimensions = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageHeight = {},\n maxImageWidth = {},\n maxPlacements = {},\n minCategoriesPerRow = 1,\n partialScoring = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const {\n allowAlternateEnabled,\n allowMaxChoicesPerCategory,\n errors,\n feedbackEnabled,\n maxChoicesPerCategory,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const config = model.config || {};\n config.choices = config.choices || { label: '', columns: 2 };\n\n const categories = buildCategories(model.categories || [], model.choices || [], model.correctResponse || []);\n\n const alternateResponses = buildAlternateResponses(\n model.categories || [],\n model.choices || [],\n model.correctResponse || [],\n );\n\n const choices = model.choices.map((c) => {\n c.correctResponseCount = this.countChoiceInCorrectResponse(c);\n // ensure categoryCount is set even though updatedModel hasn't been called\n c.categoryCount = this.checkAllowMultiplePlacements(model.allowMultiplePlacementsEnabled, c);\n return c;\n });\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n categoriesPerRow:\n categoriesPerRow.settings &&\n numberField(categoriesPerRow.label, {\n label: categoriesPerRow.label,\n min: minCategoriesPerRow,\n max: 6,\n }),\n choicesPosition: choicesPosition.settings && radio(choicesPosition.label, ['below', 'above', 'left', 'right']),\n allowMultiplePlacementsEnabled:\n allowMultiplePlacements.settings &&\n dropdown(allowMultiplePlacements.label, [\n multiplePlacements.enabled,\n multiplePlacements.disabled,\n multiplePlacements.perChoice,\n ]),\n allowMaxChoicesPerCategory: maxPlacements.settings && toggle(maxPlacements.label),\n maxChoicesPerCategory:\n allowMaxChoicesPerCategory === true &&\n numberField(maxPlacements.label, {\n label: '',\n min: 0,\n max: 30,\n }),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.label),\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 studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const isOpened = this.isAlertModalOpened();\n const alertMaxChoicesMsg = translator.t('translation:categorize:maxChoicesPerCategoryRestriction', {\n lng: model.language,\n maxChoicesPerCategory,\n });\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.updateModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n modal={\n <AlertDialog\n title={'Warning'}\n text={alertMaxChoicesMsg}\n open={isOpened}\n onClose={this.onAlertModalCancel}\n />\n }\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <Categories\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n model={model}\n categories={categories || []}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n mathMlOptions={mathMlOptions}\n />\n\n <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {allowAlternateEnabled && (\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n )}\n {allowAlternateEnabled &&\n alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n variant={'subtitle1'}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n configuration={configuration}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n toolbarOpts={toolbarOpts}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n mathMlOptions={mathMlOptions}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n error={rationaleError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n marginBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/design/index.jsx"],"names":["translator","Translator","dropdown","settings","Panel","toggle","radio","numberField","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","categories","id","label","h","content","maxChoicesPerCategory","allowMaxChoicesPerCategory","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","allowMultiplePlacements","multiplePlacements","enabled","disabled","maxChoices","generateId","classes","configuration","imageSupport","uploadSoundSupport","onConfigurationChanged","allowAlternate","baseInputConfiguration","categoriesPerRow","choicesPosition","contentDimensions","lockChoiceOrder","maxImageHeight","maxImageWidth","maxPlacements","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","mathMlOptions","language","languageChoices","allowMaxAnswerChoices","allowAlternateEnabled","errors","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","maxAnswerChoices","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","length","options","panelProperties","studentInstructionsEnabled","rubricEnabled","isOpened","isAlertModalOpened","alertMaxChoicesMsg","t","lng","Settings","Properties","onAlertModalCancel","inputContainer","input","changeTeacherInstructions","inputConfiguration","errorText","onPromptChanged","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeRationale","changeFeedback","React","Component","PropTypes","object","isRequired","className","string","func","shape","add","styles","theme","marginBottom","spacing","unit","text","paddingTop","paddingBottom","width","title","fontSize","typography","color","palette","error","main"],"mappings":"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","sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/pie-toolbox/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n ensureNoExtraChoicesInAlternate,\n} from '@pie-lib/pie-toolbox/categorize';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { uid, withDragContext } from '@pie-lib/pie-toolbox/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { getMaxCategoryChoices, multiplePlacements } from '../utils';\nimport { AlertDialog } from '@pie-lib/pie-toolbox/config-ui';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\nexport class Design extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n configuration: PropTypes.object,\n className: PropTypes.string,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n uid: PropTypes.string,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n constructor(props) {\n super(props);\n this.uid = props.uid || uid.generateId();\n }\n\n updateModel = (props) => {\n const { model, onChange } = this.props;\n\n const updatedModel = {\n ...model,\n ...props,\n };\n\n updatedModel.choices = updatedModel.choices.map((c) => ({\n ...c,\n categoryCount: this.checkAllowMultiplePlacements(updatedModel.allowMultiplePlacementsEnabled, c),\n }));\n\n //Ensure that there are no extra choices in correctResponse, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAnswer(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //Ensure that there are no extra choices in alternate responses, if the user has decided that only one choice may be used.\n updatedModel.correctResponse = ensureNoExtraChoicesInAlternate(\n updatedModel.correctResponse || [],\n updatedModel.choices,\n );\n\n //clean categories\n updatedModel.categories = updatedModel.categories.map((c) => ({\n id: c.id,\n label: c.label,\n }));\n\n updatedModel.choices = updatedModel.choices.map((h) => ({\n id: h.id,\n content: h.content,\n categoryCount: h.categoryCount,\n }));\n\n // ensure that maxChoicesPerCategory is reset if author switch back the corresponding switch (allowMaxChoicesPerCategory)\n updatedModel.maxChoicesPerCategory = updatedModel.allowMaxChoicesPerCategory\n ? updatedModel.maxChoicesPerCategory\n : 0;\n\n onChange(updatedModel);\n };\n\n changeRationale = (rationale) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n rationale,\n });\n };\n\n changeTeacherInstructions = (teacherInstructions) => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n teacherInstructions,\n });\n };\n\n changeFeedback = (feedback) => {\n this.updateModel({ feedback });\n };\n\n onAddAlternateResponse = () => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: [...(cr.alternateResponses || []), []],\n })),\n });\n };\n\n onPromptChanged = (prompt) => this.updateModel({ prompt });\n\n onRemoveAlternateResponse = (index) => {\n const {\n model: { correctResponse },\n } = this.props;\n\n this.updateModel({\n correctResponse: (correctResponse || []).map((cr) => ({\n ...cr,\n alternateResponses: (cr.alternateResponses || []).filter((alt, altIndex) => altIndex !== index),\n })),\n });\n };\n\n countChoiceInCorrectResponse = (choice) => {\n const { model } = this.props;\n\n return countInAnswer(choice.id, model.correctResponse);\n };\n\n checkAllowMultiplePlacements = (allowMultiplePlacements, c) => {\n if (allowMultiplePlacements === multiplePlacements.enabled) {\n return 0;\n }\n\n if (allowMultiplePlacements === multiplePlacements.disabled) {\n return 1;\n }\n\n return c.categoryCount || 0;\n };\n\n isAlertModalOpened = () => {\n const { model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const maxChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so modal should not be opened\n return maxChoicesPerCategory !== 0 ? maxChoices > maxChoicesPerCategory : false;\n };\n\n onAlertModalCancel = () => {\n const { model } = this.props;\n const maxChoices = getMaxCategoryChoices(model);\n this.updateModel({ maxChoicesPerCategory: maxChoices });\n };\n\n render() {\n const { classes, configuration, imageSupport, model, uploadSoundSupport, onConfigurationChanged } = this.props;\n const {\n allowAlternate = {},\n allowMultiplePlacements = {},\n baseInputConfiguration = {},\n categoriesPerRow = {},\n choicesPosition = {},\n contentDimensions = {},\n feedback = {},\n lockChoiceOrder = {},\n maxImageHeight = {},\n maxImageWidth = {},\n maxPlacements = {},\n minCategoriesPerRow = 1,\n partialScoring = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n allowMaxAnswerChoices = {},\n } = configuration || {};\n const {\n allowAlternateEnabled,\n allowMaxChoicesPerCategory,\n errors,\n feedbackEnabled,\n maxChoicesPerCategory,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n maxAnswerChoices,\n } = model || {};\n const {\n prompt: promptError,\n rationale: rationaleError,\n teacherInstructions: teacherInstructionsError,\n } = errors || {};\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const config = model.config || {};\n config.choices = config.choices || { label: '', columns: 2 };\n\n const categories = buildCategories(model.categories || [], model.choices || [], model.correctResponse || []);\n\n const alternateResponses = buildAlternateResponses(\n model.categories || [],\n model.choices || [],\n model.correctResponse || [],\n );\n\n const choices = model.choices.map((c) => {\n c.correctResponseCount = this.countChoiceInCorrectResponse(c);\n // ensure categoryCount is set even though updatedModel hasn't been called\n c.categoryCount = this.checkAllowMultiplePlacements(model.allowMultiplePlacementsEnabled, c);\n return c;\n });\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n categoriesPerRow:\n categoriesPerRow.settings &&\n numberField(categoriesPerRow.label, {\n label: categoriesPerRow.label,\n min: minCategoriesPerRow,\n max: 6,\n }),\n choicesPosition: choicesPosition.settings && radio(choicesPosition.label, ['below', 'above', 'left', 'right']),\n allowMultiplePlacementsEnabled:\n allowMultiplePlacements.settings &&\n dropdown(allowMultiplePlacements.label, [\n multiplePlacements.enabled,\n multiplePlacements.disabled,\n multiplePlacements.perChoice,\n ]),\n maxAnswerChoices: allowMaxAnswerChoices.settings && numberField(allowMaxAnswerChoices.label, {\n label: '',\n min: choices?.length || 0,\n max: 30,\n }),\n allowMaxChoicesPerCategory: maxPlacements.settings && toggle(maxPlacements.label),\n maxChoicesPerCategory:\n allowMaxChoicesPerCategory === true &&\n numberField(maxPlacements.label, {\n label: '',\n min: 0,\n max: 30,\n }),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n allowAlternateEnabled: allowAlternate.settings && toggle(allowAlternate.label),\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 studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n const isOpened = this.isAlertModalOpened();\n const alertMaxChoicesMsg = translator.t('translation:categorize:maxChoicesPerCategoryRestriction', {\n lng: model.language,\n maxChoicesPerCategory,\n });\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.updateModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n modal={\n <AlertDialog\n title={'Warning'}\n text={alertMaxChoicesMsg}\n open={isOpened}\n onClose={this.onAlertModalCancel}\n />\n }\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n )}\n\n <Categories\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n model={model}\n categories={categories || []}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n mathMlOptions={mathMlOptions}\n />\n\n <Choices\n imageSupport={imageSupport}\n uploadSoundSupport={uploadSoundSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n configuration={configuration}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n />\n\n {allowAlternateEnabled && (\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n )}\n {allowAlternateEnabled &&\n alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n variant={'subtitle1'}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n configuration={configuration}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n toolbarOpts={toolbarOpts}\n defaultImageMaxWidth={defaultImageMaxWidth}\n defaultImageMaxHeight={defaultImageMaxHeight}\n mathMlOptions={mathMlOptions}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.inputContainer}>\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n error={rationaleError}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n pluginProps={getPluginProps(prompt?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {rationaleError && <div className={classes.errorText}>{rationaleError}</div>}\n </InputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n marginBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n inputContainer: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: theme.spacing.unit * 4,\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -64,6 +64,12 @@ var CategorizeConfigure = /*#__PURE__*/function (_HTMLElement) {
|
|
|
64
64
|
key: "model",
|
|
65
65
|
set: function set(m) {
|
|
66
66
|
this._model = CategorizeConfigure.createDefaultModel(m);
|
|
67
|
+
|
|
68
|
+
if (m.choices && m.choices.length >= m.maxAnswerChoices) {
|
|
69
|
+
this._model.maxAnswerChoices = m.choices.length;
|
|
70
|
+
console.warn("Max Answer Choices can't be less than choices length!");
|
|
71
|
+
}
|
|
72
|
+
|
|
67
73
|
this.render();
|
|
68
74
|
}
|
|
69
75
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["CategorizeConfigure","_model","createDefaultModel","_configuration","defaults","configuration","m","render","c","newConfiguration","language","enabled","languageChoices","options","
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["CategorizeConfigure","_model","createDefaultModel","_configuration","defaults","configuration","m","choices","length","maxAnswerChoices","console","warn","render","c","newConfiguration","language","enabled","languageChoices","options","value","settings","find","option","push","label","dispatchEvent","ModelUpdatedEvent","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","el","React","createElement","Main","model","onModelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","HTMLElement","correctResponse","mappedCorrectResponse","map","cr","alternateResponses","response","allowAlternateEnabled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\n\nimport defaults from './defaults';\n\nexport default class CategorizeConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...defaults.model,\n ...model,\n });\n\n // PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)\n // this function is used in controller, too\n static disableAlternateResponses = (m) => {\n let { correctResponse } = m || {};\n correctResponse = correctResponse || [];\n const mappedCorrectResponse = correctResponse.map((cr) => {\n const { alternateResponses, ...response } = cr;\n return response;\n });\n return {\n ...m,\n correctResponse: mappedCorrectResponse,\n allowAlternateEnabled: false,\n };\n };\n\n constructor() {\n super();\n this._model = CategorizeConfigure.createDefaultModel();\n this._configuration = defaults.configuration;\n }\n\n set model(m) {\n this._model = CategorizeConfigure.createDefaultModel(m);\n\n if (m.choices && m.choices.length >= m.maxAnswerChoices) {\n this._model.maxAnswerChoices = m.choices.length;\n console.warn(\"Max Answer Choices can't be less than choices length!\");\n }\n\n this.render();\n }\n\n set configuration(c) {\n const newConfiguration = {\n ...defaults.configuration,\n ...c,\n };\n\n this._configuration = newConfiguration;\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 (newConfiguration?.language?.enabled) {\n if (newConfiguration?.languageChoices?.options?.length) {\n this._model.language = newConfiguration?.languageChoices.options[0].value;\n }\n } else if (newConfiguration.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 onModelChanged(m) {\n this._model = m;\n\n this.render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model, false));\n }\n\n onConfigurationChanged(c) {\n this._configuration = c;\n this.render();\n }\n\n connectedCallback() {}\n\n /**\n *\n * @param {done, progress, file} handler\n */\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 const el = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\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(el, this);\n }\n}\n"],"file":"index.js"}
|
package/configure/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"private": true,
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"module": "src/index.js",
|
|
6
|
-
"version": "7.
|
|
6
|
+
"version": "7.21.0",
|
|
7
7
|
"description": "",
|
|
8
8
|
"scripts": {},
|
|
9
9
|
"author": "pie framework developers",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@material-ui/core": "^3.9.2",
|
|
13
13
|
"@material-ui/icons": "^3.0.1",
|
|
14
14
|
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
15
|
-
"@pie-lib/pie-toolbox": "1.
|
|
15
|
+
"@pie-lib/pie-toolbox": "1.28.0",
|
|
16
16
|
"classnames": "^2.2.5",
|
|
17
17
|
"debug": "^3.1.0",
|
|
18
18
|
"lodash": "^4.17.15",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [6.18.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@6.17.6...@pie-element/categorize-controller@6.18.0) (2024-07-26)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* update pie-lib/pie-toolbox PD-2451, PD-3950, PD-3845 ([278d705](https://github.com/pie-framework/pie-elements/commit/278d7052dc7c17796ba196a2e397739e2e882b7f))
|
|
12
|
+
* update pie-lib/pie-toolbox PD-3944, PD-3946, Pd-2450 ([ac34d93](https://github.com/pie-framework/pie-elements/commit/ac34d93fcc97e79cacddcd38c7509f3c96b69976))
|
|
13
|
+
* **categorize:** Categorize authoring view settings should include a maxAnswerChoices property PD-3003 ([03e37d7](https://github.com/pie-framework/pie-elements/commit/03e37d7420ad11396b9b7c7dfb8488b9ebbba39e))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
6
19
|
## [6.17.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@6.17.5...@pie-element/categorize-controller@6.17.6) (2024-07-19)
|
|
7
20
|
|
|
8
21
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["choices","choicesPosition","choicesLabel","lockChoiceOrder","allowMultiplePlacementsEnabled","multiplePlacements","enabled","categoriesPerRow","maxChoicesPerCategory","categories","alternates","correctResponse","rowLabels","partialScoring","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition"],"mappings":";;;;;;;AAAA;;eAEe;AACbA,EAAAA,OAAO,EAAE,EADI;AAEbC,EAAAA,eAAe,EAAE,OAFJ;AAGbC,EAAAA,YAAY,EAAE,EAHD;AAIbC,EAAAA,eAAe,EAAE,IAJJ;AAKbC,EAAAA,8BAA8B,EAAEC,0BAAmBC,OALtC;AAMbC,EAAAA,gBAAgB,EAAE,CANL;AAObC,EAAAA,qBAAqB,EAAE,CAPV;AAQbC,EAAAA,
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["choices","choicesPosition","choicesLabel","lockChoiceOrder","allowMultiplePlacementsEnabled","multiplePlacements","enabled","categoriesPerRow","maxChoicesPerCategory","maxAnswerChoices","categories","alternates","correctResponse","rowLabels","partialScoring","feedbackEnabled","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition"],"mappings":";;;;;;;AAAA;;eAEe;AACbA,EAAAA,OAAO,EAAE,EADI;AAEbC,EAAAA,eAAe,EAAE,OAFJ;AAGbC,EAAAA,YAAY,EAAE,EAHD;AAIbC,EAAAA,eAAe,EAAE,IAJJ;AAKbC,EAAAA,8BAA8B,EAAEC,0BAAmBC,OALtC;AAMbC,EAAAA,gBAAgB,EAAE,CANL;AAObC,EAAAA,qBAAqB,EAAE,CAPV;AAQbC,EAAAA,gBAAgB,EAAE,CARL;AASbC,EAAAA,UAAU,EAAE,EATC;AAUbC,EAAAA,UAAU,EAAE,EAVC;AAWbC,EAAAA,eAAe,EAAE,EAXJ;AAYbC,EAAAA,SAAS,EAAE,CAAC,EAAD,CAZE;AAabC,EAAAA,cAAc,EAAE,IAbH;AAcbC,EAAAA,eAAe,EAAE,KAdJ;AAebC,EAAAA,gBAAgB,EAAE,IAfL;AAgBbC,EAAAA,aAAa,EAAE,IAhBF;AAiBbC,EAAAA,0BAA0B,EAAE,IAjBf;AAkBbC,EAAAA,0BAA0B,EAAE,IAlBf;AAmBbC,EAAAA,qBAAqB,EAAE;AAnBV,C","sourcesContent":["import { multiplePlacements } from './utils';\n\nexport default {\n choices: [],\n choicesPosition: 'below',\n choicesLabel: '',\n lockChoiceOrder: true,\n allowMultiplePlacementsEnabled: multiplePlacements.enabled,\n categoriesPerRow: 2,\n maxChoicesPerCategory: 0,\n maxAnswerChoices: 6,\n categories: [],\n alternates: [],\n correctResponse: [],\n rowLabels: [''],\n partialScoring: true,\n feedbackEnabled: false,\n rationaleEnabled: true,\n promptEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n};\n"],"file":"defaults.js"}
|
package/controller/lib/index.js
CHANGED
|
@@ -351,11 +351,10 @@ var validate = function validate() {
|
|
|
351
351
|
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
352
352
|
var categories = model.categories,
|
|
353
353
|
choices = model.choices,
|
|
354
|
-
correctResponse = model.correctResponse
|
|
354
|
+
correctResponse = model.correctResponse,
|
|
355
|
+
maxAnswerChoices = model.maxAnswerChoices;
|
|
355
356
|
var _config$minChoices = config.minChoices,
|
|
356
357
|
minChoices = _config$minChoices === void 0 ? 1 : _config$minChoices,
|
|
357
|
-
_config$maxChoices = config.maxChoices,
|
|
358
|
-
maxChoices = _config$maxChoices === void 0 ? 15 : _config$maxChoices,
|
|
359
358
|
_config$minCategories = config.minCategories,
|
|
360
359
|
minCategories = _config$minCategories === void 0 ? 1 : _config$minCategories,
|
|
361
360
|
_config$maxCategories = config.maxCategories,
|
|
@@ -414,8 +413,8 @@ var validate = function validate() {
|
|
|
414
413
|
|
|
415
414
|
if (nbOfChoices < minChoices) {
|
|
416
415
|
errors.choicesError = "There should be at least ".concat(minChoices, " choices defined.");
|
|
417
|
-
} else if (nbOfChoices >
|
|
418
|
-
errors.choicesError = "No more than ".concat(
|
|
416
|
+
} else if (nbOfChoices > maxAnswerChoices) {
|
|
417
|
+
errors.choicesError = "No more than ".concat(maxAnswerChoices, " choices should be defined.");
|
|
419
418
|
}
|
|
420
419
|
|
|
421
420
|
if (nbOfChoices && nbOfCategories) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","disableAlternateResponses","question","correctResponse","mappedCorrectResponse","map","cr","alternateResponses","response","allowAlternateEnabled","getPartialScore","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","c","alternate","getTotalScore","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","note","lockChoiceOrder","filteredCorrectResponse","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","minChoices","maxChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/pie-toolbox/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\n// PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)\n// this function is used in configure part, too\nconst disableAlternateResponses = (question) => {\n let { correctResponse } = question || {};\n correctResponse = correctResponse || [];\n const mappedCorrectResponse = correctResponse.map((cr) => {\n const { alternateResponses, ...response } = cr;\n return response;\n });\n return {\n ...question,\n correctResponse: mappedCorrectResponse,\n allowAlternateEnabled: false,\n };\n};\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => {\n return {\n ...defaults,\n ...question,\n };\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 const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return 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\nexport const validate = (model = {}, config = {}) => {\n const { categories, choices, correctResponse } = model;\n const {\n minChoices = 1,\n maxChoices = 15,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\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 (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxChoices) {\n errors.choicesError = `No more than ${maxChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["translator","Translator","disableAlternateResponses","question","correctResponse","mappedCorrectResponse","map","cr","alternateResponses","response","allowAlternateEnabled","getPartialScore","builtCategories","reduce","acc","choices","placements","length","score","filter","ch","correct","maxScore","extraPlacements","totalScore","parseFloat","toFixed","getAlternates","c","alternate","getTotalScore","session","env","Object","keys","categories","answers","alternates","enabled","partialScoring","getCorrectness","Promise","resolve","mode","undefined","createDefaultModel","model","defaults","normalize","updateSession","normalizedQuestion","answerCorrectness","role","categoriesPerRow","choicesLabel","choicesPosition","feedback","feedbackEnabled","promptEnabled","prompt","rowLabels","rationaleEnabled","rationale","teacherInstructionsEnabled","teacherInstructions","language","maxChoicesPerCategory","note","lockChoiceOrder","filteredCorrectResponse","filteredChoices","choice","fb","t","lng","out","correctness","disabled","showNote","outcome","reject","Error","empty","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","maxAnswerChoices","minChoices","minCategories","maxCategories","maxLengthPerChoice","maxLengthPerCategory","reversedChoices","reverse","errors","choicesErrors","categoriesErrors","forEach","field","required","category","label","index","content","identicalAnswer","slice","some","nbOfCategories","nbOfChoices","categoriesError","choicesError","hasAssociations","duplicateAlternateIndex","duplicateCategory","duplicateAlternate","associationError"],"mappings":"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","sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport { buildState, score } from '@pie-lib/pie-toolbox/categorize';\nimport { getFeedbackForCorrectness } from '@pie-lib/pie-toolbox/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/pie-toolbox/controller-utils';\nimport Translator from '@pie-lib/pie-toolbox/translator';\n\nconst { translator } = Translator;\nimport defaults from './defaults';\nimport { isAlternateDuplicated, isCorrectResponseDuplicated } from './utils';\n\n// eslint-disable-next-line no-console\n\nexport { score };\n\n// PD-2960: make sure we don't have alternates in model or possibility to add them (temporary solution)\n// this function is used in configure part, too\nconst disableAlternateResponses = (question) => {\n let { correctResponse } = question || {};\n correctResponse = correctResponse || [];\n const mappedCorrectResponse = correctResponse.map((cr) => {\n const { alternateResponses, ...response } = cr;\n return response;\n });\n return {\n ...question,\n correctResponse: mappedCorrectResponse,\n allowAlternateEnabled: false,\n };\n};\n\nexport const getPartialScore = (correctResponse, builtCategories) => {\n // in the resulted best scenario we make a sum with all the correct responses\n // and all the placements\n const { placements, score } = builtCategories.reduce(\n (acc, { choices = [] }) => ({\n placements: acc.placements + choices.length,\n score: acc.score + choices.filter((ch) => ch.correct).length,\n }),\n { placements: 0, score: 0 },\n );\n\n // in the correct response, we make a sum of the max possible score\n const { maxScore } = correctResponse.reduce(\n (acc, { choices }) => ({\n maxScore: acc.maxScore + choices.length,\n }),\n { maxScore: 0 },\n );\n\n // if there are any extra placements, we subtract from the obtained score\n const extraPlacements = placements > maxScore ? placements - maxScore : 0;\n const totalScore = (score - extraPlacements) / maxScore;\n\n return totalScore < 0 ? 0 : parseFloat(totalScore.toFixed(2));\n};\n\nconst getAlternates = (correctResponse) =>\n correctResponse.map((c) => c.alternateResponses).filter((alternate) => alternate);\n\nexport const getTotalScore = (question, session, env) => {\n if (!session) {\n return 0;\n }\n\n if (Object.keys(session).length === 0) {\n return 0;\n }\n const { categories, choices } = question || {};\n let { correctResponse } = question || {};\n let { answers } = session || {};\n answers = answers || [];\n correctResponse = correctResponse || [];\n\n // this function is used in pie-ui/categorize as well, in order to get the best scenario\n // so we get the best scenario and calculate the score\n const { categories: builtCategories, correct } = buildState(categories, choices, answers, correctResponse);\n\n const alternates = getAlternates(correctResponse);\n const enabled = partialScoring.enabled(question, env);\n\n // if there are any alternates, there will be no partial scoring!\n if (enabled && !alternates.length) {\n // we apply partial scoring\n return getPartialScore(correctResponse, builtCategories);\n }\n\n // else we apply dichotomous\n return correct ? 1 : 0;\n};\n\nexport const getCorrectness = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode === 'evaluate') {\n const score = getTotalScore(question, session, env);\n if (score === 1) {\n resolve('correct');\n } else if (score === 0) {\n resolve('incorrect');\n } else {\n resolve('partially-correct');\n }\n } else {\n resolve(undefined);\n }\n });\n};\n\nexport const createDefaultModel = (model = {}) =>\n new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n\nexport const normalize = (question) => {\n return {\n ...defaults,\n ...question,\n };\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 const model = (question, session, env, updateSession) =>\n new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const answerCorrectness = await getCorrectness(normalizedQuestion, session, env);\n\n const { mode, role } = env || {};\n\n const {\n categories,\n categoriesPerRow,\n choicesLabel,\n choicesPosition,\n correctResponse,\n feedback,\n feedbackEnabled,\n promptEnabled,\n prompt,\n rowLabels,\n rationaleEnabled,\n rationale,\n teacherInstructionsEnabled,\n teacherInstructions,\n language,\n maxChoicesPerCategory,\n } = normalizedQuestion;\n let { choices, note } = normalizedQuestion;\n let fb;\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n const filteredCorrectResponse = correctResponse.map((response) => {\n const filteredChoices = (response.choices || []).filter((choice) => choice !== 'null');\n return { ...response, choices: filteredChoices };\n });\n\n if (mode === 'evaluate' && feedbackEnabled) {\n fb = await getFeedbackForCorrectness(answerCorrectness, feedback);\n }\n\n if (!lockChoiceOrder) {\n choices = await getShuffledChoices(choices, session, updateSession, 'id');\n }\n\n if (!note) {\n note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: language });\n }\n\n const alternates = getAlternates(filteredCorrectResponse);\n const out = {\n categories: categories || [],\n categoriesPerRow: categoriesPerRow || 2,\n maxChoicesPerCategory,\n correctness: answerCorrectness,\n choices: choices || [],\n choicesLabel: choicesLabel || '',\n choicesPosition,\n disabled: mode !== 'gather',\n feedback: fb,\n lockChoiceOrder,\n prompt: promptEnabled ? prompt : null,\n rowLabels,\n note,\n env,\n showNote: alternates && alternates.length > 0,\n correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined,\n language,\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.rationale = rationaleEnabled ? rationale : null;\n out.teacherInstructions = teacherInstructionsEnabled ? teacherInstructions : null;\n } else {\n out.rationale = null;\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n\nexport const outcome = (question, session, env) => {\n if (env.mode !== 'evaluate') {\n return Promise.reject(new Error('Can not call outcome when mode is not evaluate'));\n } else {\n return new Promise((resolve) => {\n resolve({\n score: getTotalScore(question, session, env),\n empty: !session || isEmpty(session),\n });\n });\n }\n};\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n const { mode, role } = env || {};\n\n if (mode !== 'evaluate' && role === 'instructor') {\n const { correctResponse } = question;\n\n resolve({ answers: correctResponse, id: 1 });\n } else {\n return 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\nexport const validate = (model = {}, config = {}) => {\n const { categories, choices, correctResponse, maxAnswerChoices } = model;\n const {\n minChoices = 1,\n minCategories = 1,\n maxCategories = 12,\n maxLengthPerChoice = 300,\n maxLengthPerCategory = 150,\n } = config;\n const reversedChoices = [...(choices || [])].reverse();\n const errors = {};\n const choicesErrors = {};\n const categoriesErrors = {};\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 (categories || []).forEach((category) => {\n const { id, label } = category;\n\n if (getInnerText(label).length > maxLengthPerCategory) {\n categoriesErrors[id] = `Category labels should be no more than ${maxLengthPerCategory} characters long.`;\n }\n });\n\n (reversedChoices || []).forEach((choice, index) => {\n const { id, content } = choice;\n\n if (getInnerText(content).length > maxLengthPerChoice) {\n choicesErrors[id] = `Tokens should be no more than ${maxLengthPerChoice} characters long.`;\n }\n\n if (!getContent(content)) {\n choicesErrors[id] = 'Tokens should not be empty.';\n } else {\n const identicalAnswer = reversedChoices.slice(index + 1).some((c) => c.content === content);\n\n if (identicalAnswer) {\n choicesErrors[id] = 'Tokens content should be unique.';\n }\n }\n });\n\n const nbOfCategories = (categories || []).length;\n const nbOfChoices = (choices || []).length;\n\n if (nbOfCategories > maxCategories) {\n errors.categoriesError = `No more than ${maxCategories} categories should be defined.`;\n } else if (nbOfCategories < minCategories) {\n errors.categoriesError = `There should be at least ${minCategories} category defined.`;\n }\n\n if (nbOfChoices < minChoices) {\n errors.choicesError = `There should be at least ${minChoices} choices defined.`;\n } else if (nbOfChoices > maxAnswerChoices) {\n errors.choicesError = `No more than ${maxAnswerChoices} choices should be defined.`;\n }\n\n if (nbOfChoices && nbOfCategories) {\n let hasAssociations = false;\n\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [] } = response;\n\n if (choices.length) {\n hasAssociations = true;\n } else {\n alternateResponses.forEach((alternate) => {\n if ((alternate || []).length) {\n hasAssociations = true;\n }\n });\n }\n });\n\n let duplicateAlternateIndex = -1;\n let duplicateCategory = '';\n (correctResponse || []).forEach((response) => {\n const { choices = [], alternateResponses = [], category } = response;\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isCorrectResponseDuplicated(choices, alternateResponses);\n\n if (duplicateAlternateIndex === -1) {\n duplicateAlternateIndex = isAlternateDuplicated(alternateResponses);\n }\n\n duplicateCategory = category;\n }\n });\n\n if (duplicateAlternateIndex > -1) {\n errors.duplicateAlternate = { index: duplicateAlternateIndex, category: duplicateCategory };\n }\n\n if (!hasAssociations) {\n errors.associationError = 'At least one token should be assigned to at least one category.';\n }\n }\n\n if (!isEmpty(choicesErrors)) {\n errors.choicesErrors = choicesErrors;\n }\n\n if (!isEmpty(categoriesErrors)) {\n errors.categoriesErrors = categoriesErrors;\n }\n\n return errors;\n};\n"],"file":"index.js"}
|
package/controller/package.json
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"name": "@pie-element/categorize-controller",
|
|
3
3
|
"private": true,
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@pie-lib/pie-toolbox": "1.
|
|
5
|
+
"@pie-lib/pie-toolbox": "1.28.0",
|
|
6
6
|
"lodash": "^4.17.15"
|
|
7
7
|
},
|
|
8
|
-
"version": "6.
|
|
8
|
+
"version": "6.18.0",
|
|
9
9
|
"description": "",
|
|
10
10
|
"scripts": {},
|
|
11
11
|
"main": "lib/index.js",
|
package/docs/config-schema.json
CHANGED
|
@@ -1021,6 +1021,22 @@
|
|
|
1021
1021
|
],
|
|
1022
1022
|
"title": "languageChoices"
|
|
1023
1023
|
},
|
|
1024
|
+
"allowMaxAnswerChoices": {
|
|
1025
|
+
"title": "ConfigureProp",
|
|
1026
|
+
"type": "object",
|
|
1027
|
+
"properties": {
|
|
1028
|
+
"settings": {
|
|
1029
|
+
"description": "Indicates if the item has to be displayed in the Settings Panel",
|
|
1030
|
+
"type": "boolean",
|
|
1031
|
+
"title": "settings"
|
|
1032
|
+
},
|
|
1033
|
+
"label": {
|
|
1034
|
+
"description": "Indicates the label for the item that has to be displayed in the Settings Panel",
|
|
1035
|
+
"type": "string",
|
|
1036
|
+
"title": "label"
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
},
|
|
1024
1040
|
"contentDimensions": {
|
|
1025
1041
|
"description": "Indicates the dimensions configuration for the authoring container\nNote: Some items have a default minimum width because of their content, but if\nthe minWidth is lower than this, the overflow behavior will take care of that",
|
|
1026
1042
|
"default": ": {}",
|
|
@@ -760,6 +760,18 @@ Value of the language option
|
|
|
760
760
|
|
|
761
761
|
Label of the language option
|
|
762
762
|
|
|
763
|
+
# `allowMaxAnswerChoices` (object)
|
|
764
|
+
|
|
765
|
+
Properties of the `allowMaxAnswerChoices` object:
|
|
766
|
+
|
|
767
|
+
## `settings` (boolean)
|
|
768
|
+
|
|
769
|
+
Indicates if the item has to be displayed in the Settings Panel
|
|
770
|
+
|
|
771
|
+
## `label` (string)
|
|
772
|
+
|
|
773
|
+
Indicates the label for the item that has to be displayed in the Settings Panel
|
|
774
|
+
|
|
763
775
|
# `contentDimensions` (object)
|
|
764
776
|
|
|
765
777
|
Indicates the dimensions configuration for the authoring container
|
package/docs/pie-schema.json
CHANGED
|
@@ -418,6 +418,11 @@
|
|
|
418
418
|
"type": "string",
|
|
419
419
|
"title": "language"
|
|
420
420
|
},
|
|
421
|
+
"maxAnswerChoices": {
|
|
422
|
+
"description": "Maximum number of choices",
|
|
423
|
+
"type": "number",
|
|
424
|
+
"title": "maxAnswerChoices"
|
|
425
|
+
},
|
|
421
426
|
"id": {
|
|
422
427
|
"description": "Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.",
|
|
423
428
|
"type": "string",
|
package/docs/pie-schema.json.md
CHANGED
|
@@ -189,6 +189,10 @@ Indicates if Rubric is enabled
|
|
|
189
189
|
Indicates the language of the component
|
|
190
190
|
Supported options: en, es, en_US, en-US, es_ES, es-ES, es_MX, es-MX
|
|
191
191
|
|
|
192
|
+
# `maxAnswerChoices` (number)
|
|
193
|
+
|
|
194
|
+
Maximum number of choices
|
|
195
|
+
|
|
192
196
|
# `id` (string, required)
|
|
193
197
|
|
|
194
198
|
Identifier to identify the Pie Element in html markup, Must be unique within a pie item config.
|
package/package.json
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "8.
|
|
7
|
+
"version": "8.22.0",
|
|
8
8
|
"description": "",
|
|
9
9
|
"author": "pie framework developers",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@material-ui/core": "^3.9.2",
|
|
13
13
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
14
|
-
"@pie-lib/pie-toolbox": "1.
|
|
14
|
+
"@pie-lib/pie-toolbox": "1.28.0",
|
|
15
15
|
"classnames": "^2.2.5",
|
|
16
16
|
"debug": "^4.1.1",
|
|
17
17
|
"lodash": "^4.17.15",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"react-dnd": "^14.0.5",
|
|
21
21
|
"react-dom": "^16.8.1"
|
|
22
22
|
},
|
|
23
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "3dc179573176bfd708938867f78497294a7fd7fd",
|
|
24
24
|
"scripts": {
|
|
25
25
|
"postpublish": "../../scripts/postpublish"
|
|
26
26
|
},
|