@pie-element/ebsr 7.0.25 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -494,6 +494,68 @@
494
494
  "title": "label"
495
495
  }
496
496
  }
497
+ },
498
+ "minAnswerChoices": {
499
+ "description": "Minimum number of answer choices",
500
+ "type": "number",
501
+ "title": "minAnswerChoices"
502
+ },
503
+ "maxAnswerChoices": {
504
+ "description": "Maximum number of answer choices",
505
+ "type": "number",
506
+ "title": "maxAnswerChoices"
507
+ },
508
+ "maxImageWidth": {
509
+ "title": "ConfigureMaxImageDimensionsProp",
510
+ "type": "object",
511
+ "properties": {
512
+ "teacherInstructions": {
513
+ "description": "Indicates the max dimension for images in teacher instructions",
514
+ "type": "number",
515
+ "title": "teacherInstructions"
516
+ },
517
+ "prompt": {
518
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
519
+ "type": "number",
520
+ "title": "prompt"
521
+ },
522
+ "rationale": {
523
+ "description": "Indicates the max dimension for images in rationale",
524
+ "type": "number",
525
+ "title": "rationale"
526
+ },
527
+ "choices": {
528
+ "description": "Indicates the max dimension for images in choices",
529
+ "type": "number",
530
+ "title": "choices"
531
+ }
532
+ }
533
+ },
534
+ "maxImageHeight": {
535
+ "title": "ConfigureMaxImageDimensionsProp",
536
+ "type": "object",
537
+ "properties": {
538
+ "teacherInstructions": {
539
+ "description": "Indicates the max dimension for images in teacher instructions",
540
+ "type": "number",
541
+ "title": "teacherInstructions"
542
+ },
543
+ "prompt": {
544
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
545
+ "type": "number",
546
+ "title": "prompt"
547
+ },
548
+ "rationale": {
549
+ "description": "Indicates the max dimension for images in rationale",
550
+ "type": "number",
551
+ "title": "rationale"
552
+ },
553
+ "choices": {
554
+ "description": "Indicates the max dimension for images in choices",
555
+ "type": "number",
556
+ "title": "choices"
557
+ }
558
+ }
497
559
  }
498
560
  }
499
561
  },
@@ -513,6 +575,32 @@
513
575
  }
514
576
  }
515
577
  },
