@pie-element/drag-in-the-blank 10.2.2-beta.6 → 10.2.2-beta.8

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.
@@ -0,0 +1,169 @@
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
+ choices: [],
10
+ choicesPosition: 'below',
11
+ correctResponse: {},
12
+ disabled: false,
13
+ duplicates: true,
14
+ markup: '',
15
+ mode: 'gather',
16
+ prompt: '',
17
+ promptEnabled: true,
18
+ rationale: '',
19
+ rationaleEnabled: true,
20
+ studentInstructionsEnabled: true,
21
+ teacherInstructions: '',
22
+ teacherInstructionsEnabled: true,
23
+ toolbarEditorPosition: 'bottom'
24
+ },
25
+ configuration: {
26
+ baseInputConfiguration: {
27
+ audio: {
28
+ disabled: false
29
+ },
30
+ video: {
31
+ disabled: false
32
+ },
33
+ image: {
34
+ disabled: false
35
+ },
36
+ h3: {
37
+ disabled: true
38
+ },
39
+ blockquote: {
40
+ disabled: true
41
+ },
42
+ textAlign: {
43
+ disabled: true
44
+ },
45
+ showParagraphs: {
46
+ disabled: false
47
+ },
48
+ separateParagraphs: {
49
+ disabled: true
50
+ }
51
+ },
52
+ spellCheck: {
53
+ label: 'Spellcheck',
54
+ settings: false,
55
+ enabled: true
56
+ },
57
+ choicesPosition: {
58
+ settings: true,
59
+ label: 'Choices Position'
60
+ },
61
+ prompt: {
62
+ settings: true,
63
+ label: 'Prompt',
64
+ inputConfiguration: {
65
+ audio: {
66
+ disabled: false
67
+ },
68
+ video: {
69
+ disabled: false
70
+ },
71
+ image: {
72
+ disabled: false
73
+ }
74
+ },
75
+ required: false
76
+ },
77
+ addChoice: {
78
+ inputConfiguration: {
79
+ audio: {
80
+ disabled: true
81
+ },
82
+ video: {
83
+ disabled: true
84
+ },
85
+ image: {
86
+ disabled: false
87
+ }
88
+ }
89
+ },
90
+ duplicates: {
91
+ settings: true,
92
+ label: 'Duplicates'
93
+ },
94
+ lockChoiceOrder: {
95
+ settings: true,
96
+ label: 'Lock Choice Order'
97
+ },
98
+ partialScoring: {
99
+ settings: false,
100
+ label: 'Allow Partial Scoring'
101
+ },
102
+ rationale: {
103
+ settings: true,
104
+ label: 'Rationale',
105
+ inputConfiguration: {
106
+ audio: {
107
+ disabled: false
108
+ },
109
+ video: {
110
+ disabled: false
111
+ },
112
+ image: {
113
+ disabled: false
114
+ }
115
+ },
116
+ required: false
117
+ },
118
+ settingsPanelDisabled: false,
119
+ teacherInstructions: {
120
+ settings: true,
121
+ label: 'Teacher Instructions',
122
+ inputConfiguration: {
123
+ audio: {
124
+ disabled: false
125
+ },
126
+ video: {
127
+ disabled: false
128
+ },
129
+ image: {
130
+ disabled: false
131
+ }
132
+ },
133
+ required: false
134
+ },
135
+ minChoices: 2,
136
+ maxResponseAreas: 10,
137
+ maxImageWidth: {
138
+ teacherInstructions: 300,
139
+ prompt: 300,
140
+ rationale: 300,
141
+ choice: 300
142
+ },
143
+ maxImageHeight: {
144
+ teacherInstructions: 300,
145
+ prompt: 300,
146
+ rationale: 300,
147
+ choice: 300
148
+ },
149
+ withRubric: {
150
+ settings: false,
151
+ label: 'Add Rubric'
152
+ },
153
+ mathMlOptions: {
154
+ mmlOutput: false,
155
+ mmlEditing: false
156
+ },
157
+ language: {
158
+ settings: false,
159
+ label: 'Specify Language',
160
+ enabled: false
161
+ },
162
+ languageChoices: {
163
+ label: 'Language Choices',
164
+ options: []
165
+ },
166
+ maxLength: 200
167
+ }
168
+ };
169
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","names":["model","choices","choicesPosition","correctResponse","disabled","duplicates","markup","mode","prompt","promptEnabled","rationale","rationaleEnabled","studentInstructionsEnabled","teacherInstructions","teacherInstructionsEnabled","toolbarEditorPosition","configuration","baseInputConfiguration","audio","video","image","h3","blockquote","textAlign","showParagraphs","separateParagraphs","spellCheck","label","settings","enabled","inputConfiguration","required","addChoice","lockChoiceOrder","partialScoring","settingsPanelDisabled","minChoices","maxResponseAreas","maxImageWidth","choice","maxImageHeight","withRubric","mathMlOptions","mmlOutput","mmlEditing","language","languageChoices","options","maxLength"],"sources":["../src/defaults.js"],"sourcesContent":["export default {\n model: {\n choices: [],\n choicesPosition: 'below',\n correctResponse: {},\n disabled: false,\n duplicates: true,\n markup: '',\n mode: 'gather',\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n h3: { disabled: true },\n blockquote: { disabled: true },\n textAlign: { disabled: true },\n showParagraphs: { disabled: false },\n separateParagraphs: { disabled: true },\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n choicesPosition: {\n settings: true,\n label: 'Choices Position',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n addChoice: {\n inputConfiguration: {\n audio: { disabled: true },\n video: { disabled: true },\n image: { disabled: false },\n },\n },\n duplicates: {\n settings: true,\n label: 'Duplicates',\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n settingsPanelDisabled: false,\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 minChoices: 2,\n maxResponseAreas: 10,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n choice: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n choice: 300,\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 maxLength: 200\n },\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,148 @@
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 _mathRendering = require("@pie-lib/math-rendering");
13
+ var _main = _interopRequireDefault(require("./main"));
14
+ var _debug = _interopRequireDefault(require("debug"));
15
+ var _lodashEs = require("lodash-es");
16
+ var _defaults = _interopRequireDefault(require("./defaults"));
17
+ var _markupUtils = require("./markupUtils");
18
+ const log = (0, _debug.default)('multiple-choice:configure');
19
+ class DragInTheBlank extends HTMLElement {
20
+ constructor() {
21
+ super();
22
+ this._root = null;
23
+ this._model = DragInTheBlank.prepareModel();
24
+ this._configuration = _defaults.default.configuration;
25
+ this.onModelChanged = this.onModelChanged.bind(this);
26
+ this.onConfigurationChanged = this.onConfigurationChanged.bind(this);
27
+ }
28
+ set model(m) {
29
+ const formModel = {
30
+ ...m,
31
+ markup: `<div>${m.markup || _defaults.default.model.markup}</div>`
32
+ };
33
+ this._model = DragInTheBlank.prepareModel(formModel);
34
+ this._render();
35
+ }
36
+ set configuration(c) {
37
+ const newConfiguration = (0, _lodashEs.defaults)(c, _defaults.default.configuration);
38
+ this._configuration = newConfiguration;
39
+
40
+ // if language:enabled is true, then the corresponding default item model should include a language value;
41
+ // if it is false, then the language field should be omitted from the item model.
42
+ // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,
43
+ // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).
44
+ if (newConfiguration?.language?.enabled) {
45
+ if (newConfiguration?.languageChoices?.options?.length) {
46
+ this._model.language = newConfiguration?.languageChoices.options[0].value;
47
+ }
48
+ } else if (newConfiguration.language.settings && this._model.language) {
49
+ this._configuration.language.enabled = true;
50
+ if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {
51
+ this._configuration.languageChoices.options = [];
52
+ }
53
+
54
+ // check if the language is already included in the languageChoices.options array
55
+ // and if not, then add it.
56
+ if (!this._configuration.languageChoices.options.find(option => option.value === this._model.language)) {
57
+ this._configuration.languageChoices.options.push({
58
+ value: this._model.language,
59
+ label: this._model.language
60
+ });
61
+ }
62
+ } else {
63
+ delete this._model.language;
64
+ }
65
+ this._render();
66
+ }
67
+ set disableSidePanel(s) {
68
+ this._disableSidePanel = s;
69
+ this._render();
70
+ }
71
+ dispatchModelUpdated(reset) {
72
+ const resetValue = !!reset;
73
+ this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model, resetValue));
74
+ }
75
+ onModelChanged(m, reset) {
76
+ this._model = DragInTheBlank.prepareModel(m);
77
+ this._render();
78
+ this.dispatchModelUpdated(reset);
79
+ }
80
+ onConfigurationChanged(c) {
81
+ this._configuration = c;
82
+ this._render();
83
+ }
84
+
85
+ /** @param {done, progress, file} handler */
86
+ insertImage(handler) {
87
+ this.dispatchEvent(new _pieConfigureEvents.InsertImageEvent(handler));
88
+ }
89
+ onDeleteImage(src, done) {
90
+ this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
91
+ }
92
+ insertSound(handler) {
93
+ this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
94
+ }
95
+ onDeleteSound(src, done) {
96
+ this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
97
+ }
98
+ _render() {
99
+ log('_render');
100
+ let element = /*#__PURE__*/_react.default.createElement(_main.default, {
101
+ model: this._model,
102
+ configuration: this._configuration,
103
+ onModelChanged: this.onModelChanged,
104
+ onConfigurationChanged: this.onConfigurationChanged,
105
+ disableSidePanel: this._disableSidePanel,
106
+ imageSupport: {
107
+ add: this.insertImage.bind(this),
108
+ delete: this.onDeleteImage.bind(this)
109
+ },
110
+ uploadSoundSupport: {
111
+ add: this.insertSound.bind(this),
112
+ delete: this.onDeleteSound.bind(this)
113
+ }
114
+ });
115
+ if (!this._root) {
116
+ this._root = (0, _client.createRoot)(this);
117
+ }
118
+ this._root.render(element);
119
+ setTimeout(() => {
120
+ (0, _mathRendering.renderMath)(this);
121
+ }, 0);
122
+ }
123
+ connectedCallback() {
124
+ this._render();
125
+ }
126
+ disconnectedCallback() {
127
+ if (this._root) {
128
+ this._root.unmount();
129
+ this._root = null;
130
+ }
131
+ }
132
+ }
133
+ exports.default = DragInTheBlank;
134
+ (0, _defineProperty2.default)(DragInTheBlank, "prepareModel", (model = {}) => {
135
+ const joinedObj = {
136
+ ..._defaults.default.model,
137
+ ...model
138
+ };
139
+ const slateMarkup = model.slateMarkup || (0, _markupUtils.createSlateMarkup)(joinedObj.markup, joinedObj.choices, joinedObj.correctResponse);
140
+ const processedMarkup = (0, _markupUtils.processMarkup)(slateMarkup);
141
+ return {
142
+ ...joinedObj,
143
+ slateMarkup,
144
+ markup: processedMarkup.markup,
145
+ correctResponse: processedMarkup.correctResponse
146
+ };
147
+ });
148
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_pieConfigureEvents","require","_react","_interopRequireDefault","_client","_mathRendering","_main","_debug","_lodashEs","_defaults","_markupUtils","log","debug","DragInTheBlank","HTMLElement","constructor","_root","_model","prepareModel","_configuration","sensibleDefaults","configuration","onModelChanged","bind","onConfigurationChanged","model","m","formModel","markup","_render","c","newConfiguration","defaults","language","enabled","languageChoices","options","length","value","settings","find","option","push","label","disableSidePanel","s","_disableSidePanel","dispatchModelUpdated","reset","resetValue","dispatchEvent","ModelUpdatedEvent","insertImage","handler","InsertImageEvent","onDeleteImage","src","done","DeleteImageEvent","insertSound","InsertSoundEvent","onDeleteSound","DeleteSoundEvent","element","React","createElement","Main","imageSupport","add","delete","uploadSoundSupport","createRoot","render","setTimeout","renderMath","connectedCallback","disconnectedCallback","unmount","exports","default","_defineProperty2","joinedObj","slateMarkup","createSlateMarkup","choices","correctResponse","processedMarkup","processMarkup"],"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 { renderMath } from '@pie-lib/math-rendering';\nimport Main from './main';\nimport debug from 'debug';\nimport { defaults } from 'lodash-es';\n\nimport sensibleDefaults from './defaults';\nimport { processMarkup, createSlateMarkup } from './markupUtils';\n\nconst log = debug('multiple-choice:configure');\n\nexport default class DragInTheBlank extends HTMLElement {\n static prepareModel = (model = {}) => {\n const joinedObj = {\n ...sensibleDefaults.model,\n ...model,\n };\n const slateMarkup =\n model.slateMarkup || createSlateMarkup(joinedObj.markup, joinedObj.choices, joinedObj.correctResponse);\n const processedMarkup = processMarkup(slateMarkup);\n\n return {\n ...joinedObj,\n slateMarkup,\n markup: processedMarkup.markup,\n correctResponse: processedMarkup.correctResponse,\n };\n };\n\n constructor() {\n super();\n this._root = null;\n this._model = DragInTheBlank.prepareModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(m) {\n const formModel = {\n ...m,\n markup: `<div>${m.markup || sensibleDefaults.model.markup}</div>`,\n };\n\n this._model = DragInTheBlank.prepareModel(formModel);\n this._render();\n }\n\n set configuration(c) {\n const newConfiguration = defaults(c, sensibleDefaults.configuration);\n\n this._configuration = newConfiguration;\n\n // if language:enabled is true, then the corresponding default item model should include a language value;\n // if it is false, then the language field should be omitted from the item model.\n // if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,\n // then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).\n if (newConfiguration?.language?.enabled) {\n if (newConfiguration?.languageChoices?.options?.length) {\n this._model.language = newConfiguration?.languageChoices.options[0].value;\n }\n } else if (newConfiguration.language.settings && this._model.language) {\n this._configuration.language.enabled = true;\n\n if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {\n this._configuration.languageChoices.options = [];\n }\n\n // check if the language is already included in the languageChoices.options array\n // and if not, then add it.\n if (!this._configuration.languageChoices.options.find(option => option.value === this._model.language)) {\n this._configuration.languageChoices.options.push({\n value: this._model.language,\n label: this._model.language,\n });\n }\n } else {\n delete this._model.language;\n }\n\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 = DragInTheBlank.prepareModel(m);\n this._render();\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = c;\n this._render();\n }\n\n /** @param {done, progress, file} handler */\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(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\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 setTimeout(() => {\n renderMath(this);\n }, 0);\n }\n\n connectedCallback() {\n this._render();\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n this._root = null;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}