@pie-element/match-list 5.0.2-esm.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-list@5.0.0...@pie-element/match-list@5.2.0) (2025-10-10)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * remove opacity for categorize, match-list and placement-ordering answers PD-5149 ([18a68cc](https://github.com/pie-framework/pie-elements/commit/18a68cc99fdf3e09ad3818d32bb3da1304110c5d))
12
+
13
+
14
+ ### Features
15
+
16
+ * update libs PD-5208, PD-5211, PD-5199, PD-5218, PD-5217 ([da327fa](https://github.com/pie-framework/pie-elements/commit/da327fa501f6e9eff1c0b30b5ef092426a91f78b))
17
+
18
+
19
+
20
+
21
+
22
+ # [5.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-list@4.0.0...@pie-element/match-list@5.1.0) (2025-10-07)
23
+
24
+ **Note:** Version bump only for package @pie-element/match-list
25
+
26
+
27
+
28
+
29
+
6
30
  # [5.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-list@3.3.0...@pie-element/match-list@5.0.0) (2025-10-02)
7
31
 
8
32
 
@@ -3,6 +3,25 @@
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
+ # [4.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-list-controller@4.0.1...@pie-element/match-list-controller@4.2.0) (2025-10-10)
7
+
8
+
9
+ ### Features
10
+
11
+ * update libs PD-5208, PD-5211, PD-5199, PD-5218, PD-5217 ([da327fa](https://github.com/pie-framework/pie-elements/commit/da327fa501f6e9eff1c0b30b5ef092426a91f78b))
12
+
13
+
14
+
15
+
16
+
17
+ # [4.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-list-controller@4.0.0...@pie-element/match-list-controller@4.1.0) (2025-10-07)
18
+
19
+ **Note:** Version bump only for package @pie-element/match-list-controller
20
+
21
+
22
+
23
+
24
+
6
25
  ## [4.0.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/match-list-controller@3.3.0...@pie-element/match-list-controller@4.0.1) (2025-10-02)
7
26
 
8
27
  **Note:** Version bump only for package @pie-element/match-list-controller
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/match-list-controller",
3
3
  "private": true,
4
- "version": "4.0.2",
4
+ "version": "4.2.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
@@ -9,8 +9,8 @@
9
9
  "test": "./node_modules/.bin/jest"
10
10
  },
11
11
  "dependencies": {
12
- "@pie-lib/controller-utils": "^0.19.0",
13
- "@pie-lib/feedback": "^0.21.0",
12
+ "@pie-lib/controller-utils": "^0.19.4",
13
+ "@pie-lib/feedback": "^0.21.4",
14
14
  "debug": "^3.1.0",
15
15
  "lodash": "^4.17.15"
16
16
  },
package/lib/answer.js CHANGED
@@ -104,7 +104,6 @@ var AnswerContent = (0, _styles.withStyles)(function (theme) {
104
104
  },
105
105
  disabled: {
106
106
  backgroundColor: _renderUi.color.white(),
107
- opacity: 0.6,
108
107
  cursor: 'not-allowed'
109
108
  },
110
109
  incorrect: {
package/lib/answer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/answer.js"],"names":["log","Holder","theme","number","width","fontSize","textAlign","color","palette","common","black","placeholder","display","padding","alignItems","justifyContent","height","classes","index","isOver","disabled","undefined","propTypes","PropTypes","bool","AnswerContent","over","opacity","answerContent","text","backgroundColor","white","border","grey","cursor","boxSizing","overflow","transition","wordBreak","pointerEvents","dragging","incorrect","correct","props","isDragging","title","empty","outcome","guideIndex","type","names","__html","Answer","e","preventDefault","ref","addEventListener","handleTouchStart","passive","removeEventListener","id","className","connectDragSource","connectDropTarget","name","answer","content","droppable","React","Component","string","func","isRequired","any","object","StyledAnswer","minHeight","minWidth","margin","answerTarget","drop","monitor","draggedItem","getItem","instanceId","onPlaceAnswer","promptId","canDrop","DropAnswer","connect","dropTarget","answerSource","canDrag","draggable","beginDrag","value","endDrag","didDrop","onRemoveChoice","DragAnswer","dragSource","DragAndDropAnswer"],"mappings":"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","sourcesContent":["import { DragSource, DropTarget } from 'react-dnd';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport isEmpty from 'lodash/isEmpty';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-elements:match-title:answer');\n\nconst Holder = withStyles((theme) => ({\n number: {\n width: '100%',\n fontSize: '18px',\n textAlign: 'center',\n color: `rgba(${theme.palette.common.black}, 0.6)`,\n },\n placeholder: {\n display: 'flex',\n padding: '0',\n alignItems: 'center',\n justifyContent: 'center',\n height: '40px',\n },\n}))(({ classes, index, isOver, disabled }) => (\n <PlaceHolder className={classes.placeholder} disabled={disabled} isOver={isOver}>\n {index !== undefined && <div className={classes.number}>{index}</div>}\n </PlaceHolder>\n));\n\nHolder.propTypes = {\n index: PropTypes.number,\n isOver: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nconst AnswerContent = withStyles((theme) => ({\n over: {\n opacity: 0.2,\n },\n answerContent: {\n color: color.text(),\n backgroundColor: color.white(),\n border: `1px solid ${theme.palette.grey[400]}`,\n cursor: 'pointer',\n width: '100%',\n padding: '10px',\n boxSizing: 'border-box',\n overflow: 'hidden',\n transition: 'opacity 200ms linear',\n wordBreak: 'break-word',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n },\n dragging: {\n opacity: 0.5,\n },\n disabled: {\n backgroundColor: color.white(),\n opacity: 0.6,\n cursor: 'not-allowed',\n },\n incorrect: {\n border: `1px solid ${color.incorrect()}`,\n },\n correct: {\n border: `1px solid ${color.correct()}`,\n },\n}))((props) => {\n const { classes, isDragging, isOver, title, disabled, empty, outcome, guideIndex, type } = props;\n\n if (empty) {\n return <Holder index={guideIndex} isOver={isOver} disabled={disabled} type={type} />;\n } else {\n const names = classNames(\n classes.answerContent,\n isDragging && !disabled && classes.dragging,\n isOver && !disabled && classes.over,\n disabled && classes.disabled,\n outcome && classes[outcome],\n );\n\n return <div className={names} dangerouslySetInnerHTML={{ __html: title }} />;\n }\n});\n\nexport class Answer extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n connectDragSource: PropTypes.func,\n connectDropTarget: PropTypes.func,\n isDragging: PropTypes.bool.isRequired,\n id: PropTypes.any,\n title: PropTypes.string,\n isOver: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n empty: PropTypes.bool,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n };\n\n componentDidMount() {\n if (this.ref) {\n this.ref.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n }\n }\n\n componentWillUnmount() {\n if (this.ref) {\n this.ref.removeEventListener('touchstart', this.handleTouchStart);\n }\n }\n\n handleTouchStart = (e) => {\n e.preventDefault();\n };\n\n render() {\n const {\n id,\n title,\n isDragging,\n className,\n connectDragSource,\n connectDropTarget,\n disabled,\n classes,\n isOver,\n type,\n correct,\n } = this.props;\n\n log('[render], props: ', this.props);\n\n const name = classNames(className, classes.answer, {\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false,\n });\n\n const content = (\n <div className={name} ref={(ref) => (this.ref = ref)}>\n <AnswerContent\n title={title}\n id={id}\n isOver={isOver}\n empty={isEmpty(title)}\n isDragging={isDragging}\n disabled={disabled}\n type={type}\n />\n </div>\n );\n const droppable = connectDropTarget ? connectDropTarget(content) : content;\n\n return connectDragSource ? connectDragSource(droppable) : droppable;\n }\n}\n\nconst StyledAnswer = withStyles({\n answer: {\n boxSizing: 'border-box',\n minHeight: 40,\n minWidth: '100px',\n overflow: 'hidden',\n margin: '10px 0',\n padding: '0px',\n textAlign: 'center',\n },\n incorrect: {\n border: `1px solid var(--feedback-incorrect-bg-color, ${color.incorrect()})`,\n },\n correct: {\n border: `1px solid var(--feedback-correct-bg-color, ${color.correct()})`,\n },\n})(Answer);\n\nconst answerTarget = {\n drop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n if (draggedItem.instanceId === props.instanceId) {\n props.onPlaceAnswer(props.promptId, draggedItem.id);\n }\n },\n canDrop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n return draggedItem.instanceId === props.instanceId;\n },\n};\n\nexport const DropAnswer = DropTarget('Answer', answerTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n}))(StyledAnswer);\n\nconst answerSource = {\n canDrag(props) {\n return props.draggable && !props.disabled;\n },\n beginDrag(props) {\n return {\n id: props.id,\n type: props.type,\n instanceId: props.instanceId,\n value: props.title,\n promptId: props.promptId,\n };\n },\n endDrag(props, monitor) {\n if (!monitor.didDrop()) {\n if (props.type === 'target') {\n props.onRemoveChoice(monitor.getItem());\n }\n }\n },\n};\n\nexport const DragAnswer = DragSource('Answer', answerSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(StyledAnswer);\n\nconst DragAndDropAnswer = DragSource('Answer', answerSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(DropAnswer);\n\nexport default DragAndDropAnswer;\n"],"file":"answer.js"}
1
+ {"version":3,"sources":["../src/answer.js"],"names":["log","Holder","theme","number","width","fontSize","textAlign","color","palette","common","black","placeholder","display","padding","alignItems","justifyContent","height","classes","index","isOver","disabled","undefined","propTypes","PropTypes","bool","AnswerContent","over","opacity","answerContent","text","backgroundColor","white","border","grey","cursor","boxSizing","overflow","transition","wordBreak","pointerEvents","dragging","incorrect","correct","props","isDragging","title","empty","outcome","guideIndex","type","names","__html","Answer","e","preventDefault","ref","addEventListener","handleTouchStart","passive","removeEventListener","id","className","connectDragSource","connectDropTarget","name","answer","content","droppable","React","Component","string","func","isRequired","any","object","StyledAnswer","minHeight","minWidth","margin","answerTarget","drop","monitor","draggedItem","getItem","instanceId","onPlaceAnswer","promptId","canDrop","DropAnswer","connect","dropTarget","answerSource","canDrag","draggable","beginDrag","value","endDrag","didDrop","onRemoveChoice","DragAnswer","dragSource","DragAndDropAnswer"],"mappings":"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","sourcesContent":["import { DragSource, DropTarget } from 'react-dnd';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport isEmpty from 'lodash/isEmpty';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-elements:match-title:answer');\n\nconst Holder = withStyles((theme) => ({\n number: {\n width: '100%',\n fontSize: '18px',\n textAlign: 'center',\n color: `rgba(${theme.palette.common.black}, 0.6)`,\n },\n placeholder: {\n display: 'flex',\n padding: '0',\n alignItems: 'center',\n justifyContent: 'center',\n height: '40px',\n },\n}))(({ classes, index, isOver, disabled }) => (\n <PlaceHolder className={classes.placeholder} disabled={disabled} isOver={isOver}>\n {index !== undefined && <div className={classes.number}>{index}</div>}\n </PlaceHolder>\n));\n\nHolder.propTypes = {\n index: PropTypes.number,\n isOver: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nconst AnswerContent = withStyles((theme) => ({\n over: {\n opacity: 0.2,\n },\n answerContent: {\n color: color.text(),\n backgroundColor: color.white(),\n border: `1px solid ${theme.palette.grey[400]}`,\n cursor: 'pointer',\n width: '100%',\n padding: '10px',\n boxSizing: 'border-box',\n overflow: 'hidden',\n transition: 'opacity 200ms linear',\n wordBreak: 'break-word',\n // Added for touch devices, for image content.\n // This will prevent the context menu from appearing and not allowing other interactions with the image.\n // If interactions with the image in the token will be requested we should handle only the context Menu.\n pointerEvents: 'none',\n },\n dragging: {\n opacity: 0.5,\n },\n disabled: {\n backgroundColor: color.white(),\n cursor: 'not-allowed',\n },\n incorrect: {\n border: `1px solid ${color.incorrect()}`,\n },\n correct: {\n border: `1px solid ${color.correct()}`,\n },\n}))((props) => {\n const { classes, isDragging, isOver, title, disabled, empty, outcome, guideIndex, type } = props;\n\n if (empty) {\n return <Holder index={guideIndex} isOver={isOver} disabled={disabled} type={type} />;\n } else {\n const names = classNames(\n classes.answerContent,\n isDragging && !disabled && classes.dragging,\n isOver && !disabled && classes.over,\n disabled && classes.disabled,\n outcome && classes[outcome],\n );\n\n return <div className={names} dangerouslySetInnerHTML={{ __html: title }} />;\n }\n});\n\nexport class Answer extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n connectDragSource: PropTypes.func,\n connectDropTarget: PropTypes.func,\n isDragging: PropTypes.bool.isRequired,\n id: PropTypes.any,\n title: PropTypes.string,\n isOver: PropTypes.bool,\n classes: PropTypes.object.isRequired,\n empty: PropTypes.bool,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n };\n\n componentDidMount() {\n if (this.ref) {\n this.ref.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n }\n }\n\n componentWillUnmount() {\n if (this.ref) {\n this.ref.removeEventListener('touchstart', this.handleTouchStart);\n }\n }\n\n handleTouchStart = (e) => {\n e.preventDefault();\n };\n\n render() {\n const {\n id,\n title,\n isDragging,\n className,\n connectDragSource,\n connectDropTarget,\n disabled,\n classes,\n isOver,\n type,\n correct,\n } = this.props;\n\n log('[render], props: ', this.props);\n\n const name = classNames(className, classes.answer, {\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false,\n });\n\n const content = (\n <div className={name} ref={(ref) => (this.ref = ref)}>\n <AnswerContent\n title={title}\n id={id}\n isOver={isOver}\n empty={isEmpty(title)}\n isDragging={isDragging}\n disabled={disabled}\n type={type}\n />\n </div>\n );\n const droppable = connectDropTarget ? connectDropTarget(content) : content;\n\n return connectDragSource ? connectDragSource(droppable) : droppable;\n }\n}\n\nconst StyledAnswer = withStyles({\n answer: {\n boxSizing: 'border-box',\n minHeight: 40,\n minWidth: '100px',\n overflow: 'hidden',\n margin: '10px 0',\n padding: '0px',\n textAlign: 'center',\n },\n incorrect: {\n border: `1px solid var(--feedback-incorrect-bg-color, ${color.incorrect()})`,\n },\n correct: {\n border: `1px solid var(--feedback-correct-bg-color, ${color.correct()})`,\n },\n})(Answer);\n\nconst answerTarget = {\n drop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n if (draggedItem.instanceId === props.instanceId) {\n props.onPlaceAnswer(props.promptId, draggedItem.id);\n }\n },\n canDrop(props, monitor) {\n const draggedItem = monitor.getItem();\n\n return draggedItem.instanceId === props.instanceId;\n },\n};\n\nexport const DropAnswer = DropTarget('Answer', answerTarget, (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n}))(StyledAnswer);\n\nconst answerSource = {\n canDrag(props) {\n return props.draggable && !props.disabled;\n },\n beginDrag(props) {\n return {\n id: props.id,\n type: props.type,\n instanceId: props.instanceId,\n value: props.title,\n promptId: props.promptId,\n };\n },\n endDrag(props, monitor) {\n if (!monitor.didDrop()) {\n if (props.type === 'target') {\n props.onRemoveChoice(monitor.getItem());\n }\n }\n },\n};\n\nexport const DragAnswer = DragSource('Answer', answerSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(StyledAnswer);\n\nconst DragAndDropAnswer = DragSource('Answer', answerSource, (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n}))(DropAnswer);\n\nexport default DragAndDropAnswer;\n"],"file":"answer.js"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "5.0.2-esm.0",
7
+ "version": "5.2.0",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -14,10 +14,10 @@
14
14
  "@material-ui/core": "^3.9.2",
15
15
  "@material-ui/icons": "^3.0.2",
16
16
  "@pie-framework/pie-player-events": "^0.1.0",
17
- "@pie-lib/correct-answer-toggle": "^2.22.1",
18
- "@pie-lib/drag": "^2.19.1",
19
- "@pie-lib/math-rendering": "^3.19.0",
20
- "@pie-lib/render-ui": "^4.32.1",
17
+ "@pie-lib/correct-answer-toggle": "^2.21.1",
18
+ "@pie-lib/drag": "^2.18.1",
19
+ "@pie-lib/math-rendering": "^3.19.4",
20
+ "@pie-lib/render-ui": "^4.31.1",
21
21
  "classnames": "^2.2.5",
22
22
  "debug": "^4.1.1",
23
23
  "lodash": "^4.17.10",
@@ -28,19 +28,7 @@
28
28
  },
29
29
  "author": "",
30
30
  "license": "ISC",
31
- "gitHead": "007ac5f6be719f57eccb8af3c08e7014c2797f1e",
31
+ "gitHead": "edd2d8fc80a70863b9a71dab5fc2caed85175533",
32
32
  "main": "lib/index.js",
33
- "module": "src/index.js",
34
- "exports": {
35
- ".": {
36
- "import": "./esm/element.js",
37
- "require": "./lib/index.js",
38
- "default": "./esm/element.js"
39
- },
40
- "./controller": {
41
- "import": "./esm/controller.js",
42
- "require": "./controller/lib/index.js",
43
- "default": "./esm/controller.js"
44
- }
45
- }
33
+ "module": "src/index.js"
46
34
  }
package/esm/controller.js DELETED
@@ -1,223 +0,0 @@
1
- import isEmpty from 'lodash/isEmpty';
2
- import { getFeedbackForCorrectness } from '@pie-lib/feedback';
3
- import { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';
4
- import debug from 'debug';
5
-
6
- function _extends() {
7
- _extends = Object.assign || function (target) {
8
- for (var i = 1; i < arguments.length; i++) {
9
- var source = arguments[i];
10
-
11
- for (var key in source) {
12
- if (Object.prototype.hasOwnProperty.call(source, key)) {
13
- target[key] = source[key];
14
- }
15
- }
16
- }
17
-
18
- return target;
19
- };
20
-
21
- return _extends.apply(this, arguments);
22
- }
23
-
24
- var defaults = {
25
- config: {
26
- answers: [],
27
- prompt: '',
28
- prompts: [],
29
- shuffled: false
30
- }
31
- };
32
-
33
- const log = debug('@pie-element:match-list:controller');
34
-
35
- const getResponseCorrectness = (model, answers, env) => {
36
- const isPartialScoring = partialScoring.enabled(model, env);
37
- const prompts = model.prompts;
38
-
39
- if (!answers || Object.keys(answers).length === 0) {
40
- return 'unanswered';
41
- }
42
-
43
- const totalCorrectAnswers = getTotalCorrect(model);
44
- const correctAnswers = getCorrectSelected(prompts, answers);
45
-
46
- if (totalCorrectAnswers === correctAnswers) {
47
- return 'correct';
48
- } else if (correctAnswers === 0) {
49
- return 'incorrect';
50
- } else if (isPartialScoring) {
51
- return 'partial';
52
- }
53
-
54
- return 'incorrect';
55
- };
56
-
57
- const getCorrectness = (question, env, answers) => {
58
- if (env.mode === 'evaluate') {
59
- return getResponseCorrectness(question, answers, env);
60
- }
61
- };
62
-
63
- const getCorrectSelected = (prompts = [], answers) => {
64
- let correctAnswers = 0;
65
- prompts.forEach(p => {
66
- if (p.relatedAnswer === answers[p.id]) {
67
- correctAnswers += 1;
68
- }
69
- });
70
- return correctAnswers;
71
- };
72
-
73
- const getTotalCorrect = question => {
74
- return question && question.prompts ? question.prompts.length : 0;
75
- };
76
-
77
- const getPartialScore = (question, answers) => {
78
- const count = getCorrectSelected(question && question.prompts, answers);
79
- const totalCorrect = getTotalCorrect(question);
80
- return parseFloat((count / totalCorrect).toFixed(2));
81
- };
82
-
83
- const getOutComeScore = (question, env, answers) => {
84
- const correctness = getCorrectness(question, env, answers);
85
- return correctness === 'correct' ? 1 : correctness === 'partial' && true ? getPartialScore(question, answers) : 0;
86
- };
87
-
88
- const outcome = (question, session, env) => {
89
- return new Promise(resolve => {
90
- if (env.mode !== 'evaluate') {
91
- resolve({
92
- score: undefined,
93
- completed: undefined
94
- });
95
- } else {
96
- if (!session || isEmpty(session)) {
97
- resolve({
98
- score: 0,
99
- empty: true
100
- });
101
- } else {
102
- const out = {
103
- score: getOutComeScore(question, env, session.value)
104
- };
105
- resolve(out);
106
- }
107
- }
108
- });
109
- };
110
- function createDefaultModel(model = {}) {
111
- return new Promise(resolve => {
112
- resolve(_extends({}, defaults, model));
113
- });
114
- }
115
- const normalize = model => _extends({}, defaults, model);
116
- /**
117
- *
118
- * @param {*} question
119
- * @param {*} session
120
- * @param {*} env
121
- * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.
122
- */
123
-
124
- function model(question, session, env, updateSession) {
125
- return new Promise(async resolve => {
126
- question = normalize(question);
127
- const correctness = getCorrectness(question, env, session && session.value);
128
- const correctResponse = {};
129
- const score = `${getOutComeScore(question, env, session && session.value) * 100}%`;
130
- const correctInfo = {
131
- score,
132
- correctness
133
- };
134
- const shuffledValues = {};
135
- let prompts = question.prompts;
136
- let answers = question.answers;
137
-
138
- const us = part => (id, element, update) => {
139
- return new Promise(resolve => {
140
- shuffledValues[part] = update.shuffledValues;
141
- resolve();
142
- });
143
- };
144
-
145
- const lockChoiceOrder = lockChoices(question, session, env);
146
-
147
- if (!lockChoiceOrder) {
148
- prompts = await getShuffledChoices(prompts, {
149
- shuffledValues: (session && session.shuffledValues || {}).prompts
150
- }, us('prompts'), 'id');
151
- answers = await getShuffledChoices(answers, {
152
- shuffledValues: (session && session.shuffledValues || {}).answers
153
- }, us('answers'), 'id');
154
- }
155
-
156
- if (!isEmpty(shuffledValues)) {
157
- if (updateSession && typeof updateSession === 'function') {
158
- updateSession(session.id, session.element, {
159
- shuffledValues
160
- }).catch(e => {
161
- // eslint-disable-next-line no-console
162
- console.error('update session failed', e);
163
- });
164
- }
165
- }
166
-
167
- if (question && prompts) {
168
- prompts.forEach(prompt => {
169
- correctResponse[prompt.id] = prompt.relatedAnswer;
170
- });
171
- }
172
-
173
- const fb = env.mode === 'evaluate' ? getFeedbackForCorrectness(correctInfo.correctness, question.feedback) : Promise.resolve(undefined);
174
- fb.then(feedback => {
175
- const base = {
176
- config: _extends({}, question, {
177
- prompts,
178
- answers
179
- }),
180
- correctness: correctInfo,
181
- feedback,
182
- mode: env.mode
183
- };
184
-
185
- if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {
186
- base.rationale = question.rationale;
187
- } else {
188
- base.rationale = null;
189
- }
190
-
191
- const out = Object.assign(base, {
192
- correctResponse
193
- });
194
- log('out: ', out);
195
- resolve(out);
196
- });
197
- });
198
- }
199
- const createCorrectResponseSession = (question, env) => {
200
- return new Promise(resolve => {
201
- if (env.mode !== 'evaluate' && env.role === 'instructor') {
202
- const {
203
- prompts,
204
- answers
205
- } = question;
206
- const value = {};
207
- prompts.forEach(p => {
208
- if (answers.filter(a => a.id === p.relatedAnswer).length) {
209
- value[p.id] = p.relatedAnswer;
210
- }
211
- });
212
- resolve({
213
- value,
214
- id: '1'
215
- });
216
- } else {
217
- resolve(null);
218
- }
219
- });
220
- };
221
-
222
- export { createCorrectResponseSession, createDefaultModel, model, normalize, outcome };
223
- //# sourceMappingURL=controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.js","sources":["../controller/src/defaults.js","../controller/src/index.js"],"sourcesContent":["export default {\n config: {\n answers: [],\n prompt: '',\n prompts: [],\n shuffled: false,\n },\n};\n","import isEmpty from 'lodash/isEmpty';\nimport { getFeedbackForCorrectness } from '@pie-lib/feedback';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-lib/controller-utils';\nimport debug from 'debug';\n\nconst log = debug('@pie-element:match-list:controller');\n\nimport defaults from './defaults';\n\nconst getResponseCorrectness = (model, answers, env) => {\n const isPartialScoring = partialScoring.enabled(model, env);\n const prompts = model.prompts;\n\n if (!answers || Object.keys(answers).length === 0) {\n return 'unanswered';\n }\n\n const totalCorrectAnswers = getTotalCorrect(model);\n const correctAnswers = getCorrectSelected(prompts, answers);\n\n if (totalCorrectAnswers === correctAnswers) {\n return 'correct';\n } else if (correctAnswers === 0) {\n return 'incorrect';\n } else if (isPartialScoring) {\n return 'partial';\n }\n\n return 'incorrect';\n};\n\nconst getCorrectness = (question, env, answers) => {\n if (env.mode === 'evaluate') {\n return getResponseCorrectness(question, answers, env);\n }\n};\n\nconst getCorrectSelected = (prompts = [], answers) => {\n let correctAnswers = 0;\n\n prompts.forEach((p) => {\n if (p.relatedAnswer === answers[p.id]) {\n correctAnswers += 1;\n }\n });\n\n return correctAnswers;\n};\n\nconst getTotalCorrect = (question) => {\n return question && question.prompts ? question.prompts.length : 0;\n};\n\nconst getPartialScore = (question, answers) => {\n const count = getCorrectSelected(question && question.prompts, answers);\n const totalCorrect = getTotalCorrect(question);\n\n return parseFloat((count / totalCorrect).toFixed(2));\n};\n\nconst getOutComeScore = (question, env, answers) => {\n const correctness = getCorrectness(question, env, answers);\n\n return correctness === 'correct' ? 1 : correctness === 'partial' && true ? getPartialScore(question, answers) : 0;\n};\n\nexport const outcome = (question, session, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate') {\n resolve({ score: undefined, completed: undefined });\n } else {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n } else {\n const out = {\n score: getOutComeScore(question, env, session.value),\n };\n\n resolve(out);\n }\n }\n });\n};\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalize = (model) => ({ ...defaults, ...model });\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 function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n question = normalize(question);\n const correctness = getCorrectness(question, env, session && session.value);\n const correctResponse = {};\n const score = `${getOutComeScore(question, env, session && session.value) * 100}%`;\n const correctInfo = {\n score,\n correctness,\n };\n\n const shuffledValues = {};\n let prompts = question.prompts;\n let answers = question.answers;\n\n const us = (part) => (id, element, update) => {\n return new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues;\n resolve();\n });\n };\n\n const lockChoiceOrder = lockChoices(question, session, env);\n\n if (!lockChoiceOrder) {\n prompts = await getShuffledChoices(\n prompts,\n { shuffledValues: ((session && session.shuffledValues) || {}).prompts },\n us('prompts'),\n 'id',\n );\n answers = await getShuffledChoices(\n answers,\n { shuffledValues: ((session && session.shuffledValues) || {}).answers },\n us('answers'),\n 'id',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (updateSession && typeof updateSession === 'function') {\n updateSession(session.id, session.element, {\n shuffledValues,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.error('update session failed', e);\n });\n }\n }\n\n if (question && prompts) {\n prompts.forEach((prompt) => {\n correctResponse[prompt.id] = prompt.relatedAnswer;\n });\n }\n\n const fb =\n env.mode === 'evaluate'\n ? getFeedbackForCorrectness(correctInfo.correctness, question.feedback)\n : Promise.resolve(undefined);\n\n fb.then((feedback) => {\n const base = {\n config: {\n ...question,\n prompts,\n answers,\n },\n correctness: correctInfo,\n feedback,\n mode: env.mode,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n base.rationale = question.rationale;\n } else {\n base.rationale = null;\n }\n\n const out = Object.assign(base, {\n correctResponse,\n });\n\n log('out: ', out);\n resolve(out);\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { prompts, answers } = question;\n const value = {};\n\n prompts.forEach((p) => {\n if (answers.filter((a) => a.id === p.relatedAnswer).length) {\n value[p.id] = p.relatedAnswer;\n }\n });\n\n resolve({\n value,\n id: '1',\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"names":["config","answers","prompt","prompts","shuffled","log","debug","getResponseCorrectness","model","env","isPartialScoring","partialScoring","enabled","Object","keys","length","totalCorrectAnswers","getTotalCorrect","correctAnswers","getCorrectSelected","getCorrectness","question","mode","forEach","p","relatedAnswer","id","getPartialScore","count","totalCorrect","parseFloat","toFixed","getOutComeScore","correctness","outcome","session","Promise","resolve","score","undefined","completed","isEmpty","empty","out","value","createDefaultModel","defaults","normalize","updateSession","correctResponse","correctInfo","shuffledValues","us","part","element","update","lockChoiceOrder","lockChoices","getShuffledChoices","catch","e","console","error","fb","getFeedbackForCorrectness","feedback","then","base","role","rationale","assign","createCorrectResponseSession","filter","a"],"mappings":"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"}