@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 +24 -0
- package/controller/CHANGELOG.md +19 -0
- package/controller/package.json +3 -3
- package/lib/answer.js +0 -1
- package/lib/answer.js.map +1 -1
- package/package.json +7 -19
- package/esm/controller.js +0 -223
- package/esm/controller.js.map +0 -1
- package/esm/element.js +0 -2757
- package/esm/element.js.map +0 -1
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
|
|
package/controller/CHANGELOG.md
CHANGED
|
@@ -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
|
package/controller/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/match-list-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "4.0
|
|
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.
|
|
13
|
-
"@pie-lib/feedback": "^0.21.
|
|
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
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.
|
|
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.
|
|
18
|
-
"@pie-lib/drag": "^2.
|
|
19
|
-
"@pie-lib/math-rendering": "^3.19.
|
|
20
|
-
"@pie-lib/render-ui": "^4.
|
|
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": "
|
|
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
|
package/esm/controller.js.map
DELETED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;AAAA,eAAe;AACbA,EAAAA,MAAM,EAAE;AACNC,IAAAA,OAAO,EAAE,EADH;AAENC,IAAAA,MAAM,EAAE,EAFF;AAGNC,IAAAA,OAAO,EAAE,EAHH;AAINC,IAAAA,QAAQ,EAAE,KAAA;AAJJ,GAAA;AADK,CAAf;;ACKA,MAAMC,GAAG,GAAGC,KAAK,CAAC,oCAAD,CAAjB,CAAA;;AAIA,MAAMC,sBAAsB,GAAG,CAACC,KAAD,EAAQP,OAAR,EAAiBQ,GAAjB,KAAyB;AACtD,EAAMC,MAAAA,gBAAgB,GAAGC,cAAc,CAACC,OAAf,CAAuBJ,KAAvB,EAA8BC,GAA9B,CAAzB,CAAA;AACA,EAAA,MAAMN,OAAO,GAAGK,KAAK,CAACL,OAAtB,CAAA;;AAEA,EAAA,IAAI,CAACF,OAAD,IAAYY,MAAM,CAACC,IAAP,CAAYb,OAAZ,CAAqBc,CAAAA,MAArB,KAAgC,CAAhD,EAAmD;AACjD,IAAA,OAAO,YAAP,CAAA;AACD,GAAA;;AAED,EAAA,MAAMC,mBAAmB,GAAGC,eAAe,CAACT,KAAD,CAA3C,CAAA;AACA,EAAA,MAAMU,cAAc,GAAGC,kBAAkB,CAAChB,OAAD,EAAUF,OAAV,CAAzC,CAAA;;AAEA,EAAIe,IAAAA,mBAAmB,KAAKE,cAA5B,EAA4C;AAC1C,IAAA,OAAO,SAAP,CAAA;AACD,GAFD,MAEO,IAAIA,cAAc,KAAK,CAAvB,EAA0B;AAC/B,IAAA,OAAO,WAAP,CAAA;AACD,GAFM,MAEA,IAAIR,gBAAJ,EAAsB;AAC3B,IAAA,OAAO,SAAP,CAAA;AACD,GAAA;;AAED,EAAA,OAAO,WAAP,CAAA;AACD,CApBD,CAAA;;AAsBA,MAAMU,cAAc,GAAG,CAACC,QAAD,EAAWZ,GAAX,EAAgBR,OAAhB,KAA4B;AACjD,EAAA,IAAIQ,GAAG,CAACa,IAAJ,KAAa,UAAjB,EAA6B;AAC3B,IAAA,OAAOf,sBAAsB,CAACc,QAAD,EAAWpB,OAAX,EAAoBQ,GAApB,CAA7B,CAAA;AACD,GAAA;AACF,CAJD,CAAA;;AAMA,MAAMU,kBAAkB,GAAG,CAAChB,OAAO,GAAG,EAAX,EAAeF,OAAf,KAA2B;AACpD,EAAIiB,IAAAA,cAAc,GAAG,CAArB,CAAA;AAEAf,EAAAA,OAAO,CAACoB,OAAR,CAAiBC,CAAD,IAAO;AACrB,IAAIA,IAAAA,CAAC,CAACC,aAAF,KAAoBxB,OAAO,CAACuB,CAAC,CAACE,EAAH,CAA/B,EAAuC;AACrCR,MAAAA,cAAc,IAAI,CAAlB,CAAA;AACD,KAAA;AACF,GAJD,CAAA,CAAA;AAMA,EAAA,OAAOA,cAAP,CAAA;AACD,CAVD,CAAA;;AAYA,MAAMD,eAAe,GAAII,QAAD,IAAc;AACpC,EAAA,OAAOA,QAAQ,IAAIA,QAAQ,CAAClB,OAArB,GAA+BkB,QAAQ,CAAClB,OAAT,CAAiBY,MAAhD,GAAyD,CAAhE,CAAA;AACD,CAFD,CAAA;;AAIA,MAAMY,eAAe,GAAG,CAACN,QAAD,EAAWpB,OAAX,KAAuB;AAC7C,EAAM2B,MAAAA,KAAK,GAAGT,kBAAkB,CAACE,QAAQ,IAAIA,QAAQ,CAAClB,OAAtB,EAA+BF,OAA/B,CAAhC,CAAA;AACA,EAAA,MAAM4B,YAAY,GAAGZ,eAAe,CAACI,QAAD,CAApC,CAAA;AAEA,EAAOS,OAAAA,UAAU,CAAC,CAACF,KAAK,GAAGC,YAAT,EAAuBE,OAAvB,CAA+B,CAA/B,CAAD,CAAjB,CAAA;AACD,CALD,CAAA;;AAOA,MAAMC,eAAe,GAAG,CAACX,QAAD,EAAWZ,GAAX,EAAgBR,OAAhB,KAA4B;AAClD,EAAMgC,MAAAA,WAAW,GAAGb,cAAc,CAACC,QAAD,EAAWZ,GAAX,EAAgBR,OAAhB,CAAlC,CAAA;AAEA,EAAA,OAAOgC,WAAW,KAAK,SAAhB,GAA4B,CAA5B,GAAgCA,WAAW,KAAK,SAAhB,IAA6B,IAA7B,GAAoCN,eAAe,CAACN,QAAD,EAAWpB,OAAX,CAAnD,GAAyE,CAAhH,CAAA;AACD,CAJD,CAAA;;AAMO,MAAMiC,OAAO,GAAG,CAACb,QAAD,EAAWc,OAAX,EAAoB1B,GAApB,KAA4B;AACjD,EAAA,OAAO,IAAI2B,OAAJ,CAAaC,OAAD,IAAa;AAC9B,IAAA,IAAI5B,GAAG,CAACa,IAAJ,KAAa,UAAjB,EAA6B;AAC3Be,MAAAA,OAAO,CAAC;AAAEC,QAAAA,KAAK,EAAEC,SAAT;AAAoBC,QAAAA,SAAS,EAAED,SAAAA;AAA/B,OAAD,CAAP,CAAA;AACD,KAFD,MAEO;AACL,MAAA,IAAI,CAACJ,OAAD,IAAYM,OAAO,CAACN,OAAD,CAAvB,EAAkC;AAChCE,QAAAA,OAAO,CAAC;AAAEC,UAAAA,KAAK,EAAE,CAAT;AAAYI,UAAAA,KAAK,EAAE,IAAA;AAAnB,SAAD,CAAP,CAAA;AACD,OAFD,MAEO;AACL,QAAA,MAAMC,GAAG,GAAG;AACVL,UAAAA,KAAK,EAAEN,eAAe,CAACX,QAAD,EAAWZ,GAAX,EAAgB0B,OAAO,CAACS,KAAxB,CAAA;AADZ,SAAZ,CAAA;AAIAP,QAAAA,OAAO,CAACM,GAAD,CAAP,CAAA;AACD,OAAA;AACF,KAAA;AACF,GAdM,CAAP,CAAA;AAeD,EAhBM;AAkBA,SAASE,kBAAT,CAA4BrC,KAAK,GAAG,EAApC,EAAwC;AAC7C,EAAA,OAAO,IAAI4B,OAAJ,CAAaC,OAAD,IAAa;AAC9BA,IAAAA,OAAO,CAAA,QAAA,CAAA,EAAA,EACFS,QADE,EAEFtC,KAFE,CAAP,CAAA,CAAA;AAID,GALM,CAAP,CAAA;AAMD,CAAA;AAEM,MAAMuC,SAAS,GAAIvC,KAAD,iBAAiBsC,QAAjB,EAA8BtC,KAA9B,EAAlB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASA,KAAT,CAAea,QAAf,EAAyBc,OAAzB,EAAkC1B,GAAlC,EAAuCuC,aAAvC,EAAsD;AAC3D,EAAA,OAAO,IAAIZ,OAAJ,CAAY,MAAOC,OAAP,IAAmB;AACpChB,IAAAA,QAAQ,GAAG0B,SAAS,CAAC1B,QAAD,CAApB,CAAA;AACA,IAAA,MAAMY,WAAW,GAAGb,cAAc,CAACC,QAAD,EAAWZ,GAAX,EAAgB0B,OAAO,IAAIA,OAAO,CAACS,KAAnC,CAAlC,CAAA;AACA,IAAMK,MAAAA,eAAe,GAAG,EAAxB,CAAA;AACA,IAAA,MAAMX,KAAK,GAAI,CAAA,EAAEN,eAAe,CAACX,QAAD,EAAWZ,GAAX,EAAgB0B,OAAO,IAAIA,OAAO,CAACS,KAAnC,CAAf,GAA2D,GAAI,CAAhF,CAAA,CAAA,CAAA;AACA,IAAA,MAAMM,WAAW,GAAG;AAClBZ,MAAAA,KADkB;AAElBL,MAAAA,WAAAA;AAFkB,KAApB,CAAA;AAKA,IAAMkB,MAAAA,cAAc,GAAG,EAAvB,CAAA;AACA,IAAA,IAAIhD,OAAO,GAAGkB,QAAQ,CAAClB,OAAvB,CAAA;AACA,IAAA,IAAIF,OAAO,GAAGoB,QAAQ,CAACpB,OAAvB,CAAA;;AAEA,IAAMmD,MAAAA,EAAE,GAAIC,IAAD,IAAU,CAAC3B,EAAD,EAAK4B,OAAL,EAAcC,MAAd,KAAyB;AAC5C,MAAA,OAAO,IAAInB,OAAJ,CAAaC,OAAD,IAAa;AAC9Bc,QAAAA,cAAc,CAACE,IAAD,CAAd,GAAuBE,MAAM,CAACJ,cAA9B,CAAA;AACAd,QAAAA,OAAO,EAAA,CAAA;AACR,OAHM,CAAP,CAAA;AAID,KALD,CAAA;;AAOA,IAAMmB,MAAAA,eAAe,GAAGC,WAAW,CAACpC,QAAD,EAAWc,OAAX,EAAoB1B,GAApB,CAAnC,CAAA;;AAEA,IAAI,IAAA,CAAC+C,eAAL,EAAsB;AACpBrD,MAAAA,OAAO,GAAG,MAAMuD,kBAAkB,CAChCvD,OADgC,EAEhC;AAAEgD,QAAAA,cAAc,EAAE,CAAEhB,OAAO,IAAIA,OAAO,CAACgB,cAApB,IAAuC,EAAxC,EAA4ChD,OAAAA;AAA9D,OAFgC,EAGhCiD,EAAE,CAAC,SAAD,CAH8B,EAIhC,IAJgC,CAAlC,CAAA;AAMAnD,MAAAA,OAAO,GAAG,MAAMyD,kBAAkB,CAChCzD,OADgC,EAEhC;AAAEkD,QAAAA,cAAc,EAAE,CAAEhB,OAAO,IAAIA,OAAO,CAACgB,cAApB,IAAuC,EAAxC,EAA4ClD,OAAAA;AAA9D,OAFgC,EAGhCmD,EAAE,CAAC,SAAD,CAH8B,EAIhC,IAJgC,CAAlC,CAAA;AAMD,KAAA;;AAED,IAAA,IAAI,CAACX,OAAO,CAACU,cAAD,CAAZ,EAA8B;AAC5B,MAAA,IAAIH,aAAa,IAAI,OAAOA,aAAP,KAAyB,UAA9C,EAA0D;AACxDA,QAAAA,aAAa,CAACb,OAAO,CAACT,EAAT,EAAaS,OAAO,CAACmB,OAArB,EAA8B;AACzCH,UAAAA,cAAAA;AADyC,SAA9B,CAAb,CAEGQ,KAFH,CAEUC,CAAD,IAAO;AACd;AACAC,UAAAA,OAAO,CAACC,KAAR,CAAc,uBAAd,EAAuCF,CAAvC,CAAA,CAAA;AACD,SALD,CAAA,CAAA;AAMD,OAAA;AACF,KAAA;;AAED,IAAIvC,IAAAA,QAAQ,IAAIlB,OAAhB,EAAyB;AACvBA,MAAAA,OAAO,CAACoB,OAAR,CAAiBrB,MAAD,IAAY;AAC1B+C,QAAAA,eAAe,CAAC/C,MAAM,CAACwB,EAAR,CAAf,GAA6BxB,MAAM,CAACuB,aAApC,CAAA;AACD,OAFD,CAAA,CAAA;AAGD,KAAA;;AAED,IAAMsC,MAAAA,EAAE,GACNtD,GAAG,CAACa,IAAJ,KAAa,UAAb,GACI0C,yBAAyB,CAACd,WAAW,CAACjB,WAAb,EAA0BZ,QAAQ,CAAC4C,QAAnC,CAD7B,GAEI7B,OAAO,CAACC,OAAR,CAAgBE,SAAhB,CAHN,CAAA;AAKAwB,IAAAA,EAAE,CAACG,IAAH,CAASD,QAAD,IAAc;AACpB,MAAA,MAAME,IAAI,GAAG;AACXnE,QAAAA,MAAM,eACDqB,QADC,EAAA;AAEJlB,UAAAA,OAFI;AAGJF,UAAAA,OAAAA;AAHI,SADK,CAAA;AAMXgC,QAAAA,WAAW,EAAEiB,WANF;AAOXe,QAAAA,QAPW;AAQX3C,QAAAA,IAAI,EAAEb,GAAG,CAACa,IAAAA;AARC,OAAb,CAAA;;AAWA,MAAA,IAAIb,GAAG,CAAC2D,IAAJ,KAAa,YAAb,KAA8B3D,GAAG,CAACa,IAAJ,KAAa,MAAb,IAAuBb,GAAG,CAACa,IAAJ,KAAa,UAAlE,CAAJ,EAAmF;AACjF6C,QAAAA,IAAI,CAACE,SAAL,GAAiBhD,QAAQ,CAACgD,SAA1B,CAAA;AACD,OAFD,MAEO;AACLF,QAAAA,IAAI,CAACE,SAAL,GAAiB,IAAjB,CAAA;AACD,OAAA;;AAED,MAAA,MAAM1B,GAAG,GAAG9B,MAAM,CAACyD,MAAP,CAAcH,IAAd,EAAoB;AAC9BlB,QAAAA,eAAAA;AAD8B,OAApB,CAAZ,CAAA;AAIA5C,MAAAA,GAAG,CAAC,OAAD,EAAUsC,GAAV,CAAH,CAAA;AACAN,MAAAA,OAAO,CAACM,GAAD,CAAP,CAAA;AACD,KAxBD,CAAA,CAAA;AAyBD,GArFM,CAAP,CAAA;AAsFD,CAAA;MAEY4B,4BAA4B,GAAG,CAAClD,QAAD,EAAWZ,GAAX,KAAmB;AAC7D,EAAA,OAAO,IAAI2B,OAAJ,CAAaC,OAAD,IAAa;AAC9B,IAAI5B,IAAAA,GAAG,CAACa,IAAJ,KAAa,UAAb,IAA2Bb,GAAG,CAAC2D,IAAJ,KAAa,YAA5C,EAA0D;AACxD,MAAM,MAAA;AAAEjE,QAAAA,OAAF;AAAWF,QAAAA,OAAAA;AAAX,OAAA,GAAuBoB,QAA7B,CAAA;AACA,MAAMuB,MAAAA,KAAK,GAAG,EAAd,CAAA;AAEAzC,MAAAA,OAAO,CAACoB,OAAR,CAAiBC,CAAD,IAAO;AACrB,QAAA,IAAIvB,OAAO,CAACuE,MAAR,CAAgBC,CAAD,IAAOA,CAAC,CAAC/C,EAAF,KAASF,CAAC,CAACC,aAAjC,CAAA,CAAgDV,MAApD,EAA4D;AAC1D6B,UAAAA,KAAK,CAACpB,CAAC,CAACE,EAAH,CAAL,GAAcF,CAAC,CAACC,aAAhB,CAAA;AACD,SAAA;AACF,OAJD,CAAA,CAAA;AAMAY,MAAAA,OAAO,CAAC;AACNO,QAAAA,KADM;AAENlB,QAAAA,EAAE,EAAE,GAAA;AAFE,OAAD,CAAP,CAAA;AAID,KAdD,MAcO;AACLW,MAAAA,OAAO,CAAC,IAAD,CAAP,CAAA;AACD,KAAA;AACF,GAlBM,CAAP,CAAA;AAmBD;;;;"}
|