578
+ "ConfigureMaxImageDimensionsProp": {
579
+ "title": "ConfigureMaxImageDimensionsProp",
580
+ "type": "object",
581
+ "properties": {
582
+ "teacherInstructions": {
583
+ "description": "Indicates the max dimension for images in teacher instructions",
584
+ "type": "number",
585
+ "title": "teacherInstructions"
586
+ },
587
+ "prompt": {
588
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified",
589
+ "type": "number",
590
+ "title": "prompt"
591
+ },
592
+ "rationale": {
593
+ "description": "Indicates the max dimension for images in rationale",
594
+ "type": "number",
595
+ "title": "rationale"
596
+ },
597
+ "choices": {
598
+ "description": "Indicates the max dimension for images in choices",
599
+ "type": "number",
600
+ "title": "choices"
601
+ }
602
+ }
603
+ },
516
604
  "Part": {
517
605
  "title": "Part",
518
606
  "type": "object",
@@ -370,6 +370,54 @@ Indicates if the item has to be displayed in the Settings Panel
370
370
 
371
371
  Indicates the label for the item that has to be displayed in the Settings Panel
372
372
 
373
+ ### `minAnswerChoices` (number)
374
+
375
+ Minimum number of answer choices
376
+
377
+ ### `maxAnswerChoices` (number)
378
+
379
+ Maximum number of answer choices
380
+
381
+ ### `maxImageWidth` (object)
382
+
383
+ Properties of the `maxImageWidth` object:
384
+
385
+ #### `teacherInstructions` (number)
386
+
387
+ Indicates the max dimension for images in teacher instructions
388
+
389
+ #### `prompt` (number)
390
+
391
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
392
+
393
+ #### `rationale` (number)
394
+
395
+ Indicates the max dimension for images in rationale
396
+
397
+ #### `choices` (number)
398
+
399
+ Indicates the max dimension for images in choices
400
+
401
+ ### `maxImageHeight` (object)
402
+
403
+ Properties of the `maxImageHeight` object:
404
+
405
+ #### `teacherInstructions` (number)
406
+
407
+ Indicates the max dimension for images in teacher instructions
408
+
409
+ #### `prompt` (number)
410
+
411
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
412
+
413
+ #### `rationale` (number)
414
+
415
+ Indicates the max dimension for images in rationale
416
+
417
+ #### `choices` (number)
418
+
419
+ Indicates the max dimension for images in choices
420
+
373
421
  ## `ConfigureProp` (object)
374
422
 
375
423
  Properties of the `ConfigureProp` object:
@@ -382,6 +430,26 @@ Indicates if the item has to be displayed in the Settings Panel
382
430
 
383
431
  Indicates the label for the item that has to be displayed in the Settings Panel
384
432
 
433
+ ## `ConfigureMaxImageDimensionsProp` (object)
434
+
435
+ Properties of the `ConfigureMaxImageDimensionsProp` object:
436
+
437
+ ### `teacherInstructions` (number)
438
+
439
+ Indicates the max dimension for images in teacher instructions
440
+
441
+ ### `prompt` (number)
442
+
443
+ Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified
444
+
445
+ ### `rationale` (number)
446
+
447
+ Indicates the max dimension for images in rationale
448
+
449
+ ### `choices` (number)
450
+
451
+ Indicates the max dimension for images in choices
452
+
385
453
  ## `Part` (object)
386
454
 
387
455
  Properties of the `Part` object:
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@pie-element/ebsr",
3
- "version": "7.0.25",
3
+ "version": "8.1.0",
4
4
  "description": "",
5
5
  "repository": "pie-framework/pie-elements",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
9
  "dependencies": {
10
- "@pie-element/multiple-choice": "^6.3.3",
10
+ "@pie-element/multiple-choice": "^7.1.0",
11
11
  "@pie-framework/pie-player-events": "^0.1.0",
12
12
  "classnames": "^2.2.5",
13
13
  "debug": "^4.1.1",
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "author": "pie framework developers",
17
17
  "license": "ISC",
18
- "gitHead": "3f3d6edc68890098821978ebd5a8b90da31ab222",
18
+ "gitHead": "9b55e36b358084c7a96a08bad969f4856d6802da",
19
19
  "scripts": {
20
20
  "postpublish": "../../scripts/postpublish"
21
21
  },
@@ -1,477 +0,0 @@
1
- import {_dll_react, _dll_prop_types, _dll_material_ui__core_styles, _dll_lodash, _dll_react_dom} from "../../../@pie-lib/shared-module@^1.4.19/module/index.js";
2
- import MultipleChoiceConfigure from '@pie-element/multiple-choice/configure/lib';
3
- import {_dll_pie_lib__config_ui} from "../../../@pie-lib/config-module@^1.3.1/module/index.js";
4
- var lib = {};
5
- Object.defineProperty(lib, "__esModule", {
6
- value: true
7
- });
8
- class ModelUpdatedEvent extends CustomEvent {
9
- constructor(update, reset = false) {
10
- super(ModelUpdatedEvent.TYPE, {
11
- bubbles: true,
12
- detail: {
13
- update,
14
- reset
15
- }
16
- });
17
- this.update = update;
18
- this.reset = reset;
19
- }
20
- }
21
- ModelUpdatedEvent.TYPE = 'model.updated';
22
- var ModelUpdatedEvent_1 = lib.ModelUpdatedEvent = ModelUpdatedEvent;
23
- class DeleteImageEvent extends CustomEvent {
24
- constructor(src, done) {
25
- super(DeleteImageEvent.TYPE, {
26
- bubbles: true,
27
- detail: {
28
- src,
29
- done
30
- }
31
- });
32
- this.src = src;
33
- this.done = done;
34
- }
35
- }
36
- DeleteImageEvent.TYPE = 'delete.image';
37
- lib.DeleteImageEvent = DeleteImageEvent;
38
- class InsertImageEvent extends CustomEvent {
39
- constructor(handler) {
40
- super(InsertImageEvent.TYPE, {
41
- bubbles: true,
42
- detail: handler
43
- });
44
- this.handler = handler;
45
- }
46
- }
47
- InsertImageEvent.TYPE = 'insert.image';
48
- lib.InsertImageEvent = InsertImageEvent;
49
- const React$1 = _dll_react;
50
- const PropTypes = _dll_prop_types;
51
- const {withStyles: withStyles} = _dll_material_ui__core_styles;
52
- const {settings: settings} = _dll_pie_lib__config_ui;
53
- const {layout: layout} = _dll_pie_lib__config_ui;
54
- const _jsxFileName = "/home/circleci/repo/packages/ebsr/configure/src/main.jsx";
55
- const {Panel, toggle, radio, dropdown} = settings;
56
- const styles = theme => ({
57
- design: {
58
- paddingTop: theme.spacing.unit * 3
59
- },
60
- part: {
61
- display: 'flex',
62
- flexDirection: 'column',
63
- padding: '16px 0 32px'
64
- }
65
- });
66
- class Main extends React$1.Component {
67
- constructor(...args) {
68
- super(...args);
69
- Main.prototype.__init.call(this);
70
- Main.prototype.__init2.call(this);
71
- }
72
- static __initStatic() {
73
- this.propTypes = {
74
- classes: PropTypes.object,
75
- configuration: PropTypes.object,
76
- model: PropTypes.object,
77
- onModelChanged: PropTypes.func,
78
- onConfigurationChanged: PropTypes.func
79
- };
80
- }
81
- __init() {
82
- this.removeExtraChoices = choices => {
83
- let correctFound = false;
84
- return (choices || []).map(choice => {
85
- if (correctFound) {
86
- choice.correct = false;
87
- return choice;
88
- }
89
- if (choice.correct) {
90
- correctFound = true;
91
- }
92
- return choice;
93
- });
94
- };
95
- }
96
- __init2() {
97
- this.onModelChanged = (model, key) => {
98
- const {onModelChanged} = this.props;
99
- if (key === 'partA.choiceMode' && model.partA.choiceMode === 'radio') {
100
- model.partA.choices = this.removeExtraChoices(model.partA.choices);
101
- return onModelChanged(model, true);
102
- }
103
- if (key === 'partB.choiceMode' && model.partB.choiceMode === 'radio') {
104
- model.partB.choices = this.removeExtraChoices(model.partB.choices);
105
- return onModelChanged(model, true);
106
- }
107
- return onModelChanged(model);
108
- };
109
- }
110
- render() {
111
- const {classes, model, configuration, onConfigurationChanged} = this.props;
112
- const {partLabelType, partA: modelPartA, partB: modelPartB} = model;
113
- const {partA, partB, partialScoring, scoringType, ...generalConfiguration} = configuration;
114
- const {feedback: feedbackA = {}, choiceMode: choiceModeA = {}, choicePrefix: choicePrefixA = {}, lockChoiceOrder: lockChoiceOrderA = {}, prompt: promptA = {}, teacherInstructions: teacherInstructionsA = {}, studentInstructions: studentInstructionsA = {}, choicesLayout: choicesLayoutA = {}, gridColumns: gridColumnsA = {}, rationale: rationaleA = {}, spellCheck: spellCheckA = {}} = partA || ({});
115
- const {feedback: feedbackB = {}, choiceMode: choiceModeB = {}, choicePrefix: choicePrefixB = {}, lockChoiceOrder: lockChoiceOrderB = {}, prompt: promptB = {}, teacherInstructions: teacherInstructionsB = {}, studentInstructions: studentInstructionsB = {}, choicesLayout: choicesLayoutB = {}, gridColumns: gridColumnsB = {}, rationale: rationaleB = {}, spellCheck: spellCheckB = {}} = partB || ({});
116
- const type = partLabelType || 'Numbers';
117
- const typeIsNumber = type === 'Numbers';
118
- const firstPart = `Part ${typeIsNumber ? '1' : 'A'}`;
119
- const secondPart = `Part ${typeIsNumber ? '2' : 'B'}`;
120
- const nrOfColumnsAvailable = {
121
- partA: modelPartA.choices && modelPartA.choices.length ? Array.from({
122
- length: modelPartA.choices.length
123
- }, (_, i) => `${i + 1}`) : [],
124
- partB: modelPartB.choices && modelPartB.choices.length ? Array.from({
125
- length: modelPartB.choices.length
126
- }, (_, i) => `${i + 1}`) : []
127
- };
128
- return React$1.createElement('div', {
129
- className: classes.design,
130
- __self: this,
131
- __source: {
132
- fileName: _jsxFileName,
133
- lineNumber: 110
134
- }
135
- }, React$1.createElement(layout.ConfigLayout, {
136
- settings: React$1.createElement(Panel, {
137
- model: model,
138
- onChangeModel: this.onModelChanged,
139
- configuration: configuration,
140
- onChangeConfiguration: onConfigurationChanged,
141
- groups: {
142
- 'Settings for both': {
143
- partLabels: generalConfiguration.partLabels.settings && toggle(generalConfiguration.partLabels.label),
144
- partLabelType: model.partLabels && dropdown('', ['Numbers', 'Letters']),
145
- partialScoring: partialScoring.settings && toggle(partialScoring.label),
146
- scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
147
- },
148
- [`Settings ${firstPart}`]: {
149
- 'partA.choiceMode': choiceModeA.settings && radio(choiceModeA.label, ['checkbox', 'radio']),
150
- 'partA.choicePrefix': choicePrefixA.settings && radio(choicePrefixA.label, ['numbers', 'letters']),
151
- 'partA.lockChoiceOrder': lockChoiceOrderA.settings && toggle(lockChoiceOrderA.label),
152
- 'partA.choicesLayout': choicesLayoutA.settings && dropdown(choicesLayoutA.label, ['vertical', 'grid', 'horizontal']),
153
- 'partA.gridColumns': choicesLayoutA.settings && modelPartA.choicesLayout === 'grid' && nrOfColumnsAvailable.partA.length > 0 && dropdown(gridColumnsA.label, nrOfColumnsAvailable.partA)
154
- },
155
- [`Properties ${firstPart}`]: {
156
- 'partA.feedbackEnabled': feedbackA.settings && toggle(feedbackA.label),
157
- 'partA.promptEnabled': promptA.settings && toggle(promptA.label),
158
- 'partA.teacherInstructionsEnabled': teacherInstructionsA.settings && toggle(teacherInstructionsA.label),
159
- 'partA.studentInstructionsEnabled': studentInstructionsA.settings && toggle(studentInstructionsA.label),
160
- 'partA.rationaleEnabled': rationaleA.settings && toggle(rationaleA.label),
161
- 'partA.spellCheckEnabled': spellCheckA.settings && toggle(spellCheckA.label)
162
- },
163
- [`Settings ${secondPart}`]: {
164
- 'partB.choiceMode': choiceModeB.settings && radio(choiceModeB.label, ['checkbox', 'radio']),
165
- 'partB.choicePrefix': choicePrefixB.settings && radio(choicePrefixB.label, ['numbers', 'letters']),
166
- 'partB.lockChoiceOrder': lockChoiceOrderB.settings && toggle(lockChoiceOrderB.label),
167
- 'partB.choicesLayout': choicesLayoutB.settings && dropdown(choicesLayoutB.label, ['vertical', 'grid', 'horizontal']),
168
- 'partB.gridColumns': choicesLayoutB.settings && modelPartB.choicesLayout === 'grid' && nrOfColumnsAvailable.partB.length > 0 && dropdown(gridColumnsB.label, nrOfColumnsAvailable.partB)
169
- },
170
- [`Properties ${secondPart}`]: {
171
- 'partB.feedbackEnabled': feedbackB.settings && toggle(feedbackB.label),
172
- 'partB.promptEnabled': promptB.settings && toggle(promptB.label),
173
- 'partB.teacherInstructionsEnabled': teacherInstructionsB.settings && toggle(teacherInstructionsB.label),
174
- 'partB.studentInstructionsEnabled': studentInstructionsB.settings && toggle(studentInstructionsB.label),
175
- 'partB.rationaleEnabled': rationaleB.settings && toggle(rationaleB.label),
176
- 'partB.spellCheckEnabled': spellCheckB.settings && toggle(spellCheckB.label)
177
- }
178
- },
179
- __self: this,
180
- __source: {
181
- fileName: _jsxFileName,
182
- lineNumber: 113
183
- }
184
- }),
185
- __self: this,
186
- __source: {
187
- fileName: _jsxFileName,
188
- lineNumber: 111
189
- }
190
- }, React$1.createElement('div', {
191
- __self: this,
192
- __source: {
193
- fileName: _jsxFileName,
194
- lineNumber: 200
195
- }
196
- }, React$1.createElement('div', {
197
- className: classes.part,
198
- __self: this,
199
- __source: {
200
- fileName: _jsxFileName,
201
- lineNumber: 201
202
- }
203
- }, model.partLabels && React$1.createElement('p', {
204
- __self: this,
205
- __source: {
206
- fileName: _jsxFileName,
207
- lineNumber: 202
208
- }
209
- }, firstPart), React$1.createElement('ebsr-multiple-choice-configure', {
210
- id: "A",
211
- key: "partA",
212
- ref: ref => {
213
- if (ref) {
214
- this.partA = ref;
215
- this.partA._model = {
216
- ...this.props.model.partA,
217
- errors: this.props.model.errors && this.props.model.errors.partA || ({})
218
- };
219
- this.partA.configuration = {
220
- ...partA,
221
- ...generalConfiguration
222
- };
223
- }
224
- },
225
- __self: this,
226
- __source: {
227
- fileName: _jsxFileName,
228
- lineNumber: 203
229
- }
230
- })), React$1.createElement('div', {
231
- className: classes.part,
232
- __self: this,
233
- __source: {
234
- fileName: _jsxFileName,
235
- lineNumber: 223
236
- }
237
- }, model.partLabels && React$1.createElement('p', {
238
- __self: this,
239
- __source: {
240
- fileName: _jsxFileName,
241
- lineNumber: 224
242
- }
243
- }, secondPart), React$1.createElement('ebsr-multiple-choice-configure', {
244
- id: "B",
245
- key: "partB",
246
- ref: ref => {
247
- if (ref) {
248
- this.partB = ref;
249
- this.partB._model = {
250
- ...this.props.model.partB,
251
- errors: this.props.model.errors && this.props.model.errors.partB || ({})
252
- };
253
- this.partB.configuration = {
254
- ...partB,
255
- ...generalConfiguration
256
- };
257
- }
258
- },
259
- __self: this,
260
- __source: {
261
- fileName: _jsxFileName,
262
- lineNumber: 225
263
- }
264
- })))));
265
- }
266
- }
267
- Main.__initStatic();
268
- const Styled = withStyles(styles)(Main);
269
- const {cloneDeep: cloneDeep} = _dll_lodash;
270
- const defaultConfig = {
271
- addChoiceButton: {
272
- settings: true,
273
- label: 'Add a Choice'
274
- },
275
- choiceMode: {
276
- settings: true,
277
- label: 'Response Type'
278
- },
279
- choicePrefix: {
280
- settings: true,
281
- label: 'Choice Labels'
282
- },
283
- deleteChoice: {
284
- settings: true
285
- },
286
- feedback: {
287
- settings: true,
288
- label: 'Feedback'
289
- },
290
- lockChoiceOrder: {
291
- settings: true,
292
- label: 'Lock Choice Order'
293
- },
294
- prompt: {
295
- settings: true,
296
- label: 'Prompt'
297
- },
298
- rationale: {
299
- settings: true,
300
- label: 'Rationale'
301
- },
302
- studentInstructions: {
303
- settings: false,
304
- label: 'Student Instructions'
305
- },
306
- teacherInstructions: {
307
- settings: true,
308
- label: 'Teacher Instructions'
309
- },
310
- choicesLayout: {
311
- settings: false,
312
- label: 'Choices Layout'
313
- },
314
- gridColumns: {
315
- label: 'Grid columns'
316
- },
317
- spellCheck: {
318
- label: 'Spellcheck',
319
- settings: false,
320
- enabled: true
321
- }
322
- };
323
- const partModel = base => ({
324
- choiceMode: 'radio',
325
- choices: [],
326
- choicePrefix: 'numbers',
327
- prompt: 'Prompt',
328
- rationaleEnabled: true,
329
- feedbackEnabled: true,
330
- promptEnabled: true,
331
- teacherInstructions: '',
332
- rationale: '',
333
- teacherInstructionsEnabled: true,
334
- studentInstructionsEnabled: true,
335
- spellCheckEnabled: true,
336
- choicesLayout: 'vertical',
337
- gridColumns: '2',
338
- ...base
339
- });
340
- var sensibleDefaults = {
341
- model: {
342
- partLabels: true,
343
- partLabelType: 'Letters',
344
- partialScoring: false,
345
- partA: partModel({
346
- prompt: 'Prompt A'
347
- }),
348
- partB: partModel({
349
- prompt: 'Prompt B'
350
- })
351
- },
352
- configuration: {
353
- partialScoring: {
354
- label: 'Allow Partial Scoring',
355
- settings: false
356
- },
357
- scoringType: {
358
- settings: false,
359
- label: 'Scoring Type'
360
- },
361
- partA: cloneDeep(defaultConfig),
362
- partB: cloneDeep(defaultConfig),
363
- partLabels: {
364
- settings: true,
365
- label: 'Part Labels'
366
- },
367
- settingsPanelDisabled: true
368
- }
369
- };
370
- const React = _dll_react;
371
- const ReactDOM = _dll_react_dom;
372
- const {defaults: defaults} = _dll_lodash;
373
- const MODEL_UPDATED = ModelUpdatedEvent_1.TYPE;
374
- const MC_TAG_NAME = 'ebsr-multiple-choice-configure';
375
- class EbsrMCConfigure extends MultipleChoiceConfigure {}
376
- const defineMultipleChoice = () => {
377
- if (!customElements.get(MC_TAG_NAME)) {
378
- customElements.define(MC_TAG_NAME, EbsrMCConfigure);
379
- }
380
- };
381
- defineMultipleChoice();
382
- const prepareCustomizationObject = (config, model) => {
383
- const configuration = defaults(config, sensibleDefaults.configuration);
384
- configuration.settingsPanelDisabled = true;
385
- return {
386
- configuration,
387
- model
388
- };
389
- };
390
- const {model: modelDefault} = sensibleDefaults || ({});
391
- class EbsrConfigure extends HTMLElement {
392
- static __initStatic() {
393
- this.createDefaultModel = ({partA = {}, partB = {}, ...model} = {}, defaults = modelDefault) => ({
394
- ...defaults,
395
- ...model,
396
- partA: {
397
- ...defaults.partA,
398
- ...partA,
399
- choicesLayout: partA.choicesLayout || partA.verticalMode === false && 'horizontal' || defaults.partA.choicesLayout
400
- },
401
- partB: {
402
- ...defaults.partB,
403
- ...partB,
404
- choicesLayout: partB.choicesLayout || partB.verticalMode === false && 'horizontal' || defaults.partB.choicesLayout
405
- }
406
- });
407
- }
408
- constructor() {
409
- super();
410
- EbsrConfigure.prototype.__init.call(this);
411
- EbsrConfigure.prototype.__init2.call(this);
412
- this._model = EbsrConfigure.createDefaultModel();
413
- this._configuration = sensibleDefaults.configuration;
414
- this.onConfigurationChanged = this.onConfigurationChanged.bind(this);
415
- }
416
- set model(m) {
417
- this._model = EbsrConfigure.createDefaultModel(m, this._model);
418
- this._render();
419
- }
420
- dispatchModelUpdated(reset) {
421
- const resetValue = !!reset;
422
- this.dispatchEvent(new ModelUpdatedEvent_1(this._model, resetValue));
423
- }
424
- __init() {
425
- this.onModelChanged = (m, reset) => {
426
- this._model = EbsrConfigure.createDefaultModel(m, this._model);
427
- this.dispatchModelUpdated(reset);
428
- this._render();
429
- };
430
- }
431
- set configuration(c) {
432
- const info = prepareCustomizationObject(c, this._model);
433
- this._configuration = info.configuration;
434
- this._render();
435
- }
436
- onConfigurationChanged(c) {
437
- this._configuration = prepareCustomizationObject(c, this._model).configuration;
438
- if (this._model) {
439
- this.onModelChanged(this._model);
440
- }
441
- this._render();
442
- }
443
- __init2() {
444
- this.onModelUpdated = e => {
445
- if (e.target === this) {
446
- return;
447
- }
448
- e.preventDefault();
449
- e.stopImmediatePropagation();
450
- const id = e.target && e.target.getAttribute('id');
451
- if (id) {
452
- if (e.update) {
453
- this._model[`part${id}`] = e.update;
454
- }
455
- this.dispatchEvent(new ModelUpdatedEvent_1(this._model));
456
- }
457
- };
458
- }
459
- connectedCallback() {
460
- this.addEventListener(MODEL_UPDATED, this.onModelUpdated);
461
- this._render();
462
- }
463
- disconnectedCallback() {
464
- this.removeEventListener(MODEL_UPDATED, this.onModelUpdated);
465
- }
466
- _render() {
467
- let element = React.createElement(Styled, {
468
- model: this._model,
469
- configuration: this._configuration,
470
- onModelChanged: this.onModelChanged,
471
- onConfigurationChanged: this.onConfigurationChanged
472
- });
473
- ReactDOM.render(element, this);
474
- }
475
- }
476
- EbsrConfigure.__initStatic();
477
- export {EbsrConfigure as default};