@pie-element/categorize 6.7.3-next.137 → 6.7.3-next.1370
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 +272 -0
- package/configure/CHANGELOG.md +223 -0
- package/configure/lib/defaults.js +25 -0
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/design/builder.js +8 -5
- package/configure/lib/design/builder.js.map +1 -1
- package/configure/lib/design/buttons.js +6 -4
- package/configure/lib/design/buttons.js.map +1 -1
- package/configure/lib/design/categories/alternateResponses.js +12 -4
- package/configure/lib/design/categories/alternateResponses.js.map +1 -1
- package/configure/lib/design/categories/category.js +16 -4
- package/configure/lib/design/categories/category.js.map +1 -1
- package/configure/lib/design/categories/choice-preview.js +4 -4
- package/configure/lib/design/categories/choice-preview.js.map +1 -1
- package/configure/lib/design/categories/droppable-placeholder.js +3 -3
- package/configure/lib/design/categories/droppable-placeholder.js.map +1 -1
- package/configure/lib/design/categories/index.js +91 -10
- package/configure/lib/design/categories/index.js.map +1 -1
- package/configure/lib/design/choices/choice.js +28 -6
- package/configure/lib/design/choices/choice.js.map +1 -1
- package/configure/lib/design/choices/config.js +5 -3
- package/configure/lib/design/choices/config.js.map +1 -1
- package/configure/lib/design/choices/index.js +44 -7
- package/configure/lib/design/choices/index.js.map +1 -1
- package/configure/lib/design/header.js +15 -5
- package/configure/lib/design/header.js.map +1 -1
- package/configure/lib/design/index.js +70 -12
- package/configure/lib/design/index.js.map +1 -1
- package/configure/lib/design/input-header.js +24 -4
- package/configure/lib/design/input-header.js.map +1 -1
- package/configure/lib/index.js +17 -3
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +4 -2
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/utils.js +20 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +5 -5
- package/controller/CHANGELOG.md +47 -0
- package/controller/lib/index.js +103 -15
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/docs/config-schema.json +155 -0
- package/docs/config-schema.json.md +121 -1
- package/docs/demo/generate.js +1 -0
- package/docs/pie-schema.json +48 -0
- package/docs/pie-schema.json.md +36 -0
- package/lib/categorize/categories.js +9 -4
- package/lib/categorize/categories.js.map +1 -1
- package/lib/categorize/category.js +4 -4
- package/lib/categorize/category.js.map +1 -1
- package/lib/categorize/choice.js +5 -4
- package/lib/categorize/choice.js.map +1 -1
- package/lib/categorize/choices.js +12 -5
- package/lib/categorize/choices.js.map +1 -1
- package/lib/categorize/droppable-placeholder.js +2 -2
- package/lib/categorize/droppable-placeholder.js.map +1 -1
- package/lib/categorize/grid-content.js +3 -3
- package/lib/categorize/grid-content.js.map +1 -1
- package/lib/categorize/index.js +11 -15
- package/lib/categorize/index.js.map +1 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/design/index.jsx"],"names":["Panel","settings","toggle","radio","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","correctResponse","choices","categories","map","c","id","label","h","content","categoryCount","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","generateId","classes","className","imageSupport","configuration","onConfigurationChanged","partialScoring","lockChoiceOrder","studentInstructions","scoringType","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","feedbackEnabled","toolbarOpts","toolbarEditorPosition","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","Settings","Properties","studentInstructionsEnabled","design","promptHolder","onPromptChanged","inputHolder","input","changeTeacherInstructions","changeRationale","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeFeedback","React","Component","PropTypes","object","isRequired","string","func","shape","add","styles","theme","paddingTop","spacing","unit","paddingBottom","text","width","marginBottom","maxWidth","title"],"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 {\n FeedbackConfig,\n InputContainer,\n layout,\n settings\n} from '@pie-lib/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer\n} from '@pie-lib/categorize';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { uid, withDragContext } from '@pie-lib/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { Divider } from './buttons';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\n\nconst { Panel, toggle, radio } = 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 };\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 //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 //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 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(\n (alt, altIndex) => altIndex !== index\n )\n }))\n });\n };\n\n countChoiceInCorrectResponse = choice => {\n const { model } = this.props;\n\n return countInAnswer(choice.id, model.correctResponse);\n };\n\n render() {\n const {\n classes,\n className,\n model,\n imageSupport,\n configuration,\n onChange,\n onConfigurationChanged\n } = this.props;\n const {\n partialScoring = {},\n lockChoiceOrder = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n scoringType = {},\n feedback = {},\n prompt = {}\n } = configuration || {};\n const {\n teacherInstructionsEnabled,\n promptEnabled,\n rationaleEnabled,\n feedbackEnabled\n } = model || {};\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n const config = model.config || {};\n config.choices = config.choices || { label: '', columns: 2 };\n\n const categories = buildCategories(\n model.categories || [],\n model.choices || [],\n model.correctResponse || []\n );\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 return c;\n });\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n onChangeModel={onChange}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled:\n feedback.settings && toggle(feedback.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n studentInstructionsEnabled:\n studentInstructions.settings &&\n toggle(studentInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n scoringType:\n scoringType.settings &&\n radio(scoringType.label, ['auto', 'rubric'])\n }\n }}\n />\n }\n >\n <div className={classNames(classes.design, className)}>\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.inputHolder}\n >\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.inputHolder}\n >\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n <Categories\n imageSupport={imageSupport}\n model={model}\n categories={categories || []}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n />\n\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n\n {alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n />\n </React.Fragment>\n );\n })}\n\n <Divider />\n <Choices\n imageSupport={imageSupport}\n choices={choices}\n model={model}\n onModelChanged={this.updateModel}\n toolbarOpts={toolbarOpts}\n />\n\n {feedbackEnabled && (\n <FeedbackConfig\n feedback={model.feedback}\n onChange={this.changeFeedback}\n toolbarOpts={toolbarOpts}\n />\n )}\n </div>\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = theme => ({\n alternatesHeader: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n design: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit\n },\n inputHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n input: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n maxWidth: '600px'\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n title: {\n marginBottom: '30px'\n }\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/design/index.jsx"],"names":["Panel","settings","toggle","radio","IdProvider","uid","Provider","Design","props","model","onChange","updatedModel","correctResponse","choices","categories","map","c","id","label","h","content","categoryCount","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","generateId","classes","className","imageSupport","uploadSoundSupport","configuration","onConfigurationChanged","partialScoring","lockChoiceOrder","studentInstructions","scoringType","spellCheck","maxImageWidth","maxImageHeight","withRubric","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","feedbackEnabled","spellCheckEnabled","errors","rubricEnabled","toolbarOpts","toolbarEditorPosition","position","config","columns","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","Settings","Properties","studentInstructionsEnabled","design","promptHolder","onPromptChanged","language","inputHolder","input","changeTeacherInstructions","changeRationale","alternatesHeader","onAddAlternateResponse","categoriesList","onRemoveAlternateResponse","changeFeedback","React","Component","PropTypes","object","isRequired","string","func","shape","add","styles","theme","paddingTop","spacing","unit","paddingBottom","text","width","marginBottom","maxWidth","title"],"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 {\n FeedbackConfig,\n InputContainer,\n layout,\n settings,\n} from '@pie-lib/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n} from '@pie-lib/categorize';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { uid, withDragContext } from '@pie-lib/drag';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport { Divider } from './buttons';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\n\nconst { Panel, toggle, radio } = 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 //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 //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 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(\n (alt, altIndex) => altIndex !== index\n ),\n })),\n });\n };\n\n countChoiceInCorrectResponse = (choice) => {\n const { model } = this.props;\n\n return countInAnswer(choice.id, model.correctResponse);\n };\n\n render() {\n const {\n classes,\n className,\n model,\n imageSupport,\n uploadSoundSupport,\n configuration,\n onChange,\n onConfigurationChanged,\n } = this.props;\n const {\n partialScoring = {},\n lockChoiceOrder = {},\n teacherInstructions = {},\n studentInstructions = {},\n rationale = {},\n scoringType = {},\n feedback = {},\n prompt = {},\n spellCheck = {},\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {}\n } = configuration || {};\n const {\n teacherInstructionsEnabled,\n promptEnabled,\n rationaleEnabled,\n feedbackEnabled,\n spellCheckEnabled,\n errors,\n rubricEnabled\n } = model || {};\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n const config = model.config || {};\n config.choices = config.choices || { label: '', columns: 2 };\n\n const categories = buildCategories(\n model.categories || [],\n model.choices || [],\n model.correctResponse || []\n );\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 return c;\n });\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n return (\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n onChangeModel={onChange}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n feedbackEnabled: feedback.settings && toggle(feedback.label),\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n studentInstructionsEnabled:\n studentInstructions.settings &&\n toggle(studentInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label),\n scoringType:\n scoringType.settings &&\n radio(scoringType.label, ['auto', 'rubric']),\n rubricEnabled: withRubric.settings && toggle(withRubric.label)\n },\n }}\n />\n }\n >\n <div className={classNames(classes.design, className)}>\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt || ''}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.prompt}\n maxImageHeight={maxImageHeight && maxImageHeight.prompt}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.inputHolder}\n >\n <EditableHtml\n className={classes.input}\n markup={model.teacherInstructions || ''}\n onChange={this.changeTeacherInstructions}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth}\n maxImageHeight={maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.inputHolder}\n >\n <EditableHtml\n className={classes.input}\n markup={model.rationale || ''}\n onChange={this.changeRationale}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth}\n maxImageHeight={maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\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 />\n\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Responses\"\n buttonLabel=\"ADD AN ALTERNATE RESPONSE\"\n onAdd={this.onAddAlternateResponse}\n />\n\n {alternateResponses.map((categoriesList, index) => {\n return (\n <React.Fragment key={index}>\n <Header\n className={classes.alternatesHeader}\n label=\"Alternate Response\"\n buttonLabel=\"REMOVE ALTERNATE RESPONSE\"\n onAdd={() => this.onRemoveAlternateResponse(index)}\n />\n\n <AlternateResponses\n altIndex={index}\n imageSupport={imageSupport}\n model={model}\n categories={categoriesList}\n onModelChanged={this.updateModel}\n uploadSoundSupport={uploadSoundSupport}\n />\n </React.Fragment>\n );\n })}\n\n <Divider />\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 {feedbackEnabled && (\n <FeedbackConfig\n feedback={model.feedback}\n onChange={this.changeFeedback}\n toolbarOpts={toolbarOpts}\n />\n )}\n </div>\n </layout.ConfigLayout>\n </IdProvider>\n );\n }\n}\n\nconst styles = (theme) => ({\n alternatesHeader: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n text: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n design: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n },\n inputHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n input: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n maxWidth: '600px',\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n title: {\n marginBottom: '30px',\n },\n});\n\nexport default withDragContext(withStyles(styles)(Design));\n"],"file":"index.js"}
|
|
@@ -31,7 +31,7 @@ var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
|
|
|
31
31
|
|
|
32
32
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
33
33
|
|
|
34
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
34
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
35
35
|
|
|
36
36
|
var InputHeader = /*#__PURE__*/function (_React$Component) {
|
|
37
37
|
(0, _inherits2["default"])(InputHeader, _React$Component);
|
|
@@ -52,7 +52,12 @@ var InputHeader = /*#__PURE__*/function (_React$Component) {
|
|
|
52
52
|
classes = _this$props.classes,
|
|
53
53
|
className = _this$props.className,
|
|
54
54
|
imageSupport = _this$props.imageSupport,
|
|
55
|
-
toolbarOpts = _this$props.toolbarOpts
|
|
55
|
+
toolbarOpts = _this$props.toolbarOpts,
|
|
56
|
+
spellCheck = _this$props.spellCheck,
|
|
57
|
+
error = _this$props.error,
|
|
58
|
+
maxImageWidth = _this$props.maxImageWidth,
|
|
59
|
+
maxImageHeight = _this$props.maxImageHeight,
|
|
60
|
+
uploadSoundSupport = _this$props.uploadSoundSupport;
|
|
56
61
|
var choicePlugins = {
|
|
57
62
|
audio: {
|
|
58
63
|
disabled: true
|
|
@@ -71,7 +76,17 @@ var InputHeader = /*#__PURE__*/function (_React$Component) {
|
|
|
71
76
|
onChange: onChange,
|
|
72
77
|
className: classes.editor,
|
|
73
78
|
pluginProps: choicePlugins,
|
|
74
|
-
toolbarOpts: toolbarOpts
|
|
79
|
+
toolbarOpts: toolbarOpts,
|
|
80
|
+
spellCheck: spellCheck,
|
|
81
|
+
error: error,
|
|
82
|
+
maxImageWidth: maxImageWidth,
|
|
83
|
+
maxImageHeight: maxImageHeight,
|
|
84
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
85
|
+
languageCharactersProps: [{
|
|
86
|
+
language: 'spanish'
|
|
87
|
+
}, {
|
|
88
|
+
language: 'special'
|
|
89
|
+
}]
|
|
75
90
|
}));
|
|
76
91
|
}
|
|
77
92
|
}]);
|
|
@@ -89,7 +104,12 @@ exports.InputHeader = InputHeader;
|
|
|
89
104
|
add: _propTypes["default"].func.isRequired,
|
|
90
105
|
"delete": _propTypes["default"].func.isRequired
|
|
91
106
|
}),
|
|
92
|
-
|
|
107
|
+
uploadSoundSupport: _propTypes["default"].shape({
|
|
108
|
+
add: _propTypes["default"].func.isRequired,
|
|
109
|
+
"delete": _propTypes["default"].func.isRequired
|
|
110
|
+
}),
|
|
111
|
+
toolbarOpts: _propTypes["default"].object,
|
|
112
|
+
error: _propTypes["default"].string
|
|
93
113
|
});
|
|
94
114
|
(0, _defineProperty2["default"])(InputHeader, "defaultProps", {});
|
|
95
115
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/design/input-header.jsx"],"names":["InputHeader","props","onChange","label","classes","className","imageSupport","toolbarOpts","choicePlugins","audio","disabled","video","inputHeader","editor","React","Component","PropTypes","object","isRequired","string","func","onDelete","shape","add","styles","theme","flex","paddingBottom","spacing","unit","iconButtonRoot","width","height","display","justifyContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,W;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/design/input-header.jsx"],"names":["InputHeader","props","onChange","label","classes","className","imageSupport","toolbarOpts","spellCheck","error","maxImageWidth","maxImageHeight","uploadSoundSupport","choicePlugins","audio","disabled","video","inputHeader","editor","language","React","Component","PropTypes","object","isRequired","string","func","onDelete","shape","add","styles","theme","flex","paddingBottom","spacing","unit","iconButtonRoot","width","height","display","justifyContent"],"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 EditableHtml from '@pie-lib/editable-html';\n\nexport class InputHeader extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n label: PropTypes.string,\n onChange: PropTypes.func,\n onDelete: PropTypes.func,\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 error: PropTypes.string,\n };\n\n static defaultProps = {};\n render() {\n const { onChange, label, classes, className, imageSupport, toolbarOpts, spellCheck, error, maxImageWidth, maxImageHeight, uploadSoundSupport } = this.props;\n const choicePlugins = {\n audio: { disabled: true },\n video: { disabled: true }\n };\n\n return (\n <div className={classNames(classes.inputHeader, className)}>\n <EditableHtml\n imageSupport={imageSupport}\n autoWidthToolbar\n label={'label'}\n markup={label}\n onChange={onChange}\n className={classes.editor}\n pluginProps={choicePlugins}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheck}\n error={error}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </div>\n );\n }\n}\nconst styles = theme => ({\n editor: {\n flex: '1',\n paddingBottom: theme.spacing.unit\n },\n iconButtonRoot: {\n width: 'auto',\n height: 'auto'\n },\n inputHeader: {\n display: 'flex',\n justifyContent: 'space-between'\n }\n});\nexport default withStyles(styles)(InputHeader);\n"],"file":"input-header.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -31,13 +31,13 @@ var _main = _interopRequireDefault(require("./main"));
|
|
|
31
31
|
|
|
32
32
|
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
33
33
|
|
|
34
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
34
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
35
35
|
|
|
36
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
36
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
37
37
|
|
|
38
38
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
39
39
|
|
|
40
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
40
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
41
41
|
|
|
42
42
|
var CategorizeConfigure = /*#__PURE__*/function (_HTMLElement) {
|
|
43
43
|
(0, _inherits2["default"])(CategorizeConfigure, _HTMLElement);
|
|
@@ -97,6 +97,16 @@ var CategorizeConfigure = /*#__PURE__*/function (_HTMLElement) {
|
|
|
97
97
|
value: function onDeleteImage(src, done) {
|
|
98
98
|
this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
|
|
99
99
|
}
|
|
100
|
+
}, {
|
|
101
|
+
key: "insertSound",
|
|
102
|
+
value: function insertSound(handler) {
|
|
103
|
+
this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
|
|
104
|
+
}
|
|
105
|
+
}, {
|
|
106
|
+
key: "onDeleteSound",
|
|
107
|
+
value: function onDeleteSound(src, done) {
|
|
108
|
+
this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
|
|
109
|
+
}
|
|
100
110
|
}, {
|
|
101
111
|
key: "render",
|
|
102
112
|
value: function render() {
|
|
@@ -108,6 +118,10 @@ var CategorizeConfigure = /*#__PURE__*/function (_HTMLElement) {
|
|
|
108
118
|
imageSupport: {
|
|
109
119
|
add: this.insertImage.bind(this),
|
|
110
120
|
"delete": this.onDeleteImage.bind(this)
|
|
121
|
+
},
|
|
122
|
+
uploadSoundSupport: {
|
|
123
|
+
add: this.insertSound.bind(this),
|
|
124
|
+
"delete": this.onDeleteSound.bind(this)
|
|
111
125
|
}
|
|
112
126
|
});
|
|
113
127
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["CategorizeConfigure","_model","createDefaultModel","_configuration","defaults","configuration","m","render","c","dispatchEvent","ModelUpdatedEvent","handler","InsertImageEvent","src","done","DeleteImageEvent","el","React","createElement","Main","model","onModelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","ReactDOM","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["CategorizeConfigure","_model","createDefaultModel","_configuration","defaults","configuration","m","render","c","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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAQA;;AAEA;;;;;;;;;;IAEqBA,mB;;;;;AAMnB,iCAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,MAAL,GAAcD,mBAAmB,CAACE,kBAApB,EAAd;AACA,UAAKC,cAAL,GAAsBC,qBAASC,aAA/B;AAHY;AAIb;;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKL,MAAL,GAAcD,mBAAmB,CAACE,kBAApB,CAAuCI,CAAvC,CAAd;AACA,WAAKC,MAAL;AACD;;;SAED,aAAkBC,CAAlB,EAAqB;AACnB,WAAKL,cAAL,GAAsBK,CAAtB;AACA,WAAKD,MAAL;AACD;;;WAED,wBAAeD,CAAf,EAAkB;AAChB,WAAKL,MAAL,GAAcK,CAAd;AAEA,WAAKC,MAAL;AACA,WAAKE,aAAL,CAAmB,IAAIC,qCAAJ,CAAsB,KAAKT,MAA3B,EAAmC,IAAnC,CAAnB;AACD;;;WAED,gCAAuBO,CAAvB,EAA0B;AACxB,WAAKL,cAAL,GAAsBK,CAAtB;AACA,WAAKD,MAAL;AACD;;;WAED,6BAAoB,CAAE;AAEtB;AACF;AACA;AACA;;;;WACE,qBAAYI,OAAZ,EAAqB;AACnB,WAAKF,aAAL,CAAmB,IAAIG,oCAAJ,CAAqBD,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKL,aAAL,CAAmB,IAAIM,oCAAJ,CAAqBF,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,qBAAYH,OAAZ,EAAqB;AACnB,WAAKF,aAAL,CAAmB,IAAIO,oCAAJ,CAAqBL,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKL,aAAL,CAAmB,IAAIQ,oCAAJ,CAAqBJ,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,kBAAS;AACP,UAAMI,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACnCC,QAAAA,KAAK,EAAE,KAAKrB,MADuB;AAEnCI,QAAAA,aAAa,EAAE,KAAKF,cAFe;AAGnCoB,QAAAA,cAAc,EAAE,KAAKA,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CAHmB;AAInCC,QAAAA,sBAAsB,EAAE,KAAKA,sBAAL,CAA4BD,IAA5B,CAAiC,IAAjC,CAJW;AAKnCE,QAAAA,YAAY,EAAE;AACZC,UAAAA,GAAG,EAAE,KAAKC,WAAL,CAAiBJ,IAAjB,CAAsB,IAAtB,CADO;AAEZ,oBAAQ,KAAKK,aAAL,CAAmBL,IAAnB,CAAwB,IAAxB;AAFI,SALqB;AASnCM,QAAAA,kBAAkB,EAAE;AAClBH,UAAAA,GAAG,EAAE,KAAKI,WAAL,CAAiBP,IAAjB,CAAsB,IAAtB,CADa;AAElB,oBAAQ,KAAKQ,aAAL,CAAmBR,IAAnB,CAAwB,IAAxB;AAFU;AATe,OAA1B,CAAX;;AAcAS,2BAAS1B,MAAT,CAAgBW,EAAhB,EAAoB,IAApB;AACD;;;kDAxE8CgB,W;;;iCAA5BlC,mB,wBACS;AAAA,MAACsB,KAAD,uEAAS,EAAT;AAAA,yCACvBlB,qBAASkB,KADc,GAEvBA,KAFuB;AAAA,C","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 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 this.render();\n }\n\n set configuration(c) {\n this._configuration = c;\n this.render();\n }\n\n onModelChanged(m) {\n this._model = m;\n\n this.render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model, true));\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 ReactDOM.render(el, this);\n }\n}\n"],"file":"index.js"}
|
package/configure/lib/main.js
CHANGED
|
@@ -31,7 +31,7 @@ var _design = _interopRequireDefault(require("./design"));
|
|
|
31
31
|
|
|
32
32
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
33
33
|
|
|
34
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
34
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
35
35
|
|
|
36
36
|
var Main = /*#__PURE__*/function (_React$Component) {
|
|
37
37
|
(0, _inherits2["default"])(Main, _React$Component);
|
|
@@ -57,6 +57,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
57
57
|
className: (0, _classnames["default"])(classes.main, className)
|
|
58
58
|
}, /*#__PURE__*/_react["default"].createElement(_design["default"], {
|
|
59
59
|
imageSupport: this.props.imageSupport,
|
|
60
|
+
uploadSoundSupport: this.props.uploadSoundSupport,
|
|
60
61
|
title: "Design",
|
|
61
62
|
model: model,
|
|
62
63
|
configuration: configuration,
|
|
@@ -76,7 +77,8 @@ exports.Main = Main;
|
|
|
76
77
|
onConfigurationChanged: _propTypes["default"].func,
|
|
77
78
|
model: _propTypes["default"].object.isRequired,
|
|
78
79
|
onModelChanged: _propTypes["default"].func.isRequired,
|
|
79
|
-
imageSupport: _propTypes["default"].object
|
|
80
|
+
imageSupport: _propTypes["default"].object,
|
|
81
|
+
uploadSoundSupport: _propTypes["default"].object
|
|
80
82
|
});
|
|
81
83
|
(0, _defineProperty2["default"])(Main, "defaultProps", {});
|
|
82
84
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.jsx"],"names":["Main","props","classes","className","model","onModelChanged","configuration","onConfigurationChanged","main","imageSupport","React","Component","PropTypes","object","isRequired","string","func","styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,I;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/main.jsx"],"names":["Main","props","classes","className","model","onModelChanged","configuration","onConfigurationChanged","main","imageSupport","uploadSoundSupport","React","Component","PropTypes","object","isRequired","string","func","styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,I;;;;;;;;;;;;WAcX,kBAAS;AACP,wBAOI,KAAKC,KAPT;AAAA,UACEC,OADF,eACEA,OADF;AAAA,UAEEC,SAFF,eAEEA,SAFF;AAAA,UAGEC,KAHF,eAGEA,KAHF;AAAA,UAIEC,cAJF,eAIEA,cAJF;AAAA,UAKEC,aALF,eAKEA,aALF;AAAA,UAMEC,sBANF,eAMEA,sBANF;AASA,0BACE;AAAK,QAAA,SAAS,EAAE,4BAAWL,OAAO,CAACM,IAAnB,EAAyBL,SAAzB;AAAhB,sBACE,gCAAC,kBAAD;AACE,QAAA,YAAY,EAAE,KAAKF,KAAL,CAAWQ,YAD3B;AAEE,QAAA,kBAAkB,EAAE,KAAKR,KAAL,CAAWS,kBAFjC;AAGE,QAAA,KAAK,EAAC,QAHR;AAIE,QAAA,KAAK,EAAEN,KAJT;AAKE,QAAA,aAAa,EAAEE,aALjB;AAME,QAAA,QAAQ,EAAED,cANZ;AAOE,QAAA,sBAAsB,EAAEE;AAP1B,QADF,CADF;AAaD;;;EArCuBI,kBAAMC,S;;;iCAAnBZ,I,eACQ;AACjBE,EAAAA,OAAO,EAAEW,sBAAUC,MAAV,CAAiBC,UADT;AAEjBT,EAAAA,aAAa,EAAEO,sBAAUC,MAFR;AAGjBX,EAAAA,SAAS,EAAEU,sBAAUG,MAHJ;AAIjBT,EAAAA,sBAAsB,EAAEM,sBAAUI,IAJjB;AAKjBb,EAAAA,KAAK,EAAES,sBAAUC,MAAV,CAAiBC,UALP;AAMjBV,EAAAA,cAAc,EAAEQ,sBAAUI,IAAV,CAAeF,UANd;AAOjBN,EAAAA,YAAY,EAAEI,sBAAUC,MAPP;AAQjBJ,EAAAA,kBAAkB,EAAEG,sBAAUC;AARb,C;iCADRd,I,kBAYW,E;;AA2BxB,IAAMkB,MAAM,GAAG,SAATA,MAAS;AAAA,SAAO;AACpBV,IAAAA,IAAI,EAAE;AADc,GAAP;AAAA,CAAf;;eAIe,wBAAWU,MAAX,EAAmBlB,IAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\nimport Design from './design';\n\nexport class Main 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 onModelChanged: PropTypes.func.isRequired,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object\n };\n\n static defaultProps = {};\n\n render() {\n const {\n classes,\n className,\n model,\n onModelChanged,\n configuration,\n onConfigurationChanged\n } = this.props;\n\n return (\n <div className={classNames(classes.main, className)}>\n <Design\n imageSupport={this.props.imageSupport}\n uploadSoundSupport={this.props.uploadSoundSupport}\n title=\"Design\"\n model={model}\n configuration={configuration}\n onChange={onModelChanged}\n onConfigurationChanged={onConfigurationChanged}\n />\n </div>\n );\n }\n}\nconst styles = () => ({\n main: {}\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.generateValidationMessage = void 0;
|
|
7
|
+
|
|
8
|
+
var generateValidationMessage = function generateValidationMessage(config) {
|
|
9
|
+
var _ref = config || {},
|
|
10
|
+
minChoices = _ref.minChoices,
|
|
11
|
+
maxChoices = _ref.maxChoices,
|
|
12
|
+
maxCategories = _ref.maxCategories;
|
|
13
|
+
|
|
14
|
+
minChoices = minChoices || 1;
|
|
15
|
+
var validationMessage = '\nThe choices content should ' + 'not be empty and should be unique.\nThere should be at least 1 ' + (maxCategories ? "and at most ".concat(maxCategories, " ") : '') + 'category' + (maxCategories ? 's' : '') + ' defined.' + (minChoices ? "\nThere should be at least ".concat(minChoices, " choices defined.") : '') + (maxChoices ? "\nNo more than ".concat(maxChoices, " choices should be defined.") : '') + '\nAt least one token should be assigned to at least one category.';
|
|
16
|
+
return 'Validation requirements:' + validationMessage;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.generateValidationMessage = generateValidationMessage;
|
|
20
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.js"],"names":["generateValidationMessage","config","minChoices","maxChoices","maxCategories","validationMessage"],"mappings":";;;;;;;AAAO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,CAAAC,MAAM,EAAI;AACjD,aAAgDA,MAAM,IAAI,EAA1D;AAAA,MAAMC,UAAN,QAAMA,UAAN;AAAA,MAAkBC,UAAlB,QAAkBA,UAAlB;AAAA,MAA8BC,aAA9B,QAA8BA,aAA9B;;AACAF,EAAAA,UAAU,GAAGA,UAAU,IAAI,CAA3B;AAEA,MAAMG,iBAAiB,GAAG,kCACxB,iEADwB,IAEvBD,aAAa,yBAAkBA,aAAlB,SAAqC,EAF3B,IAGxB,UAHwB,IAGVA,aAAa,GAAG,GAAH,GAAS,EAHZ,IAGkB,WAHlB,IAIvBF,UAAU,wCAAiCA,UAAjC,yBAAiE,EAJpD,KAKvBC,UAAU,4BAAqBA,UAArB,mCAA+D,EALlD,IAMxB,mEANF;AAQA,SAAO,6BAA6BE,iBAApC;AACD,CAbM","sourcesContent":["export const generateValidationMessage = config => {\n let { minChoices, maxChoices, maxCategories } = config || {};\n minChoices = minChoices || 1;\n\n const validationMessage = '\\nThe choices content should ' +\n 'not be empty and should be unique.\\nThere should be at least 1 ' +\n (maxCategories ? `and at most ${maxCategories} ` : '') +\n 'category' + (maxCategories ? 's' : '') + ' defined.' +\n (minChoices ? `\\nThere should be at least ${minChoices} choices defined.` : '') +\n (maxChoices ? `\\nNo more than ${maxChoices} choices should be defined.` : '') +\n '\\nAt least one token should be assigned to at least one category.';\n\n return 'Validation requirements:' + validationMessage;\n};\n"],"file":"utils.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": "
|
|
6
|
+
"version": "6.1.0",
|
|
7
7
|
"description": "",
|
|
8
8
|
"scripts": {},
|
|
9
9
|
"author": "pie framework developers",
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@material-ui/core": "^3.9.2",
|
|
13
13
|
"@material-ui/icons": "^3.0.1",
|
|
14
|
-
"@pie-framework/pie-configure-events": "^1.
|
|
14
|
+
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
15
15
|
"@pie-lib/categorize": "^0.6.24",
|
|
16
|
-
"@pie-lib/config-ui": "^
|
|
16
|
+
"@pie-lib/config-ui": "^11.0.20",
|
|
17
17
|
"@pie-lib/drag": "^1.1.52",
|
|
18
|
-
"@pie-lib/editable-html": "^
|
|
19
|
-
"@pie-lib/render-ui": "^4.
|
|
18
|
+
"@pie-lib/editable-html": "^9.2.2",
|
|
19
|
+
"@pie-lib/render-ui": "^4.13.6",
|
|
20
20
|
"classnames": "^2.2.5",
|
|
21
21
|
"debug": "^3.1.0",
|
|
22
22
|
"lodash": "^4.17.15",
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,53 @@
|
|
|
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
|
+
## [5.2.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@5.2.7...@pie-element/categorize-controller@5.2.8) (2022-05-16)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/categorize-controller
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [5.2.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@5.2.2...@pie-element/categorize-controller@5.2.4) (2021-11-11)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @pie-element/categorize-controller
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [5.2.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@5.2.2...@pie-element/categorize-controller@5.2.3) (2021-11-11)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @pie-element/categorize-controller
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## [5.2.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@5.2.0...@pie-element/categorize-controller@5.2.2) (2021-08-05)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* force bump ([5ea7295](https://github.com/pie-framework/pie-elements/commit/5ea7295e4755fbc492a76e7ec69e5fc35b196919))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# [5.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@5.1.16...@pie-element/categorize-controller@5.2.0) (2021-06-29)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Features
|
|
45
|
+
|
|
46
|
+
* **categorize:** Changed draggable tokens to be sized according to their content PD-401 ([#609](https://github.com/pie-framework/pie-elements/issues/609)) ([e5ae5d5](https://github.com/pie-framework/pie-elements/commit/e5ae5d5db3188a8bd732048ee4b70761810815e5))
|
|
47
|
+
* Displayed a message when the item has one or more alternate answers - PD-167 ([#590](https://github.com/pie-framework/pie-elements/issues/590)) ([889d8b5](https://github.com/pie-framework/pie-elements/commit/889d8b578a915c997a95bd5cd4bdf18f53cc2b68))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
6
53
|
## [5.1.16](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-controller@5.1.13...@pie-element/categorize-controller@5.1.16) (2021-03-03)
|
|
7
54
|
|
|
8
55
|
**Note:** Version bump only for package @pie-element/categorize-controller
|
package/controller/lib/index.js
CHANGED
|
@@ -5,16 +5,19 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.outcome = exports.normalize = exports.model = exports.getTotalScore = exports.getPartialScore = exports.getCorrectness = exports.createDefaultModel = exports.createCorrectResponseSession = void 0;
|
|
8
9
|
Object.defineProperty(exports, "score", {
|
|
9
10
|
enumerable: true,
|
|
10
11
|
get: function get() {
|
|
11
12
|
return _categorize.score;
|
|
12
13
|
}
|
|
13
14
|
});
|
|
14
|
-
exports.
|
|
15
|
+
exports.validate = void 0;
|
|
15
16
|
|
|
16
17
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
17
18
|
|
|
19
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
20
|
+
|
|
18
21
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
19
22
|
|
|
20
23
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
@@ -29,9 +32,9 @@ var _controllerUtils = require("@pie-lib/controller-utils");
|
|
|
29
32
|
|
|
30
33
|
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
31
34
|
|
|
32
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
35
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
33
36
|
|
|
34
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
37
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
35
38
|
|
|
36
39
|
var getPartialScore = function getPartialScore(correctResponse, builtCategories) {
|
|
37
40
|
// in the resulted best scenario we make a sum with all the correct responses
|
|
@@ -174,7 +177,7 @@ exports.normalize = normalize;
|
|
|
174
177
|
var model = function model(question, session, env, updateSession) {
|
|
175
178
|
return new Promise( /*#__PURE__*/function () {
|
|
176
179
|
var _ref6 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(resolve) {
|
|
177
|
-
var normalizedQuestion, answerCorrectness, _ref7, mode, role, categories, categoriesPerRow, choicesLabel, choicesPosition, correctResponse, feedback, feedbackEnabled, promptEnabled, prompt, removeTilesAfterPlacing, rowLabels, rationaleEnabled, rationale, note, teacherInstructionsEnabled, teacherInstructions, choices, fb, lockChoiceOrder, alternates, out;
|
|
180
|
+
var normalizedQuestion, answerCorrectness, _ref7, mode, role, categories, categoriesPerRow, choicesLabel, choicesPosition, correctResponse, feedback, feedbackEnabled, promptEnabled, prompt, removeTilesAfterPlacing, rowLabels, rationaleEnabled, rationale, note, teacherInstructionsEnabled, teacherInstructions, choices, fb, lockChoiceOrder, filteredCorrectResponse, alternates, out;
|
|
178
181
|
|
|
179
182
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
180
183
|
while (1) {
|
|
@@ -190,32 +193,40 @@ var model = function model(question, session, env, updateSession) {
|
|
|
190
193
|
categories = normalizedQuestion.categories, categoriesPerRow = normalizedQuestion.categoriesPerRow, choicesLabel = normalizedQuestion.choicesLabel, choicesPosition = normalizedQuestion.choicesPosition, correctResponse = normalizedQuestion.correctResponse, feedback = normalizedQuestion.feedback, feedbackEnabled = normalizedQuestion.feedbackEnabled, promptEnabled = normalizedQuestion.promptEnabled, prompt = normalizedQuestion.prompt, removeTilesAfterPlacing = normalizedQuestion.removeTilesAfterPlacing, rowLabels = normalizedQuestion.rowLabels, rationaleEnabled = normalizedQuestion.rationaleEnabled, rationale = normalizedQuestion.rationale, note = normalizedQuestion.note, teacherInstructionsEnabled = normalizedQuestion.teacherInstructionsEnabled, teacherInstructions = normalizedQuestion.teacherInstructions;
|
|
191
194
|
choices = normalizedQuestion.choices;
|
|
192
195
|
lockChoiceOrder = (0, _controllerUtils.lockChoices)(normalizedQuestion, session, env);
|
|
196
|
+
filteredCorrectResponse = correctResponse.map(function (response) {
|
|
197
|
+
var filteredChoices = (response.choices || []).filter(function (choice) {
|
|
198
|
+
return choice !== 'null';
|
|
199
|
+
});
|
|
200
|
+
return _objectSpread(_objectSpread({}, response), {}, {
|
|
201
|
+
choices: filteredChoices
|
|
202
|
+
});
|
|
203
|
+
});
|
|
193
204
|
|
|
194
205
|
if (!(mode === 'evaluate' && feedbackEnabled)) {
|
|
195
|
-
_context.next =
|
|
206
|
+
_context.next = 13;
|
|
196
207
|
break;
|
|
197
208
|
}
|
|
198
209
|
|
|
199
|
-
_context.next =
|
|
210
|
+
_context.next = 12;
|
|
200
211
|
return (0, _feedback.getFeedbackForCorrectness)(answerCorrectness, feedback);
|
|
201
212
|
|
|
202
|
-
case
|
|
213
|
+
case 12:
|
|
203
214
|
fb = _context.sent;
|
|
204
215
|
|
|
205
|
-
case
|
|
216
|
+
case 13:
|
|
206
217
|
if (lockChoiceOrder) {
|
|
207
|
-
_context.next =
|
|
218
|
+
_context.next = 17;
|
|
208
219
|
break;
|
|
209
220
|
}
|
|
210
221
|
|
|
211
|
-
_context.next =
|
|
222
|
+
_context.next = 16;
|
|
212
223
|
return (0, _controllerUtils.getShuffledChoices)(choices, session, updateSession, 'id');
|
|
213
224
|
|
|
214
|
-
case
|
|
225
|
+
case 16:
|
|
215
226
|
choices = _context.sent;
|
|
216
227
|
|
|
217
|
-
case
|
|
218
|
-
alternates = getAlternates(
|
|
228
|
+
case 17:
|
|
229
|
+
alternates = getAlternates(filteredCorrectResponse);
|
|
219
230
|
out = {
|
|
220
231
|
categories: categories || [],
|
|
221
232
|
categoriesPerRow: categoriesPerRow || 2,
|
|
@@ -232,7 +243,7 @@ var model = function model(question, session, env, updateSession) {
|
|
|
232
243
|
note: note,
|
|
233
244
|
env: env,
|
|
234
245
|
showNote: alternates && alternates.length > 0,
|
|
235
|
-
correctResponse: mode === 'evaluate' ?
|
|
246
|
+
correctResponse: mode === 'evaluate' ? filteredCorrectResponse : undefined
|
|
236
247
|
};
|
|
237
248
|
|
|
238
249
|
if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {
|
|
@@ -245,7 +256,7 @@ var model = function model(question, session, env, updateSession) {
|
|
|
245
256
|
|
|
246
257
|
resolve(out);
|
|
247
258
|
|
|
248
|
-
case
|
|
259
|
+
case 21:
|
|
249
260
|
case "end":
|
|
250
261
|
return _context.stop();
|
|
251
262
|
}
|
|
@@ -295,4 +306,81 @@ var createCorrectResponseSession = function createCorrectResponseSession(questio
|
|
|
295
306
|
};
|
|
296
307
|
|
|
297
308
|
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
309
|
+
|
|
310
|
+
var validate = function validate() {
|
|
311
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
312
|
+
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
313
|
+
var categories = model.categories,
|
|
314
|
+
choices = model.choices,
|
|
315
|
+
correctResponse = model.correctResponse;
|
|
316
|
+
var _config$minChoices = config.minChoices,
|
|
317
|
+
minChoices = _config$minChoices === void 0 ? 1 : _config$minChoices,
|
|
318
|
+
maxChoices = config.maxChoices,
|
|
319
|
+
maxCategories = config.maxCategories;
|
|
320
|
+
var reversedChoices = (0, _toConsumableArray2["default"])(choices || []).reverse();
|
|
321
|
+
var errors = {};
|
|
322
|
+
var choicesErrors = {};
|
|
323
|
+
reversedChoices.forEach(function (choice, index) {
|
|
324
|
+
var id = choice.id,
|
|
325
|
+
content = choice.content;
|
|
326
|
+
|
|
327
|
+
if (content === '' || content === '<div></div>') {
|
|
328
|
+
choicesErrors[id] = 'Content should not be empty.';
|
|
329
|
+
} else {
|
|
330
|
+
var identicalAnswer = reversedChoices.slice(index + 1).some(function (c) {
|
|
331
|
+
return c.content === content;
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
if (identicalAnswer) {
|
|
335
|
+
choicesErrors[id] = 'Content should be unique.';
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
var nbOfCategories = (categories || []).length;
|
|
340
|
+
var nbOfChoices = (choices || []).length;
|
|
341
|
+
|
|
342
|
+
if (nbOfCategories > maxCategories) {
|
|
343
|
+
errors.categoriesError = "No more than ".concat(maxCategories, " categories should be defined.");
|
|
344
|
+
} else if (nbOfCategories < 1) {
|
|
345
|
+
errors.categoriesError = 'There should be at least 1 category defined.';
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
if (nbOfChoices < minChoices) {
|
|
349
|
+
errors.choicesError = "There should be at least ".concat(minChoices, " choices defined.");
|
|
350
|
+
} else if (nbOfChoices > maxChoices) {
|
|
351
|
+
errors.choicesError = "No more than ".concat(maxChoices, " choices should be defined.");
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
if (nbOfChoices && nbOfCategories) {
|
|
355
|
+
var hasAssociations = false;
|
|
356
|
+
(correctResponse || []).forEach(function (response) {
|
|
357
|
+
var _response$choices = response.choices,
|
|
358
|
+
choices = _response$choices === void 0 ? [] : _response$choices,
|
|
359
|
+
_response$alternateRe = response.alternateResponses,
|
|
360
|
+
alternateResponses = _response$alternateRe === void 0 ? [] : _response$alternateRe;
|
|
361
|
+
|
|
362
|
+
if (choices.length) {
|
|
363
|
+
hasAssociations = true;
|
|
364
|
+
} else {
|
|
365
|
+
alternateResponses.forEach(function (alternate) {
|
|
366
|
+
if ((alternate || []).length) {
|
|
367
|
+
hasAssociations = true;
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
if (!hasAssociations) {
|
|
374
|
+
errors.associationError = 'At least one token should be assigned to at least one category.';
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
if (!(0, _isEmpty["default"])(choicesErrors)) {
|
|
379
|
+
errors.choicesErrors = choicesErrors;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
return errors;
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
exports.validate = validate;
|
|
298
386
|
//# sourceMappingURL=index.js.map
|