@pie-element/image-cloze-association 3.6.23 → 3.6.26
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/configure/CHANGELOG.md +24 -0
- package/configure/lib/defaults.js +5 -0
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +2 -2
- package/configure/lib/root.js +13 -6
- package/configure/lib/root.js.map +1 -1
- package/configure/package.json +2 -2
- package/configure/src/defaults.js +6 -1
- package/configure/src/root.jsx +32 -21
- package/controller/lib/index.js +4 -3
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +2 -2
- package/docs/config-schema.json +16 -0
- package/docs/config-schema.json.md +12 -0
- package/docs/pie-schema.json +7 -1
- package/docs/pie-schema.json.md +4 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/root.js +2 -2
- package/lib/utils-correctness.js +3 -3
- package/package.json +5 -5
- package/src/index.js +5 -0
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
|
+
## [3.6.26](https://github.com/pie-framework/pie-elements/compare/@pie-element/image-cloze-association@3.6.25...@pie-element/image-cloze-association@3.6.26) (2022-04-12)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/image-cloze-association
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [3.6.25](https://github.com/pie-framework/pie-elements/compare/@pie-element/image-cloze-association@3.6.24...@pie-element/image-cloze-association@3.6.25) (2022-03-28)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @pie-element/image-cloze-association
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [3.6.24](https://github.com/pie-framework/pie-elements/compare/@pie-element/image-cloze-association@3.6.23...@pie-element/image-cloze-association@3.6.24) (2022-03-22)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @pie-element/image-cloze-association
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
## [3.6.23](https://github.com/pie-framework/pie-elements/compare/@pie-element/image-cloze-association@3.6.22...@pie-element/image-cloze-association@3.6.23) (2022-03-08)
|
|
7
31
|
|
|
8
32
|
**Note:** Version bump only for package @pie-element/image-cloze-association
|
package/configure/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
|
+
## [3.1.44](https://github.com/pie-framework/pie-elements/compare/@pie-element/image-cloze-association-configure@3.1.43...@pie-element/image-cloze-association-configure@3.1.44) (2022-04-12)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @pie-element/image-cloze-association-configure
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [3.1.43](https://github.com/pie-framework/pie-elements/compare/@pie-element/image-cloze-association-configure@3.1.42...@pie-element/image-cloze-association-configure@3.1.43) (2022-03-28)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @pie-element/image-cloze-association-configure
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [3.1.42](https://github.com/pie-framework/pie-elements/compare/@pie-element/image-cloze-association-configure@3.1.41...@pie-element/image-cloze-association-configure@3.1.42) (2022-03-22)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @pie-element/image-cloze-association-configure
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
## [3.1.41](https://github.com/pie-framework/pie-elements/compare/@pie-element/image-cloze-association-configure@3.1.40...@pie-element/image-cloze-association-configure@3.1.41) (2022-03-08)
|
|
7
31
|
|
|
8
32
|
**Note:** Version bump only for package @pie-element/image-cloze-association-configure
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","configuration","
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","configuration","spellCheck","label","settings","enabled","teacherInstructions"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,gBAAgB,EAAE,IADb;AAELC,IAAAA,0BAA0B,EAAE,IAFvB;AAGLC,IAAAA,0BAA0B,EAAE;AAHvB,GADM;AAMbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,UAAU,EAAE;AACVC,MAAAA,KAAK,EAAE,YADG;AAEVC,MAAAA,QAAQ,EAAC,KAFC;AAGVC,MAAAA,OAAO,EAAC;AAHE,KADC;AAMbC,IAAAA,mBAAmB,EAAE;AACnBF,MAAAA,QAAQ,EAAE,IADS;AAEnBD,MAAAA,KAAK,EAAE;AAFY;AANR;AANF,C","sourcesContent":["export default {\n model: {\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n },\n configuration: {\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions'\n }\n }\n};\n"],"file":"defaults.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -35,9 +35,9 @@ var _root = _interopRequireDefault(require("./root"));
|
|
|
35
35
|
|
|
36
36
|
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
37
37
|
|
|
38
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
38
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
39
39
|
|
|
40
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
40
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
41
41
|
|
|
42
42
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
43
43
|
|
package/configure/lib/root.js
CHANGED
|
@@ -31,9 +31,9 @@ var _configUi = require("@pie-lib/config-ui");
|
|
|
31
31
|
|
|
32
32
|
var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
|
|
33
33
|
|
|
34
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
34
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
35
35
|
|
|
36
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
36
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
37
37
|
|
|
38
38
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
39
39
|
|
|
@@ -78,7 +78,12 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
78
78
|
|
|
79
79
|
var _ref = configuration || {},
|
|
80
80
|
_ref$teacherInstructi = _ref.teacherInstructions,
|
|
81
|
-
teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi
|
|
81
|
+
teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
|
|
82
|
+
_ref$spellCheck = _ref.spellCheck,
|
|
83
|
+
spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck;
|
|
84
|
+
|
|
85
|
+
var _ref2 = model || {},
|
|
86
|
+
spellCheckEnabled = _ref2.spellCheckEnabled;
|
|
82
87
|
|
|
83
88
|
return /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
|
|
84
89
|
settings: /*#__PURE__*/_react["default"].createElement(Panel, {
|
|
@@ -91,8 +96,9 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
91
96
|
return onConfigurationChanged(config);
|
|
92
97
|
},
|
|
93
98
|
groups: {
|
|
94
|
-
|
|
95
|
-
teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label)
|
|
99
|
+
Properties: {
|
|
100
|
+
teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
|
|
101
|
+
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label)
|
|
96
102
|
}
|
|
97
103
|
}
|
|
98
104
|
})
|
|
@@ -106,7 +112,8 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
106
112
|
markup: model.teacherInstructions || '',
|
|
107
113
|
onChange: this.onTeacherInstructionsChanged,
|
|
108
114
|
imageSupport: imageSupport,
|
|
109
|
-
nonEmpty: false
|
|
115
|
+
nonEmpty: false,
|
|
116
|
+
spellCheck: spellCheckEnabled
|
|
110
117
|
})), "Image cloze association"));
|
|
111
118
|
}
|
|
112
119
|
}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","Root","teacherInstructions","props","onModelChanged","model","classes","configuration","onConfigurationChanged","imageSupport","config","teacherInstructionsEnabled","label","content","promptHolder","prompt","onTeacherInstructionsChanged","React","Component","styles","theme","base","marginTop","spacing","unit","width","paddingTop","propTypes","PropTypes","object","isRequired","func","shape","add"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../src/root.jsx"],"names":["Panel","settings","toggle","Root","teacherInstructions","props","onModelChanged","model","classes","configuration","onConfigurationChanged","imageSupport","spellCheck","spellCheckEnabled","config","Properties","teacherInstructionsEnabled","label","content","promptHolder","prompt","onTeacherInstructionsChanged","React","Component","styles","theme","base","marginTop","spacing","unit","width","paddingTop","propTypes","PropTypes","object","isRequired","func","shape","add"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport EditableHtml from '@pie-lib/editable-html';\n\nconst { Panel, toggle } = settings;\n\nexport class Root extends React.Component {\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({\n ...this.props.model,\n teacherInstructions,\n });\n };\n\n render() {\n const {\n classes,\n model,\n configuration,\n onModelChanged,\n onConfigurationChanged,\n imageSupport,\n } = this.props;\n const { teacherInstructions = {}, spellCheck = {} } = configuration || {};\n const { spellCheckEnabled } = model || {};\n\n return (\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label),\n },\n }}\n />\n }\n >\n <div className={classes.content}>\n {model && model.teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n />\n </InputContainer>\n )}\n Image cloze association\n </div>\n </layout.ConfigLayout>\n );\n }\n}\n\nconst styles = (theme) => ({\n base: {\n marginTop: theme.spacing.unit * 3,\n },\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n});\n\nRoot.propTypes = {\n classes: PropTypes.object.isRequired,\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n};\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
|
package/configure/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/image-cloze-association-configure",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.44",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.9.2",
|
|
11
11
|
"@pie-framework/pie-configure-events": "^1.2.0",
|
|
12
|
-
"@pie-lib/config-ui": "^10.
|
|
12
|
+
"@pie-lib/config-ui": "^10.11.0",
|
|
13
13
|
"debug": "^3.1.0",
|
|
14
14
|
"prop-types": "^15.7.2",
|
|
15
15
|
"react": "^16.8.6",
|
|
@@ -2,9 +2,14 @@ export default {
|
|
|
2
2
|
model: {
|
|
3
3
|
rationaleEnabled: true,
|
|
4
4
|
teacherInstructionsEnabled: true,
|
|
5
|
-
studentInstructionsEnabled: true
|
|
5
|
+
studentInstructionsEnabled: true,
|
|
6
6
|
},
|
|
7
7
|
configuration: {
|
|
8
|
+
spellCheck: {
|
|
9
|
+
label: 'Spellcheck',
|
|
10
|
+
settings:false,
|
|
11
|
+
enabled:true
|
|
12
|
+
},
|
|
8
13
|
teacherInstructions: {
|
|
9
14
|
settings: true,
|
|
10
15
|
label: 'Teacher Instructions'
|
package/configure/src/root.jsx
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { withStyles } from '@material-ui/core/styles';
|
|
4
|
-
import {
|
|
5
|
-
settings,
|
|
6
|
-
layout,
|
|
7
|
-
InputContainer
|
|
8
|
-
} from '@pie-lib/config-ui';
|
|
4
|
+
import { settings, layout, InputContainer } from '@pie-lib/config-ui';
|
|
9
5
|
import EditableHtml from '@pie-lib/editable-html';
|
|
10
6
|
|
|
11
7
|
const { Panel, toggle } = settings;
|
|
12
8
|
|
|
13
9
|
export class Root extends React.Component {
|
|
14
|
-
onTeacherInstructionsChanged = teacherInstructions => {
|
|
10
|
+
onTeacherInstructionsChanged = (teacherInstructions) => {
|
|
15
11
|
this.props.onModelChanged({
|
|
16
12
|
...this.props.model,
|
|
17
|
-
teacherInstructions
|
|
13
|
+
teacherInstructions,
|
|
18
14
|
});
|
|
19
15
|
};
|
|
20
16
|
|
|
21
17
|
render() {
|
|
22
|
-
const {
|
|
23
|
-
|
|
18
|
+
const {
|
|
19
|
+
classes,
|
|
20
|
+
model,
|
|
21
|
+
configuration,
|
|
22
|
+
onModelChanged,
|
|
23
|
+
onConfigurationChanged,
|
|
24
|
+
imageSupport,
|
|
25
|
+
} = this.props;
|
|
26
|
+
const { teacherInstructions = {}, spellCheck = {} } = configuration || {};
|
|
27
|
+
const { spellCheckEnabled } = model || {};
|
|
24
28
|
|
|
25
29
|
return (
|
|
26
30
|
<layout.ConfigLayout
|
|
@@ -28,11 +32,15 @@ export class Root extends React.Component {
|
|
|
28
32
|
<Panel
|
|
29
33
|
model={model}
|
|
30
34
|
configuration={configuration}
|
|
31
|
-
onChangeModel={model => onModelChanged(model)}
|
|
32
|
-
onChangeConfiguration={config => onConfigurationChanged(config)}
|
|
35
|
+
onChangeModel={(model) => onModelChanged(model)}
|
|
36
|
+
onChangeConfiguration={(config) => onConfigurationChanged(config)}
|
|
33
37
|
groups={{
|
|
34
|
-
|
|
35
|
-
teacherInstructionsEnabled:
|
|
38
|
+
Properties: {
|
|
39
|
+
teacherInstructionsEnabled:
|
|
40
|
+
teacherInstructions.settings &&
|
|
41
|
+
toggle(teacherInstructions.label),
|
|
42
|
+
spellCheckEnabled:
|
|
43
|
+
spellCheck.settings && toggle(spellCheck.label),
|
|
36
44
|
},
|
|
37
45
|
}}
|
|
38
46
|
/>
|
|
@@ -40,17 +48,20 @@ export class Root extends React.Component {
|
|
|
40
48
|
>
|
|
41
49
|
<div className={classes.content}>
|
|
42
50
|
{model && model.teacherInstructionsEnabled && (
|
|
43
|
-
<InputContainer
|
|
51
|
+
<InputContainer
|
|
52
|
+
label={teacherInstructions.label}
|
|
53
|
+
className={classes.promptHolder}
|
|
54
|
+
>
|
|
44
55
|
<EditableHtml
|
|
45
56
|
className={classes.prompt}
|
|
46
57
|
markup={model.teacherInstructions || ''}
|
|
47
58
|
onChange={this.onTeacherInstructionsChanged}
|
|
48
59
|
imageSupport={imageSupport}
|
|
49
60
|
nonEmpty={false}
|
|
61
|
+
spellCheck={spellCheckEnabled}
|
|
50
62
|
/>
|
|
51
63
|
</InputContainer>
|
|
52
64
|
)}
|
|
53
|
-
|
|
54
65
|
Image cloze association
|
|
55
66
|
</div>
|
|
56
67
|
</layout.ConfigLayout>
|
|
@@ -58,17 +69,17 @@ export class Root extends React.Component {
|
|
|
58
69
|
}
|
|
59
70
|
}
|
|
60
71
|
|
|
61
|
-
const styles = theme => ({
|
|
72
|
+
const styles = (theme) => ({
|
|
62
73
|
base: {
|
|
63
|
-
marginTop: theme.spacing.unit * 3
|
|
74
|
+
marginTop: theme.spacing.unit * 3,
|
|
64
75
|
},
|
|
65
76
|
promptHolder: {
|
|
66
77
|
width: '100%',
|
|
67
|
-
paddingTop: theme.spacing.unit * 2
|
|
78
|
+
paddingTop: theme.spacing.unit * 2,
|
|
68
79
|
},
|
|
69
80
|
prompt: {
|
|
70
81
|
paddingTop: theme.spacing.unit * 2,
|
|
71
|
-
width: '100%'
|
|
82
|
+
width: '100%',
|
|
72
83
|
},
|
|
73
84
|
});
|
|
74
85
|
|
|
@@ -80,8 +91,8 @@ Root.propTypes = {
|
|
|
80
91
|
configuration: PropTypes.object.isRequired,
|
|
81
92
|
imageSupport: PropTypes.shape({
|
|
82
93
|
add: PropTypes.func.isRequired,
|
|
83
|
-
delete: PropTypes.func.isRequired
|
|
84
|
-
})
|
|
94
|
+
delete: PropTypes.func.isRequired,
|
|
95
|
+
}),
|
|
85
96
|
};
|
|
86
97
|
|
|
87
98
|
export default withStyles(styles)(Root);
|
package/controller/lib/index.js
CHANGED
|
@@ -5,9 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.isResponseCorrect = exports.getPartialScore = exports.createCorrectResponseSession = void 0;
|
|
8
9
|
exports.model = model;
|
|
10
|
+
exports.normalize = void 0;
|
|
9
11
|
exports.outcome = outcome;
|
|
10
|
-
exports.createCorrectResponseSession = exports.getPartialScore = exports.isResponseCorrect = exports.normalize = void 0;
|
|
11
12
|
|
|
12
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
14
|
|
|
@@ -21,9 +22,9 @@ var _controllerUtils = require("@pie-lib/controller-utils");
|
|
|
21
22
|
|
|
22
23
|
var _utils = require("./utils");
|
|
23
24
|
|
|
24
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
25
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
26
|
|
|
26
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
27
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
27
28
|
|
|
28
29
|
var log = (0, _debug["default"])('pie-elements:image-cloze-association:controller');
|
|
29
30
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["log","normalize","question","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","session","env","questionNormalized","questionCamelized","Promise","resolve","out","disabled","mode","responseCorrect","getScore","undefined","role","teacherInstructions","isResponseCorrect","responses","isCorrect","totalValidResponses","forEach","value","images","length","answers","answer","containerIndex","includes","isDefaultOrAltResponseCorrect","validation","validResponse","altResponses","altResponse","getDeductionPerContainer","valid","totalStack","filter","item","incorrectStack","maxValid","ignored","slice","getPartialScore","maxResponsePerZone","responseContainers","correctAnswers","possibleResponses","all","deductionList","id","denominator","str","toFixed","parseFloat","config","isPartialScoring","partialScoring","enabled","correct","outcome","score","empty","configCamelized","createCorrectResponseSession","valid_response","container","i","v","push"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { camelizeKeys } from 'humps';\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nimport { getAllUniqueCorrectness } from './utils';\n\nconst log = debug('pie-elements:image-cloze-association:controller');\n\nexport const normalize = question => ({\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport function model(question, session, env) {\n const questionNormalized = normalize(question);\n const questionCamelized = camelizeKeys(questionNormalized);\n\n return new Promise(resolve => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n ...questionCamelized,\n responseCorrect:\n env.mode === 'evaluate'\n ? getScore(questionCamelized, session) === 1\n : undefined,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = questionCamelized.teacherInstructionsEnabled ? questionCamelized.teacherInstructions : null;\n } else {\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nexport const isResponseCorrect = (responses, session) => {\n let isCorrect = true;\n let totalValidResponses = 0;\n\n if (!session || isEmpty(session)) {\n return false;\n }\n\n responses.forEach(value => totalValidResponses += (value.images || []).length);\n\n if (session.answers && totalValidResponses === session.answers.length) {\n session.answers.forEach(answer => {\n if (!(responses[answer.containerIndex].images || []).includes(answer.value)) {\n isCorrect = false;\n }\n });\n } else {\n isCorrect = false;\n }\n return isCorrect;\n};\n\n// This applies for items that don't support partial scoring.\nconst isDefaultOrAltResponseCorrect = (question, session) => {\n const { validation: { validResponse: { value }, altResponses } } = question;\n\n let isCorrect = isResponseCorrect(value, session);\n\n // Look for correct answers in alternate responses.\n if (!isCorrect && (altResponses && altResponses.length)) {\n altResponses.forEach(altResponse => {\n if (isResponseCorrect(altResponse.value, session)) {\n isCorrect = true;\n }\n });\n }\n return isCorrect;\n};\n\n// Deduct only the items that exceeded the maximum valid response per container.\nconst getDeductionPerContainer = (containerIndex, answers, valid) => {\n const totalStack = answers.filter(item => item.containerIndex === containerIndex);\n const incorrectStack = totalStack.filter(item => !item.isCorrect);\n const maxValid = (valid.value[containerIndex].images || []).length;\n\n if (totalStack.length > maxValid) {\n const ignored = totalStack.length - maxValid;\n return incorrectStack.slice(-ignored);\n }\n return [];\n};\n\nexport const getPartialScore = (question, session) => {\n const { validation: { validResponse }, maxResponsePerZone, responseContainers } = question;\n let correctAnswers = 0;\n let possibleResponses = 0;\n\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n validResponse.value.forEach(value => possibleResponses += (value.images || []).length);\n\n if (session.answers && session.answers.length) {\n const all = getAllUniqueCorrectness(session.answers, validResponse.value);\n correctAnswers = all.filter(item => item.isCorrect).length;\n\n // deduction rules: https://docs.google.com/document/d/1Oprm8Qs5fg_Dwoj2pNpsfu4D63QgCZgvcqTgeaVel7I/edit\n session.answers.forEach(answer => {\n if (maxResponsePerZone > 1) {\n const deductionList = getDeductionPerContainer(answer.containerIndex, all, validResponse);\n\n if (deductionList.length) {\n deductionList.forEach(item => {\n if (item.id === answer.id) {\n correctAnswers -= 1;\n }\n });\n }\n }\n });\n } else {\n correctAnswers = 0;\n }\n // negative values will implicitly make the score equal to zero\n correctAnswers = correctAnswers < 0 ? 0 : correctAnswers;\n\n const denominator = maxResponsePerZone > 1 ? possibleResponses : responseContainers.length;\n const str = (correctAnswers / denominator).toFixed(2);\n\n return parseFloat(str);\n};\n\nconst getScore = (config, session, env = {}) => {\n const isPartialScoring = partialScoring.enabled(config, env);\n const correct = isDefaultOrAltResponseCorrect(config, session);\n\n return isPartialScoring ? getPartialScore(config, session) : (correct ? 1 : 0);\n};\n\nexport function outcome(config, session, env = {}) {\n return new Promise(resolve => {\n log('outcome...');\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const configCamelized = camelizeKeys(config);\n\n if (session.answers || []) {\n const score = getScore(configCamelized, session, env);\n resolve({ score });\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise(resolve => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { validation: { valid_response: { value } } } = question;\n const answers = [];\n\n if (value) {\n value.forEach((container, i) => {\n (container.images || []).forEach(v => {\n answers.push({\n value: v,\n containerIndex: i\n });\n });\n });\n }\n\n resolve({\n answers,\n id: '1'\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["log","normalize","question","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","session","env","questionNormalized","questionCamelized","Promise","resolve","out","disabled","mode","responseCorrect","getScore","undefined","role","teacherInstructions","isResponseCorrect","responses","isCorrect","totalValidResponses","forEach","value","images","length","answers","answer","containerIndex","includes","isDefaultOrAltResponseCorrect","validation","validResponse","altResponses","altResponse","getDeductionPerContainer","valid","totalStack","filter","item","incorrectStack","maxValid","ignored","slice","getPartialScore","maxResponsePerZone","responseContainers","correctAnswers","possibleResponses","all","deductionList","id","denominator","str","toFixed","parseFloat","config","isPartialScoring","partialScoring","enabled","correct","outcome","score","empty","configCamelized","createCorrectResponseSession","valid_response","container","i","v","push"],"mappings":"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","sourcesContent":["import debug from 'debug';\nimport isEmpty from 'lodash/isEmpty';\nimport { camelizeKeys } from 'humps';\nimport { partialScoring } from '@pie-lib/controller-utils';\n\nimport { getAllUniqueCorrectness } from './utils';\n\nconst log = debug('pie-elements:image-cloze-association:controller');\n\nexport const normalize = question => ({\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\nexport function model(question, session, env) {\n const questionNormalized = normalize(question);\n const questionCamelized = camelizeKeys(questionNormalized);\n\n return new Promise(resolve => {\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n ...questionCamelized,\n responseCorrect:\n env.mode === 'evaluate'\n ? getScore(questionCamelized, session) === 1\n : undefined,\n };\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n out.teacherInstructions = questionCamelized.teacherInstructionsEnabled ? questionCamelized.teacherInstructions : null;\n } else {\n out.teacherInstructions = null;\n }\n\n resolve(out);\n });\n}\n\nexport const isResponseCorrect = (responses, session) => {\n let isCorrect = true;\n let totalValidResponses = 0;\n\n if (!session || isEmpty(session)) {\n return false;\n }\n\n responses.forEach(value => totalValidResponses += (value.images || []).length);\n\n if (session.answers && totalValidResponses === session.answers.length) {\n session.answers.forEach(answer => {\n if (!(responses[answer.containerIndex].images || []).includes(answer.value)) {\n isCorrect = false;\n }\n });\n } else {\n isCorrect = false;\n }\n return isCorrect;\n};\n\n// This applies for items that don't support partial scoring.\nconst isDefaultOrAltResponseCorrect = (question, session) => {\n const { validation: { validResponse: { value }, altResponses } } = question;\n\n let isCorrect = isResponseCorrect(value, session);\n\n // Look for correct answers in alternate responses.\n if (!isCorrect && (altResponses && altResponses.length)) {\n altResponses.forEach(altResponse => {\n if (isResponseCorrect(altResponse.value, session)) {\n isCorrect = true;\n }\n });\n }\n return isCorrect;\n};\n\n// Deduct only the items that exceeded the maximum valid response per container.\nconst getDeductionPerContainer = (containerIndex, answers, valid) => {\n const totalStack = answers.filter(item => item.containerIndex === containerIndex);\n const incorrectStack = totalStack.filter(item => !item.isCorrect);\n const maxValid = (valid.value[containerIndex].images || []).length;\n\n if (totalStack.length > maxValid) {\n const ignored = totalStack.length - maxValid;\n return incorrectStack.slice(-ignored);\n }\n return [];\n};\n\nexport const getPartialScore = (question, session) => {\n const { validation: { validResponse }, maxResponsePerZone, responseContainers } = question;\n let correctAnswers = 0;\n let possibleResponses = 0;\n\n if (!session || isEmpty(session)) {\n return 0;\n }\n\n validResponse.value.forEach(value => possibleResponses += (value.images || []).length);\n\n if (session.answers && session.answers.length) {\n const all = getAllUniqueCorrectness(session.answers, validResponse.value);\n correctAnswers = all.filter(item => item.isCorrect).length;\n\n // deduction rules: https://docs.google.com/document/d/1Oprm8Qs5fg_Dwoj2pNpsfu4D63QgCZgvcqTgeaVel7I/edit\n session.answers.forEach(answer => {\n if (maxResponsePerZone > 1) {\n const deductionList = getDeductionPerContainer(answer.containerIndex, all, validResponse);\n\n if (deductionList.length) {\n deductionList.forEach(item => {\n if (item.id === answer.id) {\n correctAnswers -= 1;\n }\n });\n }\n }\n });\n } else {\n correctAnswers = 0;\n }\n // negative values will implicitly make the score equal to zero\n correctAnswers = correctAnswers < 0 ? 0 : correctAnswers;\n\n const denominator = maxResponsePerZone > 1 ? possibleResponses : responseContainers.length;\n const str = (correctAnswers / denominator).toFixed(2);\n\n return parseFloat(str);\n};\n\nconst getScore = (config, session, env = {}) => {\n const isPartialScoring = partialScoring.enabled(config, env);\n const correct = isDefaultOrAltResponseCorrect(config, session);\n\n return isPartialScoring ? getPartialScore(config, session) : (correct ? 1 : 0);\n};\n\nexport function outcome(config, session, env = {}) {\n return new Promise(resolve => {\n log('outcome...');\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const configCamelized = camelizeKeys(config);\n\n if (session.answers || []) {\n const score = getScore(configCamelized, session, env);\n resolve({ score });\n }\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise(resolve => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { validation: { valid_response: { value } } } = question;\n const answers = [];\n\n if (value) {\n value.forEach((container, i) => {\n (container.images || []).forEach(v => {\n answers.push({\n value: v,\n containerIndex: i\n });\n });\n });\n }\n\n resolve({\n answers,\n id: '1'\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
|
package/controller/lib/utils.js
CHANGED
|
@@ -9,9 +9,9 @@ exports.getAllUniqueCorrectness = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
|
|
12
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
12
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
13
|
|
|
14
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
14
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
15
15
|
|
|
16
16
|
var getAllCorrectness = function getAllCorrectness(answers, responses) {
|
|
17
17
|
return answers.map(function (answer) {
|
package/docs/config-schema.json
CHANGED
|
@@ -19,6 +19,22 @@
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
|
+
"spellCheck": {
|
|
23
|
+
"title": "ConfigureProp",
|
|
24
|
+
"type": "object",
|
|
25
|
+
"properties": {
|
|
26
|
+
"settings": {
|
|
27
|
+
"description": "Indicates if the item has to be displayed in the Settings Panel",
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"title": "settings"
|
|
30
|
+
},
|
|
31
|
+
"label": {
|
|
32
|
+
"description": "Indicates the label for the item that has to be displayed in the Settings Panel",
|
|
33
|
+
"type": "string",
|
|
34
|
+
"title": "label"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
22
38
|
"showPrompt": {
|
|
23
39
|
"description": "Determines whether prompt field will be displayed or not",
|
|
24
40
|
"default": true,
|
|
@@ -14,6 +14,18 @@ Indicates if the item has to be displayed in the Settings Panel
|
|
|
14
14
|
|
|
15
15
|
Indicates the label for the item that has to be displayed in the Settings Panel
|
|
16
16
|
|
|
17
|
+
# `spellCheck` (object)
|
|
18
|
+
|
|
19
|
+
Properties of the `spellCheck` object:
|
|
20
|
+
|
|
21
|
+
## `settings` (boolean)
|
|
22
|
+
|
|
23
|
+
Indicates if the item has to be displayed in the Settings Panel
|
|
24
|
+
|
|
25
|
+
## `label` (string)
|
|
26
|
+
|
|
27
|
+
Indicates the label for the item that has to be displayed in the Settings Panel
|
|
28
|
+
|
|
17
29
|
# `showPrompt` (boolean)
|
|
18
30
|
|
|
19
31
|
Determines whether prompt field will be displayed or not
|
package/docs/pie-schema.json
CHANGED
|
@@ -13,6 +13,11 @@
|
|
|
13
13
|
"type": "boolean",
|
|
14
14
|
"title": "rationaleEnabled"
|
|
15
15
|
},
|
|
16
|
+
"spellCheckEnabled": {
|
|
17
|
+
"description": "Indicates if spellcheck is enabled for the author. Default value is true",
|
|
18
|
+
"type": "boolean",
|
|
19
|
+
"title": "spellCheckEnabled"
|
|
20
|
+
},
|
|
16
21
|
"teacherInstructionsEnabled": {
|
|
17
22
|
"description": "Indicates if Teacher Instructions are enabled",
|
|
18
23
|
"type": "boolean",
|
|
@@ -185,7 +190,8 @@
|
|
|
185
190
|
},
|
|
186
191
|
"required": [
|
|
187
192
|
"element",
|
|
188
|
-
"id"
|
|
193
|
+
"id",
|
|
194
|
+
"spellCheckEnabled"
|
|
189
195
|
],
|
|
190
196
|
"definitions": {
|
|
191
197
|
"ConfigureProp": {
|
package/docs/pie-schema.json.md
CHANGED
|
@@ -10,6 +10,10 @@ The question prompt or item stem
|
|
|
10
10
|
|
|
11
11
|
Indicates if Rationale is enabled
|
|
12
12
|
|
|
13
|
+
# `spellCheckEnabled` (boolean, required)
|
|
14
|
+
|
|
15
|
+
Indicates if spellcheck is enabled for the author. Default value is true
|
|
16
|
+
|
|
13
17
|
# `teacherInstructionsEnabled` (boolean)
|
|
14
18
|
|
|
15
19
|
Indicates if Teacher Instructions are enabled
|
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["ImageClozeAssociation","m","_model","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","_render","_session","Array","isArray","answers","length","s","data","SessionChangedEvent","el","React","createElement","ImageClozeAssociationComponent","model","session","updateAnswer","bind","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAKA;;;;;;IAEqBA,qB;;;;;;;;;;;;SACnB,aAAUC,CAAV,EAAa;AACX,WAAKC,MAAL,GAAcD,CAAd;AAEA,WAAKE,aAAL,CACE,IAAIC,8BAAJ,CACE,KAAKC,OAAL,CAAaC,WAAb,EADF,EAEE,KAAKC,UAAL,EAFF,EAGE,CAAC,CAAC,KAAKL,MAHT,CADF;;AAOA,WAAKM,OAAL;AACD;;;WAED,sBAAa;AACX,UAAI,CAAC,KAAKC,QAAV,EAAoB;AAClB,eAAO,KAAP;AACD;;AAED,aACEC,KAAK,CAACC,OAAN,CAAc,KAAKF,QAAL,CAAcG,OAA5B,KAAwC,KAAKH,QAAL,CAAcG,OAAd,CAAsBC,MAAtB,GAA+B,CADzE;AAGD;;;
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["ImageClozeAssociation","m","_model","dispatchEvent","ModelSetEvent","tagName","toLowerCase","isComplete","_render","_session","Array","isArray","answers","length","s","data","SessionChangedEvent","el","React","createElement","ImageClozeAssociationComponent","model","session","updateAnswer","bind","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAKA;;;;;;IAEqBA,qB;;;;;;;;;;;;SACnB,aAAUC,CAAV,EAAa;AACX,WAAKC,MAAL,GAAcD,CAAd;AAEA,WAAKE,aAAL,CACE,IAAIC,8BAAJ,CACE,KAAKC,OAAL,CAAaC,WAAb,EADF,EAEE,KAAKC,UAAL,EAFF,EAGE,CAAC,CAAC,KAAKL,MAHT,CADF;;AAOA,WAAKM,OAAL;AACD;;;WAED,sBAAa;AACX,UAAI,CAAC,KAAKC,QAAV,EAAoB;AAClB,eAAO,KAAP;AACD;;AAED,aACEC,KAAK,CAACC,OAAN,CAAc,KAAKF,QAAL,CAAcG,OAA5B,KAAwC,KAAKH,QAAL,CAAcG,OAAd,CAAsBC,MAAtB,GAA+B,CADzE;AAGD;;;SAWD,eAAc;AACZ,aAAO,KAAKJ,QAAZ;AACD,K;SAXD,aAAYK,CAAZ,EAAe;AACb,UAAIA,CAAC,IAAI,CAACA,CAAC,CAACF,OAAZ,EAAqB;AACnBE,QAAAA,CAAC,CAACF,OAAF,GAAY,EAAZ;AACD;;AAED,WAAKH,QAAL,GAAgBK,CAAhB;;AACA,WAAKN,OAAL;AACD;;;WAMD,sBAAaO,IAAb,EAAmB;AACjB,WAAKN,QAAL,CAAcG,OAAd,GAAwBG,IAAxB;AAEA,WAAKZ,aAAL,CACE,IAAIa,oCAAJ,CAAwB,KAAKX,OAAL,CAAaC,WAAb,EAAxB,EAAoD,KAAKC,UAAL,EAApD,CADF;;AAIA,WAAKC,OAAL;AACD;;;WAED,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;WAED,mBAAU;AAAA;;AACR,UAAI,KAAKN,MAAL,IAAe,KAAKO,QAAxB,EAAkC;AAChC,YAAMQ,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,gBAApB,EAAoD;AAC7DC,UAAAA,KAAK,EAAE,KAAKnB,MADiD;AAE7DoB,UAAAA,OAAO,EAAE,KAAKb,QAF+C;AAG7Dc,UAAAA,YAAY,EAAE,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB;AAH+C,SAApD,CAAX;;AAMAC,6BAASC,MAAT,CAAgBT,EAAhB,EAAoB,IAApB,EAA0B,YAAM;AAC9B,yCAAW,KAAX;AACD,SAFD;AAGD;AACF;;;kDA/DgDU,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport {\n ModelSetEvent,\n SessionChangedEvent\n} from '@pie-framework/pie-player-events';\n\nimport ImageClozeAssociationComponent from './root';\n\nexport default class ImageClozeAssociation extends HTMLElement {\n set model(m) {\n this._model = m;\n\n this.dispatchEvent(\n new ModelSetEvent(\n this.tagName.toLowerCase(),\n this.isComplete(),\n !!this._model\n )\n );\n this._render();\n }\n\n isComplete() {\n if (!this._session) {\n return false;\n }\n\n return (\n Array.isArray(this._session.answers) && this._session.answers.length > 0\n );\n }\n\n set session(s) {\n if (s && !s.answers) {\n s.answers = [];\n }\n\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n updateAnswer(data) {\n this._session.answers = data;\n\n this.dispatchEvent(\n new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete())\n );\n\n this._render();\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (this._model && this._session) {\n const el = React.createElement(ImageClozeAssociationComponent, {\n model: this._model,\n session: this._session,\n updateAnswer: this.updateAnswer.bind(this)\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n }\n}\n"],"file":"index.js"}
|
package/lib/root.js
CHANGED
|
@@ -51,9 +51,9 @@ var _utilsCorrectness = require("./utils-correctness");
|
|
|
51
51
|
|
|
52
52
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
53
53
|
|
|
54
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
54
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
55
55
|
|
|
56
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
56
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
57
57
|
|
|
58
58
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
59
59
|
|
package/lib/utils-correctness.js
CHANGED
|
@@ -5,15 +5,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.getUnansweredAnswers = exports.getAnswersCorrectness = void 0;
|
|
9
9
|
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
11
|
|
|
12
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
13
|
|
|
14
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
15
|
|
|
16
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
16
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
17
17
|
|
|
18
18
|
var getAllCorrectAnswers = function getAllCorrectAnswers(answers, responses) {
|
|
19
19
|
return answers.map(function (answer) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/image-cloze-association",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.26",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": "pie-framework/pie-elements",
|
|
6
6
|
"publishConfig": {
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
"@material-ui/core": "^3.9.3",
|
|
11
11
|
"@material-ui/icons": "^3.0.1",
|
|
12
12
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
13
|
-
"@pie-lib/correct-answer-toggle": "^2.3.
|
|
13
|
+
"@pie-lib/correct-answer-toggle": "^2.3.35",
|
|
14
14
|
"@pie-lib/drag": "^1.1.52",
|
|
15
|
-
"@pie-lib/math-rendering": "^2.3.
|
|
16
|
-
"@pie-lib/render-ui": "^4.12.
|
|
15
|
+
"@pie-lib/math-rendering": "^2.3.13",
|
|
16
|
+
"@pie-lib/render-ui": "^4.12.5",
|
|
17
17
|
"classnames": "^2.2.6",
|
|
18
18
|
"prop-types": "^15.6.1",
|
|
19
19
|
"react": "^16.8.1",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"author": "pie framework developers",
|
|
23
23
|
"license": "ISC",
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "de8f41ecfc06944b7bc890a167f81818d2bf1845",
|
|
25
25
|
"scripts": {
|
|
26
26
|
"postpublish": "../../scripts/postpublish"
|
|
27
27
|
},
|
package/src/index.js
CHANGED
|
@@ -41,6 +41,10 @@ export default class ImageClozeAssociation extends HTMLElement {
|
|
|
41
41
|
this._render();
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
get session() {
|
|
45
|
+
return this._session;
|
|
46
|
+
}
|
|
47
|
+
|
|
44
48
|
updateAnswer(data) {
|
|
45
49
|
this._session.answers = data;
|
|
46
50
|
|
|
@@ -62,6 +66,7 @@ export default class ImageClozeAssociation extends HTMLElement {
|
|
|
62
66
|
session: this._session,
|
|
63
67
|
updateAnswer: this.updateAnswer.bind(this)
|
|
64
68
|
});
|
|
69
|
+
|
|
65
70
|
ReactDOM.render(el, this, () => {
|
|
66
71
|
renderMath(this);
|
|
67
72
|
});
|