@pie-element/categorize 12.2.0-next.0 → 12.2.0-next.2

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 CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [12.2.0-next.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@12.2.0-next.1...@pie-element/categorize@12.2.0-next.2) (2026-03-25)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **categorize:** unset margin for p in case of editor two lines PD-5669 ([4c774c5](https://github.com/pie-framework/pie-elements/commit/4c774c597288dea51118c6c16bc0951b0f744584))
11
+ - **categorize:** add tests for new onDrag extension, handle invalid target student PD-5514 ([6b6d151](https://github.com/pie-framework/pie-elements/commit/6b6d151a73d93199e57a08690ff4dfefe0189bc2))
12
+ - **categorize:** handle drag targets correctly PD-5514 ([34a4c98](https://github.com/pie-framework/pie-elements/commit/34a4c982b26f534eee21d800387761138aa0be8d))
13
+ - **categorize:** set back needed props PD-5669 ([9e2fe48](https://github.com/pie-framework/pie-elements/commit/9e2fe488118c04a2c0afd1360e7220a82e5ed7a9))
14
+ - **categorize:** set back old model from docs PD-5514 ([d08c28f](https://github.com/pie-framework/pie-elements/commit/d08c28fdc1aead7a4ed58a79309177467f1cacd0))
15
+
16
+ # [12.2.0-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@12.2.0-next.0...@pie-element/categorize@12.2.0-next.1) (2026-03-19)
17
+
18
+ ### Features
19
+
20
+ - bump libs PD-5669, PD-5530, PD-5496,PD-5501, PD-5790, PD-5622, PD-5811, PD-5590, PD-5510 ([1c7cfc4](https://github.com/pie-framework/pie-elements/commit/1c7cfc4ea91dfd631b9e2ca23810b65a4a4585cf))
21
+
6
22
  # [12.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize@12.1.2-next.5...@pie-element/categorize@12.2.0-next.0) (2026-03-18)
7
23
 
8
24
  ### Features
@@ -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
+ # [10.2.0-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@10.2.0-next.0...@pie-element/categorize-configure@10.2.0-next.1) (2026-03-25)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **categorize:** add tests for new onDrag extension, handle invalid target student PD-5514 ([6b6d151](https://github.com/pie-framework/pie-elements/commit/6b6d151a73d93199e57a08690ff4dfefe0189bc2))
11
+ - **categorize:** handle drag targets correctly PD-5514 ([34a4c98](https://github.com/pie-framework/pie-elements/commit/34a4c982b26f534eee21d800387761138aa0be8d))
12
+
13
+ # [10.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@10.1.1-next.4...@pie-element/categorize-configure@10.2.0-next.0) (2026-03-19)
14
+
15
+ ### Features
16
+
17
+ - bump libs PD-5669, PD-5530, PD-5496,PD-5501, PD-5790, PD-5622, PD-5811, PD-5590, PD-5510 ([1c7cfc4](https://github.com/pie-framework/pie-elements/commit/1c7cfc4ea91dfd631b9e2ca23810b65a4a4585cf))
18
+
6
19
  ## [10.1.1-next.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/categorize-configure@10.1.1-next.3...@pie-element/categorize-configure@10.1.1-next.4) (2026-03-12)
7
20
 
8
21
  ### Bug Fixes
@@ -211,57 +211,70 @@ class Design extends _react.default.Component {
211
211
  activeDragItem: draggedItem
212
212
  });
213
213
  });
214
- (0, _defineProperty2.default)(this, "onDragEnd", event => {
215
- const {
216
- active,
217
- over
218
- } = event;
214
+ (0, _defineProperty2.default)(this, "onDragEnd", ({
215
+ active,
216
+ over
217
+ }) => {
219
218
  this.setState({
220
219
  activeDragItem: null
221
220
  });
222
- if (!over || !active) {
223
- return;
224
- }
221
+ if (!active) return;
225
222
  const {
226
223
  model
227
224
  } = this.props;
228
225
  const {
229
- allowAlternateEnabled
226
+ allowAlternateEnabled,
227
+ categories = [],
228
+ choices = []
230
229
  } = model;
231
- const activeData = active.data.current;
232
- const overData = over.data.current;
233
-
234
- // moving a choice between categories (correct response)
235
- if (activeData.type === 'choice-preview' && overData.type === 'category') {
236
- // Extract original choice.id - if DraggableChoice uses the unique id in data, extract the first part
237
- // Format: ${choice.id}-${categoryId}-${choiceIndex} or ${choice.id}-${categoryId}-${choiceIndex}-alt-${alternateResponseIndex}
238
- const choiceId = activeData.choice?.id || (typeof activeData.id === 'string' ? activeData.id.split('-')[0] : activeData.id);
239
- this.moveChoice(choiceId, activeData.categoryId, overData.id, activeData.choiceIndex || 0);
230
+ const activeData = active?.data?.current;
231
+ const overData = over?.data?.current;
232
+ if (!activeData) return;
233
+ const choiceIndex = activeData.choiceIndex || 0;
234
+ const overType = overData?.type;
235
+ const isPreview = activeData.type === 'choice-preview';
236
+ const isNewChoice = activeData.type === 'choice';
237
+ const choiceId = activeData.choice?.id || (typeof activeData.id === 'string' ? activeData.id.split('-')[0] : activeData.id);
238
+ if (isPreview && (!overData || overType === 'choice')) {
239
+ this.removeChoiceFromSource(activeData, choiceIndex, {
240
+ allowAlternateEnabled,
241
+ categories,
242
+ choices
243
+ });
244
+ return;
240
245
  }
241
-
242
- // placing a choice into a category (correct response)
243
- if (activeData.type === 'choice' && overData.type === 'category') {
244
- this.addChoiceToCategory({
246
+ if (isPreview && overType === 'category') {
247
+ return this.moveChoice(choiceId, activeData.categoryId, overData.id, choiceIndex);
248
+ }
249
+ if (isNewChoice && overType === 'category') {
250
+ return this.addChoiceToCategory({
245
251
  id: activeData.id
246
252
  }, overData.id);
247
253
  }
248
-
249
- // moving a choice between categories (alternate response)
250
- if (activeData.type === 'choice-preview' && overData.type === 'category-alternate') {
251
- const toAlternateIndex = overData.alternateResponseIndex;
252
- // Extract original choice.id - if DraggableChoice uses the unique id in data, extract the first part
253
- const choiceId = activeData.choice?.id || (typeof activeData.id === 'string' ? activeData.id.split('-')[0] : activeData.id);
254
- this.moveChoiceInAlternate(choiceId, activeData.categoryId, overData.id, activeData.choiceIndex || 0, toAlternateIndex);
254
+ if (isPreview && overType === 'category-alternate') {
255
+ return this.moveChoiceInAlternate(choiceId, activeData.categoryId, overData.id, choiceIndex, overData.alternateResponseIndex);
255
256
  }
256
-
257
- // placing a choice into a category (alternate response)
258
- if (allowAlternateEnabled && activeData.type === 'choice' && overData.type === 'category-alternate') {
259
- const choiceId = activeData.id;
260
- const categoryId = overData.id;
261
- const toAlternateResponseIndex = overData.alternateResponseIndex;
262
- this.addChoiceToAlternateCategory({
263
- id: choiceId
264
- }, categoryId, toAlternateResponseIndex);
257
+ if (allowAlternateEnabled && isNewChoice && overType === 'category-alternate') {
258
+ return this.addChoiceToAlternateCategory({
259
+ id: activeData.id
260
+ }, overData.id, overData.alternateResponseIndex);
261
+ }
262
+ });
263
+ (0, _defineProperty2.default)(this, "removeChoiceFromSource", (activeData, choiceIndex, {
264
+ allowAlternateEnabled,
265
+ categories,
266
+ choices
267
+ }) => {
268
+ const isAlternateSource = activeData.alternateResponseIndex !== undefined;
269
+ if (!isAlternateSource) {
270
+ this.deleteChoiceFromCategory(activeData.categoryId, activeData.choiceId, choiceIndex);
271
+ return;
272
+ }
273
+ if (!allowAlternateEnabled) return;
274
+ const category = categories?.find(c => c.id === activeData.categoryId);
275
+ const choice = choices?.find(c => c.id === activeData.choiceId);
276
+ if (category && choice) {
277
+ this.deleteChoiceFromAlternateCategory(category, choice, choiceIndex, activeData.alternateResponseIndex);
265
278
  }
266
279
  });
267
280
  (0, _defineProperty2.default)(this, "addChoiceToCategory", (addedChoice, categoryId) => {
@@ -284,11 +297,11 @@ class Design extends _react.default.Component {
284
297
  maxChoicesPerCategory: maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices ? maxChoicesPerCategory + 1 : maxChoicesPerCategory
285
298
  });
286
299
  });
287
- (0, _defineProperty2.default)(this, "deleteChoiceFromCategory", (category, choice, choiceIndex) => {
300
+ (0, _defineProperty2.default)(this, "deleteChoiceFromCategory", (categoryId, choiceId, choiceIndex) => {
288
301
  const {
289
302
  model
290
303
  } = this.props;
291
- const correctResponse = (0, _categorize.removeChoiceFromCategory)(choice.id, category.id, choiceIndex, model.correctResponse);
304
+ const correctResponse = (0, _categorize.removeChoiceFromCategory)(choiceId, categoryId, choiceIndex, model.correctResponse);
292
305
  this.updateModel({
293
306
  correctResponse
294
307
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_utils","require","_react","_interopRequireDefault","_propTypes","_styles","_core","_configUi","_categorize","_editableHtmlTipTap","_drag","_mathRendering","_categories","_alternateResponses","_choices","_choice","_choicePreview","_builder","_header","_utils2","_translator","translator","Translator","dropdown","Panel","toggle","radio","numberField","settings","Provider","IdProvider","uid","DragPreviewWrapper","React","Component","constructor","args","_defineProperty2","default","createRef","componentDidMount","containerRef","current","setTimeout","renderMath","render","createElement","ref","props","children","StyledHeader","styled","Header","theme","marginBottom","spacing","StyledInputContainer","InputContainer","width","paddingTop","ErrorText","fontSize","typography","color","palette","error","main","Design","model","onChange","updatedModel","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","ensureNoExtraChoicesInAnswer","ensureNoExtraChoicesInAlternate","categories","id","label","h","content","maxChoicesPerCategory","allowMaxChoicesPerCategory","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","countInAnswer","allowMultiplePlacements","multiplePlacements","enabled","disabled","maxChoices","getMaxCategoryChoices","event","active","draggedItem","data","setState","activeDragItem","over","allowAlternateEnabled","activeData","overData","type","choiceId","split","moveChoice","categoryId","choiceIndex","addChoiceToCategory","toAlternateIndex","alternateResponseIndex","moveChoiceInAlternate","toAlternateResponseIndex","addChoiceToAlternateCategory","addedChoice","find","newCorrectResponse","moveChoiceToCategory","undefined","verifyAllowMultiplePlacements","maxCategoryChoices","category","removeChoiceFromCategory","from","to","forEach","a","push","reduce","acc","currentValue","foundIndex","findIndex","alternateIndex","moveChoiceToAlternate","removeChoiceFromAlternate","state","configuration","generateId","imageSupport","uploadSoundSupport","onConfigurationChanged","allowAlternate","baseInputConfiguration","categoriesPerRow","choicesPosition","contentDimensions","lockChoiceOrder","maxImageHeight","maxImageWidth","maxPlacements","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","mathMlOptions","language","languageChoices","allowMaxAnswerChoices","errors","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","extraCSSRules","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","config","columns","buildCategories","buildAlternateResponses","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","maxAnswerChoices","length","options","panelProperties","studentInstructionsEnabled","rubricEnabled","isOpened","isAlertModalOpened","alertMaxChoicesMsg","t","lng","DragProvider","onDragStart","onDragEnd","value","layout","ConfigLayout","dimensions","hideSettings","onChangeModel","onChangeConfiguration","groups","Settings","Properties","modal","AlertDialog","title","text","open","onClose","onAlertModalCancel","markup","changeTeacherInstructions","nonEmpty","pluginProps","getPluginProps","inputConfiguration","languageCharactersProps","onPromptChanged","disableUnderline","onModelChanged","buttonLabel","onAdd","onAddAlternateResponse","categoriesList","Fragment","key","variant","onRemoveAlternateResponse","changeRationale","FeedbackConfig","changeFeedback","DragOverlay","renderDragOverlay","exports","PropTypes","object","className","string","func","isRequired","shape","add","delete","_default"],"sources":["../../src/design/index.jsx"],"sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { DragOverlay } from '@dnd-kit/core';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n ensureNoExtraChoicesInAlternate,\n moveChoiceToCategory,\n moveChoiceToAlternate,\n removeChoiceFromCategory,\n removeChoiceFromAlternate,\n verifyAllowMultiplePlacements,\n} from '@pie-lib/categorize';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { DragProvider, uid } from '@pie-lib/drag';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport Choice from './choices/choice';\nimport ChoicePreview from './categories/choice-preview';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { getMaxCategoryChoices, multiplePlacements } from '../utils';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\n// Simple wrapper to render math in DragOverlay portal\nclass DragPreviewWrapper extends React.Component {\n containerRef = React.createRef();\n\n componentDidMount() {\n if (this.containerRef.current) {\n setTimeout(() => renderMath(this.containerRef.current), 0);\n }\n }\n\n render() {\n return <div ref={this.containerRef}>{this.props.children}</div>;\n }\n}\n\nconst StyledHeader = styled(Header)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst StyledInputContainer = styled(InputContainer)(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nexport class Design extends React.Component {\n static propTypes = {\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 this.state = {\n activeDragItem: null,\n };\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 onDragStart = (event) => {\n const { active } = event;\n const draggedItem = active.data.current;\n\n this.setState({\n activeDragItem: draggedItem,\n });\n };\n\n onDragEnd = (event) => {\n const { active, over } = event;\n\n this.setState({ activeDragItem: null });\n\n if (!over || !active) {\n return;\n }\n\n const { model } = this.props;\n const { allowAlternateEnabled } = model;\n const activeData = active.data.current;\n const overData = over.data.current;\n\n // moving a choice between categories (correct response)\n if (activeData.type === 'choice-preview' && overData.type === 'category') {\n // Extract original choice.id - if DraggableChoice uses the unique id in data, extract the first part\n // Format: ${choice.id}-${categoryId}-${choiceIndex} or ${choice.id}-${categoryId}-${choiceIndex}-alt-${alternateResponseIndex}\n const choiceId =\n activeData.choice?.id || (typeof activeData.id === 'string' ? activeData.id.split('-')[0] : activeData.id);\n this.moveChoice(choiceId, activeData.categoryId, overData.id, activeData.choiceIndex || 0);\n }\n\n // placing a choice into a category (correct response)\n if (activeData.type === 'choice' && overData.type === 'category') {\n this.addChoiceToCategory({ id: activeData.id }, overData.id);\n }\n\n // moving a choice between categories (alternate response)\n if (activeData.type === 'choice-preview' && overData.type === 'category-alternate') {\n const toAlternateIndex = overData.alternateResponseIndex;\n // Extract original choice.id - if DraggableChoice uses the unique id in data, extract the first part\n const choiceId =\n activeData.choice?.id || (typeof activeData.id === 'string' ? activeData.id.split('-')[0] : activeData.id);\n this.moveChoiceInAlternate(\n choiceId,\n activeData.categoryId,\n overData.id,\n activeData.choiceIndex || 0,\n toAlternateIndex,\n );\n }\n\n // placing a choice into a category (alternate response)\n if (allowAlternateEnabled && activeData.type === 'choice' && overData.type === 'category-alternate') {\n const choiceId = activeData.id;\n const categoryId = overData.id;\n const toAlternateResponseIndex = overData.alternateResponseIndex;\n this.addChoiceToAlternateCategory({ id: choiceId }, categoryId, toAlternateResponseIndex);\n }\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const { model } = this.props;\n let { choices = [], correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === addedChoice.id);\n\n let newCorrectResponse = moveChoiceToCategory(addedChoice.id, undefined, categoryId, 0, correctResponse);\n\n if (choice.categoryCount !== 0) {\n newCorrectResponse = verifyAllowMultiplePlacements(addedChoice, categoryId, newCorrectResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n\n this.updateModel({\n correctResponse: newCorrectResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (category, choice, choiceIndex) => {\n const { model } = this.props;\n const correctResponse = removeChoiceFromCategory(choice.id, category.id, choiceIndex, model.correctResponse);\n\n this.updateModel({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex) => {\n const { model } = 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 this.updateModel({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n // methods for alternate responses\n addChoiceToAlternateCategory = (addedChoice, categoryId, altIndex) => {\n const { model } = this.props;\n const { correctResponse, choices, maxChoicesPerCategory = 0 } = model;\n\n const choice = choices.find((c) => c.id === addedChoice.id);\n\n correctResponse.forEach((a) => {\n if (a.category === categoryId) {\n a.alternateResponses = a.alternateResponses || [];\n\n if (a.alternateResponses[altIndex] === undefined) {\n a.alternateResponses[altIndex] = [];\n }\n\n a.alternateResponses[altIndex].push(addedChoice.id);\n if (choice.categoryCount && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].reduce((acc, currentValue) => {\n if (currentValue === choice.id) {\n const foundIndex = acc.findIndex((c) => c === choice.id);\n if (foundIndex === -1) {\n acc.push(currentValue);\n }\n } else {\n acc.push(currentValue);\n }\n\n return acc;\n }, []);\n }\n\n return a;\n } else {\n if (a.alternateResponses[altIndex] && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((c) => c !== addedChoice.id);\n return a;\n }\n }\n\n return a;\n });\n\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n this.updateModel({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n moveChoiceInAlternate = (choiceId, from, to, choiceIndex, alternateIndex) => {\n const { model } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n correctResponse = moveChoiceToAlternate(\n choiceId,\n from,\n to,\n choiceIndex,\n correctResponse,\n alternateIndex,\n choice?.categoryCount,\n );\n\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n this.updateModel({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromAlternateCategory = (category, choice, choiceIndex, altIndex) => {\n const { model } = this.props;\n\n const correctResponse = removeChoiceFromAlternate(\n choice.id,\n category.id,\n choiceIndex,\n altIndex,\n model.correctResponse,\n );\n\n this.updateModel({ correctResponse });\n };\n\n renderDragOverlay = () => {\n const { activeDragItem } = this.state;\n const { model, configuration } = this.props;\n\n if (!activeDragItem) return null;\n\n if (activeDragItem.type === 'choice') {\n const choice = model.choices?.find((c) => c.id === activeDragItem.id);\n if (!choice) return null;\n\n return <Choice choice={choice} configuration={configuration} />;\n } else if (activeDragItem.type === 'choice-preview' && activeDragItem.alternateResponseIndex === undefined) {\n const choice = model.choices?.find((c) => c.id === activeDragItem.id);\n if (!choice) return null;\n return <ChoicePreview choice={choice} />;\n } else if (activeDragItem.type === 'choice-preview' && activeDragItem.alternateResponseIndex !== undefined) {\n const choice = model.choices?.find((c) => c.id === activeDragItem.id);\n if (!choice) return null;\n return <ChoicePreview choice={choice} alternateResponseIndex={activeDragItem.alternateResponseIndex} />;\n }\n\n return null;\n };\n\n render() {\n const { 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 extraCSSRules,\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:\n allowMaxAnswerChoices.settings &&\n 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 <DragProvider onDragStart={this.onDragStart} onDragEnd={this.onDragEnd}>\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\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 <StyledInputContainer label={teacherInstructions.label}>\n <EditableHtml\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 && <ErrorText>{teacherInstructionsError}</ErrorText>}\n </StyledInputContainer>\n )}\n\n {promptEnabled && (\n <StyledInputContainer label={prompt.label}>\n <EditableHtml\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 && <ErrorText>{promptError}</ErrorText>}\n </StyledInputContainer>\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 <StyledHeader\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 <StyledHeader\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 mathMlOptions={mathMlOptions}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <StyledInputContainer label={rationale.label}>\n <EditableHtml\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 && <ErrorText>{rationaleError}</ErrorText>}\n </StyledInputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n <DragOverlay>\n <DragPreviewWrapper>{this.renderDragOverlay()}</DragPreviewWrapper>\n </DragOverlay>\n </IdProvider>\n </DragProvider>\n );\n }\n}\n\nexport default Design;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_utils","require","_react","_interopRequireDefault","_propTypes","_styles","_core","_configUi","_categorize","_editableHtmlTipTap","_drag","_mathRendering","_categories","_alternateResponses","_choices","_choice","_choicePreview","_builder","_header","_utils2","_translator","translator","Translator","dropdown","Panel","toggle","radio","numberField","settings","Provider","IdProvider","uid","DragPreviewWrapper","React","Component","constructor","args","_defineProperty2","default","createRef","componentDidMount","containerRef","current","setTimeout","renderMath","render","createElement","ref","props","children","StyledHeader","styled","Header","theme","marginBottom","spacing","StyledInputContainer","InputContainer","width","paddingTop","ErrorText","fontSize","typography","color","palette","error","main","Design","model","onChange","updatedModel","choices","map","c","categoryCount","checkAllowMultiplePlacements","allowMultiplePlacementsEnabled","correctResponse","ensureNoExtraChoicesInAnswer","ensureNoExtraChoicesInAlternate","categories","id","label","h","content","maxChoicesPerCategory","allowMaxChoicesPerCategory","rationale","teacherInstructions","feedback","updateModel","cr","alternateResponses","prompt","index","filter","alt","altIndex","choice","countInAnswer","allowMultiplePlacements","multiplePlacements","enabled","disabled","maxChoices","getMaxCategoryChoices","event","active","draggedItem","data","setState","activeDragItem","over","allowAlternateEnabled","activeData","overData","choiceIndex","overType","type","isPreview","isNewChoice","choiceId","split","removeChoiceFromSource","moveChoice","categoryId","addChoiceToCategory","moveChoiceInAlternate","alternateResponseIndex","addChoiceToAlternateCategory","isAlternateSource","undefined","deleteChoiceFromCategory","category","find","deleteChoiceFromAlternateCategory","addedChoice","newCorrectResponse","moveChoiceToCategory","verifyAllowMultiplePlacements","maxCategoryChoices","removeChoiceFromCategory","from","to","forEach","a","push","reduce","acc","currentValue","foundIndex","findIndex","alternateIndex","moveChoiceToAlternate","removeChoiceFromAlternate","state","configuration","generateId","imageSupport","uploadSoundSupport","onConfigurationChanged","allowAlternate","baseInputConfiguration","categoriesPerRow","choicesPosition","contentDimensions","lockChoiceOrder","maxImageHeight","maxImageWidth","maxPlacements","minCategoriesPerRow","partialScoring","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","withRubric","mathMlOptions","language","languageChoices","allowMaxAnswerChoices","errors","feedbackEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","extraCSSRules","promptError","rationaleError","teacherInstructionsError","toolbarOpts","position","config","columns","buildCategories","buildAlternateResponses","correctResponseCount","countChoiceInCorrectResponse","defaultImageMaxWidth","defaultImageMaxHeight","panelSettings","min","max","perChoice","maxAnswerChoices","length","options","panelProperties","studentInstructionsEnabled","rubricEnabled","isOpened","isAlertModalOpened","alertMaxChoicesMsg","t","lng","DragProvider","onDragStart","onDragEnd","value","layout","ConfigLayout","dimensions","hideSettings","onChangeModel","onChangeConfiguration","groups","Settings","Properties","modal","AlertDialog","title","text","open","onClose","onAlertModalCancel","markup","changeTeacherInstructions","nonEmpty","pluginProps","getPluginProps","inputConfiguration","languageCharactersProps","onPromptChanged","disableUnderline","onModelChanged","buttonLabel","onAdd","onAddAlternateResponse","categoriesList","Fragment","key","variant","onRemoveAlternateResponse","changeRationale","FeedbackConfig","changeFeedback","DragOverlay","renderDragOverlay","exports","PropTypes","object","className","string","func","isRequired","shape","add","delete","_default"],"sources":["../../src/design/index.jsx"],"sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { DragOverlay } from '@dnd-kit/core';\nimport { FeedbackConfig, InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport {\n countInAnswer,\n ensureNoExtraChoicesInAnswer,\n ensureNoExtraChoicesInAlternate,\n moveChoiceToCategory,\n moveChoiceToAlternate,\n removeChoiceFromCategory,\n removeChoiceFromAlternate,\n verifyAllowMultiplePlacements,\n} from '@pie-lib/categorize';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { DragProvider, uid } from '@pie-lib/drag';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nimport Categories from './categories';\nimport AlternateResponses from './categories/alternateResponses';\nimport Choices from './choices';\nimport Choice from './choices/choice';\nimport ChoicePreview from './categories/choice-preview';\nimport { buildAlternateResponses, buildCategories } from './builder';\nimport Header from './header';\nimport { getMaxCategoryChoices, multiplePlacements } from '../utils';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\nconst { dropdown, Panel, toggle, radio, numberField } = settings;\nconst { Provider: IdProvider } = uid;\n\n// Simple wrapper to render math in DragOverlay portal\nclass DragPreviewWrapper extends React.Component {\n containerRef = React.createRef();\n\n componentDidMount() {\n if (this.containerRef.current) {\n setTimeout(() => renderMath(this.containerRef.current), 0);\n }\n }\n\n render() {\n return <div ref={this.containerRef}>{this.props.children}</div>;\n }\n}\n\nconst StyledHeader = styled(Header)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst StyledInputContainer = styled(InputContainer)(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nexport class Design extends React.Component {\n static propTypes = {\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 this.state = {\n activeDragItem: null,\n };\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 onDragStart = (event) => {\n const { active } = event;\n const draggedItem = active.data.current;\n\n this.setState({\n activeDragItem: draggedItem,\n });\n };\n\n onDragEnd = ({ active, over }) => {\n this.setState({ activeDragItem: null });\n if (!active) return;\n\n const { model } = this.props;\n const { allowAlternateEnabled, categories = [], choices = [] } = model;\n\n const activeData = active?.data?.current;\n const overData = over?.data?.current;\n\n if (!activeData) return;\n\n const choiceIndex = activeData.choiceIndex || 0;\n const overType = overData?.type;\n const isPreview = activeData.type === 'choice-preview';\n const isNewChoice = activeData.type === 'choice';\n\n const choiceId =\n activeData.choice?.id || (typeof activeData.id === 'string' ? activeData.id.split('-')[0] : activeData.id);\n\n if (isPreview && (!overData || overType === 'choice')) {\n this.removeChoiceFromSource(activeData, choiceIndex, { allowAlternateEnabled, categories, choices });\n return;\n }\n\n if (isPreview && overType === 'category') {\n return this.moveChoice(choiceId, activeData.categoryId, overData.id, choiceIndex);\n }\n\n if (isNewChoice && overType === 'category') {\n return this.addChoiceToCategory({ id: activeData.id }, overData.id);\n }\n\n if (isPreview && overType === 'category-alternate') {\n return this.moveChoiceInAlternate(\n choiceId,\n activeData.categoryId,\n overData.id,\n choiceIndex,\n overData.alternateResponseIndex,\n );\n }\n\n if (allowAlternateEnabled && isNewChoice && overType === 'category-alternate') {\n return this.addChoiceToAlternateCategory({ id: activeData.id }, overData.id, overData.alternateResponseIndex);\n }\n };\n\n removeChoiceFromSource = (activeData, choiceIndex, { allowAlternateEnabled, categories, choices }) => {\n const isAlternateSource = activeData.alternateResponseIndex !== undefined;\n\n if (!isAlternateSource) {\n this.deleteChoiceFromCategory(activeData.categoryId, activeData.choiceId, choiceIndex);\n return;\n }\n\n if (!allowAlternateEnabled) return;\n\n const category = categories?.find((c) => c.id === activeData.categoryId);\n const choice = choices?.find((c) => c.id === activeData.choiceId);\n\n if (category && choice) {\n this.deleteChoiceFromAlternateCategory(category, choice, choiceIndex, activeData.alternateResponseIndex);\n }\n };\n\n addChoiceToCategory = (addedChoice, categoryId) => {\n const { model } = this.props;\n let { choices = [], correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === addedChoice.id);\n\n let newCorrectResponse = moveChoiceToCategory(addedChoice.id, undefined, categoryId, 0, correctResponse);\n\n if (choice.categoryCount !== 0) {\n newCorrectResponse = verifyAllowMultiplePlacements(addedChoice, categoryId, newCorrectResponse);\n }\n const maxCategoryChoices = getMaxCategoryChoices(model);\n\n this.updateModel({\n correctResponse: newCorrectResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromCategory = (categoryId, choiceId, choiceIndex) => {\n const { model } = this.props;\n const correctResponse = removeChoiceFromCategory(choiceId, categoryId, choiceIndex, model.correctResponse);\n\n this.updateModel({ correctResponse });\n };\n\n moveChoice = (choiceId, from, to, choiceIndex) => {\n const { model } = 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 this.updateModel({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n // methods for alternate responses\n addChoiceToAlternateCategory = (addedChoice, categoryId, altIndex) => {\n const { model } = this.props;\n const { correctResponse, choices, maxChoicesPerCategory = 0 } = model;\n\n const choice = choices.find((c) => c.id === addedChoice.id);\n\n correctResponse.forEach((a) => {\n if (a.category === categoryId) {\n a.alternateResponses = a.alternateResponses || [];\n\n if (a.alternateResponses[altIndex] === undefined) {\n a.alternateResponses[altIndex] = [];\n }\n\n a.alternateResponses[altIndex].push(addedChoice.id);\n if (choice.categoryCount && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].reduce((acc, currentValue) => {\n if (currentValue === choice.id) {\n const foundIndex = acc.findIndex((c) => c === choice.id);\n if (foundIndex === -1) {\n acc.push(currentValue);\n }\n } else {\n acc.push(currentValue);\n }\n\n return acc;\n }, []);\n }\n\n return a;\n } else {\n if (a.alternateResponses[altIndex] && choice.categoryCount !== 0) {\n a.alternateResponses[altIndex] = a.alternateResponses[altIndex].filter((c) => c !== addedChoice.id);\n return a;\n }\n }\n\n return a;\n });\n\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n this.updateModel({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n moveChoiceInAlternate = (choiceId, from, to, choiceIndex, alternateIndex) => {\n const { model } = this.props;\n let { choices, correctResponse = [], maxChoicesPerCategory = 0 } = model || {};\n const choice = (choices || []).find((choice) => choice.id === choiceId);\n correctResponse = moveChoiceToAlternate(\n choiceId,\n from,\n to,\n choiceIndex,\n correctResponse,\n alternateIndex,\n choice?.categoryCount,\n );\n\n const maxCategoryChoices = getMaxCategoryChoices(model);\n // when maxChoicesPerCategory is set to 0, there is no limit so it should not be updated\n this.updateModel({\n correctResponse,\n maxChoicesPerCategory:\n maxChoicesPerCategory !== 0 && maxChoicesPerCategory < maxCategoryChoices\n ? maxChoicesPerCategory + 1\n : maxChoicesPerCategory,\n });\n };\n\n deleteChoiceFromAlternateCategory = (category, choice, choiceIndex, altIndex) => {\n const { model } = this.props;\n\n const correctResponse = removeChoiceFromAlternate(\n choice.id,\n category.id,\n choiceIndex,\n altIndex,\n model.correctResponse,\n );\n\n this.updateModel({ correctResponse });\n };\n\n renderDragOverlay = () => {\n const { activeDragItem } = this.state;\n const { model, configuration } = this.props;\n\n if (!activeDragItem) return null;\n\n if (activeDragItem.type === 'choice') {\n const choice = model.choices?.find((c) => c.id === activeDragItem.id);\n if (!choice) return null;\n\n return <Choice choice={choice} configuration={configuration} />;\n } else if (activeDragItem.type === 'choice-preview' && activeDragItem.alternateResponseIndex === undefined) {\n const choice = model.choices?.find((c) => c.id === activeDragItem.id);\n if (!choice) return null;\n return <ChoicePreview choice={choice} />;\n } else if (activeDragItem.type === 'choice-preview' && activeDragItem.alternateResponseIndex !== undefined) {\n const choice = model.choices?.find((c) => c.id === activeDragItem.id);\n if (!choice) return null;\n return <ChoicePreview choice={choice} alternateResponseIndex={activeDragItem.alternateResponseIndex} />;\n }\n\n return null;\n };\n\n render() {\n const { 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 extraCSSRules,\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:\n allowMaxAnswerChoices.settings &&\n 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 <DragProvider onDragStart={this.onDragStart} onDragEnd={this.onDragEnd}>\n <IdProvider value={this.uid}>\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\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 <StyledInputContainer label={teacherInstructions.label}>\n <EditableHtml\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 && <ErrorText>{teacherInstructionsError}</ErrorText>}\n </StyledInputContainer>\n )}\n\n {promptEnabled && (\n <StyledInputContainer label={prompt.label}>\n <EditableHtml\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 && <ErrorText>{promptError}</ErrorText>}\n </StyledInputContainer>\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 <StyledHeader\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 <StyledHeader\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 mathMlOptions={mathMlOptions}\n />\n </React.Fragment>\n );\n })}\n\n {rationaleEnabled && (\n <StyledInputContainer label={rationale.label}>\n <EditableHtml\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 && <ErrorText>{rationaleError}</ErrorText>}\n </StyledInputContainer>\n )}\n\n {feedbackEnabled && (\n <FeedbackConfig feedback={model.feedback} onChange={this.changeFeedback} toolbarOpts={toolbarOpts} />\n )}\n </layout.ConfigLayout>\n <DragOverlay>\n <DragPreviewWrapper>{this.renderDragOverlay()}</DragPreviewWrapper>\n </DragOverlay>\n </IdProvider>\n </DragProvider>\n );\n }\n}\n\nexport default Design;\n"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  "private": true,
4
4
  "main": "lib/index.js",
5
5
  "module": "src/index.js",
6
- "version": "10.1.1-next.4",
6
+ "version": "10.2.0-next.1",
7
7
  "description": "",
8
8
  "scripts": {},
9
9
  "author": "pie framework developers",
@@ -16,11 +16,11 @@
16
16
  "@mui/material": "^7.3.4",
17
17
  "@pie-framework/pie-configure-events": "^1.3.0",
18
18
  "@pie-lib/categorize": "1.2.0-next.3",
19
- "@pie-lib/config-ui": "12.2.0-next.17",
20
- "@pie-lib/drag": "3.2.0-next.4",
21
- "@pie-lib/editable-html-tip-tap": "1.2.0-next.16",
19
+ "@pie-lib/config-ui": "12.2.0-next.20",
20
+ "@pie-lib/drag": "3.2.0-next.6",
21
+ "@pie-lib/editable-html-tip-tap": "1.2.0-next.19",
22
22
  "@pie-lib/math-rendering": "4.2.0-next.3",
23
- "@pie-lib/render-ui": "5.2.0-next.4",
23
+ "@pie-lib/render-ui": "5.2.0-next.6",
24
24
  "@pie-lib/translator": "3.2.0-next.3",
25
25
  "debug": "^4.1.1",
26
26
  "lodash-es": "^4.17.23",
@@ -53,7 +53,10 @@ const StyledCardContent = (0, _styles.styled)(_CardContent.default)(({
53
53
  paddingBottom: theme.spacing(2)
54
54
  },
55
55
  borderRadius: '4px',
56
- border: '1px solid'
56
+ border: '1px solid',
57
+ '& p': {
58
+ margin: '0px'
59
+ }
57
60
  }));
58
61
  class Layout extends _react.default.Component {
59
62
  render() {
@@ -1 +1 @@
1
- {"version":3,"file":"choice.js","names":["_react","_interopRequireDefault","require","_propTypes","_debug","_styles","_core","_drag","_Card","_CardContent","_renderUi","log","debug","ChoiceType","exports","content","PropTypes","string","isRequired","id","ChoiceContainer","styled","shouldForwardProp","prop","includes","isDragging","disabled","correct","direction","cursor","width","borderRadius","border","color","incorrect","StyledCard","Card","text","backgroundColor","background","StyledCardContent","CardContent","theme","white","paddingBottom","spacing","Layout","React","Component","render","props","default","createElement","dangerouslySetInnerHTML","__html","_defineProperty2","bool","DraggableChoice","extraStyle","categoryId","choiceIndex","draggableId","undefined","attributes","listeners","setNodeRef","useDraggable","data","value","itemType","type","_extends2","ref","style","margin","propTypes","object","number","onRemoveChoice","func","_default","uid","withUid"],"sources":["../../src/categorize/choice.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { styled } from '@mui/material/styles';\nimport { useDraggable } from '@dnd-kit/core';\nimport { uid } from '@pie-lib/drag';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('@pie-ui:categorize:choice');\n\nexport const ChoiceType = {\n content: PropTypes.string.isRequired,\n id: PropTypes.string,\n};\n\nconst ChoiceContainer = styled('div', {\n shouldForwardProp: (prop) => !['isDragging', 'disabled', 'correct'].includes(prop),\n})(({ isDragging, disabled, correct }) => ({\n direction: 'initial',\n cursor: disabled ? 'not-allowed' : isDragging ? 'move' : 'pointer',\n width: '100%',\n borderRadius: '6px',\n ...(correct === true && {\n border: `solid 2px ${color.correct()}`,\n }),\n ...(correct === false && {\n border: `solid 2px ${color.incorrect()}`,\n }),\n}));\n\nconst StyledCard = styled(Card)({\n color: color.text(),\n backgroundColor: color.background(),\n width: '100%',\n});\n\nconst StyledCardContent = styled(CardContent)(({ theme }) => ({\n color: color.text(),\n backgroundColor: color.white(),\n '&:last-child': {\n paddingBottom: theme.spacing(2),\n },\n borderRadius: '4px',\n border: '1px solid',\n}));\n\nexport class Layout extends React.Component {\n static propTypes = {\n ...ChoiceType,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n isDragging: PropTypes.bool,\n };\n static defaultProps = {};\n render() {\n const { content, isDragging, disabled, correct } = this.props;\n\n return (\n <ChoiceContainer isDragging={isDragging} disabled={disabled} correct={correct}>\n <StyledCard>\n <StyledCardContent dangerouslySetInnerHTML={{ __html: content }} />\n </StyledCard>\n </ChoiceContainer>\n );\n }\n}\n\nconst DraggableChoice = ({ id, content, disabled, correct, extraStyle, categoryId, choiceIndex }) => {\n // Generate unique draggable ID for each instance\n // If in choices board (categoryId is undefined), use 'board' suffix\n // If in a category, include categoryId and choiceIndex to make it unique\n const draggableId = categoryId !== undefined ? `choice-${id}-${categoryId}-${choiceIndex}` : `choice-${id}-board`;\n\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id: draggableId,\n data: {\n id,\n categoryId,\n choiceIndex,\n value: content,\n itemType: 'categorize',\n type: 'choice',\n },\n disabled,\n });\n\n return (\n <div ref={setNodeRef} style={{ margin: '4px', ...extraStyle }} {...listeners} {...attributes}>\n <Layout id={id} content={content} disabled={disabled} correct={correct} isDragging={isDragging} />\n </div>\n );\n};\n\nDraggableChoice.propTypes = {\n ...ChoiceType,\n extraStyle: PropTypes.object,\n categoryId: PropTypes.string,\n choiceIndex: PropTypes.number,\n onRemoveChoice: PropTypes.func,\n};\n\nexport default uid.withUid(DraggableChoice);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"choice.js","names":["_react","_interopRequireDefault","require","_propTypes","_debug","_styles","_core","_drag","_Card","_CardContent","_renderUi","log","debug","ChoiceType","exports","content","PropTypes","string","isRequired","id","ChoiceContainer","styled","shouldForwardProp","prop","includes","isDragging","disabled","correct","direction","cursor","width","borderRadius","border","color","incorrect","StyledCard","Card","text","backgroundColor","background","StyledCardContent","CardContent","theme","white","paddingBottom","spacing","margin","Layout","React","Component","render","props","default","createElement","dangerouslySetInnerHTML","__html","_defineProperty2","bool","DraggableChoice","extraStyle","categoryId","choiceIndex","draggableId","undefined","attributes","listeners","setNodeRef","useDraggable","data","value","itemType","type","_extends2","ref","style","propTypes","object","number","onRemoveChoice","func","_default","uid","withUid"],"sources":["../../src/categorize/choice.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { styled } from '@mui/material/styles';\nimport { useDraggable } from '@dnd-kit/core';\nimport { uid } from '@pie-lib/drag';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('@pie-ui:categorize:choice');\n\nexport const ChoiceType = {\n content: PropTypes.string.isRequired,\n id: PropTypes.string,\n};\n\nconst ChoiceContainer = styled('div', {\n shouldForwardProp: (prop) => !['isDragging', 'disabled', 'correct'].includes(prop),\n})(({ isDragging, disabled, correct }) => ({\n direction: 'initial',\n cursor: disabled ? 'not-allowed' : isDragging ? 'move' : 'pointer',\n width: '100%',\n borderRadius: '6px',\n ...(correct === true && {\n border: `solid 2px ${color.correct()}`,\n }),\n ...(correct === false && {\n border: `solid 2px ${color.incorrect()}`,\n }),\n}));\n\nconst StyledCard = styled(Card)({\n color: color.text(),\n backgroundColor: color.background(),\n width: '100%',\n});\n\nconst StyledCardContent = styled(CardContent)(({ theme }) => ({\n color: color.text(),\n backgroundColor: color.white(),\n '&:last-child': {\n paddingBottom: theme.spacing(2),\n },\n borderRadius: '4px',\n border: '1px solid',\n '& p': {\n margin: '0px',\n },\n}));\n\nexport class Layout extends React.Component {\n static propTypes = {\n ...ChoiceType,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n isDragging: PropTypes.bool,\n };\n static defaultProps = {};\n render() {\n const { content, isDragging, disabled, correct } = this.props;\n\n return (\n <ChoiceContainer isDragging={isDragging} disabled={disabled} correct={correct}>\n <StyledCard>\n <StyledCardContent dangerouslySetInnerHTML={{ __html: content }} />\n </StyledCard>\n </ChoiceContainer>\n );\n }\n}\n\nconst DraggableChoice = ({ id, content, disabled, correct, extraStyle, categoryId, choiceIndex }) => {\n // Generate unique draggable ID for each instance\n // If in choices board (categoryId is undefined), use 'board' suffix\n // If in a category, include categoryId and choiceIndex to make it unique\n const draggableId = categoryId !== undefined ? `choice-${id}-${categoryId}-${choiceIndex}` : `choice-${id}-board`;\n\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id: draggableId,\n data: {\n id,\n categoryId,\n choiceIndex,\n value: content,\n itemType: 'categorize',\n type: 'choice',\n },\n disabled,\n });\n\n return (\n <div ref={setNodeRef} style={{ margin: '4px', ...extraStyle }} {...listeners} {...attributes}>\n <Layout id={id} content={content} disabled={disabled} correct={correct} isDragging={isDragging} />\n </div>\n );\n};\n\nDraggableChoice.propTypes = {\n ...ChoiceType,\n extraStyle: PropTypes.object,\n categoryId: PropTypes.string,\n choiceIndex: PropTypes.number,\n onRemoveChoice: PropTypes.func,\n};\n\nexport default uid.withUid(DraggableChoice);\n"],"mappings":"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","ignoreList":[]}
@@ -338,27 +338,33 @@ class CategorizeProvider extends _react.default.Component {
338
338
  if (resumeMathObserver) {
339
339
  resumeMathObserver();
340
340
  }
341
- if (!over || !active) {
341
+ if (!active || !draggedItem || draggedItem.type !== 'choice') {
342
342
  return;
343
343
  }
344
- if (draggedItem && draggedItem.type === 'choice') {
345
- const choiceData = {
346
- id: draggedItem.id,
347
- categoryId: draggedItem.categoryId,
348
- choiceIndex: draggedItem.choiceIndex,
349
- value: draggedItem.value,
350
- itemType: draggedItem.itemType
351
- };
352
- if (over.id === 'choices-board') {
353
- if (this.categorizeRef && this.categorizeRef.removeChoice && draggedItem.categoryId) {
354
- this.categorizeRef.removeChoice(choiceData);
355
- }
356
- } else {
357
- const categoryId = over.id;
358
- if (this.categorizeRef && this.categorizeRef.dropChoice) {
359
- this.categorizeRef.dropChoice(categoryId, choiceData);
360
- }
344
+ const choiceData = {
345
+ id: draggedItem.id,
346
+ categoryId: draggedItem.categoryId,
347
+ choiceIndex: draggedItem.choiceIndex,
348
+ value: draggedItem.value,
349
+ itemType: draggedItem.itemType
350
+ };
351
+
352
+ // Dropped outside a valid/known target: remove from source category,
353
+ // which returns the choice to the choices pool.
354
+ if (!over) {
355
+ if (this.categorizeRef && this.categorizeRef.removeChoice && draggedItem.categoryId) {
356
+ this.categorizeRef.removeChoice(choiceData);
357
+ }
358
+ return;
359
+ }
360
+ if (over.id === 'choices-board') {
361
+ if (this.categorizeRef && this.categorizeRef.removeChoice && draggedItem.categoryId) {
362
+ this.categorizeRef.removeChoice(choiceData);
361
363
  }
364
+ return;
365
+ }
366
+ if (this.categorizeRef && this.categorizeRef.dropChoice) {
367
+ this.categorizeRef.dropChoice(over.id, choiceData);
362
368
  }
363
369
  });
364
370
  (0, _defineProperty2.default)(this, "renderDragOverlay", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_debug","_styles","_core","_correctAnswerToggle","_categorize","_drag","_renderUi","_mathRendering","_translator","_configUi","_choices","_choice","_categories","translator","Translator","log","debug","DragPreviewWrapper","React","Component","constructor","args","_defineProperty2","default","createRef","componentDidMount","containerRef","current","renderMath","render","createElement","ref","props","children","PropTypes","node","Categorize","c","onAnswersChange","session","answers","removeChoiceFromCategory","id","categoryId","choiceIndex","draggedChoice","model","maxChoicesPerCategory","newAnswers","undefined","answer","find","category","choices","length","moveChoiceToCategory","setState","showMaxChoiceAlert","removeChoice","showCorrect","state","onShowCorrectToggle","choicePosition","flexDirection","correctResponse","some","correctRes","alternateResponses","UNSAFE_componentWillReceiveProps","nextProps","nextModel","note","language","t","lng","choicesPosition","extraCSSRules","showNote","env","autoplayAudioEnabled","customAudioButton","mode","role","style","getPositionDirection","gap","categories","correct","buildState","disabled","rowLabels","categoriesPerRow","fontSizeFactor","nbOfRows","Math","ceil","existAlternate","existAlternateResponse","displayNote","alertMessage","alertTitle","onCloseText","showRationale","rationale","hasText","hasMedia","showTeacherInstructions","teacherInstructions","StyledUiLayout","Fragment","StyledCollapsible","labels","hidden","visible","PreviewPrompt","prompt","show","toggled","onToggle","toggleShowCorrect","StyledCategorize","display","flex","onDropChoice","dropChoice","onRemoveChoice","slice","StyledNote","dangerouslySetInnerHTML","__html","correctness","feedback","Feedback","AlertDialog","title","text","open","onClose","exports","object","shape","arrayOf","choice","string","func","isRequired","pauseMathObserver","resumeMathObserver","CategorizeProvider","event","active","data","activeDragItem","isValidDrop","over","draggedItem","overData","type","itemType","choiceData","value","categorizeRef","_extends2","key","uid","generateId","dropAnimation","DragProvider","onDragStart","onDragEnd","Provider","DragOverlay","renderDragOverlay","styled","UiLayout","color","backgroundColor","background","position","theme","marginBottom","spacing","Collapsible","paddingBottom","_default"],"sources":["../../src/categorize/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { styled } from '@mui/material/styles';\nimport { DragOverlay } from '@dnd-kit/core';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { buildState, removeChoiceFromCategory, moveChoiceToCategory } from '@pie-lib/categorize';\nimport { DragProvider, uid } from '@pie-lib/drag';\nimport { color, Feedback, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport Translator from '@pie-lib/translator';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport Choices from './choices';\nimport Choice from './choice';\nimport Categories from './categories';\n\nconst { translator } = Translator;\nconst log = debug('@pie-ui:categorize');\n\nclass DragPreviewWrapper extends React.Component {\n static propTypes = {\n children: PropTypes.node,\n };\n \n containerRef = React.createRef();\n\n componentDidMount() {\n if (this.containerRef.current) {\n renderMath(this.containerRef.current);\n }\n }\n\n render() {\n return <div ref={this.containerRef}>{this.props.children}</div>;\n }\n}\n\nexport class Categorize extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.shape({\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n choice: PropTypes.string,\n category: PropTypes.string,\n }),\n ),\n }),\n onAnswersChange: PropTypes.func.isRequired,\n onShowCorrectToggle: PropTypes.func.isRequired,\n pauseMathObserver: PropTypes.func,\n resumeMathObserver: PropTypes.func,\n };\n\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: false,\n showMaxChoiceAlert: false,\n };\n }\n\n removeChoice = (c) => {\n log('[removeChoice]: ', c);\n const { onAnswersChange, session } = this.props;\n const answers = removeChoiceFromCategory(c.id, c.categoryId, c.choiceIndex, session.answers);\n onAnswersChange(answers);\n };\n\n dropChoice = (categoryId, draggedChoice) => {\n const { session, onAnswersChange, model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const { answers = [] } = session || {};\n let newAnswers;\n if (draggedChoice) {\n log('[dropChoice] category: ', draggedChoice.categoryId, 'choice: ', draggedChoice);\n } else {\n log('[dropChoice] category: ', undefined, 'choice: ', undefined);\n }\n\n const answer = answers.find((answer) => answer.category === categoryId);\n\n // treat special case to replace the existing choice with the new one when maxChoicesPerCategory = 1\n if (draggedChoice && maxChoicesPerCategory === 1 && answer && answer.choices && answer.choices.length === 1) {\n // First, move the dragged choice to the target category (this will also remove it from source if allowMultiplePlacements is disabled)\n newAnswers = moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n answers,\n );\n // Then, remove the existing choice from the target category (use newAnswers, not answers)\n newAnswers = removeChoiceFromCategory(answer.choices[0], categoryId, 0, newAnswers);\n }\n\n // treat special case when there are as many choices as maxChoicesPerCategory is\n else if (\n draggedChoice &&\n maxChoicesPerCategory > 1 &&\n answer &&\n answer.choices &&\n answer.choices.length === maxChoicesPerCategory\n ) {\n newAnswers = draggedChoice.categoryId\n ? moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n draggedChoice.categoryId,\n draggedChoice.choiceIndex,\n answers,\n )\n : removeChoiceFromCategory(draggedChoice.id, draggedChoice.categoryId, draggedChoice.choiceIndex, answers);\n this.setState({ showMaxChoiceAlert: true });\n }\n\n // treat special case when there are more choices that maxChoicesPerCategory is (testing purpose in pits)\n else if (maxChoicesPerCategory !== 0 && answer && answer.choices && answer.choices.length > maxChoicesPerCategory) {\n newAnswers = answers;\n this.setState({ showMaxChoiceAlert: true });\n } else {\n newAnswers = draggedChoice\n ? moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n answers,\n )\n : this.removeChoice(categoryId);\n }\n\n if (draggedChoice) {\n onAnswersChange(newAnswers);\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model } = this.props;\n const { model: nextModel } = nextProps;\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n model.note &&\n model.language &&\n model.language !== nextModel.language &&\n model.note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: model.language })\n ) {\n model.note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextModel.language });\n }\n\n this.setState({ showCorrect: false });\n }\n\n toggleShowCorrect = () =>\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n this.props.onShowCorrectToggle();\n });\n\n getPositionDirection = (choicePosition) => {\n let flexDirection;\n\n switch (choicePosition) {\n case 'left':\n flexDirection = 'row-reverse';\n break;\n case 'right':\n flexDirection = 'row';\n break;\n case 'below':\n flexDirection = 'column';\n break;\n default:\n // above\n flexDirection = 'column-reverse';\n break;\n }\n\n return flexDirection;\n };\n\n existAlternateResponse = (correctResponse) =>\n correctResponse?.some((correctRes) => correctRes.alternateResponses?.length > 0);\n\n render() {\n const { model, session } = this.props;\n const { showCorrect, showMaxChoiceAlert } = this.state;\n const {\n choicesPosition,\n extraCSSRules,\n note,\n showNote,\n env,\n language,\n maxChoicesPerCategory,\n autoplayAudioEnabled,\n customAudioButton,\n } = model;\n const { mode, role } = env || {};\n const choicePosition = choicesPosition || 'above';\n\n const style = {\n flexDirection: this.getPositionDirection(choicePosition),\n gap: '8px',\n };\n\n const { categories, choices, correct } = buildState(\n model.categories,\n model.choices,\n showCorrect ? model.correctResponse : session.answers,\n model.correctResponse,\n );\n\n log('[render] disabled: ', model.disabled);\n\n const { rowLabels, categoriesPerRow, correctResponse, fontSizeFactor } = model;\n const nbOfRows = (categories && Math.ceil(categories.length / categoriesPerRow)) || 0;\n const existAlternate = this.existAlternateResponse(correctResponse) || false;\n const displayNote =\n (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note && existAlternate;\n const alertMessage = translator.t('translation:categorize:limitMaxChoicesPerCategory', {\n lng: model.language,\n maxChoicesPerCategory,\n });\n\n const alertTitle = translator.t('common:warning', {\n lng: model.language,\n });\n\n const onCloseText = translator.t('common:cancel', {\n lng: model.language,\n });\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <StyledUiLayout extraCSSRules={extraCSSRules} id={'main-container'} fontSizeFactor={fontSizeFactor}>\n {showTeacherInstructions && (\n <React.Fragment>\n <StyledCollapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </StyledCollapsible>\n </React.Fragment>\n )}\n\n {model.prompt && (\n <PreviewPrompt\n prompt={model.prompt}\n autoplayAudioEnabled={autoplayAudioEnabled}\n customAudioButton={customAudioButton}\n />\n )}\n\n <CorrectAnswerToggle\n show={showCorrect || correct === false}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n\n <StyledCategorize style={style}>\n <div style={{ display: 'flex', flex: 1 }}>\n <Categories\n model={model}\n disabled={model.disabled}\n categories={categories}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n rowLabels={(rowLabels || []).slice(0, nbOfRows)}\n />\n </div>\n <Choices\n disabled={model.disabled}\n model={model}\n choices={choices}\n choicePosition={choicePosition}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n correct={correct}\n />\n </StyledCategorize>\n {displayNote && (\n <StyledNote\n dangerouslySetInnerHTML={{\n __html: note,\n }}\n />\n )}\n\n {showRationale && (\n <StyledCollapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={model.rationale} />\n </StyledCollapsible>\n )}\n\n {model.correctness && model.feedback && !showCorrect && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n <AlertDialog\n title={alertTitle}\n text={alertMessage}\n open={showMaxChoiceAlert}\n onCloseText={onCloseText}\n onClose={() => this.setState({ showMaxChoiceAlert: false })}\n ></AlertDialog>\n </StyledUiLayout>\n );\n }\n}\n\nclass CategorizeProvider extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.shape({\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n choice: PropTypes.string,\n category: PropTypes.string,\n }),\n ),\n }),\n onAnswersChange: PropTypes.func.isRequired,\n onShowCorrectToggle: PropTypes.func.isRequired,\n pauseMathObserver: PropTypes.func,\n resumeMathObserver: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.uid = uid.generateId();\n this.state = {\n activeDragItem: null,\n isValidDrop: false,\n };\n }\n\n onDragStart = (event) => {\n const { active } = event;\n const { pauseMathObserver } = this.props;\n\n if (pauseMathObserver) {\n pauseMathObserver();\n }\n\n if (active?.data?.current) {\n this.setState({\n activeDragItem: active.data.current,\n isValidDrop: false,\n });\n }\n };\n\n onDragEnd = (event) => {\n const { active, over } = event;\n const { resumeMathObserver } = this.props;\n\n // Check if drop is valid\n const draggedItem = active?.data?.current;\n const overData = over?.data?.current;\n const isValidDrop = \n over && \n active && \n draggedItem && \n draggedItem.type === 'choice' && \n overData && \n overData.itemType === 'categorize';\n\n this.setState({ \n activeDragItem: null,\n isValidDrop: isValidDrop,\n });\n\n if (resumeMathObserver) {\n resumeMathObserver();\n }\n\n if (!over || !active) {\n return;\n }\n\n if (draggedItem && draggedItem.type === 'choice') {\n const choiceData = {\n id: draggedItem.id,\n categoryId: draggedItem.categoryId,\n choiceIndex: draggedItem.choiceIndex,\n value: draggedItem.value,\n itemType: draggedItem.itemType,\n };\n\n if (over.id === 'choices-board') {\n if (this.categorizeRef && this.categorizeRef.removeChoice && draggedItem.categoryId) {\n this.categorizeRef.removeChoice(choiceData);\n }\n } else {\n const categoryId = over.id;\n\n if (this.categorizeRef && this.categorizeRef.dropChoice) {\n this.categorizeRef.dropChoice(categoryId, choiceData);\n }\n }\n }\n };\n\n renderDragOverlay = () => {\n const { activeDragItem } = this.state;\n const { model } = this.props;\n\n if (!activeDragItem) return null;\n\n if (activeDragItem.type === 'choice') {\n const choice = model.choices?.find((c) => c.id === activeDragItem.id);\n if (choice) {\n return <Choice key={choice.id} id={choice.id} {...choice} />;\n }\n }\n\n return null;\n };\n\n render() {\n const { isValidDrop } = this.state;\n // Disable drop animation for valid drops to prevent visual snap-back\n // Keep default animation for invalid drops to show visual feedback\n const dropAnimation = isValidDrop ? null : undefined;\n \n return (\n <DragProvider onDragStart={this.onDragStart} onDragEnd={this.onDragEnd}>\n <uid.Provider value={this.uid}>\n <Categorize ref={(ref) => (this.categorizeRef = ref)} {...this.props} />\n <DragOverlay dropAnimation={dropAnimation}>\n <DragPreviewWrapper>{this.renderDragOverlay()}</DragPreviewWrapper>\n </DragOverlay>\n </uid.Provider>\n </DragProvider>\n );\n }\n}\n\nconst StyledUiLayout = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n position: 'relative',\n});\n\nconst StyledNote = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst StyledCategorize = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(1),\n display: 'flex',\n flexDirection: 'column',\n}));\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nexport default CategorizeProvider;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_propTypes","_debug","_styles","_core","_correctAnswerToggle","_categorize","_drag","_renderUi","_mathRendering","_translator","_configUi","_choices","_choice","_categories","translator","Translator","log","debug","DragPreviewWrapper","React","Component","constructor","args","_defineProperty2","default","createRef","componentDidMount","containerRef","current","renderMath","render","createElement","ref","props","children","PropTypes","node","Categorize","c","onAnswersChange","session","answers","removeChoiceFromCategory","id","categoryId","choiceIndex","draggedChoice","model","maxChoicesPerCategory","newAnswers","undefined","answer","find","category","choices","length","moveChoiceToCategory","setState","showMaxChoiceAlert","removeChoice","showCorrect","state","onShowCorrectToggle","choicePosition","flexDirection","correctResponse","some","correctRes","alternateResponses","UNSAFE_componentWillReceiveProps","nextProps","nextModel","note","language","t","lng","choicesPosition","extraCSSRules","showNote","env","autoplayAudioEnabled","customAudioButton","mode","role","style","getPositionDirection","gap","categories","correct","buildState","disabled","rowLabels","categoriesPerRow","fontSizeFactor","nbOfRows","Math","ceil","existAlternate","existAlternateResponse","displayNote","alertMessage","alertTitle","onCloseText","showRationale","rationale","hasText","hasMedia","showTeacherInstructions","teacherInstructions","StyledUiLayout","Fragment","StyledCollapsible","labels","hidden","visible","PreviewPrompt","prompt","show","toggled","onToggle","toggleShowCorrect","StyledCategorize","display","flex","onDropChoice","dropChoice","onRemoveChoice","slice","StyledNote","dangerouslySetInnerHTML","__html","correctness","feedback","Feedback","AlertDialog","title","text","open","onClose","exports","object","shape","arrayOf","choice","string","func","isRequired","pauseMathObserver","resumeMathObserver","CategorizeProvider","event","active","data","activeDragItem","isValidDrop","over","draggedItem","overData","type","itemType","choiceData","value","categorizeRef","_extends2","key","uid","generateId","dropAnimation","DragProvider","onDragStart","onDragEnd","Provider","DragOverlay","renderDragOverlay","styled","UiLayout","color","backgroundColor","background","position","theme","marginBottom","spacing","Collapsible","paddingBottom","_default"],"sources":["../../src/categorize/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { styled } from '@mui/material/styles';\nimport { DragOverlay } from '@dnd-kit/core';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { buildState, removeChoiceFromCategory, moveChoiceToCategory } from '@pie-lib/categorize';\nimport { DragProvider, uid } from '@pie-lib/drag';\nimport { color, Feedback, Collapsible, hasText, hasMedia, PreviewPrompt, UiLayout } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport Translator from '@pie-lib/translator';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport Choices from './choices';\nimport Choice from './choice';\nimport Categories from './categories';\n\nconst { translator } = Translator;\nconst log = debug('@pie-ui:categorize');\n\nclass DragPreviewWrapper extends React.Component {\n static propTypes = {\n children: PropTypes.node,\n };\n\n containerRef = React.createRef();\n\n componentDidMount() {\n if (this.containerRef.current) {\n renderMath(this.containerRef.current);\n }\n }\n\n render() {\n return <div ref={this.containerRef}>{this.props.children}</div>;\n }\n}\n\nexport class Categorize extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.shape({\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n choice: PropTypes.string,\n category: PropTypes.string,\n }),\n ),\n }),\n onAnswersChange: PropTypes.func.isRequired,\n onShowCorrectToggle: PropTypes.func.isRequired,\n pauseMathObserver: PropTypes.func,\n resumeMathObserver: PropTypes.func,\n };\n\n static defaultProps = {\n disabled: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showCorrect: false,\n showMaxChoiceAlert: false,\n };\n }\n\n removeChoice = (c) => {\n log('[removeChoice]: ', c);\n const { onAnswersChange, session } = this.props;\n const answers = removeChoiceFromCategory(c.id, c.categoryId, c.choiceIndex, session.answers);\n onAnswersChange(answers);\n };\n\n dropChoice = (categoryId, draggedChoice) => {\n const { session, onAnswersChange, model } = this.props;\n const { maxChoicesPerCategory = 0 } = model || {};\n const { answers = [] } = session || {};\n let newAnswers;\n if (draggedChoice) {\n log('[dropChoice] category: ', draggedChoice.categoryId, 'choice: ', draggedChoice);\n } else {\n log('[dropChoice] category: ', undefined, 'choice: ', undefined);\n }\n\n const answer = answers.find((answer) => answer.category === categoryId);\n\n // treat special case to replace the existing choice with the new one when maxChoicesPerCategory = 1\n if (draggedChoice && maxChoicesPerCategory === 1 && answer && answer.choices && answer.choices.length === 1) {\n // First, move the dragged choice to the target category (this will also remove it from source if allowMultiplePlacements is disabled)\n newAnswers = moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n answers,\n );\n // Then, remove the existing choice from the target category (use newAnswers, not answers)\n newAnswers = removeChoiceFromCategory(answer.choices[0], categoryId, 0, newAnswers);\n }\n\n // treat special case when there are as many choices as maxChoicesPerCategory is\n else if (\n draggedChoice &&\n maxChoicesPerCategory > 1 &&\n answer &&\n answer.choices &&\n answer.choices.length === maxChoicesPerCategory\n ) {\n newAnswers = draggedChoice.categoryId\n ? moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n draggedChoice.categoryId,\n draggedChoice.choiceIndex,\n answers,\n )\n : removeChoiceFromCategory(draggedChoice.id, draggedChoice.categoryId, draggedChoice.choiceIndex, answers);\n this.setState({ showMaxChoiceAlert: true });\n }\n\n // treat special case when there are more choices that maxChoicesPerCategory is (testing purpose in pits)\n else if (maxChoicesPerCategory !== 0 && answer && answer.choices && answer.choices.length > maxChoicesPerCategory) {\n newAnswers = answers;\n this.setState({ showMaxChoiceAlert: true });\n } else {\n newAnswers = draggedChoice\n ? moveChoiceToCategory(\n draggedChoice.id,\n draggedChoice.categoryId,\n categoryId,\n draggedChoice.choiceIndex,\n answers,\n )\n : this.removeChoice(categoryId);\n }\n\n if (draggedChoice) {\n onAnswersChange(newAnswers);\n }\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { model } = this.props;\n const { model: nextModel } = nextProps;\n\n // check if the note is the default one for prev language and change to the default one for new language\n // this check is necessary in order to diferanciate between default and authour defined note\n // and only change between languages for default ones\n if (\n model.note &&\n model.language &&\n model.language !== nextModel.language &&\n model.note === translator.t('common:commonCorrectAnswerWithAlternates', { lng: model.language })\n ) {\n model.note = translator.t('common:commonCorrectAnswerWithAlternates', { lng: nextModel.language });\n }\n\n this.setState({ showCorrect: false });\n }\n\n toggleShowCorrect = () =>\n this.setState({ showCorrect: !this.state.showCorrect }, () => {\n this.props.onShowCorrectToggle();\n });\n\n getPositionDirection = (choicePosition) => {\n let flexDirection;\n\n switch (choicePosition) {\n case 'left':\n flexDirection = 'row-reverse';\n break;\n case 'right':\n flexDirection = 'row';\n break;\n case 'below':\n flexDirection = 'column';\n break;\n default:\n // above\n flexDirection = 'column-reverse';\n break;\n }\n\n return flexDirection;\n };\n\n existAlternateResponse = (correctResponse) =>\n correctResponse?.some((correctRes) => correctRes.alternateResponses?.length > 0);\n\n render() {\n const { model, session } = this.props;\n const { showCorrect, showMaxChoiceAlert } = this.state;\n const {\n choicesPosition,\n extraCSSRules,\n note,\n showNote,\n env,\n language,\n maxChoicesPerCategory,\n autoplayAudioEnabled,\n customAudioButton,\n } = model;\n const { mode, role } = env || {};\n const choicePosition = choicesPosition || 'above';\n\n const style = {\n flexDirection: this.getPositionDirection(choicePosition),\n gap: '8px',\n };\n\n const { categories, choices, correct } = buildState(\n model.categories,\n model.choices,\n showCorrect ? model.correctResponse : session.answers,\n model.correctResponse,\n );\n\n log('[render] disabled: ', model.disabled);\n\n const { rowLabels, categoriesPerRow, correctResponse, fontSizeFactor } = model;\n const nbOfRows = (categories && Math.ceil(categories.length / categoriesPerRow)) || 0;\n const existAlternate = this.existAlternateResponse(correctResponse) || false;\n const displayNote =\n (showCorrect || (mode === 'view' && role === 'instructor')) && showNote && note && existAlternate;\n const alertMessage = translator.t('translation:categorize:limitMaxChoicesPerCategory', {\n lng: model.language,\n maxChoicesPerCategory,\n });\n\n const alertTitle = translator.t('common:warning', {\n lng: model.language,\n });\n\n const onCloseText = translator.t('common:cancel', {\n lng: model.language,\n });\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <StyledUiLayout extraCSSRules={extraCSSRules} id={'main-container'} fontSizeFactor={fontSizeFactor}>\n {showTeacherInstructions && (\n <React.Fragment>\n <StyledCollapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </StyledCollapsible>\n </React.Fragment>\n )}\n\n {model.prompt && (\n <PreviewPrompt\n prompt={model.prompt}\n autoplayAudioEnabled={autoplayAudioEnabled}\n customAudioButton={customAudioButton}\n />\n )}\n\n <CorrectAnswerToggle\n show={showCorrect || correct === false}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n language={language}\n />\n\n <StyledCategorize style={style}>\n <div style={{ display: 'flex', flex: 1 }}>\n <Categories\n model={model}\n disabled={model.disabled}\n categories={categories}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n rowLabels={(rowLabels || []).slice(0, nbOfRows)}\n />\n </div>\n <Choices\n disabled={model.disabled}\n model={model}\n choices={choices}\n choicePosition={choicePosition}\n onDropChoice={this.dropChoice}\n onRemoveChoice={this.removeChoice}\n correct={correct}\n />\n </StyledCategorize>\n {displayNote && (\n <StyledNote\n dangerouslySetInnerHTML={{\n __html: note,\n }}\n />\n )}\n\n {showRationale && (\n <StyledCollapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={model.rationale} />\n </StyledCollapsible>\n )}\n\n {model.correctness && model.feedback && !showCorrect && (\n <Feedback correctness={model.correctness} feedback={model.feedback} />\n )}\n <AlertDialog\n title={alertTitle}\n text={alertMessage}\n open={showMaxChoiceAlert}\n onCloseText={onCloseText}\n onClose={() => this.setState({ showMaxChoiceAlert: false })}\n ></AlertDialog>\n </StyledUiLayout>\n );\n }\n}\n\nclass CategorizeProvider extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.shape({\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n choice: PropTypes.string,\n category: PropTypes.string,\n }),\n ),\n }),\n onAnswersChange: PropTypes.func.isRequired,\n onShowCorrectToggle: PropTypes.func.isRequired,\n pauseMathObserver: PropTypes.func,\n resumeMathObserver: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.uid = uid.generateId();\n this.state = {\n activeDragItem: null,\n isValidDrop: false,\n };\n }\n\n onDragStart = (event) => {\n const { active } = event;\n const { pauseMathObserver } = this.props;\n\n if (pauseMathObserver) {\n pauseMathObserver();\n }\n\n if (active?.data?.current) {\n this.setState({\n activeDragItem: active.data.current,\n isValidDrop: false,\n });\n }\n };\n\n onDragEnd = (event) => {\n const { active, over } = event;\n const { resumeMathObserver } = this.props;\n\n // Check if drop is valid\n const draggedItem = active?.data?.current;\n const overData = over?.data?.current;\n const isValidDrop =\n over && active && draggedItem && draggedItem.type === 'choice' && overData && overData.itemType === 'categorize';\n\n this.setState({\n activeDragItem: null,\n isValidDrop: isValidDrop,\n });\n\n if (resumeMathObserver) {\n resumeMathObserver();\n }\n\n if (!active || !draggedItem || draggedItem.type !== 'choice') {\n return;\n }\n\n const choiceData = {\n id: draggedItem.id,\n categoryId: draggedItem.categoryId,\n choiceIndex: draggedItem.choiceIndex,\n value: draggedItem.value,\n itemType: draggedItem.itemType,\n };\n\n // Dropped outside a valid/known target: remove from source category,\n // which returns the choice to the choices pool.\n if (!over) {\n if (this.categorizeRef && this.categorizeRef.removeChoice && draggedItem.categoryId) {\n this.categorizeRef.removeChoice(choiceData);\n }\n return;\n }\n\n if (over.id === 'choices-board') {\n if (this.categorizeRef && this.categorizeRef.removeChoice && draggedItem.categoryId) {\n this.categorizeRef.removeChoice(choiceData);\n }\n return;\n }\n\n if (this.categorizeRef && this.categorizeRef.dropChoice) {\n this.categorizeRef.dropChoice(over.id, choiceData);\n }\n };\n\n renderDragOverlay = () => {\n const { activeDragItem } = this.state;\n const { model } = this.props;\n\n if (!activeDragItem) return null;\n\n if (activeDragItem.type === 'choice') {\n const choice = model.choices?.find((c) => c.id === activeDragItem.id);\n if (choice) {\n return <Choice key={choice.id} id={choice.id} {...choice} />;\n }\n }\n\n return null;\n };\n\n render() {\n const { isValidDrop } = this.state;\n // Disable drop animation for valid drops to prevent visual snap-back\n // Keep default animation for invalid drops to show visual feedback\n const dropAnimation = isValidDrop ? null : undefined;\n\n return (\n <DragProvider onDragStart={this.onDragStart} onDragEnd={this.onDragEnd}>\n <uid.Provider value={this.uid}>\n <Categorize ref={(ref) => (this.categorizeRef = ref)} {...this.props} />\n <DragOverlay dropAnimation={dropAnimation}>\n <DragPreviewWrapper>{this.renderDragOverlay()}</DragPreviewWrapper>\n </DragOverlay>\n </uid.Provider>\n </DragProvider>\n );\n }\n}\n\nconst StyledUiLayout = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n position: 'relative',\n});\n\nconst StyledNote = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst StyledCategorize = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(1),\n display: 'flex',\n flexDirection: 'column',\n}));\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n paddingBottom: theme.spacing(2),\n}));\n\nexport default CategorizeProvider;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "12.2.0-next.0",
7
+ "version": "12.2.0-next.2",
8
8
  "description": "",
9
9
  "author": "pie framework developers",
10
10
  "license": "ISC",
@@ -16,11 +16,11 @@
16
16
  "@mui/material": "^7.3.4",
17
17
  "@pie-framework/pie-player-events": "^0.1.0",
18
18
  "@pie-lib/categorize": "1.2.0-next.3",
19
- "@pie-lib/config-ui": "12.2.0-next.17",
20
- "@pie-lib/correct-answer-toggle": "3.2.0-next.4",
21
- "@pie-lib/drag": "3.2.0-next.4",
19
+ "@pie-lib/config-ui": "12.2.0-next.20",
20
+ "@pie-lib/correct-answer-toggle": "3.2.0-next.6",
21
+ "@pie-lib/drag": "3.2.0-next.6",
22
22
  "@pie-lib/math-rendering": "4.2.0-next.3",
23
- "@pie-lib/render-ui": "5.2.0-next.4",
23
+ "@pie-lib/render-ui": "5.2.0-next.6",
24
24
  "@pie-lib/translator": "3.2.0-next.3",
25
25
  "debug": "^4.1.1",
26
26
  "lodash-es": "^4.17.23",
@@ -28,7 +28,7 @@
28
28
  "react": "18.3.1",
29
29
  "react-dom": "18.3.1"
30
30
  },
31
- "gitHead": "d73b4baeb204e75095024baab5dc99182023301e",
31
+ "gitHead": "53f1a22e45a47ff2e6b37a2f1b20ba3002ed5676",
32
32
  "scripts": {
33
33
  "postpublish": "../../scripts/postpublish"
34
34
  },