@pie-element/image-cloze-association 10.1.2-next.1 → 10.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +437 -0
- package/CHANGELOG.md +1997 -0
- package/LICENSE.md +5 -0
- package/README.md +1 -0
- package/configure/CHANGELOG.json +197 -0
- package/configure/CHANGELOG.md +1600 -0
- package/configure/lib/defaults.js +86 -0
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/index.js +99 -0
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/root.js +135 -0
- package/configure/lib/root.js.map +1 -0
- package/configure/package.json +23 -0
- package/configure/src/__tests__/index.test.js +155 -0
- package/configure/src/defaults.js +59 -0
- package/configure/src/index.js +114 -0
- package/configure/src/root.jsx +116 -0
- package/controller/CHANGELOG.json +137 -0
- package/controller/CHANGELOG.md +1149 -0
- package/controller/lib/defaults.js +14 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +304 -0
- package/controller/lib/index.js.map +1 -0
- package/controller/lib/utils.js +70 -0
- package/controller/lib/utils.js.map +1 -0
- package/controller/package.json +19 -0
- package/controller/src/__tests__/index.test.js +711 -0
- package/controller/src/defaults.js +7 -0
- package/controller/src/index.js +322 -0
- package/controller/src/utils.js +72 -0
- package/docs/config-schema.json +1382 -0
- package/docs/config-schema.json.md +1021 -0
- package/docs/demo/config.js +8 -0
- package/docs/demo/generate.js +74 -0
- package/docs/demo/index.html +1 -0
- package/docs/demo/session.js +16 -0
- package/docs/pie-schema.json +1085 -0
- package/docs/pie-schema.json.md +810 -0
- package/lib/constants.js +12 -0
- package/lib/constants.js.map +1 -0
- package/lib/evaluation-icon.js +60 -0
- package/lib/evaluation-icon.js.map +1 -0
- package/lib/image-container.js +94 -0
- package/lib/image-container.js.map +1 -0
- package/lib/image-drop-target.js +130 -0
- package/lib/image-drop-target.js.map +1 -0
- package/lib/index.js +220 -0
- package/lib/index.js.map +1 -0
- package/lib/interactive-section.js +104 -0
- package/lib/interactive-section.js.map +1 -0
- package/lib/possible-response.js +161 -0
- package/lib/possible-response.js.map +1 -0
- package/lib/possible-responses.js +58 -0
- package/lib/possible-responses.js.map +1 -0
- package/lib/root.js +491 -0
- package/lib/root.js.map +1 -0
- package/lib/static-html-span.js +35 -0
- package/lib/static-html-span.js.map +1 -0
- package/lib/utils-correctness.js +89 -0
- package/lib/utils-correctness.js.map +1 -0
- package/package.json +21 -87
- package/src/__tests__/index.test.js +174 -0
- package/src/__tests__/root.test.jsx +99 -0
- package/src/__tests__/utils.test.js +207 -0
- package/src/constants.js +5 -0
- package/src/evaluation-icon.jsx +54 -0
- package/src/image-container.jsx +90 -0
- package/src/image-drop-target.jsx +140 -0
- package/src/index.js +245 -0
- package/src/interactive-section.jsx +94 -0
- package/src/possible-response.jsx +152 -0
- package/src/possible-responses.jsx +52 -0
- package/src/root.jsx +490 -0
- package/src/static-html-span.jsx +30 -0
- package/src/utils-correctness.js +95 -0
- package/configure.js +0 -2
- package/controller.js +0 -1
- package/dist/author/defaults.d.ts +0 -88
- package/dist/author/defaults.js +0 -58
- package/dist/author/index.d.ts +0 -34
- package/dist/author/index.js +0 -71
- package/dist/author/root.d.ts +0 -14
- package/dist/author/root.js +0 -80
- package/dist/browser/Check-BAhIicO3.js +0 -10701
- package/dist/browser/Check-BAhIicO3.js.map +0 -1
- package/dist/browser/author/index.js +0 -38597
- package/dist/browser/author/index.js.map +0 -1
- package/dist/browser/controller/index.js +0 -171
- package/dist/browser/controller/index.js.map +0 -1
- package/dist/browser/delivery/index.js +0 -2699
- package/dist/browser/delivery/index.js.map +0 -1
- package/dist/browser/dist-BphSS14E.js +0 -346
- package/dist/browser/dist-BphSS14E.js.map +0 -1
- package/dist/browser/humps-CZ4RCLab.js +0 -67
- package/dist/browser/humps-CZ4RCLab.js.map +0 -1
- package/dist/browser/image-cloze-association.css +0 -2
- package/dist/controller/defaults.d.ts +0 -16
- package/dist/controller/defaults.js +0 -10
- package/dist/controller/index.d.ts +0 -23
- package/dist/controller/index.js +0 -122
- package/dist/controller/utils.d.ts +0 -14
- package/dist/controller/utils.js +0 -36
- package/dist/delivery/constants.d.ts +0 -14
- package/dist/delivery/evaluation-icon.d.ts +0 -28
- package/dist/delivery/evaluation-icon.js +0 -38
- package/dist/delivery/image-container.d.ts +0 -13
- package/dist/delivery/image-container.js +0 -61
- package/dist/delivery/image-drop-target.d.ts +0 -45
- package/dist/delivery/image-drop-target.js +0 -90
- package/dist/delivery/index.d.ts +0 -20
- package/dist/delivery/index.js +0 -110
- package/dist/delivery/interactive-section.d.ts +0 -15
- package/dist/delivery/interactive-section.js +0 -72
- package/dist/delivery/possible-response.d.ts +0 -34
- package/dist/delivery/possible-response.js +0 -100
- package/dist/delivery/possible-responses.d.ts +0 -31
- package/dist/delivery/possible-responses.js +0 -41
- package/dist/delivery/root.d.ts +0 -21
- package/dist/delivery/root.js +0 -278
- package/dist/delivery/static-html-span.d.ts +0 -14
- package/dist/delivery/static-html-span.js +0 -22
- package/dist/delivery/utils-correctness.d.ts +0 -10
- package/dist/delivery/utils-correctness.js +0 -43
- package/dist/index.d.ts +0 -1
- package/dist/index.iife.d.ts +0 -8
- package/dist/index.iife.js +0 -152
- package/dist/index.js +0 -2
- package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +0 -16
- package/dist/runtime-support.d.ts +0 -12
- package/dist/runtime-support.js +0 -12
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = exports.default = {
|
|
8
|
+
model: {
|
|
9
|
+
rationale: '',
|
|
10
|
+
rationaleEnabled: true,
|
|
11
|
+
studentInstructionsEnabled: true,
|
|
12
|
+
teacherInstructions: '',
|
|
13
|
+
teacherInstructionsEnabled: true
|
|
14
|
+
},
|
|
15
|
+
configuration: {
|
|
16
|
+
baseInputConfiguration: {
|
|
17
|
+
h3: {
|
|
18
|
+
disabled: true
|
|
19
|
+
},
|
|
20
|
+
audio: {
|
|
21
|
+
disabled: false
|
|
22
|
+
},
|
|
23
|
+
video: {
|
|
24
|
+
disabled: false
|
|
25
|
+
},
|
|
26
|
+
image: {
|
|
27
|
+
disabled: false
|
|
28
|
+
},
|
|
29
|
+
textAlign: {
|
|
30
|
+
disabled: true
|
|
31
|
+
},
|
|
32
|
+
showParagraphs: {
|
|
33
|
+
disabled: false
|
|
34
|
+
},
|
|
35
|
+
separateParagraphs: {
|
|
36
|
+
disabled: true
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
maxImageWidth: {
|
|
40
|
+
teacherInstructions: 300
|
|
41
|
+
},
|
|
42
|
+
maxImageHeight: {
|
|
43
|
+
teacherInstructions: 300
|
|
44
|
+
},
|
|
45
|
+
settingsPanelDisabled: false,
|
|
46
|
+
spellCheck: {
|
|
47
|
+
label: 'Spellcheck',
|
|
48
|
+
settings: false,
|
|
49
|
+
enabled: true
|
|
50
|
+
},
|
|
51
|
+
teacherInstructions: {
|
|
52
|
+
settings: true,
|
|
53
|
+
label: 'Teacher Instructions',
|
|
54
|
+
inputConfiguration: {
|
|
55
|
+
audio: {
|
|
56
|
+
disabled: false
|
|
57
|
+
},
|
|
58
|
+
video: {
|
|
59
|
+
disabled: false
|
|
60
|
+
},
|
|
61
|
+
image: {
|
|
62
|
+
disabled: false
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
required: false
|
|
66
|
+
},
|
|
67
|
+
withRubric: {
|
|
68
|
+
settings: false,
|
|
69
|
+
label: 'Add Rubric'
|
|
70
|
+
},
|
|
71
|
+
mathMlOptions: {
|
|
72
|
+
mmlOutput: false,
|
|
73
|
+
mmlEditing: false
|
|
74
|
+
},
|
|
75
|
+
language: {
|
|
76
|
+
settings: false,
|
|
77
|
+
label: 'Specify Language',
|
|
78
|
+
enabled: false
|
|
79
|
+
},
|
|
80
|
+
languageChoices: {
|
|
81
|
+
label: 'Language Choices',
|
|
82
|
+
options: []
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","names":["model","rationale","rationaleEnabled","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","configuration","baseInputConfiguration","h3","disabled","audio","video","image","textAlign","showParagraphs","separateParagraphs","maxImageWidth","maxImageHeight","settingsPanelDisabled","spellCheck","label","settings","enabled","inputConfiguration","required","withRubric","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options"],"sources":["../src/defaults.js"],"sourcesContent":["export default {\n model: {\n rationale: '',\n rationaleEnabled: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n },\n configuration: {\n baseInputConfiguration: {\n h3: { disabled: true },\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n textAlign: { disabled: true },\n showParagraphs: { disabled: false },\n separateParagraphs: { disabled: true },\n },\n maxImageWidth: {\n teacherInstructions: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n language: {\n settings: false,\n label: 'Specify Language',\n enabled: false,\n },\n languageChoices: {\n label: 'Language Choices',\n options: [],\n },\n },\n};\n"],"mappings":";;;;;;iCAAe;EACbA,KAAK,EAAE;IACLC,SAAS,EAAE,EAAE;IACbC,gBAAgB,EAAE,IAAI;IACtBC,0BAA0B,EAAE,IAAI;IAChCC,mBAAmB,EAAE,EAAE;IACvBC,0BAA0B,EAAE;EAC9B,CAAC;EACDC,aAAa,EAAE;IACbC,sBAAsB,EAAE;MACtBC,EAAE,EAAE;QAAEC,QAAQ,EAAE;MAAK,CAAC;MACtBC,KAAK,EAAE;QAAED,QAAQ,EAAE;MAAM,CAAC;MAC1BE,KAAK,EAAE;QAAEF,QAAQ,EAAE;MAAM,CAAC;MAC1BG,KAAK,EAAE;QAAEH,QAAQ,EAAE;MAAM,CAAC;MAC1BI,SAAS,EAAE;QAAEJ,QAAQ,EAAE;MAAK,CAAC;MAC7BK,cAAc,EAAE;QAAEL,QAAQ,EAAE;MAAM,CAAC;MACnCM,kBAAkB,EAAE;QAAEN,QAAQ,EAAE;MAAK;IACvC,CAAC;IACDO,aAAa,EAAE;MACbZ,mBAAmB,EAAE;IACvB,CAAC;IACDa,cAAc,EAAE;MACdb,mBAAmB,EAAE;IACvB,CAAC;IACDc,qBAAqB,EAAE,KAAK;IAC5BC,UAAU,EAAE;MACVC,KAAK,EAAE,YAAY;MACnBC,QAAQ,EAAE,KAAK;MACfC,OAAO,EAAE;IACX,CAAC;IACDlB,mBAAmB,EAAE;MACnBiB,QAAQ,EAAE,IAAI;MACdD,KAAK,EAAE,sBAAsB;MAC7BG,kBAAkB,EAAE;QAClBb,KAAK,EAAE;UAAED,QAAQ,EAAE;QAAM,CAAC;QAC1BE,KAAK,EAAE;UAAEF,QAAQ,EAAE;QAAM,CAAC;QAC1BG,KAAK,EAAE;UAAEH,QAAQ,EAAE;QAAM;MAC3B,CAAC;MACDe,QAAQ,EAAE;IACZ,CAAC;IACDC,UAAU,EAAE;MACVJ,QAAQ,EAAE,KAAK;MACfD,KAAK,EAAE;IACT,CAAC;IACDM,aAAa,EAAE;MACbC,SAAS,EAAE,KAAK;MAChBC,UAAU,EAAE;IACd,CAAC;IACDC,QAAQ,EAAE;MACRR,QAAQ,EAAE,KAAK;MACfD,KAAK,EAAE,kBAAkB;MACzBE,OAAO,EAAE;IACX,CAAC;IACDQ,eAAe,EAAE;MACfV,KAAK,EAAE,kBAAkB;MACzBW,OAAO,EAAE;IACX;EACF;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
var _client = require("react-dom/client");
|
|
12
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
13
|
+
var _root = _interopRequireDefault(require("./root"));
|
|
14
|
+
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
15
|
+
const log = (0, _debug.default)('image-cloze-association:configure');
|
|
16
|
+
class ImageClozeAssociationConfigure extends HTMLElement {
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
this._root = null;
|
|
20
|
+
this._model = ImageClozeAssociationConfigure.createDefaultModel();
|
|
21
|
+
this.onModelChanged = this.onModelChanged.bind(this);
|
|
22
|
+
this._configuration = _defaults.default.configuration;
|
|
23
|
+
}
|
|
24
|
+
set model(s) {
|
|
25
|
+
this._model = ImageClozeAssociationConfigure.createDefaultModel(s);
|
|
26
|
+
this._render();
|
|
27
|
+
}
|
|
28
|
+
set configuration(c) {
|
|
29
|
+
this._configuration = c;
|
|
30
|
+
this._render();
|
|
31
|
+
}
|
|
32
|
+
set disableSidePanel(s) {
|
|
33
|
+
this._disableSidePanel = s;
|
|
34
|
+
this._render();
|
|
35
|
+
}
|
|
36
|
+
dispatchModelUpdated(reset) {
|
|
37
|
+
const resetValue = !!reset;
|
|
38
|
+
this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model, resetValue));
|
|
39
|
+
}
|
|
40
|
+
onModelChanged(m, reset) {
|
|
41
|
+
this._model = m;
|
|
42
|
+
this.dispatchModelUpdated(reset);
|
|
43
|
+
this._render();
|
|
44
|
+
}
|
|
45
|
+
onConfigurationChanged(config) {
|
|
46
|
+
this._configuration = config;
|
|
47
|
+
this._render();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
* @param {done, progress, file} handler
|
|
53
|
+
*/
|
|
54
|
+
insertImage(handler) {
|
|
55
|
+
this.dispatchEvent(new _pieConfigureEvents.InsertImageEvent(handler));
|
|
56
|
+
}
|
|
57
|
+
onDeleteImage(src, done) {
|
|
58
|
+
this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
|
|
59
|
+
}
|
|
60
|
+
insertSound(handler) {
|
|
61
|
+
this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
|
|
62
|
+
}
|
|
63
|
+
onDeleteSound(src, done) {
|
|
64
|
+
this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
|
|
65
|
+
}
|
|
66
|
+
_render() {
|
|
67
|
+
log('_render');
|
|
68
|
+
let element = /*#__PURE__*/_react.default.createElement(_root.default, {
|
|
69
|
+
disableSidePanel: this._disableSidePanel,
|
|
70
|
+
model: this._model,
|
|
71
|
+
configuration: this._configuration,
|
|
72
|
+
onModelChanged: this.onModelChanged.bind(this),
|
|
73
|
+
onConfigurationChanged: this.onConfigurationChanged.bind(this),
|
|
74
|
+
imageSupport: {
|
|
75
|
+
add: this.insertImage.bind(this),
|
|
76
|
+
delete: this.onDeleteImage.bind(this)
|
|
77
|
+
},
|
|
78
|
+
uploadSoundSupport: {
|
|
79
|
+
add: this.insertSound.bind(this),
|
|
80
|
+
delete: this.onDeleteSound.bind(this)
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
if (!this._root) {
|
|
84
|
+
this._root = (0, _client.createRoot)(this);
|
|
85
|
+
}
|
|
86
|
+
this._root.render(element);
|
|
87
|
+
}
|
|
88
|
+
disconnectedCallback() {
|
|
89
|
+
if (this._root) {
|
|
90
|
+
this._root.unmount();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.default = ImageClozeAssociationConfigure;
|
|
95
|
+
(0, _defineProperty2.default)(ImageClozeAssociationConfigure, "createDefaultModel", (model = {}) => ({
|
|
96
|
+
..._defaults.default.model,
|
|
97
|
+
...model
|
|
98
|
+
}));
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_pieConfigureEvents","require","_react","_interopRequireDefault","_client","_debug","_root","_defaults","log","debug","ImageClozeAssociationConfigure","HTMLElement","constructor","_model","createDefaultModel","onModelChanged","bind","_configuration","sensibleDefaults","configuration","model","s","_render","c","disableSidePanel","_disableSidePanel","dispatchModelUpdated","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","onConfigurationChanged","config","insertImage","handler","InsertImageEvent","onDeleteImage","src","done","DeleteImageEvent","insertSound","InsertSoundEvent","onDeleteSound","DeleteSoundEvent","element","React","createElement","Root","imageSupport","add","delete","uploadSoundSupport","createRoot","render","disconnectedCallback","unmount","exports","default","_defineProperty2"],"sources":["../src/index.js"],"sourcesContent":["import {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport debug from 'debug';\n\nimport Root from './root';\nimport sensibleDefaults from './defaults';\n\nconst log = debug('image-cloze-association:configure');\n\nexport default class ImageClozeAssociationConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...sensibleDefaults.model,\n ...model,\n });\n\n constructor() {\n super();\n this._root = null;\n this._model = ImageClozeAssociationConfigure.createDefaultModel();\n this.onModelChanged = this.onModelChanged.bind(this);\n this._configuration = sensibleDefaults.configuration;\n }\n\n set model(s) {\n this._model = ImageClozeAssociationConfigure.createDefaultModel(s);\n this._render();\n }\n\n set configuration(c) {\n this._configuration = c;\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = m;\n this.dispatchModelUpdated(reset);\n this._render();\n }\n\n onConfigurationChanged(config) {\n this._configuration = config;\n this._render();\n }\n\n /**\n *\n * @param {done, progress, file} handler\n */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n\n let element = React.createElement(Root, {\n disableSidePanel: this._disableSidePanel,\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(element);\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = exports.Root = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
var _configUi = require("@pie-lib/config-ui");
|
|
12
|
+
var _editableHtmlTipTap = _interopRequireDefault(require("@pie-lib/editable-html-tip-tap"));
|
|
13
|
+
var _styles = require("@mui/material/styles");
|
|
14
|
+
const {
|
|
15
|
+
Panel,
|
|
16
|
+
toggle,
|
|
17
|
+
dropdown
|
|
18
|
+
} = _configUi.settings;
|
|
19
|
+
const StyledInputContainer = (0, _styles.styled)(_configUi.InputContainer)(({
|
|
20
|
+
theme
|
|
21
|
+
}) => ({
|
|
22
|
+
width: '100%',
|
|
23
|
+
paddingTop: theme.spacing(2),
|
|
24
|
+
marginBottom: theme.spacing(2)
|
|
25
|
+
}));
|
|
26
|
+
const ErrorText = (0, _styles.styled)('div')(({
|
|
27
|
+
theme
|
|
28
|
+
}) => ({
|
|
29
|
+
fontSize: theme.typography.fontSize - 2,
|
|
30
|
+
color: theme.palette.error.main,
|
|
31
|
+
paddingTop: theme.spacing(1)
|
|
32
|
+
}));
|
|
33
|
+
class Root extends _react.default.Component {
|
|
34
|
+
constructor(...args) {
|
|
35
|
+
super(...args);
|
|
36
|
+
(0, _defineProperty2.default)(this, "onTeacherInstructionsChanged", teacherInstructions => {
|
|
37
|
+
this.props.onModelChanged({
|
|
38
|
+
...this.props.model,
|
|
39
|
+
teacherInstructions
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
render() {
|
|
44
|
+
const {
|
|
45
|
+
model,
|
|
46
|
+
configuration,
|
|
47
|
+
onModelChanged,
|
|
48
|
+
onConfigurationChanged,
|
|
49
|
+
imageSupport,
|
|
50
|
+
uploadSoundSupport
|
|
51
|
+
} = this.props;
|
|
52
|
+
const {
|
|
53
|
+
baseInputConfiguration = {},
|
|
54
|
+
contentDimensions = {},
|
|
55
|
+
maxImageWidth = {},
|
|
56
|
+
maxImageHeight = {},
|
|
57
|
+
settingsPanelDisabled,
|
|
58
|
+
spellCheck = {},
|
|
59
|
+
teacherInstructions = {},
|
|
60
|
+
withRubric = {},
|
|
61
|
+
mathMlOptions = {},
|
|
62
|
+
language = {},
|
|
63
|
+
languageChoices = {}
|
|
64
|
+
} = configuration || {};
|
|
65
|
+
const {
|
|
66
|
+
errors = {},
|
|
67
|
+
extraCSSRules,
|
|
68
|
+
spellCheckEnabled
|
|
69
|
+
} = model || {};
|
|
70
|
+
const {
|
|
71
|
+
teacherInstructions: teacherInstructionsError
|
|
72
|
+
} = errors;
|
|
73
|
+
const panelProperties = {
|
|
74
|
+
teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
|
|
75
|
+
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
|
|
76
|
+
rubricEnabled: withRubric?.settings && toggle(withRubric?.label),
|
|
77
|
+
'language.enabled': language.settings && toggle(language.label, true),
|
|
78
|
+
language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options)
|
|
79
|
+
};
|
|
80
|
+
const getPluginProps = (props = {}) => ({
|
|
81
|
+
...baseInputConfiguration,
|
|
82
|
+
...props
|
|
83
|
+
});
|
|
84
|
+
return /*#__PURE__*/_react.default.createElement(_configUi.layout.ConfigLayout, {
|
|
85
|
+
extraCSSRules: extraCSSRules,
|
|
86
|
+
dimensions: contentDimensions,
|
|
87
|
+
hideSettings: settingsPanelDisabled,
|
|
88
|
+
settings: /*#__PURE__*/_react.default.createElement(Panel, {
|
|
89
|
+
model: model,
|
|
90
|
+
configuration: configuration,
|
|
91
|
+
onChangeModel: model => onModelChanged(model),
|
|
92
|
+
onChangeConfiguration: config => onConfigurationChanged(config),
|
|
93
|
+
groups: {
|
|
94
|
+
Properties: panelProperties
|
|
95
|
+
}
|
|
96
|
+
})
|
|
97
|
+
}, model && model.teacherInstructionsEnabled && /*#__PURE__*/_react.default.createElement(StyledInputContainer, {
|
|
98
|
+
label: teacherInstructions.label
|
|
99
|
+
}, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
|
|
100
|
+
markup: model.teacherInstructions || '',
|
|
101
|
+
onChange: this.onTeacherInstructionsChanged,
|
|
102
|
+
imageSupport: imageSupport,
|
|
103
|
+
nonEmpty: false,
|
|
104
|
+
error: teacherInstructionsError,
|
|
105
|
+
spellCheck: spellCheckEnabled,
|
|
106
|
+
pluginProps: getPluginProps(teacherInstructions?.inputConfiguration),
|
|
107
|
+
maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions,
|
|
108
|
+
maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions,
|
|
109
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
110
|
+
languageCharactersProps: [{
|
|
111
|
+
language: 'spanish'
|
|
112
|
+
}, {
|
|
113
|
+
language: 'special'
|
|
114
|
+
}],
|
|
115
|
+
mathMlOptions: mathMlOptions
|
|
116
|
+
}), teacherInstructionsError && /*#__PURE__*/_react.default.createElement(ErrorText, null, teacherInstructionsError)), /*#__PURE__*/_react.default.createElement("div", null, "Image cloze association"));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.Root = Root;
|
|
120
|
+
Root.propTypes = {
|
|
121
|
+
onModelChanged: _propTypes.default.func,
|
|
122
|
+
onConfigurationChanged: _propTypes.default.func,
|
|
123
|
+
model: _propTypes.default.object.isRequired,
|
|
124
|
+
configuration: _propTypes.default.object.isRequired,
|
|
125
|
+
imageSupport: _propTypes.default.shape({
|
|
126
|
+
add: _propTypes.default.func.isRequired,
|
|
127
|
+
delete: _propTypes.default.func.isRequired
|
|
128
|
+
}),
|
|
129
|
+
uploadSoundSupport: _propTypes.default.shape({
|
|
130
|
+
add: _propTypes.default.func.isRequired,
|
|
131
|
+
delete: _propTypes.default.func.isRequired
|
|
132
|
+
})
|
|
133
|
+
};
|
|
134
|
+
var _default = exports.default = Root;
|
|
135
|
+
//# sourceMappingURL=root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.js","names":["_react","_interopRequireDefault","require","_propTypes","_configUi","_editableHtmlTipTap","_styles","Panel","toggle","dropdown","settings","StyledInputContainer","styled","InputContainer","theme","width","paddingTop","spacing","marginBottom","ErrorText","fontSize","typography","color","palette","error","main","Root","React","Component","constructor","args","_defineProperty2","default","teacherInstructions","props","onModelChanged","model","render","configuration","onConfigurationChanged","imageSupport","uploadSoundSupport","baseInputConfiguration","contentDimensions","maxImageWidth","maxImageHeight","settingsPanelDisabled","spellCheck","withRubric","mathMlOptions","language","languageChoices","errors","extraCSSRules","spellCheckEnabled","teacherInstructionsError","panelProperties","teacherInstructionsEnabled","label","rubricEnabled","enabled","options","getPluginProps","createElement","layout","ConfigLayout","dimensions","hideSettings","onChangeModel","onChangeConfiguration","config","groups","Properties","markup","onChange","onTeacherInstructionsChanged","nonEmpty","pluginProps","inputConfiguration","languageCharactersProps","exports","propTypes","PropTypes","func","object","isRequired","shape","add","delete","_default"],"sources":["../src/root.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { styled } from '@mui/material/styles';\n\nconst { Panel, toggle, dropdown } = settings;\n\nconst StyledInputContainer = styled(InputContainer)(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nexport class Root extends React.Component {\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n render() {\n const { model, configuration, onModelChanged, onConfigurationChanged, imageSupport, uploadSoundSupport } =\n this.props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n maxImageWidth = {},\n maxImageHeight = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n mathMlOptions = {},\n language = {},\n languageChoices = {},\n } = configuration || {};\n const { errors = {}, extraCSSRules, spellCheckEnabled } = model || {};\n const { teacherInstructions: teacherInstructionsError } = errors;\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n 'language.enabled': language.settings && toggle(language.label, true),\n language: language.settings && language.enabled && dropdown(languageChoices.label, languageChoices.options),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => onModelChanged(model)}\n onChangeConfiguration={(config) => onConfigurationChanged(config)}\n groups={{\n Properties: panelProperties,\n }}\n />\n }\n >\n {model && model.teacherInstructionsEnabled && (\n <StyledInputContainer label={teacherInstructions.label}>\n <EditableHtml\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n error={teacherInstructionsError}\n spellCheck={spellCheckEnabled}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n maxImageWidth={maxImageWidth && maxImageWidth.teacherInstructions}\n maxImageHeight={maxImageHeight && maxImageHeight.teacherInstructions}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n mathMlOptions={mathMlOptions}\n />\n {teacherInstructionsError && <ErrorText>{teacherInstructionsError}</ErrorText>}\n </StyledInputContainer>\n )}\n\n <div>Image cloze association</div>\n </layout.ConfigLayout>\n );\n }\n}\n\nRoot.propTypes = {\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 uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n};\n\nexport default Root;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAEA,MAAM;EAAEK,KAAK;EAAEC,MAAM;EAAEC;AAAS,CAAC,GAAGC,kBAAQ;AAE5C,MAAMC,oBAAoB,GAAG,IAAAC,cAAM,EAACC,wBAAc,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EAClEC,KAAK,EAAE,MAAM;EACbC,UAAU,EAAEF,KAAK,CAACG,OAAO,CAAC,CAAC,CAAC;EAC5BC,YAAY,EAAEJ,KAAK,CAACG,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,MAAME,SAAS,GAAG,IAAAP,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEE;AAAM,CAAC,MAAM;EAC9CM,QAAQ,EAAEN,KAAK,CAACO,UAAU,CAACD,QAAQ,GAAG,CAAC;EACvCE,KAAK,EAAER,KAAK,CAACS,OAAO,CAACC,KAAK,CAACC,IAAI;EAC/BT,UAAU,EAAEF,KAAK,CAACG,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEI,MAAMS,IAAI,SAASC,cAAK,CAACC,SAAS,CAAC;EAAAC,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,wCACRC,mBAAmB,IAAK;MACtD,IAAI,CAACC,KAAK,CAACC,cAAc,CAAC;QAAE,GAAG,IAAI,CAACD,KAAK,CAACE,KAAK;QAAEH;MAAoB,CAAC,CAAC;IACzE,CAAC;EAAA;EAEDI,MAAMA,CAAA,EAAG;IACP,MAAM;MAAED,KAAK;MAAEE,aAAa;MAAEH,cAAc;MAAEI,sBAAsB;MAAEC,YAAY;MAAEC;IAAmB,CAAC,GACtG,IAAI,CAACP,KAAK;IACZ,MAAM;MACJQ,sBAAsB,GAAG,CAAC,CAAC;MAC3BC,iBAAiB,GAAG,CAAC,CAAC;MACtBC,aAAa,GAAG,CAAC,CAAC;MAClBC,cAAc,GAAG,CAAC,CAAC;MACnBC,qBAAqB;MACrBC,UAAU,GAAG,CAAC,CAAC;MACfd,mBAAmB,GAAG,CAAC,CAAC;MACxBe,UAAU,GAAG,CAAC,CAAC;MACfC,aAAa,GAAG,CAAC,CAAC;MAClBC,QAAQ,GAAG,CAAC,CAAC;MACbC,eAAe,GAAG,CAAC;IACrB,CAAC,GAAGb,aAAa,IAAI,CAAC,CAAC;IACvB,MAAM;MAAEc,MAAM,GAAG,CAAC,CAAC;MAAEC,aAAa;MAAEC;IAAkB,CAAC,GAAGlB,KAAK,IAAI,CAAC,CAAC;IACrE,MAAM;MAAEH,mBAAmB,EAAEsB;IAAyB,CAAC,GAAGH,MAAM;IAEhE,MAAMI,eAAe,GAAG;MACtBC,0BAA0B,EAAExB,mBAAmB,CAACvB,QAAQ,IAAIF,MAAM,CAACyB,mBAAmB,CAACyB,KAAK,CAAC;MAC7FJ,iBAAiB,EAAEP,UAAU,CAACrC,QAAQ,IAAIF,MAAM,CAACuC,UAAU,CAACW,KAAK,CAAC;MAClEC,aAAa,EAAEX,UAAU,EAAEtC,QAAQ,IAAIF,MAAM,CAACwC,UAAU,EAAEU,KAAK,CAAC;MAChE,kBAAkB,EAAER,QAAQ,CAACxC,QAAQ,IAAIF,MAAM,CAAC0C,QAAQ,CAACQ,KAAK,EAAE,IAAI,CAAC;MACrER,QAAQ,EAAEA,QAAQ,CAACxC,QAAQ,IAAIwC,QAAQ,CAACU,OAAO,IAAInD,QAAQ,CAAC0C,eAAe,CAACO,KAAK,EAAEP,eAAe,CAACU,OAAO;IAC5G,CAAC;IAED,MAAMC,cAAc,GAAGA,CAAC5B,KAAK,GAAG,CAAC,CAAC,MAAM;MACtC,GAAGQ,sBAAsB;MACzB,GAAGR;IACL,CAAC,CAAC;IAEF,oBACElC,MAAA,CAAAgC,OAAA,CAAA+B,aAAA,CAAC3D,SAAA,CAAA4D,MAAM,CAACC,YAAY;MAClBZ,aAAa,EAAEA,aAAc;MAC7Ba,UAAU,EAAEvB,iBAAkB;MAC9BwB,YAAY,EAAErB,qBAAsB;MACpCpC,QAAQ,eACNV,MAAA,CAAAgC,OAAA,CAAA+B,aAAA,CAACxD,KAAK;QACJ6B,KAAK,EAAEA,KAAM;QACbE,aAAa,EAAEA,aAAc;QAC7B8B,aAAa,EAAGhC,KAAK,IAAKD,cAAc,CAACC,KAAK,CAAE;QAChDiC,qBAAqB,EAAGC,MAAM,IAAK/B,sBAAsB,CAAC+B,MAAM,CAAE;QAClEC,MAAM,EAAE;UACNC,UAAU,EAAEhB;QACd;MAAE,CACH;IACF,GAEApB,KAAK,IAAIA,KAAK,CAACqB,0BAA0B,iBACxCzD,MAAA,CAAAgC,OAAA,CAAA+B,aAAA,CAACpD,oBAAoB;MAAC+C,KAAK,EAAEzB,mBAAmB,CAACyB;IAAM,gBACrD1D,MAAA,CAAAgC,OAAA,CAAA+B,aAAA,CAAC1D,mBAAA,CAAA2B,OAAY;MACXyC,MAAM,EAAErC,KAAK,CAACH,mBAAmB,IAAI,EAAG;MACxCyC,QAAQ,EAAE,IAAI,CAACC,4BAA6B;MAC5CnC,YAAY,EAAEA,YAAa;MAC3BoC,QAAQ,EAAE,KAAM;MAChBpD,KAAK,EAAE+B,wBAAyB;MAChCR,UAAU,EAAEO,iBAAkB;MAC9BuB,WAAW,EAAEf,cAAc,CAAC7B,mBAAmB,EAAE6C,kBAAkB,CAAE;MACrElC,aAAa,EAAEA,aAAa,IAAIA,aAAa,CAACX,mBAAoB;MAClEY,cAAc,EAAEA,cAAc,IAAIA,cAAc,CAACZ,mBAAoB;MACrEQ,kBAAkB,EAAEA,kBAAmB;MACvCsC,uBAAuB,EAAE,CAAC;QAAE7B,QAAQ,EAAE;MAAU,CAAC,EAAE;QAAEA,QAAQ,EAAE;MAAU,CAAC,CAAE;MAC5ED,aAAa,EAAEA;IAAc,CAC9B,CAAC,EACDM,wBAAwB,iBAAIvD,MAAA,CAAAgC,OAAA,CAAA+B,aAAA,CAAC5C,SAAS,QAAEoC,wBAAoC,CACzD,CACvB,eAEDvD,MAAA,CAAAgC,OAAA,CAAA+B,aAAA,cAAK,yBAA4B,CACd,CAAC;EAE1B;AACF;AAACiB,OAAA,CAAAtD,IAAA,GAAAA,IAAA;AAEDA,IAAI,CAACuD,SAAS,GAAG;EACf9C,cAAc,EAAE+C,kBAAS,CAACC,IAAI;EAC9B5C,sBAAsB,EAAE2C,kBAAS,CAACC,IAAI;EACtC/C,KAAK,EAAE8C,kBAAS,CAACE,MAAM,CAACC,UAAU;EAClC/C,aAAa,EAAE4C,kBAAS,CAACE,MAAM,CAACC,UAAU;EAC1C7C,YAAY,EAAE0C,kBAAS,CAACI,KAAK,CAAC;IAC5BC,GAAG,EAAEL,kBAAS,CAACC,IAAI,CAACE,UAAU;IAC9BG,MAAM,EAAEN,kBAAS,CAACC,IAAI,CAACE;EACzB,CAAC,CAAC;EACF5C,kBAAkB,EAAEyC,kBAAS,CAACI,KAAK,CAAC;IAClCC,GAAG,EAAEL,kBAAS,CAACC,IAAI,CAACE,UAAU;IAC9BG,MAAM,EAAEN,kBAAS,CAACC,IAAI,CAACE;EACzB,CAAC;AACH,CAAC;AAAC,IAAAI,QAAA,GAAAT,OAAA,CAAAhD,OAAA,GAEaN,IAAI","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pie-element/image-cloze-association-configure",
|
|
3
|
+
"private": true,
|
|
4
|
+
"version": "9.1.2",
|
|
5
|
+
"description": "",
|
|
6
|
+
"main": "lib/index.js",
|
|
7
|
+
"module": "src/index.js",
|
|
8
|
+
"author": "",
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@emotion/react": "^11.14.0",
|
|
11
|
+
"@emotion/style": "^0.8.0",
|
|
12
|
+
"@mui/icons-material": "^7.3.4",
|
|
13
|
+
"@mui/material": "^7.3.4",
|
|
14
|
+
"@pie-framework/pie-configure-events": "^1.3.0",
|
|
15
|
+
"@pie-lib/config-ui": "13.0.6",
|
|
16
|
+
"@pie-lib/editable-html-tip-tap": "2.1.4",
|
|
17
|
+
"debug": "^4.1.1",
|
|
18
|
+
"prop-types": "^15.8.1",
|
|
19
|
+
"react": "18.3.1",
|
|
20
|
+
"react-dom": "18.3.1"
|
|
21
|
+
},
|
|
22
|
+
"license": "ISC"
|
|
23
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { createRoot } from 'react-dom/client';
|
|
2
|
+
import { render } from '@testing-library/react';
|
|
3
|
+
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import defaultValues from '../defaults';
|
|
6
|
+
import { Root } from '../root';
|
|
7
|
+
|
|
8
|
+
const mockRender = jest.fn();
|
|
9
|
+
const mockUnmount = jest.fn();
|
|
10
|
+
const mockCreateRoot = jest.fn(() => ({
|
|
11
|
+
render: mockRender,
|
|
12
|
+
unmount: mockUnmount,
|
|
13
|
+
}));
|
|
14
|
+
|
|
15
|
+
jest.mock('react-dom/client', () => ({
|
|
16
|
+
createRoot: (...args) => mockCreateRoot(...args),
|
|
17
|
+
}));
|
|
18
|
+
|
|
19
|
+
jest.mock('@pie-lib/config-ui', () => ({
|
|
20
|
+
FeedbackConfig: (props) => <div />,
|
|
21
|
+
InputCheckbox: (props) => <div />,
|
|
22
|
+
InputContainer: (props) => <div {...props}>{props.children}</div>,
|
|
23
|
+
layout: {
|
|
24
|
+
ConfigLayout: (props) => <div>{props.children}</div>,
|
|
25
|
+
},
|
|
26
|
+
settings: {
|
|
27
|
+
Panel: (props) => <div onChange={props.onChange} />,
|
|
28
|
+
toggle: jest.fn(),
|
|
29
|
+
dropdown: jest.fn(),
|
|
30
|
+
},
|
|
31
|
+
}));
|
|
32
|
+
|
|
33
|
+
jest.mock('../index', () => {
|
|
34
|
+
const sensibleDefaults = require('../defaults').default;
|
|
35
|
+
const { ModelUpdatedEvent } = require('@pie-framework/pie-configure-events');
|
|
36
|
+
|
|
37
|
+
class MockHTMLElement {
|
|
38
|
+
constructor() {
|
|
39
|
+
this._root = null;
|
|
40
|
+
this._model = null;
|
|
41
|
+
this._configuration = sensibleDefaults.configuration;
|
|
42
|
+
this.dispatchEvent = jest.fn();
|
|
43
|
+
this.onModelChanged = this.onModelChanged.bind(this);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
__esModule: true,
|
|
49
|
+
default: class ImageClozeAssociationConfigure extends MockHTMLElement {
|
|
50
|
+
static createDefaultModel = (model = {}) => ({
|
|
51
|
+
...sensibleDefaults.model,
|
|
52
|
+
...model,
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
constructor() {
|
|
56
|
+
super();
|
|
57
|
+
this._model = ImageClozeAssociationConfigure.createDefaultModel();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
set model(s) {
|
|
61
|
+
this._model = ImageClozeAssociationConfigure.createDefaultModel(s);
|
|
62
|
+
this._render();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
set configuration(c) {
|
|
66
|
+
this._configuration = c;
|
|
67
|
+
this._render();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
_render() {
|
|
71
|
+
if (!this._root) {
|
|
72
|
+
this._root = mockCreateRoot(global.document.createElement('div'));
|
|
73
|
+
}
|
|
74
|
+
this._root.render(null);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
onModelChanged(model) {
|
|
78
|
+
this._model = { ...this._model, ...model };
|
|
79
|
+
this.dispatchEvent(new ModelUpdatedEvent(this._model, false));
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
export const defaultProps = {
|
|
86
|
+
classes: {},
|
|
87
|
+
model: {},
|
|
88
|
+
configuration: defaultValues.configuration,
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const ImageClozeAssociationConfigure = require('../index').default;
|
|
92
|
+
|
|
93
|
+
describe('Root', () => {
|
|
94
|
+
let wrapper;
|
|
95
|
+
|
|
96
|
+
beforeEach(() => {
|
|
97
|
+
wrapper = (props) => {
|
|
98
|
+
const configProps = {
|
|
99
|
+
...defaultProps,
|
|
100
|
+
...props,
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
return render(<Root {...configProps} />);
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it('renders correctly', () => {
|
|
108
|
+
const { container } = wrapper();
|
|
109
|
+
expect(container).toBeDefined();
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('updates teacher instructions correctly', () => {
|
|
113
|
+
let onModelChanged = jest.fn();
|
|
114
|
+
const { container } = wrapper({
|
|
115
|
+
onModelChanged,
|
|
116
|
+
model: { teacherInstructionsEnabled: true },
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// Find the Root component and call the method directly
|
|
120
|
+
// Since we're using RTL, we need to test the component behavior differently
|
|
121
|
+
const rootComponent = new Root({
|
|
122
|
+
...defaultProps,
|
|
123
|
+
onModelChanged,
|
|
124
|
+
model: { teacherInstructionsEnabled: true },
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
rootComponent.onTeacherInstructionsChanged('New Teacher Instructions');
|
|
128
|
+
|
|
129
|
+
expect(onModelChanged).toBeCalledWith(
|
|
130
|
+
expect.objectContaining({ teacherInstructions: 'New Teacher Instructions' }),
|
|
131
|
+
);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
describe('index', () => {
|
|
136
|
+
let el;
|
|
137
|
+
let onModelChanged = jest.fn();
|
|
138
|
+
let initialModel = {};
|
|
139
|
+
|
|
140
|
+
beforeEach(() => {
|
|
141
|
+
mockRender.mockClear();
|
|
142
|
+
mockCreateRoot.mockClear();
|
|
143
|
+
el = new ImageClozeAssociationConfigure();
|
|
144
|
+
el.model = initialModel;
|
|
145
|
+
el.onModelChanged = onModelChanged;
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
describe('set model', () => {
|
|
149
|
+
it('calls createRoot and render', () => {
|
|
150
|
+
const rootInstance = mockCreateRoot.mock.results[0].value;
|
|
151
|
+
expect(mockCreateRoot).toHaveBeenCalled();
|
|
152
|
+
expect(rootInstance.render).toHaveBeenCalled();
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
model: {
|
|
3
|
+
rationale: '',
|
|
4
|
+
rationaleEnabled: true,
|
|
5
|
+
studentInstructionsEnabled: true,
|
|
6
|
+
teacherInstructions: '',
|
|
7
|
+
teacherInstructionsEnabled: true,
|
|
8
|
+
},
|
|
9
|
+
configuration: {
|
|
10
|
+
baseInputConfiguration: {
|
|
11
|
+
h3: { disabled: true },
|
|
12
|
+
audio: { disabled: false },
|
|
13
|
+
video: { disabled: false },
|
|
14
|
+
image: { disabled: false },
|
|
15
|
+
textAlign: { disabled: true },
|
|
16
|
+
showParagraphs: { disabled: false },
|
|
17
|
+
separateParagraphs: { disabled: true },
|
|
18
|
+
},
|
|
19
|
+
maxImageWidth: {
|
|
20
|
+
teacherInstructions: 300,
|
|
21
|
+
},
|
|
22
|
+
maxImageHeight: {
|
|
23
|
+
teacherInstructions: 300,
|
|
24
|
+
},
|
|
25
|
+
settingsPanelDisabled: false,
|
|
26
|
+
spellCheck: {
|
|
27
|
+
label: 'Spellcheck',
|
|
28
|
+
settings: false,
|
|
29
|
+
enabled: true,
|
|
30
|
+
},
|
|
31
|
+
teacherInstructions: {
|
|
32
|
+
settings: true,
|
|
33
|
+
label: 'Teacher Instructions',
|
|
34
|
+
inputConfiguration: {
|
|
35
|
+
audio: { disabled: false },
|
|
36
|
+
video: { disabled: false },
|
|
37
|
+
image: { disabled: false },
|
|
38
|
+
},
|
|
39
|
+
required: false,
|
|
40
|
+
},
|
|
41
|
+
withRubric: {
|
|
42
|
+
settings: false,
|
|
43
|
+
label: 'Add Rubric',
|
|
44
|
+
},
|
|
45
|
+
mathMlOptions: {
|
|
46
|
+
mmlOutput: false,
|
|
47
|
+
mmlEditing: false,
|
|
48
|
+
},
|
|
49
|
+
language: {
|
|
50
|
+
settings: false,
|
|
51
|
+
label: 'Specify Language',
|
|
52
|
+
enabled: false,
|
|
53
|
+
},
|
|
54
|
+
languageChoices: {
|
|
55
|
+
label: 'Language Choices',
|
|
56
|
+
options: [],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
};
|