@pie-element/multi-trait-rubric 8.1.2-next.2 → 8.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.json +1 -0
  2. package/CHANGELOG.md +1590 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +55 -0
  5. package/configure/CHANGELOG.json +1 -0
  6. package/configure/CHANGELOG.md +1485 -0
  7. package/configure/lib/common.js +424 -0
  8. package/configure/lib/common.js.map +1 -0
  9. package/configure/lib/defaults.js +184 -0
  10. package/configure/lib/defaults.js.map +1 -0
  11. package/configure/lib/index.js +157 -0
  12. package/configure/lib/index.js.map +1 -0
  13. package/configure/lib/main.js +454 -0
  14. package/configure/lib/main.js.map +1 -0
  15. package/configure/lib/modals.js +206 -0
  16. package/configure/lib/modals.js.map +1 -0
  17. package/configure/lib/scale.js +478 -0
  18. package/configure/lib/scale.js.map +1 -0
  19. package/configure/lib/trait.js +275 -0
  20. package/configure/lib/trait.js.map +1 -0
  21. package/configure/lib/traitsHeader.js +235 -0
  22. package/configure/lib/traitsHeader.js.map +1 -0
  23. package/configure/lib/utils.js +87 -0
  24. package/configure/lib/utils.js.map +1 -0
  25. package/configure/package.json +24 -0
  26. package/controller/CHANGELOG.json +1 -0
  27. package/controller/CHANGELOG.md +911 -0
  28. package/controller/lib/defaults.js +18 -0
  29. package/controller/lib/defaults.js.map +1 -0
  30. package/controller/lib/index.js +158 -0
  31. package/controller/lib/index.js.map +1 -0
  32. package/controller/lib/utils.js +11 -0
  33. package/controller/lib/utils.js.map +1 -0
  34. package/controller/package.json +14 -0
  35. package/docs/config-schema.json +1628 -0
  36. package/docs/config-schema.json.md +1202 -0
  37. package/docs/demo/config.js +8 -0
  38. package/docs/demo/generate.js +117 -0
  39. package/docs/demo/index.html +1 -0
  40. package/docs/demo/session.js +6 -0
  41. package/docs/pie-schema.json +861 -0
  42. package/docs/pie-schema.json.md +614 -0
  43. package/lib/index.js +54 -0
  44. package/lib/index.js.map +1 -0
  45. package/lib/main.js +123 -0
  46. package/lib/main.js.map +1 -0
  47. package/lib/scale.js +248 -0
  48. package/lib/scale.js.map +1 -0
  49. package/lib/trait.js +83 -0
  50. package/lib/trait.js.map +1 -0
  51. package/package.json +15 -84
  52. package/configure.js +0 -2
  53. package/controller.js +0 -1
  54. package/dist/author/common.d.ts +0 -90
  55. package/dist/author/common.js +0 -275
  56. package/dist/author/defaults.d.ts +0 -153
  57. package/dist/author/defaults.js +0 -113
  58. package/dist/author/index.d.ts +0 -22
  59. package/dist/author/index.js +0 -89
  60. package/dist/author/main.d.ts +0 -43
  61. package/dist/author/main.js +0 -247
  62. package/dist/author/modals.d.ts +0 -94
  63. package/dist/author/modals.js +0 -171
  64. package/dist/author/scale.d.ts +0 -46
  65. package/dist/author/scale.js +0 -280
  66. package/dist/author/trait.d.ts +0 -70
  67. package/dist/author/trait.js +0 -202
  68. package/dist/author/traitsHeader.d.ts +0 -28
  69. package/dist/author/traitsHeader.js +0 -172
  70. package/dist/author/utils.d.ts +0 -10
  71. package/dist/author/utils.js +0 -41
  72. package/dist/browser/Typography-CGQjcqGj.js +0 -9000
  73. package/dist/browser/Typography-CGQjcqGj.js.map +0 -1
  74. package/dist/browser/author/index.js +0 -41731
  75. package/dist/browser/author/index.js.map +0 -1
  76. package/dist/browser/controller/index.js +0 -70
  77. package/dist/browser/controller/index.js.map +0 -1
  78. package/dist/browser/delivery/index.js +0 -523
  79. package/dist/browser/delivery/index.js.map +0 -1
  80. package/dist/browser/multi-trait-rubric.css +0 -2
  81. package/dist/controller/defaults.d.ts +0 -20
  82. package/dist/controller/defaults.js +0 -14
  83. package/dist/controller/index.d.ts +0 -26
  84. package/dist/controller/index.js +0 -57
  85. package/dist/controller/utils.d.ts +0 -9
  86. package/dist/controller/utils.js +0 -4
  87. package/dist/delivery/index.d.ts +0 -17
  88. package/dist/delivery/index.js +0 -37
  89. package/dist/delivery/main.d.ts +0 -15
  90. package/dist/delivery/main.js +0 -95
  91. package/dist/delivery/scale.d.ts +0 -17
  92. package/dist/delivery/scale.js +0 -175
  93. package/dist/delivery/trait.d.ts +0 -27
  94. package/dist/delivery/trait.js +0 -44
  95. package/dist/index.d.ts +0 -1
  96. package/dist/index.iife.d.ts +0 -8
  97. package/dist/index.iife.js +0 -145
  98. package/dist/index.js +0 -2
  99. package/dist/runtime-support.d.ts +0 -12
  100. package/dist/runtime-support.js +0 -12
