@pie-element/inline-dropdown 9.1.1-next.7 → 9.2.0-next.1

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,18 @@
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
+ # [9.2.0-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@9.2.0-next.0...@pie-element/inline-dropdown@9.2.0-next.1) (2026-03-19)
7
+
8
+ ### Bug Fixes
9
+
10
+ - made sure inline dropdown choices are editable [PD-5838] ([4cccb70](https://github.com/pie-framework/pie-elements/commit/4cccb70e950677ff80ba06f947b4103c238b7e61))
11
+
12
+ # [9.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@9.1.1-next.7...@pie-element/inline-dropdown@9.2.0-next.0) (2026-03-18)
13
+
14
+ ### Features
15
+
16
+ - **inline-dropdown:** add trace log for scoring in outcome function PD-5436 ([dc30bd8](https://github.com/pie-framework/pie-elements/commit/dc30bd827db10273e71419acd06fe52572952fb8))
17
+
6
18
  ## [9.1.1-next.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown@9.1.1-next.6...@pie-element/inline-dropdown@9.1.1-next.7) (2026-03-13)
7
19
 
8
20
  ### Bug Fixes
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [8.1.1-next.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@8.1.1-next.6...@pie-element/inline-dropdown-configure@8.1.1-next.7) (2026-03-19)
7
+
8
+ ### Bug Fixes
9
+
10
+ - made sure inline dropdown choices are editable [PD-5838] ([4cccb70](https://github.com/pie-framework/pie-elements/commit/4cccb70e950677ff80ba06f947b4103c238b7e61))
11
+
6
12
  ## [8.1.1-next.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-configure@8.1.1-next.5...@pie-element/inline-dropdown-configure@8.1.1-next.6) (2026-03-13)
7
13
 
8
14
  ### Bug Fixes
@@ -254,7 +254,6 @@ class RespAreaToolbar extends _react.default.Component {
254
254
  onToolbarDone,
255
255
  onRemoveChoice
256
256
  } = this.props;
257
- console.log('LOGGING', val, node.attrs.value, (0, _lodashEs.isEqual)(val, node.attrs.value));
258
257
  if ((0, _lodashEs.isEqual)(val, node.attrs.value)) {
259
258
  editor.commands.updateAttributes('inline_dropdown', {
260
259
  value: null
@@ -387,7 +386,7 @@ class RespAreaToolbar extends _react.default.Component {
387
386
  this.onRespAreaChange(respAreaMarkup);
388
387
  },
389
388
  onDone: val => {
390
- if (this.preventDone) {
389
+ if (this.preventDone || this.clickedInside) {
391
390
  return;
392
391
  }
393
392
  this.onDone(val);
@@ -1 +1 @@
1
- {"version":3,"file":"inline-dropdown-toolbar.js","names":["_utils","require","_react","_interopRequireDefault","_reactDom","_propTypes","_editableHtmlTipTap","_mathRendering","_styles","_lodashEs","_renderUi","_Add","_Check","_Close","_Edit","_IconButton","MenuItemWrapper","styled","theme","display","alignItems","position","background","palette","common","white","borderBottom","grey","borderRadius","SelectedIcon","justifyContent","color","fontSize","typography","fontStyle","transform","backgroundColor","correct","top","spacing","left","zIndex","ValueHolder","flex","padding","paddingLeft","correctSecondary","margin","ActionButtons","StyledIconButton","IconButton","black","MenuItemComp","React","Component","constructor","args","_defineProperty2","default","e","onRemoveChoice","props","preventDefault","stopPropagation","onEditChoice","render","onClick","value","createElement","dangerouslySetInnerHTML","__html","onEditClick","size","onRemoveClick","PropTypes","bool","isRequired","func","string","MenuItem","findSlateNode","key","window","document","querySelector","createElementFromHTML","htmlString","div","innerHTML","trim","ResponseContainer","boxShadow","shadows","width","RespArea","EditableHtml","minHeight","AddButton","right","ChoicesHolder","flexDirection","border","ItemBuilder","RespAreaToolbar","respAreaMarkup","editedChoiceIndex","setState","editor","tr","state","isDone","view","dispatch","val","choices","node","onAddChoice","onToolbarDone","onlyText","textContent","commands","updateAttributes","isEmpty","attrs","index","refreshResponseArea","newValue","onSelectChoice","console","log","isEqual","onRespAreaChange","event","html","editorRef","getHTML","onDone","preventDone","clickedInside","onCheck","correctResponse","find","choice","length","deleteSelection","componentDidMount","domNode","nodeDOM","selection","from","nodeType","domNodeRect","getBoundingClientRect","editorNode","closest","editorRect","height","toolbarStyle","componentDidUpdate","ReactDOM","findDOMNode","renderMath","spellCheck","uploadSoundSupport","mathMlOptions","baseInputConfiguration","responseAreaInputConfiguration","style","onMouseDown","onClickInside","ref","editorCallback","autoFocus","autoSave","toolbarOpts","alwaysVisible","showDone","doneOn","markup","onKeyDown","languageCharactersProps","language","onChange","onBlur","relatedTarget","isInInsertCharacter","isInDoneButton","placeholder","pluginProps","getPluginProps","inputConfiguration","map","label","object","array","StyledRespAreaToolbar","_default","exports"],"sources":["../src/inline-dropdown-toolbar.jsx"],"sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { styled } from '@mui/material/styles';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport { color } from '@pie-lib/render-ui';\n\nimport AddIcon from '@mui/icons-material/Add';\nimport CheckIcon from '@mui/icons-material/Check';\nimport CloseIcon from '@mui/icons-material/Close';\nimport EditIcon from '@mui/icons-material/Edit';\nimport IconButton from '@mui/material/IconButton';\n\nconst MenuItemWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'flex-start',\n position: 'relative',\n background: theme.palette.common.white,\n borderBottom: `1px solid ${theme.palette.grey[400]}`,\n\n '&:last-child': {\n borderRadius: '0 0 4px 4px',\n },\n}));\n\nconst SelectedIcon = styled('div')(({ theme }) => ({\n display: 'flex',\n justifyContent: 'center',\n color: theme.palette.common.white,\n fontSize: theme.typography.fontSize,\n fontStyle: 'normal',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n backgroundColor: color.correct(),\n borderRadius: '50%',\n top: theme.spacing(2),\n left: theme.spacing(1),\n zIndex: 3,\n}));\n\nconst ValueHolder = styled('div')(({ theme, correct }) => ({\n flex: 1,\n padding: theme.spacing(0.75),\n paddingLeft: theme.spacing(3.5),\n ...(correct && {\n background: color.correctSecondary(),\n }),\n '& p': {\n // browser adds extra margin for p tags by default\n margin: 0,\n },\n}));\n\nconst ActionButtons = styled('div')(({ theme }) => ({\n margin: theme.spacing(0.5),\n display: 'flex',\n}));\n\nconst StyledIconButton = styled(IconButton)(({ theme }) => ({\n fontSize: theme.typography.fontSize,\n padding: theme.spacing(0.5),\n color: theme.palette.common.black,\n}));\n\nclass MenuItemComp extends React.Component {\n static propTypes = {\n correct: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n onEditChoice: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n };\n\n onRemoveClick = (e) => {\n const { onRemoveChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onRemoveChoice();\n };\n\n onEditClick = (e) => {\n const { onEditChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onEditChoice();\n };\n\n render() {\n const { correct, onClick, value } = this.props;\n\n return (\n <MenuItemWrapper>\n {correct && (\n <SelectedIcon onClick={onClick}>\n <CheckIcon fontSize=\"inherit\" />\n </SelectedIcon>\n )}\n <ValueHolder\n correct={correct}\n onClick={onClick}\n dangerouslySetInnerHTML={{\n __html: value,\n }}\n />\n <ActionButtons>\n <StyledIconButton onClick={this.onEditClick} size=\"small\" aria-label=\"Edit\">\n <EditIcon fontSize=\"inherit\" />\n </StyledIconButton>\n <StyledIconButton onClick={this.onRemoveClick} size=\"small\" aria-label=\"Remove\">\n <CloseIcon fontSize=\"inherit\" />\n </StyledIconButton>\n </ActionButtons>\n </MenuItemWrapper>\n );\n }\n}\n\nconst MenuItem = MenuItemComp;\n\nconst findSlateNode = (key) => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst ResponseContainer = styled('div')(({ theme }) => ({\n boxShadow: theme.shadows[2],\n borderRadius: '4px',\n width: '400px',\n}));\n\nconst RespArea = styled(EditableHtml)(({ theme }) => ({\n borderRadius: '4px',\n backgroundColor: theme.palette.common.white,\n '& [data-slate-editor=\"true\"]': {\n minHeight: 'initial !important',\n },\n}));\n\nconst AddButton = styled(IconButton)(({ theme }) => ({\n fontSize: theme.typography.fontSize + 2,\n padding: theme.spacing(0.5),\n color: theme.palette.common.black,\n position: 'absolute',\n top: '50%',\n right: theme.spacing(2),\n transform: 'translate(0, -50%)',\n}));\n\nconst ChoicesHolder = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n '& > div:last-child': {\n border: 'none',\n },\n});\n\nconst ItemBuilder = styled('div')(({ theme }) => ({\n padding: theme.spacing(0.5),\n position: 'relative',\n}));\n\nclass RespAreaToolbar extends React.Component {\n static propTypes = {\n node: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n onDone: PropTypes.func,\n choices: PropTypes.array,\n onAddChoice: PropTypes.func.isRequired,\n onCheck: PropTypes.func,\n editorCallback: PropTypes.func,\n onRemoveChoice: PropTypes.func.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n editor: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n clickedInside = false;\n preventDone = false;\n\n state = {\n respAreaMarkup: '',\n editedChoiceIndex: -1,\n };\n\n componentDidMount() {\n const { editor } = this.props;\n\n const domNode = editor.view.nodeDOM(editor.state.selection.from);\n\n if (domNode?.nodeType === 1) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editorNode = domNode.closest('.tiptap');\n const editorRect = editorNode.getBoundingClientRect();\n const top = domNodeRect.top - domNodeRect.height;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 40}px`,\n left: `${left + 25}px`,\n },\n });\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onRespAreaChange = (respAreaMarkup) => {\n this.setState({ respAreaMarkup });\n };\n\n onAddChoice = () => {\n const { editor } = this.props;\n const { tr } = editor.state;\n\n tr.isDone = true;\n editor.view.dispatch(tr);\n };\n\n onDone = (val) => {\n const { choices, node, editor, onAddChoice, onToolbarDone } = this.props;\n\n const { editedChoiceIndex } = this.state;\n const onlyText = createElementFromHTML(val).textContent.trim();\n\n if (editedChoiceIndex >= 0 && choices?.[editedChoiceIndex]?.correct) {\n editor.commands.updateAttributes('inline_dropdown', { value: val });\n onToolbarDone(false);\n }\n\n if (!isEmpty(onlyText)) {\n onAddChoice(node.attrs.index, val, editedChoiceIndex);\n editor.commands.refreshResponseArea();\n }\n\n this.setState({ editedChoiceIndex: -1 });\n };\n\n onSelectChoice = (newValue, index) => {\n const { node, editor, onToolbarDone, onSelectChoice } = this.props;\n\n editor.commands.updateAttributes('inline_dropdown', { value: newValue });\n\n onToolbarDone(false);\n onSelectChoice(index);\n editor.commands.refreshResponseArea();\n };\n\n onRemoveChoice = (val, index) => {\n const { node, editor, onToolbarDone, onRemoveChoice } = this.props;\n\n console.log('LOGGING', val, node.attrs.value, isEqual(val, node.attrs.value));\n\n if (isEqual(val, node.attrs.value)) {\n editor.commands.updateAttributes('inline_dropdown', { value: null });\n onToolbarDone(false);\n }\n\n onRemoveChoice(index);\n editor.commands.refreshResponseArea();\n };\n\n onEditChoice = (val, index) => {\n this.onRespAreaChange(val);\n this.setState({ editedChoiceIndex: index });\n };\n\n onKeyDown = (event) => {\n if (event.key === 'Enter') {\n const html = this.editorRef.getHTML() || '';\n\n this.onDone(html);\n this.preventDone = true;\n\n // Cancelling event\n return true;\n }\n\n return false;\n };\n\n onBlur = () => {\n if (this.clickedInside) {\n this.clickedInside = false;\n return;\n }\n\n const { node, choices, onCheck, onToolbarDone, editor } = this.props;\n const correctResponse = (choices || []).find((choice) => choice.correct);\n\n this.onAddChoice();\n if (!choices || (choices && choices.length < 2) || !correctResponse) {\n onCheck(() => {\n const { tr } = editor.state;\n\n tr.deleteSelection();\n editor.view.dispatch(tr);\n onToolbarDone(false);\n });\n }\n };\n\n onClickInside = () => {\n this.clickedInside = true;\n };\n\n render() {\n const {\n choices,\n spellCheck,\n uploadSoundSupport,\n mathMlOptions = {},\n baseInputConfiguration = {},\n responseAreaInputConfiguration = {},\n } = this.props;\n const { respAreaMarkup, toolbarStyle } = this.state;\n\n if (!toolbarStyle) {\n return null;\n }\n\n return (\n <ResponseContainer\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6',\n }}\n onMouseDown={this.onClickInside}\n >\n <ItemBuilder>\n <RespArea\n editorRef={(ref) => {\n if (ref) {\n this.editorRef = ref;\n this.props.editorCallback?.(ref);\n }\n }}\n autoFocus={true}\n autoSave\n toolbarOpts={{\n position: 'top',\n alwaysVisible: false,\n showDone: false,\n doneOn: 'blur',\n }}\n markup={respAreaMarkup}\n onKeyDown={this.onKeyDown}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n onChange={(respAreaMarkup) => {\n if (this.preventDone) {\n return;\n }\n\n this.onRespAreaChange(respAreaMarkup);\n }}\n onDone={(val) => {\n if (this.preventDone) {\n return;\n }\n\n this.onDone(val);\n }}\n onBlur={(e) => {\n if (!e.relatedTarget) {\n return;\n }\n\n const isInInsertCharacter = !!(e.relatedTarget && e.relatedTarget.closest('.insert-character-dialog'));\n const isInDoneButton = !!(e.relatedTarget && e.relatedTarget.closest('[aria-label=\"Done\"]'));\n\n this.preventDone = isInInsertCharacter || isInDoneButton;\n if (isInInsertCharacter || isInDoneButton) {\n this.clickedInside = true;\n }\n this.onBlur(e);\n }}\n placeholder=\"Add Choice\"\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n />\n <AddButton\n onClick={() => this.onAddChoice()}\n size=\"small\"\n aria-label=\"Add\"\n >\n <AddIcon fontSize=\"inherit\" />\n </AddButton>\n </ItemBuilder>\n\n {choices && (\n <ChoicesHolder>\n {choices.map(({ label, correct }, index) => (\n <MenuItem\n key={index}\n onClick={() => this.onSelectChoice(label, index)}\n onRemoveChoice={() => this.onRemoveChoice(label, index)}\n onEditChoice={() => this.onEditChoice(label, index)}\n value={label}\n correct={correct}\n />\n ))}\n </ChoicesHolder>\n )}\n </ResponseContainer>\n );\n }\n}\n\nconst StyledRespAreaToolbar = RespAreaToolbar;\n\nexport default StyledRespAreaToolbar;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"inline-dropdown-toolbar.js","names":["_utils","require","_react","_interopRequireDefault","_reactDom","_propTypes","_editableHtmlTipTap","_mathRendering","_styles","_lodashEs","_renderUi","_Add","_Check","_Close","_Edit","_IconButton","MenuItemWrapper","styled","theme","display","alignItems","position","background","palette","common","white","borderBottom","grey","borderRadius","SelectedIcon","justifyContent","color","fontSize","typography","fontStyle","transform","backgroundColor","correct","top","spacing","left","zIndex","ValueHolder","flex","padding","paddingLeft","correctSecondary","margin","ActionButtons","StyledIconButton","IconButton","black","MenuItemComp","React","Component","constructor","args","_defineProperty2","default","e","onRemoveChoice","props","preventDefault","stopPropagation","onEditChoice","render","onClick","value","createElement","dangerouslySetInnerHTML","__html","onEditClick","size","onRemoveClick","PropTypes","bool","isRequired","func","string","MenuItem","findSlateNode","key","window","document","querySelector","createElementFromHTML","htmlString","div","innerHTML","trim","ResponseContainer","boxShadow","shadows","width","RespArea","EditableHtml","minHeight","AddButton","right","ChoicesHolder","flexDirection","border","ItemBuilder","RespAreaToolbar","respAreaMarkup","editedChoiceIndex","setState","editor","tr","state","isDone","view","dispatch","val","choices","node","onAddChoice","onToolbarDone","onlyText","textContent","commands","updateAttributes","isEmpty","attrs","index","refreshResponseArea","newValue","onSelectChoice","isEqual","onRespAreaChange","event","html","editorRef","getHTML","onDone","preventDone","clickedInside","onCheck","correctResponse","find","choice","length","deleteSelection","componentDidMount","domNode","nodeDOM","selection","from","nodeType","domNodeRect","getBoundingClientRect","editorNode","closest","editorRect","height","toolbarStyle","componentDidUpdate","ReactDOM","findDOMNode","renderMath","spellCheck","uploadSoundSupport","mathMlOptions","baseInputConfiguration","responseAreaInputConfiguration","style","onMouseDown","onClickInside","ref","editorCallback","autoFocus","autoSave","toolbarOpts","alwaysVisible","showDone","doneOn","markup","onKeyDown","languageCharactersProps","language","onChange","onBlur","relatedTarget","isInInsertCharacter","isInDoneButton","placeholder","pluginProps","getPluginProps","inputConfiguration","map","label","object","array","StyledRespAreaToolbar","_default","exports"],"sources":["../src/inline-dropdown-toolbar.jsx"],"sourcesContent":["import { getPluginProps } from './utils';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { styled } from '@mui/material/styles';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport { color } from '@pie-lib/render-ui';\n\nimport AddIcon from '@mui/icons-material/Add';\nimport CheckIcon from '@mui/icons-material/Check';\nimport CloseIcon from '@mui/icons-material/Close';\nimport EditIcon from '@mui/icons-material/Edit';\nimport IconButton from '@mui/material/IconButton';\n\nconst MenuItemWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'flex-start',\n position: 'relative',\n background: theme.palette.common.white,\n borderBottom: `1px solid ${theme.palette.grey[400]}`,\n\n '&:last-child': {\n borderRadius: '0 0 4px 4px',\n },\n}));\n\nconst SelectedIcon = styled('div')(({ theme }) => ({\n display: 'flex',\n justifyContent: 'center',\n color: theme.palette.common.white,\n fontSize: theme.typography.fontSize,\n fontStyle: 'normal',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n backgroundColor: color.correct(),\n borderRadius: '50%',\n top: theme.spacing(2),\n left: theme.spacing(1),\n zIndex: 3,\n}));\n\nconst ValueHolder = styled('div')(({ theme, correct }) => ({\n flex: 1,\n padding: theme.spacing(0.75),\n paddingLeft: theme.spacing(3.5),\n ...(correct && {\n background: color.correctSecondary(),\n }),\n '& p': {\n // browser adds extra margin for p tags by default\n margin: 0,\n },\n}));\n\nconst ActionButtons = styled('div')(({ theme }) => ({\n margin: theme.spacing(0.5),\n display: 'flex',\n}));\n\nconst StyledIconButton = styled(IconButton)(({ theme }) => ({\n fontSize: theme.typography.fontSize,\n padding: theme.spacing(0.5),\n color: theme.palette.common.black,\n}));\n\nclass MenuItemComp extends React.Component {\n static propTypes = {\n correct: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n onEditChoice: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n };\n\n onRemoveClick = (e) => {\n const { onRemoveChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onRemoveChoice();\n };\n\n onEditClick = (e) => {\n const { onEditChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onEditChoice();\n };\n\n render() {\n const { correct, onClick, value } = this.props;\n\n return (\n <MenuItemWrapper>\n {correct && (\n <SelectedIcon onClick={onClick}>\n <CheckIcon fontSize=\"inherit\" />\n </SelectedIcon>\n )}\n <ValueHolder\n correct={correct}\n onClick={onClick}\n dangerouslySetInnerHTML={{\n __html: value,\n }}\n />\n <ActionButtons>\n <StyledIconButton onClick={this.onEditClick} size=\"small\" aria-label=\"Edit\">\n <EditIcon fontSize=\"inherit\" />\n </StyledIconButton>\n <StyledIconButton onClick={this.onRemoveClick} size=\"small\" aria-label=\"Remove\">\n <CloseIcon fontSize=\"inherit\" />\n </StyledIconButton>\n </ActionButtons>\n </MenuItemWrapper>\n );\n }\n}\n\nconst MenuItem = MenuItemComp;\n\nconst findSlateNode = (key) => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst ResponseContainer = styled('div')(({ theme }) => ({\n boxShadow: theme.shadows[2],\n borderRadius: '4px',\n width: '400px',\n}));\n\nconst RespArea = styled(EditableHtml)(({ theme }) => ({\n borderRadius: '4px',\n backgroundColor: theme.palette.common.white,\n '& [data-slate-editor=\"true\"]': {\n minHeight: 'initial !important',\n },\n}));\n\nconst AddButton = styled(IconButton)(({ theme }) => ({\n fontSize: theme.typography.fontSize + 2,\n padding: theme.spacing(0.5),\n color: theme.palette.common.black,\n position: 'absolute',\n top: '50%',\n right: theme.spacing(2),\n transform: 'translate(0, -50%)',\n}));\n\nconst ChoicesHolder = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n '& > div:last-child': {\n border: 'none',\n },\n});\n\nconst ItemBuilder = styled('div')(({ theme }) => ({\n padding: theme.spacing(0.5),\n position: 'relative',\n}));\n\nclass RespAreaToolbar extends React.Component {\n static propTypes = {\n node: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n onDone: PropTypes.func,\n choices: PropTypes.array,\n onAddChoice: PropTypes.func.isRequired,\n onCheck: PropTypes.func,\n editorCallback: PropTypes.func,\n onRemoveChoice: PropTypes.func.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n editor: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n clickedInside = false;\n preventDone = false;\n\n state = {\n respAreaMarkup: '',\n editedChoiceIndex: -1,\n };\n\n componentDidMount() {\n const { editor } = this.props;\n\n const domNode = editor.view.nodeDOM(editor.state.selection.from);\n\n if (domNode?.nodeType === 1) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editorNode = domNode.closest('.tiptap');\n const editorRect = editorNode.getBoundingClientRect();\n const top = domNodeRect.top - domNodeRect.height;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 40}px`,\n left: `${left + 25}px`,\n },\n });\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onRespAreaChange = (respAreaMarkup) => {\n this.setState({ respAreaMarkup });\n };\n\n onAddChoice = () => {\n const { editor } = this.props;\n const { tr } = editor.state;\n\n tr.isDone = true;\n editor.view.dispatch(tr);\n };\n\n onDone = (val) => {\n const { choices, node, editor, onAddChoice, onToolbarDone } = this.props;\n\n const { editedChoiceIndex } = this.state;\n const onlyText = createElementFromHTML(val).textContent.trim();\n\n if (editedChoiceIndex >= 0 && choices?.[editedChoiceIndex]?.correct) {\n editor.commands.updateAttributes('inline_dropdown', { value: val });\n onToolbarDone(false);\n }\n\n if (!isEmpty(onlyText)) {\n onAddChoice(node.attrs.index, val, editedChoiceIndex);\n editor.commands.refreshResponseArea();\n }\n\n this.setState({ editedChoiceIndex: -1 });\n };\n\n onSelectChoice = (newValue, index) => {\n const { node, editor, onToolbarDone, onSelectChoice } = this.props;\n\n editor.commands.updateAttributes('inline_dropdown', { value: newValue });\n\n onToolbarDone(false);\n onSelectChoice(index);\n editor.commands.refreshResponseArea();\n };\n\n onRemoveChoice = (val, index) => {\n const { node, editor, onToolbarDone, onRemoveChoice } = this.props;\n\n if (isEqual(val, node.attrs.value)) {\n editor.commands.updateAttributes('inline_dropdown', { value: null });\n onToolbarDone(false);\n }\n\n onRemoveChoice(index);\n editor.commands.refreshResponseArea();\n };\n\n onEditChoice = (val, index) => {\n this.onRespAreaChange(val);\n this.setState({ editedChoiceIndex: index });\n };\n\n onKeyDown = (event) => {\n if (event.key === 'Enter') {\n const html = this.editorRef.getHTML() || '';\n\n this.onDone(html);\n this.preventDone = true;\n\n // Cancelling event\n return true;\n }\n\n return false;\n };\n\n onBlur = () => {\n if (this.clickedInside) {\n this.clickedInside = false;\n return;\n }\n\n const { node, choices, onCheck, onToolbarDone, editor } = this.props;\n const correctResponse = (choices || []).find((choice) => choice.correct);\n\n this.onAddChoice();\n if (!choices || (choices && choices.length < 2) || !correctResponse) {\n onCheck(() => {\n const { tr } = editor.state;\n\n tr.deleteSelection();\n editor.view.dispatch(tr);\n onToolbarDone(false);\n });\n }\n };\n\n onClickInside = () => {\n this.clickedInside = true;\n };\n\n render() {\n const {\n choices,\n spellCheck,\n uploadSoundSupport,\n mathMlOptions = {},\n baseInputConfiguration = {},\n responseAreaInputConfiguration = {},\n } = this.props;\n const { respAreaMarkup, toolbarStyle } = this.state;\n\n if (!toolbarStyle) {\n return null;\n }\n\n return (\n <ResponseContainer\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6',\n }}\n onMouseDown={this.onClickInside}\n >\n <ItemBuilder>\n <RespArea\n editorRef={(ref) => {\n if (ref) {\n this.editorRef = ref;\n this.props.editorCallback?.(ref);\n }\n }}\n autoFocus={true}\n autoSave\n toolbarOpts={{\n position: 'top',\n alwaysVisible: false,\n showDone: false,\n doneOn: 'blur',\n }}\n markup={respAreaMarkup}\n onKeyDown={this.onKeyDown}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n onChange={(respAreaMarkup) => {\n if (this.preventDone) {\n return;\n }\n\n this.onRespAreaChange(respAreaMarkup);\n }}\n onDone={(val) => {\n if (this.preventDone || this.clickedInside) {\n return;\n }\n\n this.onDone(val);\n }}\n onBlur={(e) => {\n if (!e.relatedTarget) {\n return;\n }\n\n const isInInsertCharacter = !!(e.relatedTarget && e.relatedTarget.closest('.insert-character-dialog'));\n const isInDoneButton = !!(e.relatedTarget && e.relatedTarget.closest('[aria-label=\"Done\"]'));\n\n this.preventDone = isInInsertCharacter || isInDoneButton;\n if (isInInsertCharacter || isInDoneButton) {\n this.clickedInside = true;\n }\n this.onBlur(e);\n }}\n placeholder=\"Add Choice\"\n pluginProps={getPluginProps(responseAreaInputConfiguration?.inputConfiguration, baseInputConfiguration)}\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n />\n <AddButton\n onClick={() => this.onAddChoice()}\n size=\"small\"\n aria-label=\"Add\"\n >\n <AddIcon fontSize=\"inherit\" />\n </AddButton>\n </ItemBuilder>\n\n {choices && (\n <ChoicesHolder>\n {choices.map(({ label, correct }, index) => (\n <MenuItem\n key={index}\n onClick={() => this.onSelectChoice(label, index)}\n onRemoveChoice={() => this.onRemoveChoice(label, index)}\n onEditChoice={() => this.onEditChoice(label, index)}\n value={label}\n correct={correct}\n />\n ))}\n </ChoicesHolder>\n )}\n </ResponseContainer>\n );\n }\n}\n\nconst StyledRespAreaToolbar = RespAreaToolbar;\n\nexport default StyledRespAreaToolbar;\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/inline-dropdown-configure",
3
- "version": "8.1.1-next.6",
3
+ "version": "8.1.1-next.7",
4
4
  "private": true,
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [8.2.0-next.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@8.1.1-next.1...@pie-element/inline-dropdown-controller@8.2.0-next.0) (2026-03-18)
7
+
8
+ ### Features
9
+
10
+ - **inline-dropdown:** add trace log for scoring in outcome function PD-5436 ([dc30bd8](https://github.com/pie-framework/pie-elements/commit/dc30bd827db10273e71419acd06fe52572952fb8))
11
+
6
12
  ## [8.1.1-next.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/inline-dropdown-controller@8.1.0-next.1...@pie-element/inline-dropdown-controller@8.1.1-next.1) (2026-02-26)
7
13
 
8
14
  **Note:** Version bump only for package @pie-element/inline-dropdown-controller
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getScore = exports.createCorrectResponseSession = void 0;
7
+ exports.getScore = exports.getLogTrace = exports.createCorrectResponseSession = void 0;
8
8
  exports.model = model;
9
9
  exports.normalize = void 0;
10
10
  exports.outcome = outcome;
@@ -162,6 +162,45 @@ const getScore = (config, session) => {
162
162
  return parseFloat(str);
163
163
  };
164
164
 
165
+ /**
166
+ * Generates detailed trace log for scoring evaluation
167
+ * @param {Object} model - the question model
168
+ * @param {Object} session - the student session
169
+ * @param {Object} env - the environment
170
+ * @returns {Array} traceLog - array of trace messages
171
+ */
172
+ exports.getScore = getScore;
173
+ const getLogTrace = (model, session, env) => {
174
+ const traceLog = [];
175
+ const {
176
+ value = {}
177
+ } = session || {};
178
+ const allCorrectResponses = (0, _utils.getAllCorrectResponses)(model);
179
+ const responseAreaKeys = Object.keys(allCorrectResponses);
180
+ const totalAreas = responseAreaKeys.length;
181
+ traceLog.push(`${totalAreas} dropdown response area(s) defined in this question.`);
182
+ if (value && Object.keys(value).length > 0) {
183
+ const selectedAreas = Object.entries(value).filter(([key, val]) => val && val.trim()).length;
184
+ traceLog.push(`Student selected options in ${selectedAreas} out of ${totalAreas} dropdown(s).`);
185
+ responseAreaKeys.forEach(areaKey => {
186
+ const studentSelection = value && value[areaKey] || '';
187
+ const correctOptions = allCorrectResponses[areaKey] || [];
188
+ if (studentSelection.trim()) {
189
+ traceLog.push(`Dropdown ${parseInt(areaKey) + 1}: student selected '${studentSelection}' (correct options: [${correctOptions.map(opt => `'${opt}'`).join(', ')}]).`);
190
+ } else {
191
+ traceLog.push(`Dropdown ${parseInt(areaKey) + 1}: no selection made (correct options: [${correctOptions.map(opt => `'${opt}'`).join(', ')}]).`);
192
+ }
193
+ });
194
+ } else {
195
+ traceLog.push('Student did not make any selections in the dropdowns.');
196
+ }
197
+ const partialScoringEnabled = _controllerUtils.partialScoring.enabled(model, env);
198
+ traceLog.push(`Scoring method: ${partialScoringEnabled ? 'partial scoring' : 'all-or-nothing scoring'}.`);
199
+ const score = getScore(model, session);
200
+ traceLog.push(`Final score: ${score}.`);
201
+ return traceLog;
202
+ };
203
+
165
204
  /**
166
205
  *
167
206
  * The score is partial by default for checkbox mode, allOrNothing for radio mode.
@@ -174,21 +213,25 @@ const getScore = (config, session) => {
174
213
  * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides
175
214
  * `model.partialScoring`.
176
215
  */
177
- exports.getScore = getScore;
216
+ exports.getLogTrace = getLogTrace;
178
217
  function outcome(model, session, env = {}) {
179
218
  return new Promise(resolve => {
180
219
  if (!session || (0, _lodashEs.isEmpty)(session)) {
181
220
  resolve({
182
221
  score: 0,
183
- empty: true
222
+ empty: true,
223
+ traceLog: ['Student did not make any selections in the dropdowns. Score is 0.']
224
+ });
225
+ } else {
226
+ const traceLog = getLogTrace(model, session, env);
227
+ const score = getScore(model, session);
228
+ const partialScoringEnabled = _controllerUtils.partialScoring.enabled(model, env);
229
+ resolve({
230
+ score: partialScoringEnabled ? score : Math.floor(score),
231
+ empty: false,
232
+ traceLog
184
233
  });
185
234
  }
186
- const partialScoringEnabled = _controllerUtils.partialScoring.enabled(model, env);
187
- const score = getScore(model, session);
188
- resolve({
189
- score: partialScoringEnabled ? score : Math.floor(score),
190
- empty: false
191
- });
192
235
  });
193
236
  }
194
237
  const createCorrectResponseSession = (question, env) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_lodashEs","require","_controllerUtils","_defaults","_interopRequireDefault","_utils","getFeedback","correct","normalize","question","defaults","exports","model","session","env","updateSession","normalizedQuestion","value","choices","reduce","obj","area","key","map","choice","feedback","mode","allCorrectResponses","getAllCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","lockChoices","shuffledValues","us","part","id","element","update","Promise","resolve","storedValues","getShuffledChoices","Array","isArray","isEmpty","catch","e","console","error","teacherInstructions","rationale","choicesWillNullRationales","acc","currentValue","role","rationaleEnabled","teacherInstructionsEnabled","choiceRationaleEnabled","out","disabled","prompt","promptEnabled","displayType","markup","responseCorrect","getScore","undefined","language","extraCSSRules","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","getInnerText","html","replaceAll","getContent","replace","validate","maxResponseAreas","maxResponseAreaChoices","errors","field","required","nbOfResponseAreas","match","responseAreasError","choiceKey","responseAreaChoicesError"],"sources":["../src/index.js"],"sourcesContent":["import { isEmpty, map, reduce } from 'lodash-es';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {},\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect = answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const shuffledValues = {};\n const keys = Object.keys(choices);\n\n const us = (part) => (id, element, update) => {\n return new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n };\n\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n const storedValues = session?.shuffledValues?.[key];\n\n choices[key] = await getShuffledChoices(\n choices[key],\n // the shuffledValues structure was updated to an object like { choice_key: [] }\n // and we need to override shuffledValues if it's not an array\n { shuffledValues: Array.isArray(storedValues) ? storedValues : [] },\n us(key),\n 'value',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (session && updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.error('update session failed', e);\n });\n }\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce((acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n }, {});\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n rationale,\n teacherInstructions,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n return out;\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore,\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices = choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { markup, choices } = model;\n const { maxResponseAreas, maxResponseAreaChoices } = config;\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be defined at least 1 response area.';\n }\n\n (Object.keys(choices) || []).forEach((choiceKey) => {\n if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {\n errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;\n }\n });\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_lodashEs","require","_controllerUtils","_defaults","_interopRequireDefault","_utils","getFeedback","correct","normalize","question","defaults","exports","model","session","env","updateSession","normalizedQuestion","value","choices","reduce","obj","area","key","map","choice","feedback","mode","allCorrectResponses","getAllCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","lockChoices","shuffledValues","us","part","id","element","update","Promise","resolve","storedValues","getShuffledChoices","Array","isArray","isEmpty","catch","e","console","error","teacherInstructions","rationale","choicesWillNullRationales","acc","currentValue","role","rationaleEnabled","teacherInstructionsEnabled","choiceRationaleEnabled","out","disabled","prompt","promptEnabled","displayType","markup","responseCorrect","getScore","undefined","language","extraCSSRules","config","maxScore","correctCount","total","str","toFixed","parseFloat","getLogTrace","traceLog","responseAreaKeys","totalAreas","push","selectedAreas","entries","filter","val","trim","forEach","areaKey","studentSelection","correctOptions","parseInt","opt","join","partialScoringEnabled","partialScoring","enabled","score","outcome","empty","Math","floor","createCorrectResponseSession","correctChoices","c","getInnerText","html","replaceAll","getContent","replace","validate","maxResponseAreas","maxResponseAreaChoices","errors","field","required","nbOfResponseAreas","match","responseAreasError","choiceKey","responseAreaChoicesError"],"sources":["../src/index.js"],"sourcesContent":["import { isEmpty, map, reduce } from 'lodash-es';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport defaults from './defaults';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport async function model(question, session, env, updateSession) {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {},\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect = answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const shuffledValues = {};\n const keys = Object.keys(choices);\n\n const us = (part) => (id, element, update) => {\n return new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n };\n\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n const storedValues = session?.shuffledValues?.[key];\n\n choices[key] = await getShuffledChoices(\n choices[key],\n // the shuffledValues structure was updated to an object like { choice_key: [] }\n // and we need to override shuffledValues if it's not an array\n { shuffledValues: Array.isArray(storedValues) ? storedValues : [] },\n us(key),\n 'value',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (session && updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.error('update session failed', e);\n });\n }\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce((acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n }, {});\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n rationale,\n teacherInstructions,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n return out;\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore,\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n * Generates detailed trace log for scoring evaluation\n * @param {Object} model - the question model\n * @param {Object} session - the student session\n * @param {Object} env - the environment\n * @returns {Array} traceLog - array of trace messages\n */\nexport const getLogTrace = (model, session, env) => {\n const traceLog = [];\n const { value = {} } = session || {};\n const allCorrectResponses = getAllCorrectResponses(model);\n const responseAreaKeys = Object.keys(allCorrectResponses);\n const totalAreas = responseAreaKeys.length;\n \n traceLog.push(`${totalAreas} dropdown response area(s) defined in this question.`);\n \n if (value && Object.keys(value).length > 0) {\n const selectedAreas = Object.entries(value).filter(([key, val]) => val && val.trim()).length;\n traceLog.push(`Student selected options in ${selectedAreas} out of ${totalAreas} dropdown(s).`);\n \n responseAreaKeys.forEach((areaKey) => {\n const studentSelection = (value && value[areaKey]) || '';\n const correctOptions = allCorrectResponses[areaKey] || [];\n \n if (studentSelection.trim()) {\n traceLog.push(`Dropdown ${parseInt(areaKey) + 1}: student selected '${studentSelection}' (correct options: [${correctOptions.map(opt => `'${opt}'`).join(', ')}]).`);\n } else {\n traceLog.push(`Dropdown ${parseInt(areaKey) + 1}: no selection made (correct options: [${correctOptions.map(opt => `'${opt}'`).join(', ')}]).`);\n }\n });\n } else {\n traceLog.push('Student did not make any selections in the dropdowns.');\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n traceLog.push(\n `Scoring method: ${\n partialScoringEnabled ? 'partial scoring' : 'all-or-nothing scoring'\n }.`\n );\n\n const score = getScore(model, session);\n traceLog.push(`Final score: ${score}.`);\n\n return traceLog;\n}\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ \n score: 0, \n empty: true, \n traceLog: ['Student did not make any selections in the dropdowns. Score is 0.'] \n });\n } else {\n const traceLog = getLogTrace(model, session, env);\n const score = getScore(model, session);\n const partialScoringEnabled = partialScoring.enabled(model, env);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n traceLog\n });\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices = choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const { markup, choices } = model;\n const { maxResponseAreas, maxResponseAreaChoices } = config;\n const errors = {};\n\n ['teacherInstructions', 'prompt', 'rationale'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be defined at least 1 response area.';\n }\n\n (Object.keys(choices) || []).forEach((choiceKey) => {\n if (choices[choiceKey] && choices[choiceKey].length > maxResponseAreaChoices) {\n errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;\n }\n });\n\n return errors;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/inline-dropdown-controller",
3
3
  "private": true,
4
- "version": "8.1.1-next.1",
4
+ "version": "8.2.0-next.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "9.1.1-next.7",
7
+ "version": "9.2.0-next.1",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "postpublish": "../../scripts/postpublish"
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "author": "",
28
28
  "license": "ISC",
29
- "gitHead": "eb9c170a404df9f22b0d4d075423d206c81e44ae",
29
+ "gitHead": "26107ab92ebde0860f26faef09eaf150e963cc48",
30
30
  "main": "lib/index.js",
31
31
  "module": "src/index.js"
32
32
  }