@pie-element/multi-trait-rubric 4.5.8-next.0 → 4.5.8-next.14

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.
@@ -35,6 +35,10 @@ var _main = _interopRequireDefault(require("./main"));
35
35
 
36
36
  var _defaults = _interopRequireDefault(require("./defaults"));
37
37
 
38
+ var _utils = require("./utils");
39
+
40
+ var _modals = require("./modals");
41
+
38
42
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
39
43
 
40
44
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -121,6 +125,21 @@ var MultiTraitRubricElement = /*#__PURE__*/function (_HTMLElement) {
121
125
  }
122
126
  });
123
127
  });
128
+
129
+ if (validatedModel.excludeZero) {
130
+ // check if any scale has maxPoints set to 1
131
+ var shouldAddColumn0 = validatedModel.scales.some(function (scale) {
132
+ return scale.maxPoints === 1;
133
+ });
134
+
135
+ if (shouldAddColumn0) {
136
+ // excludeZero should be false and disabled when maxPoints is 1
137
+ validatedModel.excludeZero = false; // add column 0 for all scales
138
+
139
+ validatedModel.scales = (0, _utils.addOrRemoveScaleColumn)(scales, _modals.excludeZeroTypes.add0);
140
+ }
141
+ }
142
+
124
143
  return validatedModel;
125
144
  });
126
145
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onModelChanged", function (m) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["modelWithDefaults","m","defaults","model","configurationWithDefaults","c","configuration","MultiTraitRubricElement","currentModel","_model","validatedModel","scales","excludeZero","forEach","scale","scorePointsLabels","traits","maxPoints","howManyScorePointLabelsShouldHave","howManyScorePointLabelsItHas","length","i","push","slice","trait","scorePointsDescriptors","howManyScorePointDescriptorsItHas","updateModelAccordingToReceivedProps","_render","dispatchEvent","ModelUpdatedEvent","_configuration","handler","InsertSoundEvent","src","done","DeleteSoundEvent","InsertImageEvent","DeleteImageEvent","element","React","createElement","Main","onModelChanged","onConfigurationChanged","uploadSoundSupport","add","insertSound","bind","onDeleteSound","imageSupport","insertImage","onDeleteImage","ReactDOM","render","HTMLElement"],"mappings":"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","sourcesContent":["import {\n ModelUpdatedEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n InsertImageEvent,\n DeleteImageEvent\n} from '@pie-framework/pie-configure-events';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport Main from './main';\nimport defaults from './defaults';\n\nconst modelWithDefaults = (m) => ({ ...defaults.model, ...m });\nconst configurationWithDefaults = (c) => ({ ...defaults.configuration, ...c });\n\nexport default class MultiTraitRubricElement extends HTMLElement {\n constructor() {\n super();\n this._model = modelWithDefaults();\n this._configuration = configurationWithDefaults();\n }\n\n updateModelAccordingToReceivedProps = (m) => {\n const currentModel = {...this._model};\n if (!m) {\n return currentModel;\n }\n\n const validatedModel = { ...m };\n const { scales, excludeZero } = validatedModel || {};\n\n (scales || []).forEach(scale => {\n if (!scale) {\n scale = { scorePointsLabels: [], traits: [] };\n }\n\n const { maxPoints } = scale || {};\n\n scale.scorePointsLabels = [ ...(scale.scorePointsLabels || []) ];\n scale.traits = [ ...(scale.traits || []) ];\n\n const howManyScorePointLabelsShouldHave = excludeZero ? maxPoints : maxPoints + 1;\n const howManyScorePointLabelsItHas = scale.scorePointsLabels.length;\n\n if (howManyScorePointLabelsItHas !== howManyScorePointLabelsShouldHave) {\n if (howManyScorePointLabelsItHas < howManyScorePointLabelsShouldHave) {\n for (let i = 0; i < howManyScorePointLabelsShouldHave - howManyScorePointLabelsItHas; i++) {\n scale.scorePointsLabels.push('');\n }\n } else {\n scale.scorePointsLabels = scale.scorePointsLabels.slice(0, howManyScorePointLabelsShouldHave);\n }\n }\n\n (scale.traits || []).forEach(trait => {\n if (!trait) {\n trait = { scorePointsDescriptors: [] };\n }\n\n trait.scorePointsDescriptors = [ ...(trait.scorePointsDescriptors || []) ];\n\n const howManyScorePointDescriptorsItHas = trait.scorePointsDescriptors.length;\n\n if (howManyScorePointDescriptorsItHas !== howManyScorePointLabelsShouldHave) {\n if (howManyScorePointDescriptorsItHas < howManyScorePointLabelsShouldHave) {\n for (let i = 0; i < howManyScorePointLabelsShouldHave - howManyScorePointDescriptorsItHas; i++) {\n trait.scorePointsDescriptors.push('');\n }\n } else {\n trait.scorePointsDescriptors = trait.scorePointsDescriptors.slice(0, howManyScorePointLabelsShouldHave);\n }\n }\n });\n });\n\n return validatedModel;\n };\n\n set model(m) {\n this._model = this.updateModelAccordingToReceivedProps(modelWithDefaults(m));\n this._render();\n }\n\n set configuration(c) {\n this._configuration = configurationWithDefaults(c);\n this._render();\n }\n\n onModelChanged = (m) => {\n this._model = this.updateModelAccordingToReceivedProps(modelWithDefaults(m));\n this._render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model, false));\n };\n\n onConfigurationChanged = (c) => {\n this._configuration = configurationWithDefaults(c);\n\n this._render();\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 insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n \n _render() {\n if (this._model) {\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n });\n\n ReactDOM.render(element, this);\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["modelWithDefaults","m","defaults","model","configurationWithDefaults","c","configuration","MultiTraitRubricElement","currentModel","_model","validatedModel","scales","excludeZero","forEach","scale","scorePointsLabels","traits","maxPoints","howManyScorePointLabelsShouldHave","howManyScorePointLabelsItHas","length","i","push","slice","trait","scorePointsDescriptors","howManyScorePointDescriptorsItHas","shouldAddColumn0","some","excludeZeroTypes","add0","updateModelAccordingToReceivedProps","_render","dispatchEvent","ModelUpdatedEvent","_configuration","handler","InsertSoundEvent","src","done","DeleteSoundEvent","InsertImageEvent","DeleteImageEvent","element","React","createElement","Main","onModelChanged","onConfigurationChanged","uploadSoundSupport","add","insertSound","bind","onDeleteSound","imageSupport","insertImage","onDeleteImage","ReactDOM","render","HTMLElement"],"mappings":"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","sourcesContent":["import {\n ModelUpdatedEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n InsertImageEvent,\n DeleteImageEvent,\n} from '@pie-framework/pie-configure-events';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport Main from './main';\nimport defaults from './defaults';\nimport { addOrRemoveScaleColumn } from './utils';\nimport { excludeZeroTypes } from './modals';\n\nconst modelWithDefaults = (m) => ({ ...defaults.model, ...m });\nconst configurationWithDefaults = (c) => ({ ...defaults.configuration, ...c });\n\nexport default class MultiTraitRubricElement extends HTMLElement {\n constructor() {\n super();\n this._model = modelWithDefaults();\n this._configuration = configurationWithDefaults();\n }\n\n updateModelAccordingToReceivedProps = (m) => {\n const currentModel = { ...this._model };\n\n if (!m) {\n return currentModel;\n }\n\n const validatedModel = { ...m };\n const { scales, excludeZero } = validatedModel || {};\n\n (scales || []).forEach((scale) => {\n if (!scale) {\n scale = { scorePointsLabels: [], traits: [] };\n }\n\n const { maxPoints } = scale || {};\n\n scale.scorePointsLabels = [...(scale.scorePointsLabels || [])];\n scale.traits = [...(scale.traits || [])];\n\n const howManyScorePointLabelsShouldHave = excludeZero ? maxPoints : maxPoints + 1;\n const howManyScorePointLabelsItHas = scale.scorePointsLabels.length;\n\n if (howManyScorePointLabelsItHas !== howManyScorePointLabelsShouldHave) {\n if (howManyScorePointLabelsItHas < howManyScorePointLabelsShouldHave) {\n for (let i = 0; i < howManyScorePointLabelsShouldHave - howManyScorePointLabelsItHas; i++) {\n scale.scorePointsLabels.push('');\n }\n } else {\n scale.scorePointsLabels = scale.scorePointsLabels.slice(0, howManyScorePointLabelsShouldHave);\n }\n }\n\n (scale.traits || []).forEach((trait) => {\n if (!trait) {\n trait = { scorePointsDescriptors: [] };\n }\n\n trait.scorePointsDescriptors = [...(trait.scorePointsDescriptors || [])];\n\n const howManyScorePointDescriptorsItHas = trait.scorePointsDescriptors.length;\n\n if (howManyScorePointDescriptorsItHas !== howManyScorePointLabelsShouldHave) {\n if (howManyScorePointDescriptorsItHas < howManyScorePointLabelsShouldHave) {\n for (let i = 0; i < howManyScorePointLabelsShouldHave - howManyScorePointDescriptorsItHas; i++) {\n trait.scorePointsDescriptors.push('');\n }\n } else {\n trait.scorePointsDescriptors = trait.scorePointsDescriptors.slice(0, howManyScorePointLabelsShouldHave);\n }\n }\n });\n });\n\n if (validatedModel.excludeZero) {\n // check if any scale has maxPoints set to 1\n const shouldAddColumn0 = validatedModel.scales.some((scale) => scale.maxPoints === 1);\n\n if (shouldAddColumn0) {\n // excludeZero should be false and disabled when maxPoints is 1\n validatedModel.excludeZero = false;\n // add column 0 for all scales\n validatedModel.scales = addOrRemoveScaleColumn(scales, excludeZeroTypes.add0);\n }\n }\n\n return validatedModel;\n };\n\n set model(m) {\n this._model = this.updateModelAccordingToReceivedProps(modelWithDefaults(m));\n this._render();\n }\n\n set configuration(c) {\n this._configuration = configurationWithDefaults(c);\n this._render();\n }\n\n onModelChanged = (m) => {\n this._model = this.updateModelAccordingToReceivedProps(modelWithDefaults(m));\n this._render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model, false));\n };\n\n onConfigurationChanged = (c) => {\n this._configuration = configurationWithDefaults(c);\n\n this._render();\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 insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n _render() {\n if (this._model) {\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n });\n\n ReactDOM.render(element, this);\n }\n }\n}\n"],"file":"index.js"}
@@ -9,8 +9,6 @@ exports["default"] = exports.Main = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
12
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
-
14
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
13
 
16
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -49,10 +47,7 @@ var _common = require("./common");
49
47
 
50
48
  var _modals = require("./modals");
51
49
 
52
- var _excluded = ["scorePointsDescriptors"],
53
- _excluded2 = ["scorePointsDescriptors"],
54
- _excluded3 = ["scorePointsDescriptors"],
55
- _excluded4 = ["scorePointsDescriptors"];
50
+ var _utils = require("./utils");
56
51
 
57
52
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
58
53
 