@@ -0,0 +1,478 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.Scale = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _styles = require("@mui/material/styles");
12
+ var _ArrowBackIos = _interopRequireDefault(require("@mui/icons-material/ArrowBackIos"));
13
+ var _ArrowForwardIos = _interopRequireDefault(require("@mui/icons-material/ArrowForwardIos"));
14
+ var _drag = require("@pie-lib/drag");
15
+ var _traitsHeader = _interopRequireDefault(require("./traitsHeader"));
16
+ var _trait = _interopRequireDefault(require("./trait"));
17
+ var _common = require("./common");
18
+ var _modals = require("./modals");
19
+ const AdjustedBlockWidth = _common.BlockWidth + 2 * 8; // 8 is padding
20
+
21
+ const ScaleWrapper = (0, _styles.styled)('div')(({
22
+ theme
23
+ }) => ({
24
+ display: 'flex',
25
+ flexDirection: 'column',
26
+ wordBreak: 'break-word',
27
+ position: 'relative',
28
+ marginBottom: theme.spacing(2.5)
29
+ }));
30
+ class Scale extends _react.default.Component {
31
+ constructor(...args) {
32
+ super(...args);
33
+ (0, _defineProperty2.default)(this, "state", {
34
+ showDecreaseMaxPointsDialog: false,
35
+ showDeleteScaleDialog: false,
36
+ showDeleteTraitDialog: false,
37
+ currentPosition: 0,
38
+ showRight: null,
39
+ showLeft: null,
40
+ showInfoDialog: false,
41
+ infoDialogText: ''
42
+ });
43
+ (0, _defineProperty2.default)(this, "set", newState => this.setState(newState));
44
+ // Max Points
45
+ (0, _defineProperty2.default)(this, "updateMaxPointsFieldValue", ({
46
+ target
47
+ }) => {
48
+ const {
49
+ scale,
50
+ scaleIndex,
51
+ onScaleChanged
52
+ } = this.props || {};
53
+ const {
54
+ maxPoints
55
+ } = scale;
56
+ const numberValue = parseInt(target.value, 10);
57
+ this.setState({
58
+ currentPosition: 0,
59
+ showLeft: false,
60
+ showRight: this.getMaxScroll()
61
+ });
62
+ if (numberValue < maxPoints) {
63
+ this.showDecreaseMaxPointsModal({
64
+ newMaxPoints: numberValue
65
+ });
66
+ } else {
67
+ onScaleChanged(scaleIndex, {
68
+ maxPoints: numberValue
69
+ });
70
+ }
71
+ });
72
+ (0, _defineProperty2.default)(this, "showDecreaseMaxPointsModal", ({
73
+ newMaxPoints
74
+ }) => this.set({
75
+ showDecreaseMaxPointsDialog: true,
76
+ newMaxPoints
77
+ }));
78
+ (0, _defineProperty2.default)(this, "hideDecreaseMaxPointsModal", () => this.set({
79
+ showDecreaseMaxPointsDialog: false,
80
+ newMaxPoints: undefined
81
+ }));
82
+ (0, _defineProperty2.default)(this, "changeMaxPoints", () => {
83
+ const {
84
+ newMaxPoints
85
+ } = this.state || {};
86
+ const {
87
+ scaleIndex,
88
+ onScaleChanged
89
+ } = this.props || {};
90
+ if (newMaxPoints) {
91
+ onScaleChanged(scaleIndex, {
92
+ maxPoints: newMaxPoints
93
+ });
94
+ }
95
+ this.hideDecreaseMaxPointsModal();
96
+ });
97
+ // Delete Scale
98
+ (0, _defineProperty2.default)(this, "showDeleteScaleModal", () => this.set({
99
+ showDeleteScaleDialog: true
100
+ }));
101
+ (0, _defineProperty2.default)(this, "hideDeleteScaleModal", () => this.set({
102
+ showDeleteScaleDialog: false
103
+ }));
104
+ (0, _defineProperty2.default)(this, "deleteScale", () => {
105
+ const {
106
+ scaleIndex,
107
+ onScaleRemoved
108
+ } = this.props || {};
109
+ this.hideDeleteScaleModal();
110
+ onScaleRemoved(scaleIndex);
111
+ });
112
+ // Delete Trait
113
+ (0, _defineProperty2.default)(this, "showDeleteTraitModal", traitToDeleteIndex => this.set({
114
+ showDeleteTraitDialog: true,
115
+ traitToDeleteIndex
116
+ }));
117
+ (0, _defineProperty2.default)(this, "hideDeleteTraitModal", () => this.set({
118
+ showDeleteTraitDialog: false,
119
+ traitToDeleteIndex: undefined
120
+ }));
121
+ (0, _defineProperty2.default)(this, "onTraitRemoved", () => {
122
+ const {
123
+ traitToDeleteIndex
124
+ } = this.state;
125
+ const {
126
+ scale,
127
+ scaleIndex,
128
+ onScaleChanged,
129
+ minNoOfTraits
130
+ } = this.props || {};
131
+ let {
132
+ traits,
133
+ traitLabel
134
+ } = scale || {};
135
+ if (traitToDeleteIndex < 0 || traitToDeleteIndex >= traits.length) return;
136
+ if (traits.length === minNoOfTraits) {
137
+ this.set({
138
+ infoDialogText: `There can't be less than ${minNoOfTraits} ${(traitLabel || 'trait').toLowerCase()}s.`,
139
+ showInfoDialog: true
140
+ });
141
+ return false;
142
+ }
143
+ traits = [...traits.slice(0, traitToDeleteIndex), ...traits.slice(traitToDeleteIndex + 1)];
144
+ onScaleChanged(scaleIndex, {
145
+ traits
146
+ });
147
+ this.hideDeleteTraitModal();
148
+ });
149
+ (0, _defineProperty2.default)(this, "onTraitAdded", () => {
150
+ const {
151
+ scale,
152
+ scaleIndex,
153
+ onScaleChanged,
154
+ maxNoOfTraits
155
+ } = this.props || {};
156
+ const {
157
+ traits,
158
+ scorePointsLabels
159
+ } = scale || {};
160
+ if (traits.length === maxNoOfTraits) {
161
+ this.set({
162
+ infoDialogText: `There can't be more than ${maxNoOfTraits} scales.`,
163
+ showInfoDialog: true
164
+ });
165
+ return false;
166
+ }
167
+ traits.push({
168
+ name: '',
169
+ description: '',
170
+ standards: [],
171
+ scorePointsDescriptors: Array.from({
172
+ length: scorePointsLabels.length
173
+ }, () => '')
174
+ });
175
+ onScaleChanged(scaleIndex, {
176
+ traits
177
+ });
178
+ });
179
+ (0, _defineProperty2.default)(this, "onTraitChanged", (traitIndex, trait) => {
180
+ const {
181
+ scale,
182
+ scaleIndex,
183
+ onScaleChanged
184
+ } = this.props || {};
185
+ const {
186
+ traits
187
+ } = scale || {};
188
+ if (traitIndex >= 0 && traitIndex < traits.length) {
189
+ traits[traitIndex] = trait;
190
+ onScaleChanged(scaleIndex, {
191
+ traits
192
+ });
193
+ }
194
+ });
195
+ (0, _defineProperty2.default)(this, "onTraitDropped", event => {
196
+ const {
197
+ active,
198
+ over
199
+ } = event;
200
+ if (!over || !active) return;
201
+ const activeData = active.data.current;
202
+ const overData = over.data.current;
203
+ if (activeData?.type === 'trait' && overData?.type === 'trait') {
204
+ const oldIndex = activeData.index;
205
+ const newIndex = overData.index;
206
+ if (oldIndex === newIndex) return;
207
+ const {
208
+ scale,
209
+ scaleIndex,
210
+ onScaleChanged
211
+ } = this.props || {};
212
+ const {
213
+ traits
214
+ } = scale || {};
215
+ const cup = traits[oldIndex];
216
+ const remainingTraits = traits.filter((item, index) => index !== oldIndex);
217
+ const newTraits = [...remainingTraits.slice(0, newIndex), cup, ...remainingTraits.slice(newIndex)];
218
+ onScaleChanged(scaleIndex, {
219
+ traits: newTraits
220
+ });
221
+ }
222
+ });
223
+ (0, _defineProperty2.default)(this, "decreasePosition", () => {
224
+ const {
225
+ currentPosition
226
+ } = this.state;
227
+ const decreasedPosition = Math.max(currentPosition - AdjustedBlockWidth, 0);
228
+ const maxScroll = this.getMaxScroll();
229
+ this.setState({
230
+ currentPosition: decreasedPosition,
231
+ showRight: decreasedPosition < maxScroll,
232
+ showLeft: decreasedPosition > 0
233
+ });
234
+ });
235
+ (0, _defineProperty2.default)(this, "getMaxScroll", () => {
236
+ if (!this.secondaryBlockRef) return 0;
237
+
238
+ // block count * BlockWidth
239
+ // the header may have slightly larger scrollWidth due to inner component styling (borders, padding),
240
+ // so we use the minimum to keep header and trait rows aligned.
241
+ const headerScrollWidth = this.secondaryBlockRef.scrollWidth;
242
+ const numberOfBlocks = this.getNumberOfBlocks();
243
+ const expectedContentWidth = numberOfBlocks * _common.BlockWidth;
244
+ const scrollWidth = Math.min(headerScrollWidth, expectedContentWidth);
245
+ return Math.max(0, scrollWidth - this.secondaryBlockRef.offsetWidth);
246
+ });
247
+ (0, _defineProperty2.default)(this, "getNumberOfBlocks", () => {
248
+ const {
249
+ scale,
250
+ showStandards,
251
+ showDescription,
252
+ excludeZero
253
+ } = this.props;
254
+ const {
255
+ maxPoints
256
+ } = scale || {};
257
+ const scorePointCount = maxPoints - (excludeZero ? 1 : 0) + 1;
258
+ return (showStandards ? 1 : 0) + (showDescription ? 1 : 0) + scorePointCount;
259
+ });
260
+ (0, _defineProperty2.default)(this, "increasePosition", () => {
261
+ const {
262
+ currentPosition
263
+ } = this.state;
264
+ const maxScroll = this.getMaxScroll();
265
+ const increasedPosition = Math.min(currentPosition + AdjustedBlockWidth, maxScroll);
266
+ this.setState({
267
+ currentPosition: increasedPosition,
268
+ showRight: increasedPosition < maxScroll,
269
+ showLeft: increasedPosition > 0
270
+ });
271
+ });
272
+ }
273
+ componentDidMount() {
274
+ if (this.state.showRight === null && this.secondaryBlockRef) {
275
+ this.setState({
276
+ showRight: this.getMaxScroll()
277
+ });
278
+ }
279
+ }
280
+ componentDidUpdate(prevProps) {
281
+ if (prevProps.scale.maxPoints !== this.props.scale.maxPoints || prevProps.showDescription !== this.props.showDescription || prevProps.excludeZero !== this.props.excludeZero) {
282
+ this.setState({
283
+ showRight: this.getMaxScroll()
284
+ });
285
+ }
286
+ }
287
+ UNSAFE_componentWillReceiveProps(nextProps) {
288
+ if (nextProps.excludeZero !== this.props.excludeZero || nextProps.showStandards !== this.props.showStandards || nextProps.showDescription !== this.props.showDescription) {
289
+ this.setState({
290
+ currentPosition: 0,
291
+ showLeft: false,
292
+ showRight: this.getMaxScroll()
293
+ });
294
+ }
295
+ }
296
+ render() {
297
+ const {
298
+ errors,
299
+ scale,
300
+ scaleIndex,
301
+ showStandards,
302
+ onScaleChanged,
303
+ excludeZero,
304
+ showDescription,
305
+ showLevelTagInput,
306
+ showScorePointLabels,
307
+ enableDragAndDrop,
308
+ spellCheck,
309
+ width,
310
+ uploadSoundSupport,
311
+ maxPointsEnabled,
312
+ mathMlOptions = {},
313
+ maxMaxPoints,
314
+ expandedPluginProps = {},
315
+ labelPluginProps = {},
316
+ imageSupport = {}
317
+ } = this.props || {};
318
+ const {
319
+ maxPoints,
320
+ scorePointsLabels,
321
+ traitLabel,
322
+ traits
323
+ } = scale || {};
324
+ const {
325
+ showDecreaseMaxPointsDialog,
326
+ showDeleteScaleDialog,
327
+ showDeleteTraitDialog,
328
+ currentPosition,
329
+ showRight,
330
+ showLeft,
331
+ showInfoDialog,
332
+ infoDialogText
333
+ } = this.state;
334
+ const {
335
+ traitsErrors,
336
+ scorePointsErrors
337
+ } = errors || {};
338
+ const currentScaleTraitsErrors = traitsErrors && traitsErrors[scaleIndex] || {};
339
+ const currentScalePointsLabelsErrors = scorePointsErrors && scorePointsErrors[scaleIndex] || {};
340
+ const scorePointsValues = [];
341
+ const secondaryBlockWidth = parseInt(width) - _common.DragHandleSpace - _common.PrimaryBlockWidth || 320; // 320 is minWidth
342
+
343
+ // determining the score points values
344
+ for (let pointValue = maxPoints; pointValue >= excludeZero ? 1 : 0; pointValue -= 1) {
345
+ scorePointsValues.push(pointValue);
346
+ }
347
+ return /*#__PURE__*/_react.default.createElement(_drag.DragProvider, {
348
+ onDragEnd: this.onTraitDropped
349
+ }, /*#__PURE__*/_react.default.createElement(ScaleWrapper, {
350
+ key: `scale-${scaleIndex}`,
351
+ ref: ref => {
352
+ this.scaleWrapper = ref;
353
+ }
354
+ }, /*#__PURE__*/_react.default.createElement(_traitsHeader.default, {
355
+ setSecondaryBlockRef: ref => {
356
+ if (ref) {
357
+ this.secondaryBlockRef = ref;
358
+ }
359
+ },
360
+ key: 'header-key',
361
+ errors: currentScalePointsLabelsErrors,
362
+ traitLabel: traitLabel,
363
+ scorePointsValues: scorePointsValues,
364
+ scorePointsLabels: scorePointsLabels,
365
+ onScaleChange: params => onScaleChanged(scaleIndex, params),
366
+ onTraitLabelChange: label => onScaleChanged(scaleIndex, {
367
+ traitLabel: label
368
+ }),
369
+ showStandards: showStandards,
370
+ showDescription: showDescription,
371
+ showLevelTagInput: showLevelTagInput,
372
+ showScorePointLabels: showScorePointLabels,
373
+ maxPoints: maxPoints,
374
+ updateMaxPointsFieldValue: this.updateMaxPointsFieldValue,
375
+ scaleIndex: scaleIndex,
376
+ showDeleteScaleModal: this.showDeleteScaleModal,
377
+ currentPosition: currentPosition,
378
+ secondaryBlockWidth: secondaryBlockWidth,
379
+ spellCheck: spellCheck,
380
+ uploadSoundSupport: uploadSoundSupport,
381
+ maxPointsEnabled: maxPointsEnabled,
382
+ mathMlOptions: mathMlOptions,
383
+ maxMaxPoints: maxMaxPoints,
384
+ expandedPluginProps: expandedPluginProps,
385
+ labelPluginProps: labelPluginProps,
386
+ imageSupport: imageSupport
387
+ }), traits.map((trait, index) => /*#__PURE__*/_react.default.createElement(_trait.default, {
388
+ key: index,
389
+ index: index,
390
+ error: currentScaleTraitsErrors && currentScaleTraitsErrors[index],
391
+ trait: trait,
392
+ traitLabel: traitLabel || 'Trait',
393
+ scorePointsValues: scorePointsValues,
394
+ scorePointsLabels: scorePointsLabels,
395
+ onTraitRemoved: () => this.showDeleteTraitModal(index),
396
+ onTraitChanged: trait => this.onTraitChanged(index, trait),
397
+ showStandards: showStandards,
398
+ showDescription: showDescription,
399
+ maxPoints: maxPoints,
400
+ currentPosition: currentPosition,
401
+ enableDragAndDrop: enableDragAndDrop,
402
+ secondaryBlockWidth: secondaryBlockWidth,
403
+ spellCheck: spellCheck,
404
+ uploadSoundSupport: uploadSoundSupport,
405
+ mathMlOptions: mathMlOptions,
406
+ expandedPluginProps: expandedPluginProps,
407
+ labelPluginProps: labelPluginProps,
408
+ imageSupport: imageSupport
409
+ })), /*#__PURE__*/_react.default.createElement(_common.Arrow, {
410
+ width: `${AdjustedBlockWidth / 2}px`,
411
+ show: showLeft,
412
+ onClick: this.decreasePosition,
413
+ left: `${_common.PrimaryBlockWidth}px`,
414
+ showLevelTagInput: showLevelTagInput
415
+ }, /*#__PURE__*/_react.default.createElement(_ArrowBackIos.default, null)), /*#__PURE__*/_react.default.createElement(_common.Arrow, {
416
+ width: `${AdjustedBlockWidth / 2}px`,
417
+ show: showRight,
418
+ onClick: this.increasePosition,
419
+ showLevelTagInput: showLevelTagInput
420
+ }, /*#__PURE__*/_react.default.createElement(_ArrowForwardIos.default, null)), /*#__PURE__*/_react.default.createElement(_common.MultiTraitButton, {
421
+ onClick: this.onTraitAdded
422
+ }, /*#__PURE__*/_react.default.createElement("div", {
423
+ dangerouslySetInnerHTML: {
424
+ __html: `Add ${traitLabel || ' Trait'}`
425
+ }
426
+ })), /*#__PURE__*/_react.default.createElement(_modals.DecreaseMaxPoints, {
427
+ open: !!showDecreaseMaxPointsDialog,
428
+ deleteScorePoints: this.changeMaxPoints,
429
+ cancel: this.hideDecreaseMaxPointsModal
430
+ }), /*#__PURE__*/_react.default.createElement(_modals.DeleteScale, {
431
+ open: !!showDeleteScaleDialog,
432
+ scaleIndex: scaleIndex,
433
+ deleteScale: this.deleteScale,
434
+ cancel: this.hideDeleteScaleModal
435
+ }), /*#__PURE__*/_react.default.createElement(_modals.DeleteTrait, {
436
+ open: !!showDeleteTraitDialog,
437
+ deleteTrait: this.onTraitRemoved,
438
+ cancel: this.hideDeleteTraitModal,
439
+ traitLabel: traitLabel.toLowerCase()
440
+ }), /*#__PURE__*/_react.default.createElement(_modals.InfoDialog, {
441
+ open: showInfoDialog,
442
+ text: infoDialogText,
443
+ onClose: () => this.set({
444
+ showInfoDialog: false
445
+ })
446
+ })));
447
+ }
448
+ }
449
+ exports.Scale = Scale;
450
+ Scale.propTypes = {
451
+ errors: _propTypes.default.object,
452
+ scale: _propTypes.default.shape({
453
+ maxPoints: _propTypes.default.number,
454
+ scorePointsLabels: _propTypes.default.arrayOf(_propTypes.default.string),
455
+ traitLabel: _propTypes.default.string,
456
+ traits: _propTypes.default.arrayOf(_propTypes.default.shape({
457
+ name: _propTypes.default.string,
458
+ standards: _propTypes.default.arrayOf(_propTypes.default.string),
459
+ scorePointsDescriptors: _propTypes.default.arrayOf(_propTypes.default.string),
460
+ description: _propTypes.default.string
461
+ }))
462
+ }),
463
+ width: _propTypes.default.string,
464
+ excludeZero: _propTypes.default.bool,
465
+ scaleIndex: _propTypes.default.number,
466
+ onScaleChanged: _propTypes.default.func,
467
+ onScaleRemoved: _propTypes.default.func,
468
+ showStandards: _propTypes.default.bool,
469
+ showLevelTagInput: _propTypes.default.bool,
470
+ showDescription: _propTypes.default.bool,
471
+ uploadSoundSupport: _propTypes.default.object,
472
+ showScorePointLabels: _propTypes.default.bool,
473
+ enableDragAndDrop: _propTypes.default.bool,
474
+ expandedPluginProps: _propTypes.default.object,
475
+ labelPluginProps: _propTypes.default.object
476
+ };
477
+ var _default = exports.default = Scale;
478
+ //# sourceMappingURL=scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_ArrowBackIos","_ArrowForwardIos","_drag","_traitsHeader","_trait","_common","_modals","AdjustedBlockWidth","BlockWidth","ScaleWrapper","styled","theme","display","flexDirection","wordBreak","position","marginBottom","spacing","Scale","React","Component","constructor","args","_defineProperty2","default","showDecreaseMaxPointsDialog","showDeleteScaleDialog","showDeleteTraitDialog","currentPosition","showRight","showLeft","showInfoDialog","infoDialogText","newState","setState","target","scale","scaleIndex","onScaleChanged","props","maxPoints","numberValue","parseInt","value","getMaxScroll","showDecreaseMaxPointsModal","newMaxPoints","set","undefined","state","hideDecreaseMaxPointsModal","onScaleRemoved","hideDeleteScaleModal","traitToDeleteIndex","minNoOfTraits","traits","traitLabel","length","toLowerCase","slice","hideDeleteTraitModal","maxNoOfTraits","scorePointsLabels","push","name","description","standards","scorePointsDescriptors","Array","from","traitIndex","trait","event","active","over","activeData","data","current","overData","type","oldIndex","index","newIndex","cup","remainingTraits","filter","item","newTraits","decreasedPosition","Math","max","maxScroll","secondaryBlockRef","headerScrollWidth","scrollWidth","numberOfBlocks","getNumberOfBlocks","expectedContentWidth","min","offsetWidth","showStandards","showDescription","excludeZero","scorePointCount","increasedPosition","componentDidMount","componentDidUpdate","prevProps","UNSAFE_componentWillReceiveProps","nextProps","render","errors","showLevelTagInput","showScorePointLabels","enableDragAndDrop","spellCheck","width","uploadSoundSupport","maxPointsEnabled","mathMlOptions","maxMaxPoints","expandedPluginProps","labelPluginProps","imageSupport","traitsErrors","scorePointsErrors","currentScaleTraitsErrors","currentScalePointsLabelsErrors","scorePointsValues","secondaryBlockWidth","DragHandleSpace","PrimaryBlockWidth","pointValue","createElement","DragProvider","onDragEnd","onTraitDropped","key","ref","scaleWrapper","setSecondaryBlockRef","onScaleChange","params","onTraitLabelChange","label","updateMaxPointsFieldValue","showDeleteScaleModal","map","error","onTraitRemoved","showDeleteTraitModal","onTraitChanged","Arrow","show","onClick","decreasePosition","left","increasePosition","MultiTraitButton","onTraitAdded","dangerouslySetInnerHTML","__html","DecreaseMaxPoints","open","deleteScorePoints","changeMaxPoints","cancel","DeleteScale","deleteScale","DeleteTrait","deleteTrait","InfoDialog","text","onClose","exports","propTypes","PropTypes","object","shape","number","arrayOf","string","bool","func","_default"],"sources":["../src/scale.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { styled } from '@mui/material/styles';\nimport ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\n\nimport { DragProvider } from '@pie-lib/drag';\n\nimport TraitsHeader from './traitsHeader';\nimport TraitTile from './trait';\nimport { Arrow, BlockWidth, DragHandleSpace, MultiTraitButton, PrimaryBlockWidth } from './common';\nimport { DecreaseMaxPoints, DeleteScale, DeleteTrait, InfoDialog } from './modals';\n\nconst AdjustedBlockWidth = BlockWidth + 2 * 8; // 8 is padding\n\nconst ScaleWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n wordBreak: 'break-word',\n position: 'relative',\n marginBottom: theme.spacing(2.5),\n}));\n\nexport class Scale extends React.Component {\n state = {\n showDecreaseMaxPointsDialog: false,\n showDeleteScaleDialog: false,\n showDeleteTraitDialog: false,\n currentPosition: 0,\n showRight: null,\n showLeft: null,\n showInfoDialog: false,\n infoDialogText: '',\n };\n\n set = (newState) => this.setState(newState);\n\n componentDidMount() {\n if (this.state.showRight === null && this.secondaryBlockRef) {\n this.setState({ showRight: this.getMaxScroll() });\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.scale.maxPoints !== this.props.scale.maxPoints ||\n prevProps.showDescription !== this.props.showDescription ||\n prevProps.excludeZero !== this.props.excludeZero\n ) {\n this.setState({ showRight: this.getMaxScroll() });\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (\n nextProps.excludeZero !== this.props.excludeZero ||\n nextProps.showStandards !== this.props.showStandards ||\n nextProps.showDescription !== this.props.showDescription\n ) {\n this.setState({\n currentPosition: 0,\n showLeft: false,\n showRight: this.getMaxScroll(),\n });\n }\n }\n\n // Max Points\n updateMaxPointsFieldValue = ({ target }) => {\n const { scale, scaleIndex, onScaleChanged } = this.props || {};\n const { maxPoints } = scale;\n\n const numberValue = parseInt(target.value, 10);\n\n this.setState({\n currentPosition: 0,\n showLeft: false,\n showRight: this.getMaxScroll(),\n });\n\n if (numberValue < maxPoints) {\n this.showDecreaseMaxPointsModal({ newMaxPoints: numberValue });\n } else {\n onScaleChanged(scaleIndex, { maxPoints: numberValue });\n }\n };\n\n showDecreaseMaxPointsModal = ({ newMaxPoints }) => this.set({ showDecreaseMaxPointsDialog: true, newMaxPoints });\n\n hideDecreaseMaxPointsModal = () => this.set({ showDecreaseMaxPointsDialog: false, newMaxPoints: undefined });\n\n changeMaxPoints = () => {\n const { newMaxPoints } = this.state || {};\n const { scaleIndex, onScaleChanged } = this.props || {};\n\n if (newMaxPoints) {\n onScaleChanged(scaleIndex, { maxPoints: newMaxPoints });\n }\n\n this.hideDecreaseMaxPointsModal();\n };\n\n // Delete Scale\n showDeleteScaleModal = () => this.set({ showDeleteScaleDialog: true });\n\n hideDeleteScaleModal = () => this.set({ showDeleteScaleDialog: false });\n\n deleteScale = () => {\n const { scaleIndex, onScaleRemoved } = this.props || {};\n\n this.hideDeleteScaleModal();\n\n onScaleRemoved(scaleIndex);\n };\n\n // Delete Trait\n showDeleteTraitModal = (traitToDeleteIndex) => this.set({ showDeleteTraitDialog: true, traitToDeleteIndex });\n\n hideDeleteTraitModal = () => this.set({ showDeleteTraitDialog: false, traitToDeleteIndex: undefined });\n\n onTraitRemoved = () => {\n const { traitToDeleteIndex } = this.state;\n const { scale, scaleIndex, onScaleChanged, minNoOfTraits } = this.props || {};\n let { traits, traitLabel } = scale || {};\n\n if (traitToDeleteIndex < 0 || traitToDeleteIndex >= traits.length) return;\n\n if (traits.length === minNoOfTraits) {\n this.set({\n infoDialogText: `There can't be less than ${minNoOfTraits} ${(traitLabel || 'trait').toLowerCase()}s.`,\n showInfoDialog: true,\n });\n\n return false;\n }\n\n traits = [...traits.slice(0, traitToDeleteIndex), ...traits.slice(traitToDeleteIndex + 1)];\n\n onScaleChanged(scaleIndex, { traits });\n\n this.hideDeleteTraitModal();\n };\n\n onTraitAdded = () => {\n const { scale, scaleIndex, onScaleChanged, maxNoOfTraits } = this.props || {};\n const { traits, scorePointsLabels } = scale || {};\n\n if (traits.length === maxNoOfTraits) {\n this.set({\n infoDialogText: `There can't be more than ${maxNoOfTraits} scales.`,\n showInfoDialog: true,\n });\n\n return false;\n }\n\n traits.push({\n name: '',\n description: '',\n standards: [],\n scorePointsDescriptors: Array.from({ length: scorePointsLabels.length }, () => ''),\n });\n\n onScaleChanged(scaleIndex, { traits });\n };\n\n onTraitChanged = (traitIndex, trait) => {\n const { scale, scaleIndex, onScaleChanged } = this.props || {};\n const { traits } = scale || {};\n\n if (traitIndex >= 0 && traitIndex < traits.length) {\n traits[traitIndex] = trait;\n\n onScaleChanged(scaleIndex, { traits });\n }\n };\n\n onTraitDropped = (event) => {\n const { active, over } = event;\n \n if (!over || !active) return;\n \n const activeData = active.data.current;\n const overData = over.data.current;\n \n if (activeData?.type === 'trait' && overData?.type === 'trait') {\n const oldIndex = activeData.index;\n const newIndex = overData.index;\n \n if (oldIndex === newIndex) return;\n \n const { scale, scaleIndex, onScaleChanged } = this.props || {};\n const { traits } = scale || {};\n \n const cup = traits[oldIndex];\n const remainingTraits = traits.filter((item, index) => index !== oldIndex);\n const newTraits = [...remainingTraits.slice(0, newIndex), cup, ...remainingTraits.slice(newIndex)];\n\n onScaleChanged(scaleIndex, { traits: newTraits });\n }\n };\n\n decreasePosition = () => {\n const { currentPosition } = this.state;\n const decreasedPosition = Math.max(currentPosition - AdjustedBlockWidth, 0);\n const maxScroll = this.getMaxScroll();\n\n this.setState({\n currentPosition: decreasedPosition,\n showRight: decreasedPosition < maxScroll,\n showLeft: decreasedPosition > 0,\n });\n };\n\n getMaxScroll = () => {\n if (!this.secondaryBlockRef) return 0;\n\n // block count * BlockWidth\n // the header may have slightly larger scrollWidth due to inner component styling (borders, padding),\n // so we use the minimum to keep header and trait rows aligned.\n const headerScrollWidth = this.secondaryBlockRef.scrollWidth;\n const numberOfBlocks = this.getNumberOfBlocks();\n const expectedContentWidth = numberOfBlocks * BlockWidth;\n const scrollWidth = Math.min(headerScrollWidth, expectedContentWidth);\n\n return Math.max(0, scrollWidth - this.secondaryBlockRef.offsetWidth);\n };\n\n getNumberOfBlocks = () => {\n const { scale, showStandards, showDescription, excludeZero } = this.props;\n const { maxPoints } = scale || {};\n const scorePointCount = maxPoints - (excludeZero ? 1 : 0) + 1;\n\n return (showStandards ? 1 : 0) + (showDescription ? 1 : 0) + scorePointCount;\n };\n\n increasePosition = () => {\n const { currentPosition } = this.state;\n const maxScroll = this.getMaxScroll();\n const increasedPosition = Math.min(currentPosition + AdjustedBlockWidth, maxScroll);\n\n this.setState({\n currentPosition: increasedPosition,\n showRight: increasedPosition < maxScroll,\n showLeft: increasedPosition > 0,\n });\n };\n\n render() {\n const {\n errors,\n scale,\n scaleIndex,\n showStandards,\n onScaleChanged,\n excludeZero,\n showDescription,\n showLevelTagInput,\n showScorePointLabels,\n enableDragAndDrop,\n spellCheck,\n width,\n uploadSoundSupport,\n maxPointsEnabled,\n mathMlOptions = {},\n maxMaxPoints,\n expandedPluginProps = {},\n labelPluginProps = {},\n imageSupport = {},\n } = this.props || {};\n\n const { maxPoints, scorePointsLabels, traitLabel, traits } = scale || {};\n\n const {\n showDecreaseMaxPointsDialog,\n showDeleteScaleDialog,\n showDeleteTraitDialog,\n currentPosition,\n showRight,\n showLeft,\n showInfoDialog,\n infoDialogText,\n } = this.state;\n\n const { traitsErrors, scorePointsErrors } = errors || {};\n const currentScaleTraitsErrors = (traitsErrors && traitsErrors[scaleIndex]) || {};\n const currentScalePointsLabelsErrors = (scorePointsErrors && scorePointsErrors[scaleIndex]) || {};\n\n const scorePointsValues = [];\n const secondaryBlockWidth = parseInt(width) - DragHandleSpace - PrimaryBlockWidth || 320; // 320 is minWidth\n\n // determining the score points values\n for (let pointValue = maxPoints; pointValue >= excludeZero ? 1 : 0; pointValue -= 1) {\n scorePointsValues.push(pointValue);\n }\n\n return (\n <DragProvider onDragEnd={this.onTraitDropped}>\n <ScaleWrapper\n key={`scale-${scaleIndex}`}\n ref={(ref) => {\n this.scaleWrapper = ref;\n }}\n >\n <TraitsHeader\n setSecondaryBlockRef={(ref) => {\n if (ref) {\n this.secondaryBlockRef = ref;\n }\n }}\n key={'header-key'}\n errors={currentScalePointsLabelsErrors}\n traitLabel={traitLabel}\n scorePointsValues={scorePointsValues}\n scorePointsLabels={scorePointsLabels}\n onScaleChange={(params) => onScaleChanged(scaleIndex, params)}\n onTraitLabelChange={(label) => onScaleChanged(scaleIndex, { traitLabel: label })}\n showStandards={showStandards}\n showDescription={showDescription}\n showLevelTagInput={showLevelTagInput}\n showScorePointLabels={showScorePointLabels}\n maxPoints={maxPoints}\n updateMaxPointsFieldValue={this.updateMaxPointsFieldValue}\n scaleIndex={scaleIndex}\n showDeleteScaleModal={this.showDeleteScaleModal}\n currentPosition={currentPosition}\n secondaryBlockWidth={secondaryBlockWidth}\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n maxPointsEnabled={maxPointsEnabled}\n mathMlOptions={mathMlOptions}\n maxMaxPoints={maxMaxPoints}\n expandedPluginProps={expandedPluginProps}\n labelPluginProps={labelPluginProps}\n imageSupport={imageSupport}\n />\n\n {traits.map((trait, index) => (\n <TraitTile\n key={index}\n index={index}\n error={currentScaleTraitsErrors && currentScaleTraitsErrors[index]}\n trait={trait}\n traitLabel={traitLabel || 'Trait'}\n scorePointsValues={scorePointsValues}\n scorePointsLabels={scorePointsLabels}\n onTraitRemoved={() => this.showDeleteTraitModal(index)}\n onTraitChanged={(trait) => this.onTraitChanged(index, trait)}\n showStandards={showStandards}\n showDescription={showDescription}\n maxPoints={maxPoints}\n currentPosition={currentPosition}\n enableDragAndDrop={enableDragAndDrop}\n secondaryBlockWidth={secondaryBlockWidth}\n spellCheck={spellCheck}\n uploadSoundSupport={uploadSoundSupport}\n mathMlOptions={mathMlOptions}\n expandedPluginProps={expandedPluginProps}\n labelPluginProps={labelPluginProps}\n imageSupport={imageSupport}\n />\n ))}\n\n <Arrow\n width={`${AdjustedBlockWidth / 2}px`}\n show={showLeft}\n onClick={this.decreasePosition}\n left={`${PrimaryBlockWidth}px`}\n showLevelTagInput={showLevelTagInput}\n >\n <ArrowBackIosIcon />\n </Arrow>\n <Arrow\n width={`${AdjustedBlockWidth / 2}px`}\n show={showRight}\n onClick={this.increasePosition}\n showLevelTagInput={showLevelTagInput}\n >\n <ArrowForwardIosIcon />\n </Arrow>\n\n <MultiTraitButton onClick={this.onTraitAdded}>\n <div dangerouslySetInnerHTML={{ __html: `Add ${traitLabel || ' Trait'}` }} />\n </MultiTraitButton>\n\n <DecreaseMaxPoints\n open={!!showDecreaseMaxPointsDialog}\n deleteScorePoints={this.changeMaxPoints}\n cancel={this.hideDecreaseMaxPointsModal}\n />\n\n <DeleteScale\n open={!!showDeleteScaleDialog}\n scaleIndex={scaleIndex}\n deleteScale={this.deleteScale}\n cancel={this.hideDeleteScaleModal}\n />\n\n <DeleteTrait\n open={!!showDeleteTraitDialog}\n deleteTrait={this.onTraitRemoved}\n cancel={this.hideDeleteTraitModal}\n traitLabel={traitLabel.toLowerCase()}\n />\n <InfoDialog open={showInfoDialog} text={infoDialogText} onClose={() => this.set({ showInfoDialog: false })} />\n </ScaleWrapper>\n </DragProvider>\n );\n }\n}\n\nScale.propTypes = {\n errors: PropTypes.object,\n scale: PropTypes.shape({\n maxPoints: PropTypes.number,\n scorePointsLabels: PropTypes.arrayOf(PropTypes.string),\n traitLabel: PropTypes.string,\n traits: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n standards: PropTypes.arrayOf(PropTypes.string),\n scorePointsDescriptors: PropTypes.arrayOf(PropTypes.string),\n description: PropTypes.string,\n }),\n ),\n }),\n width: PropTypes.string,\n excludeZero: PropTypes.bool,\n scaleIndex: PropTypes.number,\n onScaleChanged: PropTypes.func,\n onScaleRemoved: PropTypes.func,\n showStandards: PropTypes.bool,\n showLevelTagInput: PropTypes.bool,\n showDescription: PropTypes.bool,\n uploadSoundSupport: PropTypes.object,\n showScorePointLabels: PropTypes.bool,\n enableDragAndDrop: PropTypes.bool,\n expandedPluginProps: PropTypes.object,\n labelPluginProps: PropTypes.object,\n};\n\nexport default Scale;\n"],"mappings":"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","ignoreList":[]}