@pie-element/multiple-choice 13.3.5-ng.0 → 13.3.6
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 +1972 -0
- package/CHANGELOG.md +2778 -0
- package/LICENSE.md +5 -0
- package/PRINT.md +35 -0
- package/README.md +56 -0
- package/choice.png +0 -0
- package/configure/CHANGELOG.json +1387 -0
- package/configure/CHANGELOG.md +2114 -0
- package/configure/lib/__tests__/root.test.js +279 -0
- package/configure/lib/defaults.js +203 -0
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/index.js +203 -0
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/main.js +484 -0
- package/configure/lib/main.js.map +1 -0
- package/configure/lib/utils.js +18 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +22 -0
- package/controller/CHANGELOG.json +527 -0
- package/controller/CHANGELOG.md +1423 -0
- package/controller/lib/__tests__/index.test.js +561 -0
- package/controller/lib/__tests__/utils.test.js +8 -0
- package/controller/lib/defaults.js +33 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +298 -0
- package/controller/lib/index.js.map +1 -0
- package/controller/lib/utils.js +15 -0
- package/controller/lib/utils.js.map +1 -0
- package/controller/package.json +15 -0
- package/docs/config-schema.json +2993 -0
- package/docs/config-schema.json.md +2217 -0
- package/docs/demo/config.js +8 -0
- package/docs/demo/generate.js +61 -0
- package/docs/demo/index.html +1 -0
- package/docs/demo/pie.manifest.json +11 -0
- package/docs/demo/session.js +7 -0
- package/docs/pie-schema.json +1332 -0
- package/docs/pie-schema.json.md +1015 -0
- package/lib/__tests__/choice-input-test.js +49 -0
- package/lib/__tests__/choice-input.test.js +49 -0
- package/lib/__tests__/index-test.js +206 -0
- package/lib/__tests__/index.test.js +221 -0
- package/lib/__tests__/key-events-test.js +95 -0
- package/lib/__tests__/key-events.test.js +107 -0
- package/lib/__tests__/multiple-choice-test.js +101 -0
- package/lib/__tests__/multiple-choice.test.js +256 -0
- package/lib/__tests__/session-updater-test.js +70 -0
- package/lib/__tests__/session-updater.test.js +70 -0
- package/lib/choice-input.js +383 -0
- package/lib/choice-input.js.map +1 -0
- package/lib/choice.js +192 -0
- package/lib/choice.js.map +1 -0
- package/lib/feedback-tick.js +134 -0
- package/lib/feedback-tick.js.map +1 -0
- package/lib/index.js +405 -0
- package/lib/index.js.map +1 -0
- package/lib/main.js +63 -0
- package/lib/main.js.map +1 -0
- package/lib/multiple-choice.js +399 -0
- package/lib/multiple-choice.js.map +1 -0
- package/lib/print.js +94 -0
- package/lib/print.js.map +1 -0
- package/lib/session-updater.js +37 -0
- package/lib/session-updater.js.map +1 -0
- package/lib/utils.js +14 -0
- package/lib/utils.js.map +1 -0
- package/module/configure.js +1 -0
- package/module/controller.js +3045 -0
- package/module/demo.js +86 -0
- package/module/element.js +1 -0
- package/module/index.html +21 -0
- package/module/manifest.json +14 -0
- package/module/print-demo.js +124 -0
- package/module/print.html +18 -0
- package/module/print.js +1 -17945
- package/package.json +28 -94
- package/configure.js +0 -2
- package/controller.js +0 -1
- package/dist/author/defaults.d.ts +0 -205
- package/dist/author/defaults.js +0 -151
- package/dist/author/index.d.ts +0 -26
- package/dist/author/index.js +0 -119
- package/dist/author/main.d.ts +0 -34
- package/dist/author/main.js +0 -287
- package/dist/author/utils.d.ts +0 -9
- package/dist/author/utils.js +0 -7
- package/dist/browser/Radio-Bbu0BH_k.js +0 -9581
- package/dist/browser/Radio-Bbu0BH_k.js.map +0 -1
- package/dist/browser/author/index.js +0 -37436
- package/dist/browser/author/index.js.map +0 -1
- package/dist/browser/controller/index.js +0 -204
- package/dist/browser/controller/index.js.map +0 -1
- package/dist/browser/delivery/index.js +0 -251
- package/dist/browser/delivery/index.js.map +0 -1
- package/dist/browser/dist-CHbLnyuX.js +0 -111
- package/dist/browser/dist-CHbLnyuX.js.map +0 -1
- package/dist/browser/main-DahQxQZC.js +0 -2451
- package/dist/browser/main-DahQxQZC.js.map +0 -1
- package/dist/browser/multiple-choice.css +0 -2
- package/dist/browser/print/index.js +0 -43
- package/dist/browser/print/index.js.map +0 -1
- package/dist/controller/defaults.d.ts +0 -35
- package/dist/controller/defaults.js +0 -29
- package/dist/controller/index.d.ts +0 -65
- package/dist/controller/index.js +0 -129
- package/dist/controller/utils.d.ts +0 -10
- package/dist/controller/utils.js +0 -8
- package/dist/delivery/choice-input.d.ts +0 -44
- package/dist/delivery/choice-input.js +0 -280
- package/dist/delivery/choice.d.ts +0 -20
- package/dist/delivery/choice.js +0 -105
- package/dist/delivery/feedback-tick.d.ts +0 -20
- package/dist/delivery/feedback-tick.js +0 -104
- package/dist/delivery/index.d.ts +0 -37
- package/dist/delivery/index.js +0 -215
- package/dist/delivery/main.d.ts +0 -31
- package/dist/delivery/main.js +0 -51
- package/dist/delivery/multiple-choice.d.ts +0 -61
- package/dist/delivery/multiple-choice.js +0 -245
- package/dist/delivery/session-updater.d.ts +0 -10
- package/dist/delivery/session-updater.js +0 -9
- package/dist/delivery/utils.d.ts +0 -10
- package/dist/delivery/utils.js +0 -4
- package/dist/index.d.ts +0 -1
- package/dist/index.iife.d.ts +0 -8
- package/dist/index.iife.js +0 -148
- 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/print/index.d.ts +0 -15
- package/dist/print/index.js +0 -43
- package/dist/runtime-support.d.ts +0 -12
- package/dist/runtime-support.js +0 -12
- package/module/print.js.map +0 -1
|
@@ -0,0 +1,203 @@
|
|
|
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 _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _client = require("react-dom/client");
|
|
11
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
12
|
+
var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
|
|
13
|
+
var _main = _interopRequireDefault(require("./main"));
|
|
14
|
+
var _configUi = require("@pie-lib/config-ui");
|
|
15
|
+
var _lodashEs = require("lodash-es");
|
|
16
|
+
var _defaults = _interopRequireDefault(require("./defaults"));
|
|
17
|
+
const log = (0, _debug.default)('multiple-choice:configure');
|
|
18
|
+
const generateFormattedChoices = (choices, choiceCount = 0) => {
|
|
19
|
+
if (!choices || choices.length === 0) {
|
|
20
|
+
let formattedChoices = [];
|
|
21
|
+
for (let i = 0; i < choiceCount; i++) {
|
|
22
|
+
formattedChoices.push({
|
|
23
|
+
value: `${i}`,
|
|
24
|
+
label: '',
|
|
25
|
+
feedback: {
|
|
26
|
+
type: 'none',
|
|
27
|
+
value: ''
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return formattedChoices;
|
|
32
|
+
}
|
|
33
|
+
return choices;
|
|
34
|
+
};
|
|
35
|
+
const prepareCustomizationObject = (config, model) => {
|
|
36
|
+
const configuration = (0, _lodashEs.defaults)(config, _defaults.default.configuration);
|
|
37
|
+
return {
|
|
38
|
+
configuration,
|
|
39
|
+
model: {
|
|
40
|
+
...model,
|
|
41
|
+
choices: generateFormattedChoices(model && model.choices || [], configuration && configuration.answerChoiceCount)
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
class MultipleChoice extends HTMLElement {
|
|
46
|
+
constructor() {
|
|
47
|
+
super();
|
|
48
|
+
this._root = null;
|
|
49
|
+
this._reactContainer = null;
|
|
50
|
+
this._model = MultipleChoice.createDefaultModel();
|
|
51
|
+
this._configuration = _defaults.default.configuration;
|
|
52
|
+
this.onModelChanged = this.onModelChanged.bind(this);
|
|
53
|
+
this.onConfigurationChanged = this.onConfigurationChanged.bind(this);
|
|
54
|
+
}
|
|
55
|
+
set model(s) {
|
|
56
|
+
this._model = MultipleChoice.createDefaultModel(s);
|
|
57
|
+
this._render();
|
|
58
|
+
}
|
|
59
|
+
set configuration(c) {
|
|
60
|
+
const info = prepareCustomizationObject(c, this._model);
|
|
61
|
+
this.onModelChanged(info.model);
|
|
62
|
+
const newConfiguration = {
|
|
63
|
+
..._defaults.default.configuration,
|
|
64
|
+
...info.configuration
|
|
65
|
+
};
|
|
66
|
+
this._configuration = newConfiguration;
|
|
67
|
+
|
|
68
|
+
// if language:enabled is true, then the corresponding default item model should include a language value;
|
|
69
|
+
// if it is false, then the language field should be omitted from the item model.
|
|
70
|
+
// if a default item model includes a language value (e.g., en_US) and the corresponding authoring view settings have language:settings = true,
|
|
71
|
+
// then (a) language:enabled should also be true, and (b) that default language value should be represented in languageChoices[] (as a key).
|
|
72
|
+
if (newConfiguration?.language?.enabled) {
|
|
73
|
+
if (newConfiguration?.languageChoices?.options?.length) {
|
|
74
|
+
this._model.language = newConfiguration?.languageChoices.options[0].value;
|
|
75
|
+
}
|
|
76
|
+
} else if (newConfiguration.language.settings && this._model.language) {
|
|
77
|
+
this._configuration.language.enabled = true;
|
|
78
|
+
if (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) {
|
|
79
|
+
this._configuration.languageChoices.options = [];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// check if the language is already included in the languageChoices.options array
|
|
83
|
+
// and if not, then add it.
|
|
84
|
+
if (!this._configuration.languageChoices.options.find(option => option.value === this._model.language)) {
|
|
85
|
+
this._configuration.languageChoices.options.push({
|
|
86
|
+
value: this._model.language,
|
|
87
|
+
label: this._model.language
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
delete this._model.language;
|
|
92
|
+
}
|
|
93
|
+
this._render();
|
|
94
|
+
}
|
|
95
|
+
set disableSidePanel(s) {
|
|
96
|
+
this._disableSidePanel = s;
|
|
97
|
+
this._render();
|
|
98
|
+
}
|
|
99
|
+
dispatchModelUpdated(reset) {
|
|
100
|
+
const resetValue = !!reset;
|
|
101
|
+
this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model, resetValue));
|
|
102
|
+
}
|
|
103
|
+
onModelChanged(m, reset) {
|
|
104
|
+
this._model = {
|
|
105
|
+
...this._model,
|
|
106
|
+
...m
|
|
107
|
+
};
|
|
108
|
+
this._render();
|
|
109
|
+
this.dispatchModelUpdated(reset);
|
|
110
|
+
}
|
|
111
|
+
onConfigurationChanged(c) {
|
|
112
|
+
this._configuration = prepareCustomizationObject(c, this._model).configuration;
|
|
113
|
+
if (this._model) {
|
|
114
|
+
this.onModelChanged(this._model);
|
|
115
|
+
}
|
|
116
|
+
this._render();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** @param {done, progress, file} handler */
|
|
120
|
+
insertImage(handler) {
|
|
121
|
+
this.dispatchEvent(new _pieConfigureEvents.InsertImageEvent(handler));
|
|
122
|
+
}
|
|
123
|
+
onDeleteImage(src, done) {
|
|
124
|
+
this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
|
|
125
|
+
}
|
|
126
|
+
insertSound(handler) {
|
|
127
|
+
this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
|
|
128
|
+
}
|
|
129
|
+
onDeleteSound(src, done) {
|
|
130
|
+
this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
|
|
131
|
+
}
|
|
132
|
+
_render() {
|
|
133
|
+
log('_render - Starting render');
|
|
134
|
+
log('_render - Model:', this._model ? 'present' : 'missing');
|
|
135
|
+
log('_render - Configuration:', this._configuration ? 'present' : 'missing');
|
|
136
|
+
log('_render - Root exists:', !!this._root);
|
|
137
|
+
try {
|
|
138
|
+
let element = /*#__PURE__*/_react.default.createElement(_main.default, {
|
|
139
|
+
model: this._model,
|
|
140
|
+
configuration: this._configuration,
|
|
141
|
+
onModelChanged: this.onModelChanged,
|
|
142
|
+
onConfigurationChanged: this.onConfigurationChanged,
|
|
143
|
+
disableSidePanel: this._disableSidePanel,
|
|
144
|
+
imageSupport: {
|
|
145
|
+
add: this.insertImage.bind(this),
|
|
146
|
+
delete: this.onDeleteImage.bind(this)
|
|
147
|
+
},
|
|
148
|
+
uploadSoundSupport: {
|
|
149
|
+
add: this.insertSound.bind(this),
|
|
150
|
+
delete: this.onDeleteSound.bind(this)
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
if (!this._root) {
|
|
154
|
+
log('_render - Creating React container');
|
|
155
|
+
|
|
156
|
+
// Create a container div for React to render into
|
|
157
|
+
this._reactContainer = document.createElement('div');
|
|
158
|
+
this._reactContainer.className = 'pie-configure-wrapper';
|
|
159
|
+
this.appendChild(this._reactContainer);
|
|
160
|
+
log('_render - Creating new React root');
|
|
161
|
+
this._root = (0, _client.createRoot)(this._reactContainer);
|
|
162
|
+
log('_render - React root created successfully');
|
|
163
|
+
}
|
|
164
|
+
log('_render - Calling root.render()');
|
|
165
|
+
this._root.render(element);
|
|
166
|
+
log('_render - Render completed successfully');
|
|
167
|
+
} catch (error) {
|
|
168
|
+
console.error('❌ [multiple-choice-configure] Render error:', error);
|
|
169
|
+
console.error('Error stack:', error.stack);
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
connectedCallback() {
|
|
174
|
+
log('connectedCallback - Component connected to DOM');
|
|
175
|
+
log('connectedCallback - Model:', this._model ? 'present' : 'missing');
|
|
176
|
+
log('connectedCallback - Configuration:', this._configuration ? 'present' : 'missing');
|
|
177
|
+
this._render();
|
|
178
|
+
}
|
|
179
|
+
disconnectedCallback() {
|
|
180
|
+
log('disconnectedCallback - Component disconnected from DOM');
|
|
181
|
+
if (this._root) {
|
|
182
|
+
log('disconnectedCallback - Unmounting React root');
|
|
183
|
+
this._root.unmount();
|
|
184
|
+
this._root = null;
|
|
185
|
+
}
|
|
186
|
+
if (this._reactContainer) {
|
|
187
|
+
this._reactContainer = null;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.default = MultipleChoice;
|
|
192
|
+
(0, _defineProperty2.default)(MultipleChoice, "createDefaultModel", (model = {}) => {
|
|
193
|
+
const normalizedModel = _configUi.choiceUtils.normalizeChoices({
|
|
194
|
+
..._defaults.default.model,
|
|
195
|
+
...model,
|
|
196
|
+
choices: generateFormattedChoices(model && model.choices || [])
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// This is used for offering support for old models which have the property "verticalMode"
|
|
200
|
+
normalizedModel.choicesLayout = model.choicesLayout || model.verticalMode === false && 'horizontal' || _defaults.default.model.choicesLayout;
|
|
201
|
+
return normalizedModel;
|
|
202
|
+
});
|
|
203
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_debug","_pieConfigureEvents","_main","_configUi","_lodashEs","_defaults","log","debug","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","defaults","sensibleDefaults","answerChoiceCount","MultipleChoice","HTMLElement","constructor","_root","_reactContainer","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","newConfiguration","language","enabled","languageChoices","options","settings","find","option","disableSidePanel","_disableSidePanel","dispatchModelUpdated","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","insertImage","handler","InsertImageEvent","onDeleteImage","src","done","DeleteImageEvent","insertSound","InsertSoundEvent","onDeleteSound","DeleteSoundEvent","element","React","createElement","Main","imageSupport","add","delete","uploadSoundSupport","document","className","appendChild","createRoot","render","error","console","stack","connectedCallback","disconnectedCallback","unmount","exports","default","_defineProperty2","normalizedModel","utils","normalizeChoices","choicesLayout","verticalMode"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport debug from 'debug';\nimport {\n DeleteImageEvent,\n InsertImageEvent,\n ModelUpdatedEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport { defaults } from 'lodash-es';\n\nimport sensibleDefaults from './defaults';\n\nconst log = debug('multiple-choice:configure');\n\nconst generateFormattedChoices = (choices, choiceCount = 0) => {\n if (!choices || choices.length === 0) {\n let formattedChoices = [];\n\n for (let i = 0; i < choiceCount; i++) {\n formattedChoices.push({\n value: `${i}`,\n label: '',\n feedback: {\n type: 'none',\n value: '',\n },\n });\n }\n\n return formattedChoices;\n }\n\n return choices;\n};\n\nconst prepareCustomizationObject = (config, model) => {\n const configuration = defaults(config, sensibleDefaults.configuration);\n\n return {\n configuration,\n model: {\n ...model,\n choices: generateFormattedChoices(\n (model && model.choices) || [],\n configuration && configuration.answerChoiceCount,\n ),\n },\n };\n};\n\nexport default class MultipleChoice extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || []),\n });\n\n // This is used for offering support for old models which have the property \"verticalMode\"\n normalizedModel.choicesLayout =\n model.choicesLayout || (model.verticalMode === false && 'horizontal') || sensibleDefaults.model.choicesLayout;\n\n return normalizedModel;\n };\n\n constructor() {\n super();\n this._root = null;\n this._reactContainer = null;\n this._model = MultipleChoice.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MultipleChoice.createDefaultModel(s);\n\n this._render();\n }\n\n set configuration(c) {\n const info = prepareCustomizationObject(c, this._model);\n\n this.onModelChanged(info.model);\n\n const newConfiguration = {\n ...sensibleDefaults.configuration,\n ...info.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 = {\n ...this._model,\n ...m,\n };\n this._render();\n\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = prepareCustomizationObject(c, this._model).configuration;\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\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 - Starting render');\n log('_render - Model:', this._model ? 'present' : 'missing');\n log('_render - Configuration:', this._configuration ? 'present' : 'missing');\n log('_render - Root exists:', !!this._root);\n\n try {\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 log('_render - Creating React container');\n\n // Create a container div for React to render into\n this._reactContainer = document.createElement('div');\n this._reactContainer.className = 'pie-configure-wrapper';\n this.appendChild(this._reactContainer);\n\n log('_render - Creating new React root');\n this._root = createRoot(this._reactContainer);\n log('_render - React root created successfully');\n }\n\n log('_render - Calling root.render()');\n this._root.render(element);\n log('_render - Render completed successfully');\n } catch (error) {\n console.error('❌ [multiple-choice-configure] Render error:', error);\n console.error('Error stack:', error.stack);\n throw error;\n }\n }\n\n connectedCallback() {\n log('connectedCallback - Component connected to DOM');\n log('connectedCallback - Model:', this._model ? 'present' : 'missing');\n log('connectedCallback - Configuration:', this._configuration ? 'present' : 'missing');\n this._render();\n }\n\n disconnectedCallback() {\n log('disconnectedCallback - Component disconnected from DOM');\n if (this._root) {\n log('disconnectedCallback - Unmounting React root');\n this._root.unmount();\n this._root = null;\n }\n if (this._reactContainer) {\n this._reactContainer = null;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|