@@ -182,6 +177,13 @@ var Main = /*#__PURE__*/function (_React$Component) {
182
177
  Object.keys(params).forEach(function (key) {
183
178
  scales[scaleIndex][key] = params[key];
184
179
  });
180
+
181
+ if (model.excludeZero && params.maxPoints === 1) {
182
+ // excludeZero should be false and disabled when maxPoints is 1 for any scale
183
+ model.excludeZero = false;
184
+ scales = (0, _utils.addOrRemoveScaleColumn)(scales, _modals.excludeZeroTypes.add0);
185
+ }
186
+
185
187
  onModelChanged(_objectSpread(_objectSpread({}, model), {}, {
186
188
  scales: scales
187
189
  }));
@@ -308,80 +310,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
308
310
 
309
311
  if (!scales || !scales.length) return;
310
312
  excludeZero = !excludeZero;
311
- var newScales = scales.reduce(function (acc, scale) {
312
- var _ref18 = scale || {},
313
- scorePointsLabels = _ref18.scorePointsLabels,
314
- traits = _ref18.traits;
315
-
316
- if (scorePointsLabels.length < 1) return acc;
317
-
318
- switch (excludeZeroType) {
319
- case _modals.excludeZeroTypes.remove0:
320
- {
321
- // removes column 0
322
- scorePointsLabels = scorePointsLabels.slice(1);
323
- traits = traits.map(function (_ref19) {
324
- var scorePointsDescriptors = _ref19.scorePointsDescriptors,
325
- trait = (0, _objectWithoutProperties2["default"])(_ref19, _excluded);
326
- return _objectSpread(_objectSpread({}, trait), {}, {
327
- scorePointsDescriptors: scorePointsDescriptors.slice(1)
328
- });
329
- });
330
- break;
331
- }
332
-
333
- case _modals.excludeZeroTypes.add0:
334
- {
335
- // adds empty column at start
336
- scorePointsLabels = [''].concat((0, _toConsumableArray2["default"])(scorePointsLabels));
337
- traits = traits.map(function (_ref20) {
338
- var scorePointsDescriptors = _ref20.scorePointsDescriptors,
339
- trait = (0, _objectWithoutProperties2["default"])(_ref20, _excluded2);
340
- return _objectSpread(_objectSpread({}, trait), {}, {
341
- scorePointsDescriptors: [''].concat((0, _toConsumableArray2["default"])(scorePointsDescriptors))
342
- });
343
- });
344
- break;
345
- }
346
-
347
- case _modals.excludeZeroTypes.shiftLeft:
348
- {
349
- // removes last column
350
- scorePointsLabels = scorePointsLabels.slice(0, -1);
351
- traits = traits.map(function (_ref21) {
352
- var scorePointsDescriptors = _ref21.scorePointsDescriptors,
353
- trait = (0, _objectWithoutProperties2["default"])(_ref21, _excluded3);
354
- return _objectSpread(_objectSpread({}, trait), {}, {
355
- scorePointsDescriptors: scorePointsDescriptors.slice(0, -1)
356
- });
357
- });
358
- break;
359
- }
360
-
361
- case _modals.excludeZeroTypes.shiftRight:
362
- {
363
- // adds empty column at end
364
- scorePointsLabels = [].concat((0, _toConsumableArray2["default"])(scorePointsLabels), ['']);
365
- traits = traits.map(function (_ref22) {
366
- var scorePointsDescriptors = _ref22.scorePointsDescriptors,
367
- trait = (0, _objectWithoutProperties2["default"])(_ref22, _excluded4);
368
- return _objectSpread(_objectSpread({}, trait), {}, {
369
- scorePointsDescriptors: [].concat((0, _toConsumableArray2["default"])(scorePointsDescriptors), [''])
370
- });
371
- });
372
- break;
373
- }
374
-
375
- default:
376
- break;
377
- }
378
-
379
- acc.push(_objectSpread(_objectSpread({}, scale), {}, {
380
- scorePointsLabels: scorePointsLabels,
381
- traits: traits
382
- }));
383
- return acc;
384
- }, []);
313
+ var newScales = (0, _utils.addOrRemoveScaleColumn)(scales, excludeZeroType);
385
314
  onModelChanged(_objectSpread(_objectSpread({}, model), {}, {
386
315
  scales: newScales,
387
316
  excludeZero: excludeZero
@@ -390,8 +319,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
390
319
  _this.hideToggleExcludeZeroModal();
391
320
  });
392
321
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onModelChanged", function (updatedModel, updatedProperty) {
393
- var _ref23 = _this.props || {},
394
- onModelChanged = _ref23.onModelChanged;
322
+ var _ref18 = _this.props || {},
323
+ onModelChanged = _ref18.onModelChanged;
395
324
 
396
325
  if (updatedProperty === 'excludeZero') {
397
326
  _this.showToggleExcludeZeroModal();
@@ -446,65 +375,69 @@ var Main = /*#__PURE__*/function (_React$Component) {
446
375
  value: function render() {
447
376
  var _this2 = this;
448
377
 
449
- var _ref24 = this.props || {},
450
- model = _ref24.model,
451
- configuration = _ref24.configuration,
452
- onConfigurationChanged = _ref24.onConfigurationChanged,
453
- uploadSoundSupport = _ref24.uploadSoundSupport,
454
- imageSupport = _ref24.imageSupport;
455
-
456
- var _ref25 = configuration || {},
457
- addScale = _ref25.addScale,
458
- _ref25$baseInputConfi = _ref25.baseInputConfiguration,
459
- baseInputConfiguration = _ref25$baseInputConfi === void 0 ? {} : _ref25$baseInputConfi,
460
- dragAndDrop = _ref25.dragAndDrop,
461
- _ref25$contentDimensi = _ref25.contentDimensions,
462
- contentDimensions = _ref25$contentDimensi === void 0 ? {} : _ref25$contentDimensi,
463
- showDescription = _ref25.showDescription,
464
- showExcludeZero = _ref25.showExcludeZero,
465
- showLevelTagInput = _ref25.showLevelTagInput,
466
- showStandards = _ref25.showStandards,
467
- showHalfScoring = _ref25.showHalfScoring,
468
- showMaxPoint = _ref25.showMaxPoint,
469
- showScorePointLabels = _ref25.showScorePointLabels,
470
- showVisibleToStudent = _ref25.showVisibleToStudent,
471
- _ref25$spellCheck = _ref25.spellCheck,
472
- spellCheck = _ref25$spellCheck === void 0 ? {} : _ref25$spellCheck,
473
- settingsPanelDisabled = _ref25.settingsPanelDisabled,
474
- maxNoOfTraits = _ref25.maxNoOfTraits,
475
- minNoOfTraits = _ref25.minNoOfTraits,
476
- width = _ref25.width,
477
- _ref25$mathMlOptions = _ref25.mathMlOptions,
478
- mathMlOptions = _ref25$mathMlOptions === void 0 ? {} : _ref25$mathMlOptions,
479
- maxMaxPoints = _ref25.maxMaxPoints,
480
- _ref25$expandedInput = _ref25.expandedInput,
481
- expandedInput = _ref25$expandedInput === void 0 ? {} : _ref25$expandedInput,
482
- _ref25$labelInput = _ref25.labelInput,
483
- labelInput = _ref25$labelInput === void 0 ? {} : _ref25$labelInput;
484
-
485
- var _ref26 = model || {},
486
- errors = _ref26.errors,
487
- extraCSSRules = _ref26.extraCSSRules,
488
- scales = _ref26.scales,
489
- excludeZero = _ref26.excludeZero,
490
- description = _ref26.description,
491
- pointLabels = _ref26.pointLabels,
492
- standards = _ref26.standards,
493
- spellCheckEnabled = _ref26.spellCheckEnabled,
494
- maxPointsEnabled = _ref26.maxPointsEnabled,
495
- addScaleEnabled = _ref26.addScaleEnabled;
496
-
497
- var _ref27 = this.state || {},
498
- showExcludeZeroDialog = _ref27.showExcludeZeroDialog,
499
- showInfoDialog = _ref27.showInfoDialog,
500
- infoDialogText = _ref27.infoDialogText,
501
- adjustedWidth = _ref27.adjustedWidth;
502
-
378
+ var _ref19 = this.props || {},
379
+ model = _ref19.model,
380
+ configuration = _ref19.configuration,
381
+ onConfigurationChanged = _ref19.onConfigurationChanged,
382
+ uploadSoundSupport = _ref19.uploadSoundSupport,
383
+ imageSupport = _ref19.imageSupport;
384
+
385
+ var _ref20 = configuration || {},
386
+ addScale = _ref20.addScale,
387
+ _ref20$baseInputConfi = _ref20.baseInputConfiguration,
388
+ baseInputConfiguration = _ref20$baseInputConfi === void 0 ? {} : _ref20$baseInputConfi,
389
+ dragAndDrop = _ref20.dragAndDrop,
390
+ _ref20$contentDimensi = _ref20.contentDimensions,
391
+ contentDimensions = _ref20$contentDimensi === void 0 ? {} : _ref20$contentDimensi,
392
+ showDescription = _ref20.showDescription,
393
+ showExcludeZero = _ref20.showExcludeZero,
394
+ showLevelTagInput = _ref20.showLevelTagInput,
395
+ showStandards = _ref20.showStandards,
396
+ showHalfScoring = _ref20.showHalfScoring,
397
+ showMaxPoint = _ref20.showMaxPoint,
398
+ showScorePointLabels = _ref20.showScorePointLabels,
399
+ showVisibleToStudent = _ref20.showVisibleToStudent,
400
+ _ref20$spellCheck = _ref20.spellCheck,
401
+ spellCheck = _ref20$spellCheck === void 0 ? {} : _ref20$spellCheck,
402
+ settingsPanelDisabled = _ref20.settingsPanelDisabled,
403
+ maxNoOfTraits = _ref20.maxNoOfTraits,
404
+ minNoOfTraits = _ref20.minNoOfTraits,
405
+ width = _ref20.width,
406
+ _ref20$mathMlOptions = _ref20.mathMlOptions,
407
+ mathMlOptions = _ref20$mathMlOptions === void 0 ? {} : _ref20$mathMlOptions,
408
+ maxMaxPoints = _ref20.maxMaxPoints,
409
+ _ref20$expandedInput = _ref20.expandedInput,
410
+ expandedInput = _ref20$expandedInput === void 0 ? {} : _ref20$expandedInput,
411
+ _ref20$labelInput = _ref20.labelInput,
412
+ labelInput = _ref20$labelInput === void 0 ? {} : _ref20$labelInput;
413
+
414
+ var _ref21 = model || {},
415
+ errors = _ref21.errors,
416
+ extraCSSRules = _ref21.extraCSSRules,
417
+ scales = _ref21.scales,
418
+ excludeZero = _ref21.excludeZero,
419
+ description = _ref21.description,
420
+ pointLabels = _ref21.pointLabels,
421
+ standards = _ref21.standards,
422
+ spellCheckEnabled = _ref21.spellCheckEnabled,
423
+ maxPointsEnabled = _ref21.maxPointsEnabled,
424
+ addScaleEnabled = _ref21.addScaleEnabled;
425
+
426
+ var _ref22 = this.state || {},
427
+ showExcludeZeroDialog = _ref22.showExcludeZeroDialog,
428
+ showInfoDialog = _ref22.showInfoDialog,
429
+ infoDialogText = _ref22.infoDialogText,
430
+ adjustedWidth = _ref22.adjustedWidth; // excludeZero should be false and disabled when maxPoints is 1 for any scale
431
+
432
+
433
+ var disabledExcludeZero = scales === null || scales === void 0 ? void 0 : scales.some(function (scale) {
434
+ return scale.maxPoints === 1;
435
+ });
503
436
  var panelSettings = {
504
437
  standards: showStandards.settings && toggle(showStandards.label),
505
438
  'showLevelTagInput.enabled': showLevelTagInput.settings && toggle(showLevelTagInput.label, true),
506
439
  visibleToStudent: showVisibleToStudent.settings && toggle(showVisibleToStudent.label),
507
- excludeZero: showExcludeZero.settings && toggle(showExcludeZero.label),
440
+ excludeZero: showExcludeZero.settings && toggle(showExcludeZero.label, false, disabledExcludeZero),
508
441
  halfScoring: showHalfScoring.settings && toggle(showHalfScoring.label),
509
442
  'dragAndDrop.enabled': dragAndDrop.settings && toggle(dragAndDrop.label, true)
510
443
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["Panel","settings","toggle","MIN_WIDTH","styles","theme","design","fontFamily","fontSize","typography","ShowModal","showExcludeZeroDialog","excludeZero","changeExcludeZero","cancel","propTypes","PropTypes","bool","func","Main","props","showDecreaseMaxPointsDialog","showDeleteScaleDialog","showDeleteTraitDialog","showInfoDialog","infoDialogText","adjustedWidth","initialUpdateCompleted","updateDivWidth","model","onModelChanged","configuration","scales","maxNoOfScales","defaultTraitLabel","length","traitLabel","set","push","maxPoints","scorePointsLabels","traits","scaleIndex","params","Object","keys","forEach","key","minNoOfScales","slice","halfScoring","visibleToStudent","newState","setState","pointLabels","description","standards","excludeZeroType","newScales","reduce","acc","scale","excludeZeroTypes","remove0","map","scorePointsDescriptors","trait","add0","shiftLeft","shiftRight","hideToggleExcludeZeroModal","updatedModel","updatedProperty","showToggleExcludeZeroModal","divRef","React","createRef","bind","window","addEventListener","updateDivWidthDebounced","setTimeout","removeEventListener","state","current","divWidth","offsetWidth","onConfigurationChanged","uploadSoundSupport","imageSupport","addScale","baseInputConfiguration","dragAndDrop","contentDimensions","showDescription","showExcludeZero","showLevelTagInput","showStandards","showHalfScoring","showMaxPoint","showScorePointLabels","showVisibleToStudent","spellCheck","settingsPanelDisabled","maxNoOfTraits","minNoOfTraits","width","mathMlOptions","maxMaxPoints","expandedInput","labelInput","errors","extraCSSRules","spellCheckEnabled","maxPointsEnabled","addScaleEnabled","panelSettings","label","panelProperties","getPluginProps","assign","Settings","Properties","onScaleRemoved","onScaleChanged","enabled","inputConfiguration","onScaleAdded","Component","classes","object","shape","add","isRequired"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;AAEA,IAAQA,KAAR,GAA0BC,kBAA1B,CAAQD,KAAR;AAAA,IAAeE,MAAf,GAA0BD,kBAA1B,CAAeC,MAAf;AACA,IAAMC,SAAS,GAAG,OAAlB;;AAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBC,IAAAA,MAAM,EAAE;AACNC,MAAAA,UAAU,EAAE,cADN;AAENC,MAAAA,QAAQ,EAAEH,KAAK,CAACI,UAAN,CAAiBD;AAFrB;AADiB,GAAZ;AAAA,CAAf;;AAOA,IAAME,SAAS,GAAG,SAAZA,SAAY,OAAuE;AAAA,MAApEC,qBAAoE,QAApEA,qBAAoE;AAAA,MAA7CC,WAA6C,QAA7CA,WAA6C;AAAA,MAAhCC,iBAAgC,QAAhCA,iBAAgC;AAAA,MAAbC,MAAa,QAAbA,MAAa;;AACvF,MAAIH,qBAAqB,IAAI,CAACC,WAA9B,EAA2C;AACzC,wBACE,gCAAC,yBAAD;AACE,MAAA,IAAI,EAAED,qBAAqB,IAAI,CAACC,WADlC;AAEE,MAAA,iBAAiB,EAAEC,iBAFrB;AAGE,MAAA,MAAM,EAAEC;AAHV,MADF;AAOD,GARD,MAQO,IAAIH,qBAAqB,IAAIC,WAA7B,EAA0C;AAC/C,wBACE,gCAAC,yBAAD;AACE,MAAA,IAAI,EAAED,qBAAqB,IAAIC,WADjC;AAEE,MAAA,iBAAiB,EAAEC,iBAFrB;AAGE,MAAA,MAAM,EAAEC;AAHV,MADF;AAOD,GARM,MAQA;AACL,WAAO,IAAP;AACD;AACF,CApBD;;AAsBAJ,SAAS,CAACK,SAAV,GAAsB;AACpBJ,EAAAA,qBAAqB,EAAEK,sBAAUC,IADb;AAEpBL,EAAAA,WAAW,EAAEI,sBAAUC,IAFH;AAGpBJ,EAAAA,iBAAiB,EAAEG,sBAAUE,IAHT;AAIpBJ,EAAAA,MAAM,EAAEE,sBAAUE;AAJE,CAAtB;;IAOaC,I;;;;;AACX,gBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AADiB,8FAMX;AACNC,MAAAA,2BAA2B,EAAE,KADvB;AAENC,MAAAA,qBAAqB,EAAE,KAFjB;AAGNC,MAAAA,qBAAqB,EAAE,KAHjB;AAINZ,MAAAA,qBAAqB,EAAE,KAJjB;AAKNa,MAAAA,cAAc,EAAE,KALV;AAMNC,MAAAA,cAAc,EAAE,EANV;AAONC,MAAAA,aAAa,EAAEvB,SAPT;AAQNwB,MAAAA,sBAAsB,EAAE,KARlB,CAQyB;;AARzB,KANW;AAAA,gHAgDO,0BAAS;AAAA,aAAM,MAAKC,cAAL,EAAN;AAAA,KAAT,EAAsC,EAAtC,CAhDP;AAAA,qGAkDJ,YAAM;AAAA;;AACnB,wBAAiD,MAAKR,KAAtD;AAAA,UAAQS,KAAR,eAAQA,KAAR;AAAA,UAAeC,cAAf,eAAeA,cAAf;AAAA,UAA+BC,aAA/B,eAA+BA,aAA/B;;AACA,kBAA8BF,KAAK,IAAI,EAAvC;AAAA,UAAMG,MAAN,SAAMA,MAAN;AAAA,UAAcpB,WAAd,SAAcA,WAAd;;AACA,kBAA0BmB,aAAa,IAAI,EAA3C;AAAA,UAAQE,aAAR,SAAQA,aAAR;;AACA,kBAA4BF,aAAa,IAAI,EAA7C;AAAA,UAAMG,iBAAN,SAAMA,iBAAN;;AAEA,UAAI,CAACF,MAAM,CAACG,MAAZ,EAAoB;AAClBH,QAAAA,MAAM,GAAG,EAAT;AACD,OARkB,CAUnB;;;AACAE,MAAAA,iBAAiB,GAAG,OAAOA,iBAAP,KAA6B,QAA7B,GAAwCA,iBAAxC,GAA4D,aAAAF,MAAM,CAAC,CAAD,CAAN,sDAAWI,UAAX,KAAyB,EAAzG;;AAEA,UAAIJ,MAAM,CAACG,MAAP,KAAkBF,aAAtB,EAAqC;AACnC,cAAKI,GAAL,CAAS;AACPZ,UAAAA,cAAc,qCAA8BQ,aAA9B,aADP;AAEPT,UAAAA,cAAc,EAAE;AAFT,SAAT;;AAKA,eAAO,KAAP;AACD;;AAEDQ,MAAAA,MAAM,CAACM,IAAP,CAAY;AACVC,QAAAA,SAAS,EAAE,CADD;AAEVC,QAAAA,iBAAiB,EAAE5B,WAAW,GAAG,CAAC,EAAD,CAAH,GAAU,CAAC,EAAD,EAAK,EAAL,CAF9B;AAGVwB,QAAAA,UAAU,EAAEF,iBAHF;AAIVO,QAAAA,MAAM,EAAE;AAJE,OAAZ;AAOAX,MAAAA,cAAc,iCAAMD,KAAN;AAAaG,QAAAA,MAAM,EAANA;AAAb,SAAd;AACD,KAhFkB;AAAA,uGAkFF,UAACU,UAAD,EAAaC,MAAb,EAAwB;AACvC,yBAAkC,MAAKvB,KAAvC;AAAA,UAAQS,KAAR,gBAAQA,KAAR;AAAA,UAAeC,cAAf,gBAAeA,cAAf;AACA,UAAME,MAAM,GAAG,2BAAU,CAACH,KAAK,IAAI,EAAV,EAAcG,MAAxB,CAAf;AAEA,UAAIU,UAAU,GAAG,CAAb,IAAkBA,UAAU,IAAIV,MAAM,CAACG,MAAvC,IAAiD,yBAAQQ,MAAR,CAArD,EAAsE,OAAO,KAAP;AAEtEC,MAAAA,MAAM,CAACC,IAAP,CAAYF,MAAZ,EAAoBG,OAApB,CAA4B,UAACC,GAAD,EAAS;AACnCf,QAAAA,MAAM,CAACU,UAAD,CAAN,CAAmBK,GAAnB,IAA0BJ,MAAM,CAACI,GAAD,CAAhC;AACD,OAFD;AAIAjB,MAAAA,cAAc,iCAAMD,KAAN;AAAaG,QAAAA,MAAM,EAANA;AAAb,SAAd;AACD,KA7FkB;AAAA,uGA+FF,UAACU,UAAD,EAAgB;AAC/B,yBAAiD,MAAKtB,KAAtD;AAAA,UAAQS,KAAR,gBAAQA,KAAR;AAAA,UAAeC,cAAf,gBAAeA,cAAf;AAAA,UAA+BC,aAA/B,gBAA+BA,aAA/B;;AACA,kBAAiBF,KAAK,IAAI,EAA1B;AAAA,UAAMG,MAAN,SAAMA,MAAN;;AACA,kBAA0BD,aAAa,IAAI,EAA3C;AAAA,UAAQiB,aAAR,SAAQA,aAAR;;AAEA,UAAIN,UAAU,GAAG,CAAb,IAAkBA,UAAU,IAAIV,MAAM,CAACG,MAA3C,EAAmD,OAAO,KAAP;;AAEnD,UAAIH,MAAM,CAACG,MAAP,KAAkBa,aAAtB,EAAqC;AACnC,cAAKX,GAAL,CAAS;AACPZ,UAAAA,cAAc,qCAA8BuB,aAA9B,aADP;AAEPxB,UAAAA,cAAc,EAAE;AAFT,SAAT;;AAKA,eAAO,KAAP;AACD;;AAEDQ,MAAAA,MAAM,iDAAOA,MAAM,CAACiB,KAAP,CAAa,CAAb,EAAgBP,UAAhB,CAAP,uCAAuCV,MAAM,CAACiB,KAAP,CAAaP,UAAU,GAAG,CAA1B,CAAvC,EAAN;AAEAZ,MAAAA,cAAc,iCAAMD,KAAN;AAAaG,QAAAA,MAAM,EAANA;AAAb,SAAd;AACD,KAlHkB;AAAA,6GAoHI,YAAM;AAC3B,yBAAkC,MAAKZ,KAAvC;AAAA,UAAQS,KAAR,gBAAQA,KAAR;AAAA,UAAeC,cAAf,gBAAeA,cAAf;;AACA,kBAAsBD,KAAK,IAAI,EAA/B;AAAA,UAAMqB,WAAN,SAAMA,WAAN;;AAEApB,MAAAA,cAAc,iCAAMD,KAAN;AAAaqB,QAAAA,WAAW,EAAE,CAACA;AAA3B,SAAd;AACD,KAzHkB;AAAA,kHA2HS,YAAM;AAChC,yBAAkC,MAAK9B,KAAvC;AAAA,UAAQS,KAAR,gBAAQA,KAAR;AAAA,UAAeC,cAAf,gBAAeA,cAAf;;AACA,kBAA2BD,KAAK,IAAI,EAApC;AAAA,UAAMsB,gBAAN,SAAMA,gBAAN;;AAEArB,MAAAA,cAAc,iCAAMD,KAAN;AAAasB,QAAAA,gBAAgB,EAAE,CAACA;AAAhC,SAAd;AACD,KAhIkB;AAAA,4FAkIb,UAACC,QAAD;AAAA,aAAc,MAAKC,QAAL,CAAcD,QAAd,CAAd;AAAA,KAlIa;AAAA,mHAoIU,YAAM;AACjC,kBAAkC,MAAKhC,KAAL,IAAc,EAAhD;AAAA,UAAQS,KAAR,SAAQA,KAAR;AAAA,UAAeC,cAAf,SAAeA,cAAf;;AACA,mBAAsBD,KAAK,IAAI,EAA/B;AAAA,UAAMyB,WAAN,UAAMA,WAAN;;AAEAA,MAAAA,WAAW,GAAG,CAACA,WAAf;AAEAxB,MAAAA,cAAc,iCAAMD,KAAN;AAAayB,QAAAA,WAAW,EAAXA;AAAb,SAAd;AACD,KA3IkB;AAAA,8GA6IK,YAAM;AAC5B,mBAAkC,MAAKlC,KAAL,IAAc,EAAhD;AAAA,UAAQS,KAAR,UAAQA,KAAR;AAAA,UAAeC,cAAf,UAAeA,cAAf;;AACA,mBAAsBD,KAAK,IAAI,EAA/B;AAAA,UAAM0B,WAAN,UAAMA,WAAN;;AAEAA,MAAAA,WAAW,GAAG,CAACA,WAAf;AAEAzB,MAAAA,cAAc,iCAAMD,KAAN;AAAa0B,QAAAA,WAAW,EAAXA;AAAb,SAAd;AACD,KApJkB;AAAA,4GAsJG,YAAM;AAC1B,mBAAkC,MAAKnC,KAAL,IAAc,EAAhD;AAAA,UAAQS,KAAR,UAAQA,KAAR;AAAA,UAAeC,cAAf,UAAeA,cAAf;;AACA,mBAAoBD,KAAK,IAAI,EAA7B;AAAA,UAAM2B,SAAN,UAAMA,SAAN;;AAEAA,MAAAA,SAAS,GAAG,CAACA,SAAb;AAEA1B,MAAAA,cAAc,iCAAMD,KAAN;AAAa2B,QAAAA,SAAS,EAATA;AAAb,SAAd;AACD,KA7JkB;AAAA,mHAgKU;AAAA,aAAM,MAAKnB,GAAL,CAAS;AAAE1B,QAAAA,qBAAqB,EAAE;AAAzB,OAAT,CAAN;AAAA,KAhKV;AAAA,mHAkKU,YAAM;AACjC,YAAK0B,GAAL,CAAS;AAAE1B,QAAAA,qBAAqB,EAAE;AAAzB,OAAT;AACD,KApKkB;AAAA,0GAsKC;AAAA,aAAM,MAAK0B,GAAL,CAAS;AAAEb,QAAAA,cAAc,EAAE;AAAlB,OAAT,CAAN;AAAA,KAtKD;AAAA,0GAwKC,UAACiC,eAAD,EAAqB;AACvC,mBAAkC,MAAKrC,KAAL,IAAc,EAAhD;AAAA,UAAQS,KAAR,UAAQA,KAAR;AAAA,UAAeC,cAAf,UAAeA,cAAf;;AACA,mBAAmBD,KAAK,IAAI,EAA5B;AAAA,UAAQG,MAAR,UAAQA,MAAR;;AACA,mBAAsBH,KAAK,IAAI,EAA/B;AAAA,UAAMjB,WAAN,UAAMA,WAAN;;AAEA,UAAI,CAACoB,MAAD,IAAW,CAACA,MAAM,CAACG,MAAvB,EAA+B;AAE/BvB,MAAAA,WAAW,GAAG,CAACA,WAAf;AAEA,UAAM8C,SAAS,GAAG1B,MAAM,CAAC2B,MAAP,CAAc,UAACC,GAAD,EAAMC,KAAN,EAAgB;AAC9C,qBAAoCA,KAAK,IAAI,EAA7C;AAAA,YAAMrB,iBAAN,UAAMA,iBAAN;AAAA,YAAyBC,MAAzB,UAAyBA,MAAzB;;AAEA,YAAID,iBAAiB,CAACL,MAAlB,GAA2B,CAA/B,EAAkC,OAAOyB,GAAP;;AAElC,gBAAQH,eAAR;AACE,eAAKK,yBAAiBC,OAAtB;AAA+B;AAC7B;AACAvB,cAAAA,iBAAiB,GAAGA,iBAAiB,CAACS,KAAlB,CAAwB,CAAxB,CAApB;AACAR,cAAAA,MAAM,GAAGA,MAAM,CAACuB,GAAP,CAAW;AAAA,oBAAGC,sBAAH,UAAGA,sBAAH;AAAA,oBAA8BC,KAA9B;AAAA,uDACfA,KADe;AAElBD,kBAAAA,sBAAsB,EAAEA,sBAAsB,CAAChB,KAAvB,CAA6B,CAA7B;AAFN;AAAA,eAAX,CAAT;AAKA;AACD;;AAED,eAAKa,yBAAiBK,IAAtB;AAA4B;AAC1B;AACA3B,cAAAA,iBAAiB,IAAI,EAAJ,6CAAWA,iBAAX,EAAjB;AACAC,cAAAA,MAAM,GAAGA,MAAM,CAACuB,GAAP,CAAW;AAAA,oBAAGC,sBAAH,UAAGA,sBAAH;AAAA,oBAA8BC,KAA9B;AAAA,uDACfA,KADe;AAElBD,kBAAAA,sBAAsB,GAAG,EAAH,6CAAUA,sBAAV;AAFJ;AAAA,eAAX,CAAT;AAKA;AACD;;AAED,eAAKH,yBAAiBM,SAAtB;AAAiC;AAC/B;AACA5B,cAAAA,iBAAiB,GAAGA,iBAAiB,CAACS,KAAlB,CAAwB,CAAxB,EAA2B,CAAC,CAA5B,CAApB;AACAR,cAAAA,MAAM,GAAGA,MAAM,CAACuB,GAAP,CAAW;AAAA,oBAAGC,sBAAH,UAAGA,sBAAH;AAAA,oBAA8BC,KAA9B;AAAA,uDACfA,KADe;AAElBD,kBAAAA,sBAAsB,EAAEA,sBAAsB,CAAChB,KAAvB,CAA6B,CAA7B,EAAgC,CAAC,CAAjC;AAFN;AAAA,eAAX,CAAT;AAKA;AACD;;AAED,eAAKa,yBAAiBO,UAAtB;AAAkC;AAChC;AACA7B,cAAAA,iBAAiB,iDAAOA,iBAAP,IAA0B,EAA1B,EAAjB;AACAC,cAAAA,MAAM,GAAGA,MAAM,CAACuB,GAAP,CAAW;AAAA,oBAAGC,sBAAH,UAAGA,sBAAH;AAAA,oBAA8BC,KAA9B;AAAA,uDACfA,KADe;AAElBD,kBAAAA,sBAAsB,gDAAMA,sBAAN,IAA8B,EAA9B;AAFJ;AAAA,eAAX,CAAT;AAKA;AACD;;AAED;AACE;AA9CJ;;AAiDAL,QAAAA,GAAG,CAACtB,IAAJ,iCAAcuB,KAAd;AAAqBrB,UAAAA,iBAAiB,EAAjBA,iBAArB;AAAwCC,UAAAA,MAAM,EAANA;AAAxC;AAEA,eAAOmB,GAAP;AACD,OAzDiB,EAyDf,EAzDe,CAAlB;AA2DA9B,MAAAA,cAAc,iCAAMD,KAAN;AAAaG,QAAAA,MAAM,EAAE0B,SAArB;AAAgC9C,QAAAA,WAAW,EAAXA;AAAhC,SAAd;;AAEA,YAAK0D,0BAAL;AACD,KA/OkB;AAAA,uGAiPF,UAACC,YAAD,EAAeC,eAAf,EAAmC;AAClD,mBAA2B,MAAKpD,KAAL,IAAc,EAAzC;AAAA,UAAQU,cAAR,UAAQA,cAAR;;AAEA,UAAI0C,eAAe,KAAK,aAAxB,EAAuC;AACrC,cAAKC,0BAAL;AACD,OAFD,MAEO;AACL3C,QAAAA,cAAc,CAACyC,YAAD,CAAd;AACD;AACF,KAzPkB;AAEjB,UAAKG,MAAL,gBAAcC,kBAAMC,SAAN,EAAd;AACA,UAAKhD,cAAL,GAAsB,MAAKA,cAAL,CAAoBiD,IAApB,gDAAtB;AAHiB;AAIlB;;;;WAaD,6BAAoB;AAClBC,MAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkC,KAAKC,uBAAvC;AACAF,MAAAA,MAAM,CAACC,gBAAP,CAAwB,MAAxB,EAAgC,KAAKnD,cAArC,EAFkB,CAIlB;;AACAqD,MAAAA,UAAU,CAAC,KAAKrD,cAAN,EAAsB,CAAtB,CAAV;AACD;;;WAED,gCAAuB;AACrBkD,MAAAA,MAAM,CAACI,mBAAP,CAA2B,QAA3B,EAAqC,KAAKF,uBAA1C;AACAF,MAAAA,MAAM,CAACI,mBAAP,CAA2B,MAA3B,EAAmC,KAAKtD,cAAxC;AACD;;;WAED,8BAAqB;AACnB,UAAI,CAAC,KAAKuD,KAAL,CAAWxD,sBAAhB,EAAwC;AACtC,aAAKC,cAAL;AACA,aAAKyB,QAAL,CAAc;AAAE1B,UAAAA,sBAAsB,EAAE;AAA1B,SAAd;AACD;AACF;;;WAED,0BAAiB;AACf,UAAI,KAAK+C,MAAL,IAAe,KAAKA,MAAL,CAAYU,OAA/B,EAAwC;AACtC,YAAMC,QAAQ,GAAG,KAAKX,MAAL,CAAYU,OAAZ,CAAoBE,WAArC;;AACA,YAAID,QAAQ,KAAK,KAAKF,KAAL,CAAWzD,aAA5B,EAA2C;AACzC,eAAKW,GAAL,CAAS;AACPX,YAAAA,aAAa,EAAE2D;AADR,WAAT;AAGD;AACF;AACF;;;WA6MD,kBAAS;AAAA;;AACP,mBAA2F,KAAKjE,KAAL,IAAc,EAAzG;AAAA,UAAQS,KAAR,UAAQA,KAAR;AAAA,UAAeE,aAAf,UAAeA,aAAf;AAAA,UAA8BwD,sBAA9B,UAA8BA,sBAA9B;AAAA,UAAsDC,kBAAtD,UAAsDA,kBAAtD;AAAA,UAA0EC,YAA1E,UAA0EA,YAA1E;;AACA,mBAsBI1D,aAAa,IAAI,EAtBrB;AAAA,UACE2D,QADF,UACEA,QADF;AAAA,yCAEEC,sBAFF;AAAA,UAEEA,sBAFF,sCAE2B,EAF3B;AAAA,UAGEC,WAHF,UAGEA,WAHF;AAAA,yCAIEC,iBAJF;AAAA,UAIEA,iBAJF,sCAIsB,EAJtB;AAAA,UAKEC,eALF,UAKEA,eALF;AAAA,UAMEC,eANF,UAMEA,eANF;AAAA,UAOEC,iBAPF,UAOEA,iBAPF;AAAA,UAQEC,aARF,UAQEA,aARF;AAAA,UASEC,eATF,UASEA,eATF;AAAA,UAUEC,YAVF,UAUEA,YAVF;AAAA,UAWEC,oBAXF,UAWEA,oBAXF;AAAA,UAYEC,oBAZF,UAYEA,oBAZF;AAAA,qCAaEC,UAbF;AAAA,UAaEA,UAbF,kCAae,EAbf;AAAA,UAcEC,qBAdF,UAcEA,qBAdF;AAAA,UAeEC,aAfF,UAeEA,aAfF;AAAA,UAgBEC,aAhBF,UAgBEA,aAhBF;AAAA,UAiBEC,KAjBF,UAiBEA,KAjBF;AAAA,wCAkBEC,aAlBF;AAAA,UAkBEA,aAlBF,qCAkBkB,EAlBlB;AAAA,UAmBEC,YAnBF,UAmBEA,YAnBF;AAAA,wCAoBEC,aApBF;AAAA,UAoBEA,aApBF,qCAoBkB,EApBlB;AAAA,qCAqBEC,UArBF;AAAA,UAqBEA,UArBF,kCAqBe,EArBf;;AAuBA,mBAWIjF,KAAK,IAAI,EAXb;AAAA,UACEkF,MADF,UACEA,MADF;AAAA,UAEEC,aAFF,UAEEA,aAFF;AAAA,UAGEhF,MAHF,UAGEA,MAHF;AAAA,UAIEpB,WAJF,UAIEA,WAJF;AAAA,UAKE2C,WALF,UAKEA,WALF;AAAA,UAMED,WANF,UAMEA,WANF;AAAA,UAOEE,SAPF,UAOEA,SAPF;AAAA,UAQEyD,iBARF,UAQEA,iBARF;AAAA,UASEC,gBATF,UASEA,gBATF;AAAA,UAUEC,eAVF,UAUEA,eAVF;;AAYA,mBAAiF,KAAKhC,KAAL,IAAc,EAA/F;AAAA,UAAQxE,qBAAR,UAAQA,qBAAR;AAAA,UAA+Ba,cAA/B,UAA+BA,cAA/B;AAAA,UAA+CC,cAA/C,UAA+CA,cAA/C;AAAA,UAA+DC,aAA/D,UAA+DA,aAA/D;;AAEA,UAAM0F,aAAa,GAAG;AACpB5D,QAAAA,SAAS,EAAEyC,aAAa,CAAChG,QAAd,IAA0BC,MAAM,CAAC+F,aAAa,CAACoB,KAAf,CADvB;AAEpB,qCAA6BrB,iBAAiB,CAAC/F,QAAlB,IAA8BC,MAAM,CAAC8F,iBAAiB,CAACqB,KAAnB,EAA0B,IAA1B,CAF7C;AAGpBlE,QAAAA,gBAAgB,EAAEkD,oBAAoB,CAACpG,QAArB,IAAiCC,MAAM,CAACmG,oBAAoB,CAACgB,KAAtB,CAHrC;AAIpBzG,QAAAA,WAAW,EAAEmF,eAAe,CAAC9F,QAAhB,IAA4BC,MAAM,CAAC6F,eAAe,CAACsB,KAAjB,CAJ3B;AAKpBnE,QAAAA,WAAW,EAAEgD,eAAe,CAACjG,QAAhB,IAA4BC,MAAM,CAACgG,eAAe,CAACmB,KAAjB,CAL3B;AAMpB,+BAAuBzB,WAAW,CAAC3F,QAAZ,IAAwBC,MAAM,CAAC0F,WAAW,CAACyB,KAAb,EAAoB,IAApB;AANjC,OAAtB;AAQA,UAAMC,eAAe,GAAG;AACtB/D,QAAAA,WAAW,EAAEuC,eAAe,CAAC7F,QAAhB,IAA4BC,MAAM,CAAC4F,eAAe,CAACuB,KAAjB,CADzB;AAEtB/D,QAAAA,WAAW,EAAE8C,oBAAoB,CAACnG,QAArB,IAAiCC,MAAM,CAACkG,oBAAoB,CAACiB,KAAtB,CAF9B;AAGtBJ,QAAAA,iBAAiB,EAAEX,UAAU,CAACrG,QAAX,IAAuBC,MAAM,CAACoG,UAAU,CAACe,KAAZ,CAH1B;AAItBH,QAAAA,gBAAgB,EAAEf,YAAY,CAAClG,QAAb,IAAyBC,MAAM,CAACiG,YAAY,CAACkB,KAAd,CAJ3B;AAKtBF,QAAAA,eAAe,EAAEzB,QAAQ,CAACzF,QAAT,IAAqBC,MAAM,CAACwF,QAAQ,CAAC2B,KAAV;AALtB,OAAxB;;AAQA,UAAME,cAAc,GAAG,SAAjBA,cAAiB,CAACnG,KAAD,EAAW;AAChC,eAAOwB,MAAM,CAAC4E,MAAP,mBAEA7B,sBAFA,GAILvE,KAAK,IAAI,EAJJ,CAAP;AAMD,OAPD;;AASA,0BACE,gCAAC,gBAAD,CAAQ,YAAR;AACE,QAAA,aAAa,EAAE4F,aADjB;AAEE,QAAA,UAAU,EAAEnB,iBAFd;AAGE,QAAA,YAAY,EAAEU,qBAHhB;AAIE,QAAA,QAAQ,eACN,gCAAC,KAAD;AACE,UAAA,KAAK,EAAE1E,KADT;AAEE,UAAA,aAAa,EAAE,KAAKC,cAFtB;AAGE,UAAA,aAAa,EAAEC,aAHjB;AAIE,UAAA,qBAAqB,EAAEwD,sBAJzB;AAKE,UAAA,MAAM,EAAE;AACNkC,YAAAA,QAAQ,EAAEL,aADJ;AAENM,YAAAA,UAAU,EAAEJ;AAFN,WALV;AASE,UAAA,KAAK,eACH,gCAAC,SAAD;AACE,YAAA,qBAAqB,EAAE3G,qBADzB;AAEE,YAAA,WAAW,EAAEC,WAFf;AAGE,YAAA,iBAAiB,EAAE,KAAKC,iBAH1B;AAIE,YAAA,MAAM,EAAE,KAAKyD;AAJf;AAVJ;AALJ,sBAyBE;AAAK,QAAA,KAAK,EAAE;AAAEoC,UAAAA,KAAK,EAAE;AAAT,SAAZ;AAA+B,QAAA,GAAG,EAAE,KAAKhC;AAAzC,QAzBF,eA0BE;AAAK,QAAA,KAAK,EAAE;AAAEgC,UAAAA,KAAK,EAAEA,KAAK,IAAIhF;AAAlB;AAAZ,SACG,CAACM,MAAM,IAAI,EAAX,EAAegC,GAAf,CAAmB,UAACH,KAAD,EAAQnB,UAAR;AAAA,4BAClB,gCAAC,iBAAD;AACE,UAAA,GAAG,kBAAWA,UAAX,CADL;AAEE,UAAA,KAAK,EAAEmB,KAFT;AAGE,UAAA,UAAU,EAAEnB,UAHd;AAIE,UAAA,MAAM,EAAEqE,MAJV;AAKE,UAAA,cAAc,EAAE,MAAI,CAACY,cALvB;AAME,UAAA,cAAc,EAAE,MAAI,CAACC,cANvB;AAOE,UAAA,aAAa,EAAEpE,SAPjB;AAQE,UAAA,oBAAoB,EAAEF,WARxB;AASE,UAAA,eAAe,EAAEC,WATnB;AAUE,UAAA,iBAAiB,EAAEyC,iBAAiB,CAAC6B,OAVvC;AAWE,UAAA,WAAW,EAAEjH,WAXf;AAYE,UAAA,iBAAiB,EAAEgF,WAAW,CAACiC,OAZjC;AAaE,UAAA,UAAU,EAAEZ,iBAbd;AAcE,UAAA,KAAK,EAAEvF,aAdT;AAeE,UAAA,kBAAkB,EAAE8D,kBAftB;AAgBE,UAAA,gBAAgB,EAAE0B,gBAhBpB;AAiBE,UAAA,aAAa,EAAEV,aAjBjB;AAkBE,UAAA,aAAa,EAAEC,aAlBjB;AAmBE,UAAA,YAAY,EAAEhB;AAnBhB,WAoBM,MAAI,CAACrE,KApBX;AAqBE,UAAA,OAAO,EAAE,EArBX;AAsBE,UAAA,aAAa,EAAEuF,aAtBjB;AAuBE,UAAA,YAAY,EAAEC,YAvBhB;AAwBE,UAAA,mBAAmB,EAAEW,cAAc,CAACV,aAAD,aAACA,aAAD,uBAACA,aAAa,CAAEiB,kBAAhB,CAxBrC;AAyBE,UAAA,gBAAgB,EAAEP,cAAc,CAACT,UAAD,aAACA,UAAD,uBAACA,UAAU,CAAEgB,kBAAb;AAzBlC,WADkB;AAAA,OAAnB,CADH,EA8BGX,eAAe,iBAAI,gCAAC,wBAAD;AAAkB,QAAA,OAAO,EAAE,KAAKY;AAAhC,qBA9BtB,CA1BF,eA2DE,gCAAC,kBAAD;AAAY,QAAA,IAAI,EAAEvG,cAAlB;AAAkC,QAAA,IAAI,EAAEC,cAAxC;AAAwD,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACY,GAAL,CAAS;AAAEb,YAAAA,cAAc,EAAE;AAAlB,WAAT,CAAN;AAAA;AAAjE,QA3DF,CADF;AA+DD;;;EA3XuBmD,kBAAMqD,S;;;AA8XhC7G,IAAI,CAACJ,SAAL,GAAiB;AACfkH,EAAAA,OAAO,EAAEjH,sBAAUkH,MADJ;AAEfrG,EAAAA,KAAK,EAAEb,sBAAUkH,MAFF;AAGf1C,EAAAA,kBAAkB,EAAExE,sBAAUkH,MAHf;AAIfnG,EAAAA,aAAa,EAAEf,sBAAUkH,MAJV;AAKfpG,EAAAA,cAAc,EAAEd,sBAAUE,IALX;AAMfqE,EAAAA,sBAAsB,EAAEvE,sBAAUE,IANnB;AAOfuE,EAAAA,YAAY,EAAEzE,sBAAUmH,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAEpH,sBAAUE,IAAV,CAAemH,UADQ;AAE5B,cAAQrH,sBAAUE,IAAV,CAAemH;AAFK,GAAhB;AAPC,CAAjB;;eAae,2BAAgB,wBAAWjI,MAAX,EAAmBe,IAAnB,CAAhB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEmpty from 'lodash/isEmpty';\nimport debounce from 'lodash/debounce';\n\nimport { withStyles } from '@material-ui/core/styles';\n\nimport { withDragContext } from '@pie-lib/pie-toolbox/drag';\nimport { layout, settings } from '@pie-lib/pie-toolbox/config-ui';\n\nimport Scale from './scale';\nimport { MultiTraitButton } from './common';\nimport { ExcludeZeroDialog, excludeZeroTypes, IncludeZeroDialog, InfoDialog } from './modals';\n\nconst { Panel, toggle } = settings;\nconst MIN_WIDTH = '650px';\n\nconst styles = (theme) => ({\n design: {\n fontFamily: 'Cerebri Sans',\n fontSize: theme.typography.fontSize,\n },\n});\n\nconst ShowModal = ({ showExcludeZeroDialog, excludeZero, changeExcludeZero, cancel }) => {\n if (showExcludeZeroDialog && !excludeZero) {\n return (\n <ExcludeZeroDialog\n open={showExcludeZeroDialog && !excludeZero}\n changeExcludeZero={changeExcludeZero}\n cancel={cancel}\n />\n );\n } else if (showExcludeZeroDialog && excludeZero) {\n return (\n <IncludeZeroDialog\n open={showExcludeZeroDialog && excludeZero}\n changeExcludeZero={changeExcludeZero}\n cancel={cancel}\n />\n );\n } else {\n return null;\n }\n};\n\nShowModal.propTypes = {\n showExcludeZeroDialog: PropTypes.bool,\n excludeZero: PropTypes.bool,\n changeExcludeZero: PropTypes.func,\n cancel: PropTypes.func,\n};\n\nexport class Main extends React.Component {\n constructor(props) {\n super(props);\n this.divRef = React.createRef();\n this.updateDivWidth = this.updateDivWidth.bind(this);\n }\n\n state = {\n showDecreaseMaxPointsDialog: false,\n showDeleteScaleDialog: false,\n showDeleteTraitDialog: false,\n showExcludeZeroDialog: false,\n showInfoDialog: false,\n infoDialogText: '',\n adjustedWidth: MIN_WIDTH,\n initialUpdateCompleted: false, // flag to track the initial update of the div width\n };\n\n componentDidMount() {\n window.addEventListener('resize', this.updateDivWidthDebounced);\n window.addEventListener('load', this.updateDivWidth);\n\n // delay updateDivWidth to avoid having this.divRef.current = null at first load\n setTimeout(this.updateDivWidth, 0);\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.updateDivWidthDebounced);\n window.removeEventListener('load', this.updateDivWidth);\n }\n\n componentDidUpdate() {\n if (!this.state.initialUpdateCompleted) {\n this.updateDivWidth();\n this.setState({ initialUpdateCompleted: true });\n }\n }\n\n updateDivWidth() {\n if (this.divRef && this.divRef.current) {\n const divWidth = this.divRef.current.offsetWidth;\n if (divWidth !== this.state.adjustedWidth) {\n this.set({\n adjustedWidth: divWidth,\n });\n }\n }\n }\n\n updateDivWidthDebounced = debounce(() => this.updateDivWidth(), 50);\n\n onScaleAdded = () => {\n const { model, onModelChanged, configuration } = this.props;\n let { scales, excludeZero } = model || {};\n const { maxNoOfScales } = configuration || {};\n let { defaultTraitLabel } = configuration || '';\n\n if (!scales.length) {\n scales = [];\n }\n\n // if no default trait label is defined, take the trait label of the first scale\n defaultTraitLabel = typeof defaultTraitLabel === 'string' ? defaultTraitLabel : scales[0]?.traitLabel || '';\n\n if (scales.length === maxNoOfScales) {\n this.set({\n infoDialogText: `There can't be more than ${maxNoOfScales} scales.`,\n showInfoDialog: true,\n });\n\n return false;\n }\n\n scales.push({\n maxPoints: 1,\n scorePointsLabels: excludeZero ? [''] : ['', ''],\n traitLabel: defaultTraitLabel,\n traits: [],\n });\n\n onModelChanged({ ...model, scales });\n };\n\n onScaleChanged = (scaleIndex, params) => {\n const { model, onModelChanged } = this.props;\n const scales = cloneDeep((model || {}).scales);\n\n if (scaleIndex < 0 || scaleIndex >= scales.length || isEmpty(params)) return false;\n\n Object.keys(params).forEach((key) => {\n scales[scaleIndex][key] = params[key];\n });\n\n onModelChanged({ ...model, scales });\n };\n\n onScaleRemoved = (scaleIndex) => {\n const { model, onModelChanged, configuration } = this.props;\n let { scales } = model || {};\n const { minNoOfScales } = configuration || {};\n\n if (scaleIndex < 0 || scaleIndex >= scales.length) return false;\n\n if (scales.length === minNoOfScales) {\n this.set({\n infoDialogText: `There can't be less than ${minNoOfScales} scales.`,\n showInfoDialog: true,\n });\n\n return false;\n }\n\n scales = [...scales.slice(0, scaleIndex), ...scales.slice(scaleIndex + 1)];\n\n onModelChanged({ ...model, scales });\n };\n\n onHalfScoringChanged = () => {\n const { model, onModelChanged } = this.props;\n let { halfScoring } = model || {};\n\n onModelChanged({ ...model, halfScoring: !halfScoring });\n };\n\n onVisibleToStudentChanged = () => {\n const { model, onModelChanged } = this.props;\n let { visibleToStudent } = model || {};\n\n onModelChanged({ ...model, visibleToStudent: !visibleToStudent });\n };\n\n set = (newState) => this.setState(newState);\n\n changeShowScorePointLabels = () => {\n const { model, onModelChanged } = this.props || {};\n let { pointLabels } = model || {};\n\n pointLabels = !pointLabels;\n\n onModelChanged({ ...model, pointLabels });\n };\n\n changeShowDescription = () => {\n const { model, onModelChanged } = this.props || {};\n let { description } = model || {};\n\n description = !description;\n\n onModelChanged({ ...model, description });\n };\n\n changeShowStandards = () => {\n const { model, onModelChanged } = this.props || {};\n let { standards } = model || {};\n\n standards = !standards;\n\n onModelChanged({ ...model, standards });\n };\n\n // Exclude Zero\n showToggleExcludeZeroModal = () => this.set({ showExcludeZeroDialog: true });\n\n hideToggleExcludeZeroModal = () => {\n this.set({ showExcludeZeroDialog: false });\n };\n\n onCloseInfoDialog = () => this.set({ showInfoDialog: false });\n\n changeExcludeZero = (excludeZeroType) => {\n const { model, onModelChanged } = this.props || {};\n const { scales } = model || {};\n let { excludeZero } = model || {};\n\n if (!scales || !scales.length) return;\n\n excludeZero = !excludeZero;\n\n const newScales = scales.reduce((acc, scale) => {\n let { scorePointsLabels, traits } = scale || {};\n\n if (scorePointsLabels.length < 1) return acc;\n\n switch (excludeZeroType) {\n case excludeZeroTypes.remove0: {\n // removes column 0\n scorePointsLabels = scorePointsLabels.slice(1);\n traits = traits.map(({ scorePointsDescriptors, ...trait }) => ({\n ...trait,\n scorePointsDescriptors: scorePointsDescriptors.slice(1),\n }));\n\n break;\n }\n\n case excludeZeroTypes.add0: {\n // adds empty column at start\n scorePointsLabels = ['', ...scorePointsLabels];\n traits = traits.map(({ scorePointsDescriptors, ...trait }) => ({\n ...trait,\n scorePointsDescriptors: ['', ...scorePointsDescriptors],\n }));\n\n break;\n }\n\n case excludeZeroTypes.shiftLeft: {\n // removes last column\n scorePointsLabels = scorePointsLabels.slice(0, -1);\n traits = traits.map(({ scorePointsDescriptors, ...trait }) => ({\n ...trait,\n scorePointsDescriptors: scorePointsDescriptors.slice(0, -1),\n }));\n\n break;\n }\n\n case excludeZeroTypes.shiftRight: {\n // adds empty column at end\n scorePointsLabels = [...scorePointsLabels, ''];\n traits = traits.map(({ scorePointsDescriptors, ...trait }) => ({\n ...trait,\n scorePointsDescriptors: [...scorePointsDescriptors, ''],\n }));\n\n break;\n }\n\n default:\n break;\n }\n\n acc.push({ ...scale, scorePointsLabels, traits });\n\n return acc;\n }, []);\n\n onModelChanged({ ...model, scales: newScales, excludeZero });\n\n this.hideToggleExcludeZeroModal();\n };\n\n onModelChanged = (updatedModel, updatedProperty) => {\n const { onModelChanged } = this.props || {};\n\n if (updatedProperty === 'excludeZero') {\n this.showToggleExcludeZeroModal();\n } else {\n onModelChanged(updatedModel);\n }\n };\n\n render() {\n const { model, configuration, onConfigurationChanged, uploadSoundSupport, imageSupport } = this.props || {};\n const {\n addScale,\n baseInputConfiguration = {},\n dragAndDrop,\n contentDimensions = {},\n showDescription,\n showExcludeZero,\n showLevelTagInput,\n showStandards,\n showHalfScoring,\n showMaxPoint,\n showScorePointLabels,\n showVisibleToStudent,\n spellCheck = {},\n settingsPanelDisabled,\n maxNoOfTraits,\n minNoOfTraits,\n width,\n mathMlOptions = {},\n maxMaxPoints,\n expandedInput = {},\n labelInput = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n scales,\n excludeZero,\n description,\n pointLabels,\n standards,\n spellCheckEnabled,\n maxPointsEnabled,\n addScaleEnabled,\n } = model || {};\n const { showExcludeZeroDialog, showInfoDialog, infoDialogText, adjustedWidth } = this.state || {};\n\n const panelSettings = {\n standards: showStandards.settings && toggle(showStandards.label),\n 'showLevelTagInput.enabled': showLevelTagInput.settings && toggle(showLevelTagInput.label, true),\n visibleToStudent: showVisibleToStudent.settings && toggle(showVisibleToStudent.label),\n excludeZero: showExcludeZero.settings && toggle(showExcludeZero.label),\n halfScoring: showHalfScoring.settings && toggle(showHalfScoring.label),\n 'dragAndDrop.enabled': dragAndDrop.settings && toggle(dragAndDrop.label, true),\n };\n const panelProperties = {\n description: showDescription.settings && toggle(showDescription.label),\n pointLabels: showScorePointLabels.settings && toggle(showScorePointLabels.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n maxPointsEnabled: showMaxPoint.settings && toggle(showMaxPoint.label),\n addScaleEnabled: addScale.settings && toggle(addScale.label),\n };\n\n const getPluginProps = (props) => {\n return Object.assign(\n {\n ...baseInputConfiguration,\n },\n props || {},\n );\n };\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.onModelChanged}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n modal={\n <ShowModal\n showExcludeZeroDialog={showExcludeZeroDialog}\n excludeZero={excludeZero}\n changeExcludeZero={this.changeExcludeZero}\n cancel={this.hideToggleExcludeZeroModal}\n ></ShowModal>\n }\n />\n }\n >\n <div style={{ width: '100%' }} ref={this.divRef} />\n <div style={{ width: width || adjustedWidth }}>\n {(scales || []).map((scale, scaleIndex) => (\n <Scale\n key={`scale-${scaleIndex}`}\n scale={scale}\n scaleIndex={scaleIndex}\n errors={errors}\n onScaleRemoved={this.onScaleRemoved}\n onScaleChanged={this.onScaleChanged}\n showStandards={standards}\n showScorePointLabels={pointLabels}\n showDescription={description}\n showLevelTagInput={showLevelTagInput.enabled}\n excludeZero={excludeZero}\n enableDragAndDrop={dragAndDrop.enabled}\n spellCheck={spellCheckEnabled}\n width={adjustedWidth}\n uploadSoundSupport={uploadSoundSupport}\n maxPointsEnabled={maxPointsEnabled}\n maxNoOfTraits={maxNoOfTraits}\n minNoOfTraits={minNoOfTraits}\n imageSupport={imageSupport}\n {...this.props}\n classes={{}}\n mathMlOptions={mathMlOptions}\n maxMaxPoints={maxMaxPoints}\n expandedPluginProps={getPluginProps(expandedInput?.inputConfiguration)}\n labelPluginProps={getPluginProps(labelInput?.inputConfiguration)}\n />\n ))}\n {addScaleEnabled && <MultiTraitButton onClick={this.onScaleAdded}>Add Scale</MultiTraitButton>}\n </div>\n\n <InfoDialog open={showInfoDialog} text={infoDialogText} onClose={() => this.set({ showInfoDialog: false })} />\n </layout.ConfigLayout>\n );\n }\n}\n\nMain.propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n configuration: PropTypes.object,\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n};\n\nexport default withDragContext(withStyles(styles)(Main));\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["Panel","settings","toggle","MIN_WIDTH","styles","theme","design","fontFamily","fontSize","typography","ShowModal","showExcludeZeroDialog","excludeZero","changeExcludeZero","cancel","propTypes","PropTypes","bool","func","Main","props","showDecreaseMaxPointsDialog","showDeleteScaleDialog","showDeleteTraitDialog","showInfoDialog","infoDialogText","adjustedWidth","initialUpdateCompleted","updateDivWidth","model","onModelChanged","configuration","scales","maxNoOfScales","defaultTraitLabel","length","traitLabel","set","push","maxPoints","scorePointsLabels","traits","scaleIndex","params","Object","keys","forEach","key","excludeZeroTypes","add0","minNoOfScales","slice","halfScoring","visibleToStudent","newState","setState","pointLabels","description","standards","excludeZeroType","newScales","hideToggleExcludeZeroModal","updatedModel","updatedProperty","showToggleExcludeZeroModal","divRef","React","createRef","bind","window","addEventListener","updateDivWidthDebounced","setTimeout","removeEventListener","state","current","divWidth","offsetWidth","onConfigurationChanged","uploadSoundSupport","imageSupport","addScale","baseInputConfiguration","dragAndDrop","contentDimensions","showDescription","showExcludeZero","showLevelTagInput","showStandards","showHalfScoring","showMaxPoint","showScorePointLabels","showVisibleToStudent","spellCheck","settingsPanelDisabled","maxNoOfTraits","minNoOfTraits","width","mathMlOptions","maxMaxPoints","expandedInput","labelInput","errors","extraCSSRules","spellCheckEnabled","maxPointsEnabled","addScaleEnabled","disabledExcludeZero","some","scale","panelSettings","label","panelProperties","getPluginProps","assign","Settings","Properties","map","onScaleRemoved","onScaleChanged","enabled","inputConfiguration","onScaleAdded","Component","classes","object","shape","add","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEmpty from 'lodash/isEmpty';\nimport debounce from 'lodash/debounce';\n\nimport { withStyles } from '@material-ui/core/styles';\n\nimport { withDragContext } from '@pie-lib/pie-toolbox/drag';\nimport { layout, settings } from '@pie-lib/pie-toolbox/config-ui';\n\nimport Scale from './scale';\nimport { MultiTraitButton } from './common';\nimport { ExcludeZeroDialog, excludeZeroTypes, IncludeZeroDialog, InfoDialog } from './modals';\nimport { addOrRemoveScaleColumn } from './utils';\n\nconst { Panel, toggle } = settings;\nconst MIN_WIDTH = '650px';\n\nconst styles = (theme) => ({\n design: {\n fontFamily: 'Cerebri Sans',\n fontSize: theme.typography.fontSize,\n },\n});\n\nconst ShowModal = ({ showExcludeZeroDialog, excludeZero, changeExcludeZero, cancel }) => {\n if (showExcludeZeroDialog && !excludeZero) {\n return (\n <ExcludeZeroDialog\n open={showExcludeZeroDialog && !excludeZero}\n changeExcludeZero={changeExcludeZero}\n cancel={cancel}\n />\n );\n } else if (showExcludeZeroDialog && excludeZero) {\n return (\n <IncludeZeroDialog\n open={showExcludeZeroDialog && excludeZero}\n changeExcludeZero={changeExcludeZero}\n cancel={cancel}\n />\n );\n } else {\n return null;\n }\n};\n\nShowModal.propTypes = {\n showExcludeZeroDialog: PropTypes.bool,\n excludeZero: PropTypes.bool,\n changeExcludeZero: PropTypes.func,\n cancel: PropTypes.func,\n};\n\nexport class Main extends React.Component {\n constructor(props) {\n super(props);\n this.divRef = React.createRef();\n this.updateDivWidth = this.updateDivWidth.bind(this);\n }\n\n state = {\n showDecreaseMaxPointsDialog: false,\n showDeleteScaleDialog: false,\n showDeleteTraitDialog: false,\n showExcludeZeroDialog: false,\n showInfoDialog: false,\n infoDialogText: '',\n adjustedWidth: MIN_WIDTH,\n initialUpdateCompleted: false, // flag to track the initial update of the div width\n };\n\n componentDidMount() {\n window.addEventListener('resize', this.updateDivWidthDebounced);\n window.addEventListener('load', this.updateDivWidth);\n\n // delay updateDivWidth to avoid having this.divRef.current = null at first load\n setTimeout(this.updateDivWidth, 0);\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.updateDivWidthDebounced);\n window.removeEventListener('load', this.updateDivWidth);\n }\n\n componentDidUpdate() {\n if (!this.state.initialUpdateCompleted) {\n this.updateDivWidth();\n this.setState({ initialUpdateCompleted: true });\n }\n }\n\n updateDivWidth() {\n if (this.divRef && this.divRef.current) {\n const divWidth = this.divRef.current.offsetWidth;\n if (divWidth !== this.state.adjustedWidth) {\n this.set({\n adjustedWidth: divWidth,\n });\n }\n }\n }\n\n updateDivWidthDebounced = debounce(() => this.updateDivWidth(), 50);\n\n onScaleAdded = () => {\n const { model, onModelChanged, configuration } = this.props;\n let { scales, excludeZero } = model || {};\n const { maxNoOfScales } = configuration || {};\n let { defaultTraitLabel } = configuration || '';\n\n if (!scales.length) {\n scales = [];\n }\n\n // if no default trait label is defined, take the trait label of the first scale\n defaultTraitLabel = typeof defaultTraitLabel === 'string' ? defaultTraitLabel : scales[0]?.traitLabel || '';\n\n if (scales.length === maxNoOfScales) {\n this.set({\n infoDialogText: `There can't be more than ${maxNoOfScales} scales.`,\n showInfoDialog: true,\n });\n\n return false;\n }\n\n scales.push({\n maxPoints: 1,\n scorePointsLabels: excludeZero ? [''] : ['', ''],\n traitLabel: defaultTraitLabel,\n traits: [],\n });\n\n onModelChanged({ ...model, scales });\n };\n\n onScaleChanged = (scaleIndex, params) => {\n const { model, onModelChanged } = this.props;\n let scales = cloneDeep((model || {}).scales);\n\n if (scaleIndex < 0 || scaleIndex >= scales.length || isEmpty(params)) return false;\n\n Object.keys(params).forEach((key) => {\n scales[scaleIndex][key] = params[key];\n });\n\n if (model.excludeZero && params.maxPoints === 1) {\n // excludeZero should be false and disabled when maxPoints is 1 for any scale\n model.excludeZero = false;\n scales = addOrRemoveScaleColumn(scales, excludeZeroTypes.add0);\n }\n\n onModelChanged({ ...model, scales });\n };\n\n onScaleRemoved = (scaleIndex) => {\n const { model, onModelChanged, configuration } = this.props;\n let { scales } = model || {};\n const { minNoOfScales } = configuration || {};\n\n if (scaleIndex < 0 || scaleIndex >= scales.length) return false;\n\n if (scales.length === minNoOfScales) {\n this.set({\n infoDialogText: `There can't be less than ${minNoOfScales} scales.`,\n showInfoDialog: true,\n });\n\n return false;\n }\n\n scales = [...scales.slice(0, scaleIndex), ...scales.slice(scaleIndex + 1)];\n\n onModelChanged({ ...model, scales });\n };\n\n onHalfScoringChanged = () => {\n const { model, onModelChanged } = this.props;\n let { halfScoring } = model || {};\n\n onModelChanged({ ...model, halfScoring: !halfScoring });\n };\n\n onVisibleToStudentChanged = () => {\n const { model, onModelChanged } = this.props;\n let { visibleToStudent } = model || {};\n\n onModelChanged({ ...model, visibleToStudent: !visibleToStudent });\n };\n\n set = (newState) => this.setState(newState);\n\n changeShowScorePointLabels = () => {\n const { model, onModelChanged } = this.props || {};\n let { pointLabels } = model || {};\n\n pointLabels = !pointLabels;\n\n onModelChanged({ ...model, pointLabels });\n };\n\n changeShowDescription = () => {\n const { model, onModelChanged } = this.props || {};\n let { description } = model || {};\n\n description = !description;\n\n onModelChanged({ ...model, description });\n };\n\n changeShowStandards = () => {\n const { model, onModelChanged } = this.props || {};\n let { standards } = model || {};\n\n standards = !standards;\n\n onModelChanged({ ...model, standards });\n };\n\n // Exclude Zero\n showToggleExcludeZeroModal = () => this.set({ showExcludeZeroDialog: true });\n\n hideToggleExcludeZeroModal = () => {\n this.set({ showExcludeZeroDialog: false });\n };\n\n onCloseInfoDialog = () => this.set({ showInfoDialog: false });\n\n changeExcludeZero = (excludeZeroType) => {\n const { model, onModelChanged } = this.props || {};\n const { scales } = model || {};\n let { excludeZero } = model || {};\n\n if (!scales || !scales.length) return;\n\n excludeZero = !excludeZero;\n const newScales = addOrRemoveScaleColumn(scales, excludeZeroType);\n\n onModelChanged({ ...model, scales: newScales, excludeZero });\n\n this.hideToggleExcludeZeroModal();\n };\n\n onModelChanged = (updatedModel, updatedProperty) => {\n const { onModelChanged } = this.props || {};\n\n if (updatedProperty === 'excludeZero') {\n this.showToggleExcludeZeroModal();\n } else {\n onModelChanged(updatedModel);\n }\n };\n\n render() {\n const { model, configuration, onConfigurationChanged, uploadSoundSupport, imageSupport } = this.props || {};\n const {\n addScale,\n baseInputConfiguration = {},\n dragAndDrop,\n contentDimensions = {},\n showDescription,\n showExcludeZero,\n showLevelTagInput,\n showStandards,\n showHalfScoring,\n showMaxPoint,\n showScorePointLabels,\n showVisibleToStudent,\n spellCheck = {},\n settingsPanelDisabled,\n maxNoOfTraits,\n minNoOfTraits,\n width,\n mathMlOptions = {},\n maxMaxPoints,\n expandedInput = {},\n labelInput = {},\n } = configuration || {};\n const {\n errors,\n extraCSSRules,\n scales,\n excludeZero,\n description,\n pointLabels,\n standards,\n spellCheckEnabled,\n maxPointsEnabled,\n addScaleEnabled,\n } = model || {};\n const { showExcludeZeroDialog, showInfoDialog, infoDialogText, adjustedWidth } = this.state || {};\n\n // excludeZero should be false and disabled when maxPoints is 1 for any scale\n const disabledExcludeZero = scales?.some((scale) => scale.maxPoints === 1);\n\n const panelSettings = {\n standards: showStandards.settings && toggle(showStandards.label),\n 'showLevelTagInput.enabled': showLevelTagInput.settings && toggle(showLevelTagInput.label, true),\n visibleToStudent: showVisibleToStudent.settings && toggle(showVisibleToStudent.label),\n excludeZero: showExcludeZero.settings && toggle(showExcludeZero.label, false, disabledExcludeZero),\n halfScoring: showHalfScoring.settings && toggle(showHalfScoring.label),\n 'dragAndDrop.enabled': dragAndDrop.settings && toggle(dragAndDrop.label, true),\n };\n const panelProperties = {\n description: showDescription.settings && toggle(showDescription.label),\n pointLabels: showScorePointLabels.settings && toggle(showScorePointLabels.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n maxPointsEnabled: showMaxPoint.settings && toggle(showMaxPoint.label),\n addScaleEnabled: addScale.settings && toggle(addScale.label),\n };\n\n const getPluginProps = (props) => {\n return Object.assign(\n {\n ...baseInputConfiguration,\n },\n props || {},\n );\n };\n\n return (\n <layout.ConfigLayout\n extraCSSRules={extraCSSRules}\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={this.onModelChanged}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n modal={\n <ShowModal\n showExcludeZeroDialog={showExcludeZeroDialog}\n excludeZero={excludeZero}\n changeExcludeZero={this.changeExcludeZero}\n cancel={this.hideToggleExcludeZeroModal}\n ></ShowModal>\n }\n />\n }\n >\n <div style={{ width: '100%' }} ref={this.divRef} />\n <div style={{ width: width || adjustedWidth }}>\n {(scales || []).map((scale, scaleIndex) => (\n <Scale\n key={`scale-${scaleIndex}`}\n scale={scale}\n scaleIndex={scaleIndex}\n errors={errors}\n onScaleRemoved={this.onScaleRemoved}\n onScaleChanged={this.onScaleChanged}\n showStandards={standards}\n showScorePointLabels={pointLabels}\n showDescription={description}\n showLevelTagInput={showLevelTagInput.enabled}\n excludeZero={excludeZero}\n enableDragAndDrop={dragAndDrop.enabled}\n spellCheck={spellCheckEnabled}\n width={adjustedWidth}\n uploadSoundSupport={uploadSoundSupport}\n maxPointsEnabled={maxPointsEnabled}\n maxNoOfTraits={maxNoOfTraits}\n minNoOfTraits={minNoOfTraits}\n imageSupport={imageSupport}\n {...this.props}\n classes={{}}\n mathMlOptions={mathMlOptions}\n maxMaxPoints={maxMaxPoints}\n expandedPluginProps={getPluginProps(expandedInput?.inputConfiguration)}\n labelPluginProps={getPluginProps(labelInput?.inputConfiguration)}\n />\n ))}\n {addScaleEnabled && <MultiTraitButton onClick={this.onScaleAdded}>Add Scale</MultiTraitButton>}\n </div>\n\n <InfoDialog open={showInfoDialog} text={infoDialogText} onClose={() => this.set({ showInfoDialog: false })} />\n </layout.ConfigLayout>\n );\n }\n}\n\nMain.propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n configuration: PropTypes.object,\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n};\n\nexport default withDragContext(withStyles(styles)(Main));\n"],"file":"main.js"}
@@ -1,14 +1,118 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports.filteredDefaultPlugins = void 0;
8
+ exports.filteredDefaultPlugins = exports.addOrRemoveScaleColumn = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
7
15
 
8
16
  var _editableHtml = require("@pie-lib/pie-toolbox/editable-html");
9
17
 
18
+ var _modals = require("./modals");
19
+
20
+ var _excluded = ["scorePointsDescriptors"],
21
+ _excluded2 = ["scorePointsDescriptors"],
22
+ _excluded3 = ["scorePointsDescriptors"],
23
+ _excluded4 = ["scorePointsDescriptors"];
24
+
25
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
26
+
27
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
28
+
10
29
  var filteredDefaultPlugins = (_editableHtml.DEFAULT_PLUGINS || []).filter(function (p) {
11
30
  return p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list';
12
31
  });
13
32
  exports.filteredDefaultPlugins = filteredDefaultPlugins;
33
+
34
+ var addOrRemoveScaleColumn = function addOrRemoveScaleColumn(scales, excludeZeroType) {
35
+ if (!scales || !scales.length) {
36
+ return [];
37
+ }
38
+
39
+ return scales.reduce(function (acc, scale) {
40
+ var _ref = scale || {},
41
+ scorePointsLabels = _ref.scorePointsLabels,
42
+ traits = _ref.traits;
43
+
44
+ if (scorePointsLabels.length < 1) {
45
+ return acc;
46
+ }
47
+
48
+ switch (excludeZeroType) {
49
+ case _modals.excludeZeroTypes.remove0:
50
+ {
51
+ // removes column 0
52
+ scorePointsLabels = scorePointsLabels.slice(1);
53
+ traits = traits.map(function (_ref2) {
54
+ var scorePointsDescriptors = _ref2.scorePointsDescriptors,
55
+ trait = (0, _objectWithoutProperties2["default"])(_ref2, _excluded);
56
+ return _objectSpread(_objectSpread({}, trait), {}, {
57
+ scorePointsDescriptors: scorePointsDescriptors.slice(1)
58
+ });
59
+ });
60
+ break;
61
+ }
62
+
63
+ case _modals.excludeZeroTypes.add0:
64
+ {
65
+ // adds empty column at start
66
+ scorePointsLabels = [''].concat((0, _toConsumableArray2["default"])(scorePointsLabels));
67
+ traits = traits.map(function (_ref3) {
68
+ var scorePointsDescriptors = _ref3.scorePointsDescriptors,
69
+ trait = (0, _objectWithoutProperties2["default"])(_ref3, _excluded2);
70
+ return _objectSpread(_objectSpread({}, trait), {}, {
71
+ scorePointsDescriptors: [''].concat((0, _toConsumableArray2["default"])(scorePointsDescriptors))
72
+ });
73
+ });
74
+ break;
75
+ }
76
+
77
+ case _modals.excludeZeroTypes.shiftLeft:
78
+ {
79
+ // removes last column
80
+ scorePointsLabels = scorePointsLabels.slice(0, -1);
81
+ traits = traits.map(function (_ref4) {
82
+ var scorePointsDescriptors = _ref4.scorePointsDescriptors,
83
+ trait = (0, _objectWithoutProperties2["default"])(_ref4, _excluded3);
84
+ return _objectSpread(_objectSpread({}, trait), {}, {
85
+ scorePointsDescriptors: scorePointsDescriptors.slice(0, -1)
86
+ });
87
+ });
88
+ break;
89
+ }
90
+
91
+ case _modals.excludeZeroTypes.shiftRight:
92
+ {
93
+ // adds empty column at end
94
+ scorePointsLabels = [].concat((0, _toConsumableArray2["default"])(scorePointsLabels), ['']);
95
+ traits = traits.map(function (_ref5) {
96
+ var scorePointsDescriptors = _ref5.scorePointsDescriptors,
97
+ trait = (0, _objectWithoutProperties2["default"])(_ref5, _excluded4);
98
+ return _objectSpread(_objectSpread({}, trait), {}, {
99
+ scorePointsDescriptors: [].concat((0, _toConsumableArray2["default"])(scorePointsDescriptors), [''])
100
+ });
101
+ });
102
+ break;
103
+ }
104
+
105
+ default:
106
+ break;
107
+ }
108
+
109
+ acc.push(_objectSpread(_objectSpread({}, scale), {}, {
110
+ scorePointsLabels: scorePointsLabels,
111
+ traits: traits
112
+ }));
113
+ return acc;
114
+ }, []);
115
+ };
116
+
117
+ exports.addOrRemoveScaleColumn = addOrRemoveScaleColumn;
14
118
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.js"],"names":["filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,sBAAsB,GAAG,CAACC,iCAAmB,EAApB,EAAwBC,MAAxB,CACpC,UAACC,CAAD;AAAA,SAAOA,CAAC,KAAK,OAAN,IAAiBA,CAAC,KAAK,eAAvB,IAA0CA,CAAC,KAAK,eAAvD;AAAA,CADoC,CAA/B","sourcesContent":["import { DEFAULT_PLUGINS } from '@pie-lib/pie-toolbox/editable-html';\n\nexport const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list',\n);\n"],"file":"utils.js"}
1
+ {"version":3,"sources":["../src/utils.js"],"names":["filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","addOrRemoveScaleColumn","scales","excludeZeroType","length","reduce","acc","scale","scorePointsLabels","traits","excludeZeroTypes","remove0","slice","map","scorePointsDescriptors","trait","add0","shiftLeft","shiftRight","push"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;;AAEO,IAAMA,sBAAsB,GAAG,CAACC,iCAAmB,EAApB,EAAwBC,MAAxB,CACpC,UAACC,CAAD;AAAA,SAAOA,CAAC,KAAK,OAAN,IAAiBA,CAAC,KAAK,eAAvB,IAA0CA,CAAC,KAAK,eAAvD;AAAA,CADoC,CAA/B;;;AAIA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,MAAD,EAASC,eAAT,EAA6B;AACjE,MAAI,CAACD,MAAD,IAAW,CAACA,MAAM,CAACE,MAAvB,EAA+B;AAC7B,WAAO,EAAP;AACD;;AAED,SAAOF,MAAM,CAACG,MAAP,CAAc,UAACC,GAAD,EAAMC,KAAN,EAAgB;AACnC,eAAoCA,KAAK,IAAI,EAA7C;AAAA,QAAMC,iBAAN,QAAMA,iBAAN;AAAA,QAAyBC,MAAzB,QAAyBA,MAAzB;;AAEA,QAAID,iBAAiB,CAACJ,MAAlB,GAA2B,CAA/B,EAAkC;AAChC,aAAOE,GAAP;AACD;;AAED,YAAQH,eAAR;AACE,WAAKO,yBAAiBC,OAAtB;AAA+B;AAC7B;AACAH,UAAAA,iBAAiB,GAAGA,iBAAiB,CAACI,KAAlB,CAAwB,CAAxB,CAApB;AACAH,UAAAA,MAAM,GAAGA,MAAM,CAACI,GAAP,CAAW;AAAA,gBAAGC,sBAAH,SAAGA,sBAAH;AAAA,gBAA8BC,KAA9B;AAAA,mDACfA,KADe;AAElBD,cAAAA,sBAAsB,EAAEA,sBAAsB,CAACF,KAAvB,CAA6B,CAA7B;AAFN;AAAA,WAAX,CAAT;AAKA;AACD;;AAED,WAAKF,yBAAiBM,IAAtB;AAA4B;AAC1B;AACAR,UAAAA,iBAAiB,IAAI,EAAJ,6CAAWA,iBAAX,EAAjB;AACAC,UAAAA,MAAM,GAAGA,MAAM,CAACI,GAAP,CAAW;AAAA,gBAAGC,sBAAH,SAAGA,sBAAH;AAAA,gBAA8BC,KAA9B;AAAA,mDACfA,KADe;AAElBD,cAAAA,sBAAsB,GAAG,EAAH,6CAAUA,sBAAV;AAFJ;AAAA,WAAX,CAAT;AAKA;AACD;;AAED,WAAKJ,yBAAiBO,SAAtB;AAAiC;AAC/B;AACAT,UAAAA,iBAAiB,GAAGA,iBAAiB,CAACI,KAAlB,CAAwB,CAAxB,EAA2B,CAAC,CAA5B,CAApB;AACAH,UAAAA,MAAM,GAAGA,MAAM,CAACI,GAAP,CAAW;AAAA,gBAAGC,sBAAH,SAAGA,sBAAH;AAAA,gBAA8BC,KAA9B;AAAA,mDACfA,KADe;AAElBD,cAAAA,sBAAsB,EAAEA,sBAAsB,CAACF,KAAvB,CAA6B,CAA7B,EAAgC,CAAC,CAAjC;AAFN;AAAA,WAAX,CAAT;AAKA;AACD;;AAED,WAAKF,yBAAiBQ,UAAtB;AAAkC;AAChC;AACAV,UAAAA,iBAAiB,iDAAOA,iBAAP,IAA0B,EAA1B,EAAjB;AACAC,UAAAA,MAAM,GAAGA,MAAM,CAACI,GAAP,CAAW;AAAA,gBAAGC,sBAAH,SAAGA,sBAAH;AAAA,gBAA8BC,KAA9B;AAAA,mDACfA,KADe;AAElBD,cAAAA,sBAAsB,gDAAMA,sBAAN,IAA8B,EAA9B;AAFJ;AAAA,WAAX,CAAT;AAKA;AACD;;AAED;AACE;AA9CJ;;AAiDAR,IAAAA,GAAG,CAACa,IAAJ,iCAAcZ,KAAd;AAAqBC,MAAAA,iBAAiB,EAAjBA,iBAArB;AAAwCC,MAAAA,MAAM,EAANA;AAAxC;AAEA,WAAOH,GAAP;AACD,GA3DM,EA2DJ,EA3DI,CAAP;AA4DD,CAjEM","sourcesContent":["import { DEFAULT_PLUGINS } from '@pie-lib/pie-toolbox/editable-html';\nimport { excludeZeroTypes } from './modals';\n\nexport const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(\n (p) => p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list',\n);\n\nexport const addOrRemoveScaleColumn = (scales, excludeZeroType) => {\n if (!scales || !scales.length) {\n return [];\n }\n\n return scales.reduce((acc, scale) => {\n let { scorePointsLabels, traits } = scale || {};\n\n if (scorePointsLabels.length < 1) {\n return acc;\n }\n\n switch (excludeZeroType) {\n case excludeZeroTypes.remove0: {\n // removes column 0\n scorePointsLabels = scorePointsLabels.slice(1);\n traits = traits.map(({ scorePointsDescriptors, ...trait }) => ({\n ...trait,\n scorePointsDescriptors: scorePointsDescriptors.slice(1),\n }));\n\n break;\n }\n\n case excludeZeroTypes.add0: {\n // adds empty column at start\n scorePointsLabels = ['', ...scorePointsLabels];\n traits = traits.map(({ scorePointsDescriptors, ...trait }) => ({\n ...trait,\n scorePointsDescriptors: ['', ...scorePointsDescriptors],\n }));\n\n break;\n }\n\n case excludeZeroTypes.shiftLeft: {\n // removes last column\n scorePointsLabels = scorePointsLabels.slice(0, -1);\n traits = traits.map(({ scorePointsDescriptors, ...trait }) => ({\n ...trait,\n scorePointsDescriptors: scorePointsDescriptors.slice(0, -1),\n }));\n\n break;\n }\n\n case excludeZeroTypes.shiftRight: {\n // adds empty column at end\n scorePointsLabels = [...scorePointsLabels, ''];\n traits = traits.map(({ scorePointsDescriptors, ...trait }) => ({\n ...trait,\n scorePointsDescriptors: [...scorePointsDescriptors, ''],\n }));\n\n break;\n }\n\n default:\n break;\n }\n\n acc.push({ ...scale, scorePointsLabels, traits });\n\n return acc;\n }, []);\n};\n"],"file":"utils.js"}
@@ -1,117 +1,117 @@
1
1
  exports.model = (id, element) => ({
2
- "visibleToStudent": true,
3
- "halfScoring": false,
4
- "pointLabels": true,
5
- "description": false,
6
- "standards": false,
7
- "scales": [
2
+ visibleToStudent: true,
3
+ halfScoring: false,
4
+ pointLabels: true,
5
+ description: false,
6
+ standards: false,
7
+ scales: [
8
8
  {
9
- "maxPoints": 4,
10
- "scorePointsLabels": [
11
- "<div>Non-Scorable</div>",
12
- "<div>Developing</div>",
13
- "<div>Progressing</div>",
14
- "<div>Effective</div>"
9
+ maxPoints: 4,
10
+ scorePointsLabels: [
11
+ '<div>Non-Scorable</div>',
12
+ '<div>Developing</div>',
13
+ '<div>Progressing</div>',
14
+ '<div>Effective</div>',
15
15
  ],
16
- "traitLabel": "Trait",
17
- "traits": [
16
+ traitLabel: 'Trait',
17
+ traits: [
18
18
  {
19
- "name": "<div>Ideas</div>",
20
- "standards": [],
21
- "description": "the main message",
22
- "scorePointsDescriptors": [
23
- "<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>",
24
- "<div>Topic undefined and/or difficult to followDetails are unclear</div>",
25
- "<div>Topic too broadDetails are limited</div>",
26
- "<div>Writing stays on topicComplete details given</div>"
27
- ]
19
+ name: '<div>Ideas</div>',
20
+ standards: [],
21
+ description: 'the main message',
22
+ scorePointsDescriptors: [
23
+ '<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>',
24
+ '<div>Topic undefined and/or difficult to followDetails are unclear</div>',
25
+ '<div>Topic too broadDetails are limited</div>',
26
+ '<div>Writing stays on topicComplete details given</div>',
27
+ ],
28
28
  },
29
29
  {
30
- "name": "<div>Organization</div>",
31
- "standards": [],
32
- "description": "the internal structure of the piece",
33
- "scorePointsDescriptors": [
34
- "<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>",
35
- "<div>Does not have a beginning, middle and/or endDoes not have a lead and/or conclusionTransitions confusing and/or not presentNot written in logical orderNo sign of paragraphing / incorrect paragraphing</div>",
36
- "<div>Weak beginning, middle and endHas evidence of a lead and/or conclusion but missing elementsTransitions are used sometimesSome logical orderMost paragraphing incorrect</div>",
37
- "<div>Has an acceptable beginning, middle and endIncludes a lead and conclusionTransitions are used correctlyMostly logical orderMostly correct paragraphing</div>"
38
- ]
30
+ name: '<div>Organization</div>',
31
+ standards: [],
32
+ description: 'the internal structure of the piece',
33
+ scorePointsDescriptors: [
34
+ '<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>',
35
+ '<div>Does not have a beginning, middle and/or endDoes not have a lead and/or conclusionTransitions confusing and/or not presentNot written in logical orderNo sign of paragraphing / incorrect paragraphing</div>',
36
+ '<div>Weak beginning, middle and endHas evidence of a lead and/or conclusion but missing elementsTransitions are used sometimesSome logical orderMost paragraphing incorrect</div>',
37
+ '<div>Has an acceptable beginning, middle and endIncludes a lead and conclusionTransitions are used correctlyMostly logical orderMostly correct paragraphing</div>',
38
+ ],
39
39
  },
40
40
  {
41
- "name": "<div>Word Choice</div>",
42
- "standards": [],
43
- "description": "the vocabulary a writer chooses to convey meaning",
44
- "scorePointsDescriptors": [
45
- "<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>",
46
- "<div>Vocabulary is limited/used incorrectlyNo figurative language; words do not convey meaning</div>",
47
- "<div>Generally correct wordsAttempt at figurative languageand/or words convey general meaning</div>",
48
- "<div>Some active verbs and precise nounsEffective use of figurative language and/or words that enhance meaning</div>"
49
- ]
41
+ name: '<div>Word Choice</div>',
42
+ standards: [],
43
+ description: 'the vocabulary a writer chooses to convey meaning',
44
+ scorePointsDescriptors: [
45
+ '<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>',
46
+ '<div>Vocabulary is limited/used incorrectlyNo figurative language; words do not convey meaning</div>',
47
+ '<div>Generally correct wordsAttempt at figurative languageand/or words convey general meaning</div>',
48
+ '<div>Some active verbs and precise nounsEffective use of figurative language and/or words that enhance meaning</div>',
49
+ ],
50
50
  },
51
51
  {
52
- "name": "<div>Sentence Fluency</div>",
53
- "standards": [],
54
- "description": "the rhythm and flow of the language",
55
- "scorePointsDescriptors": [
56
- "<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>",
57
- "<div>No sentences are clearNo variety in sentence structureFrequent run-ons and/or fragments are present</div>",
58
- "<div>Some sentences are clearSentence variety used rarelySome run-ons and/or fragments are present</div>",
59
- "<div>Most sentences are clearSome sentence variety is usedRun-ons and/or fragments are rare</div>"
60
- ]
52
+ name: '<div>Sentence Fluency</div>',
53
+ standards: [],
54
+ description: 'the rhythm and flow of the language',
55
+ scorePointsDescriptors: [
56
+ '<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>',
57
+ '<div>No sentences are clearNo variety in sentence structureFrequent run-ons and/or fragments are present</div>',
58
+ '<div>Some sentences are clearSentence variety used rarelySome run-ons and/or fragments are present</div>',
59
+ '<div>Most sentences are clearSome sentence variety is usedRun-ons and/or fragments are rare</div>',
60
+ ],
61
61
  },
62
62
  {
63
- "name": "<div>Conventions</div>",
64
- "standards": [],
65
- "description": "the mechanical correctness",
66
- "scorePointsDescriptors": [
67
- "<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>",
68
- "<div>Many distracting errors are present in grammar, punctuation, capitalization and/or spelling</div>",
69
- "<div>Errors in grammar, punctuation, capitalization and/or spelling are present and some distract from meaning</div>",
70
- "<div>Errors in grammar, punctuation, capitalization and/or spelling are present but don’t distract from meaning</div>"
71
- ]
63
+ name: '<div>Conventions</div>',
64
+ standards: [],
65
+ description: 'the mechanical correctness',
66
+ scorePointsDescriptors: [
67
+ '<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>',
68
+ '<div>Many distracting errors are present in grammar, punctuation, capitalization and/or spelling</div>',
69
+ '<div>Errors in grammar, punctuation, capitalization and/or spelling are present and some distract from meaning</div>',
70
+ '<div>Errors in grammar, punctuation, capitalization and/or spelling are present but don’t distract from meaning</div>',
71
+ ],
72
72
  },
73
73
  {
74
- "name": "<div>Voice</div>",
75
- "standards": [],
76
- "description": "the personal tone and flavor of the author's message",
77
- "scorePointsDescriptors": [
78
- "<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>",
79
- "<div>Not concerned with audience or purposeNo viewpoint (perspective) usedWriting is mechanical and lifeless</div>",
80
- "<div>Shows beginning awareness of audience/purposeSome viewpoint (perspective) used throughout the pieceWriting is distant, too formal or informal</div>",
81
- "<div>Awareness of audience; purpose is clear most of the timeUses viewpoint (perspective) throughout most of the paperWriting is pleasant, agreeable and satisfying</div>"
82
- ]
83
- }
84
- ]
74
+ name: '<div>Voice</div>',
75
+ standards: [],
76
+ description: "the personal tone and flavor of the author's message",
77
+ scorePointsDescriptors: [
78
+ '<div>Student’s response is blank, not in English, not legible, or does not respond to the prompt.</div>',
79
+ '<div>Not concerned with audience or purposeNo viewpoint (perspective) usedWriting is mechanical and lifeless</div>',
80
+ '<div>Shows beginning awareness of audience/purposeSome viewpoint (perspective) used throughout the pieceWriting is distant, too formal or informal</div>',
81
+ '<div>Awareness of audience; purpose is clear most of the timeUses viewpoint (perspective) throughout most of the paperWriting is pleasant, agreeable and satisfying</div>',
82
+ ],
83
+ },
84
+ ],
85
85
  },
86
86
  {
87
- "maxPoints": 5,
88
- "scorePointsLabels": [
89
- "<div>Non-Scorable</div>",
90
- "<div>Unsatisfactory</div>",
91
- "<div>Satisfactory</div>",
92
- "<div></div>",
93
- "<div></div>"
87
+ maxPoints: 5,
88
+ scorePointsLabels: [
89
+ '<div>Non-Scorable</div>',
90
+ '<div>Unsatisfactory</div>',
91
+ '<div>Satisfactory</div>',
92
+ '<div></div>',
93
+ '<div></div>',
94
94
  ],
95
- "traitLabel": "Category",
96
- "traits": [
95
+ traitLabel: 'Category',
96
+ traits: [
97
97
  {
98
- "name": "<div>Presentation</div>",
99
- "standards": [],
100
- "description": "",
101
- "scorePointsDescriptors": [
102
- "<div>Handwriting is unreadable, or response is blank, not in English, or too brief to evaluate. </div>",
103
- "<div>Handwriting poorOverall appearance is distracting to unacceptable</div>",
104
- "<div>Handwriting is generally legibleOverall appearance is acceptable or better</div>",
105
- "<div></div>",
106
- "<div></div>"
107
- ]
108
- }
109
- ]
110
- }
98
+ name: '<div>Presentation</div>',
99
+ standards: [],
100
+ description: '',
101
+ scorePointsDescriptors: [
102
+ '<div>Handwriting is unreadable, or response is blank, not in English, or too brief to evaluate. </div>',
103
+ '<div>Handwriting poorOverall appearance is distracting to unacceptable</div>',
104
+ '<div>Handwriting is generally legibleOverall appearance is acceptable or better</div>',
105
+ '<div></div>',
106
+ '<div></div>',
107
+ ],
108
+ },
109
+ ],
110
+ },
111
111
  ],
112
- "excludeZero": true,
113
- "maxPointsEnabled": true,
114
- "addScaleEnabled": true,
112
+ excludeZero: true,
113
+ maxPointsEnabled: true,
114
+ addScaleEnabled: true,
115
115
  id,
116
- element
116
+ element,
117
117
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/multi-trait-rubric",
3
3
  "repository": "pie-framework/pie-elements",
4
- "version": "4.5.8-next.0+6e96523fc",
4
+ "version": "4.5.8-next.14+c02f2f3c7",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -15,7 +15,7 @@
15
15
  "react": "^16.8.1",
16
16
  "react-dom": "^16.8.1"
17
17
  },
18
- "gitHead": "6e96523fcee4d604e6e3e014c42e3353e771a37e",
18
+ "gitHead": "c02f2f3c763ce1bbb780d17ae0f450323009e28e",
19
19
  "scripts": {
20
20
  "postpublish": "../../scripts/postpublish"
21
21
  },