@pie-element/complex-rubric 6.0.0-beta.1 → 6.0.0-beta.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 (108) hide show
  1. package/CHANGELOG.md +0 -11
  2. package/configure/CHANGELOG.md +0 -11
  3. package/configure/package.json +6 -6
  4. package/configure/src/__tests__/index.test.js +15 -0
  5. package/configure/src/__tests__/main.test.jsx +7 -0
  6. package/package.json +5 -5
  7. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.json +0 -1
  8. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.md +0 -2491
  9. package/configure/node_modules/@pie-element/multi-trait-rubric/README.md +0 -55
  10. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.json +0 -1
  11. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.md +0 -2333
  12. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js +0 -429
  13. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js.map +0 -1
  14. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js +0 -181
  15. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js.map +0 -1
  16. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js +0 -157
  17. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js.map +0 -1
  18. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js +0 -455
  19. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js.map +0 -1
  20. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js +0 -206
  21. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js.map +0 -1
  22. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js +0 -451
  23. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js.map +0 -1
  24. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js +0 -275
  25. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js.map +0 -1
  26. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js +0 -233
  27. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js.map +0 -1
  28. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js +0 -87
  29. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js.map +0 -1
  30. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/package.json +0 -24
  31. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.json +0 -1
  32. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.md +0 -1571
  33. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js +0 -18
  34. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js.map +0 -1
  35. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js +0 -158
  36. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js.map +0 -1
  37. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js +0 -11
  38. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js.map +0 -1
  39. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/package.json +0 -14
  40. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json +0 -1628
  41. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json.md +0 -1202
  42. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/config.js +0 -8
  43. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/generate.js +0 -117
  44. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/index.html +0 -1
  45. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/session.js +0 -6
  46. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json +0 -861
  47. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json.md +0 -614
  48. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js +0 -54
  49. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js.map +0 -1
  50. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js +0 -123
  51. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js.map +0 -1
  52. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js +0 -248
  53. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js.map +0 -1
  54. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js +0 -83
  55. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js.map +0 -1
  56. package/configure/node_modules/@pie-element/multi-trait-rubric/package.json +0 -32
  57. package/configure/node_modules/@pie-element/rubric/CHANGELOG.json +0 -257
  58. package/configure/node_modules/@pie-element/rubric/CHANGELOG.md +0 -2774
  59. package/configure/node_modules/@pie-element/rubric/README.md +0 -3
  60. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.json +0 -197
  61. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.md +0 -2541
  62. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js +0 -67
  63. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js.map +0 -1
  64. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js +0 -135
  65. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js.map +0 -1
  66. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js +0 -103
  67. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js.map +0 -1
  68. package/configure/node_modules/@pie-element/rubric/configure/package.json +0 -24
  69. package/configure/node_modules/@pie-element/rubric/configure/src/__tests__/index.test.jsx +0 -178
  70. package/configure/node_modules/@pie-element/rubric/configure/src/defaults.js +0 -42
  71. package/configure/node_modules/@pie-element/rubric/configure/src/index.js +0 -139
  72. package/configure/node_modules/@pie-element/rubric/configure/src/main.jsx +0 -87
  73. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.json +0 -17
  74. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.md +0 -1564
  75. package/configure/node_modules/@pie-element/rubric/controller/lib/defaults.js +0 -15
  76. package/configure/node_modules/@pie-element/rubric/controller/lib/defaults.js.map +0 -1
  77. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js +0 -46
  78. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js.map +0 -1
  79. package/configure/node_modules/@pie-element/rubric/controller/package.json +0 -12
  80. package/configure/node_modules/@pie-element/rubric/controller/src/__tests__/index.test.js +0 -33
  81. package/configure/node_modules/@pie-element/rubric/controller/src/defaults.js +0 -8
  82. package/configure/node_modules/@pie-element/rubric/controller/src/index.js +0 -41
  83. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json +0 -712
  84. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json.md +0 -532
  85. package/configure/node_modules/@pie-element/rubric/docs/demo/config.js +0 -8
  86. package/configure/node_modules/@pie-element/rubric/docs/demo/generate.js +0 -8
  87. package/configure/node_modules/@pie-element/rubric/docs/demo/index.html +0 -2
  88. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json +0 -391
  89. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json.md +0 -281
  90. package/configure/node_modules/@pie-element/rubric/lib/index.js +0 -52
  91. package/configure/node_modules/@pie-element/rubric/lib/index.js.map +0 -1
  92. package/configure/node_modules/@pie-element/rubric/lib/main.js +0 -210
  93. package/configure/node_modules/@pie-element/rubric/lib/main.js.map +0 -1
  94. package/configure/node_modules/@pie-element/rubric/lib/print.js +0 -71
  95. package/configure/node_modules/@pie-element/rubric/lib/print.js.map +0 -1
  96. package/configure/node_modules/@pie-element/rubric/package.json +0 -30
  97. package/configure/node_modules/@pie-element/rubric/src/__tests__/__snapshots__/rubric-view.test.jsx.snap +0 -2641
  98. package/configure/node_modules/@pie-element/rubric/src/__tests__/rubric-view.test.jsx +0 -49
  99. package/configure/node_modules/@pie-element/rubric/src/index.js +0 -48
  100. package/configure/node_modules/@pie-element/rubric/src/main.jsx +0 -226
  101. package/configure/node_modules/@pie-element/rubric/src/print.js +0 -74
  102. package/configure/node_modules/clsx/clsx.d.ts +0 -6
  103. package/configure/node_modules/clsx/dist/clsx.js +0 -1
  104. package/configure/node_modules/clsx/dist/clsx.m.js +0 -1
  105. package/configure/node_modules/clsx/dist/clsx.min.js +0 -1
  106. package/configure/node_modules/clsx/license +0 -9
  107. package/configure/node_modules/clsx/package.json +0 -37
  108. package/configure/node_modules/clsx/readme.md +0 -88
@@ -1,67 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _default = exports.default = {
8
- model: {
9
- points: ['', '', '', ''],
10
- sampleAnswers: [null, null, null, null],
11
- maxPoints: 3,
12
- excludeZero: false,
13
- excludeZeroEnabled: true,
14
- maxPointsEnabled: true
15
- },
16
- configuration: {
17
- baseInputConfiguration: {
18
- audio: {
19
- disabled: false
20
- },
21
- video: {
22
- disabled: false
23
- },
24
- image: {
25
- disabled: false
26
- },
27
- textAlign: {
28
- disabled: true
29
- },
30
- showParagraphs: {
31
- disabled: false
32
- },
33
- separateParagraphs: {
34
- disabled: true
35
- }
36
- },
37
- rubriclessInstruction: {
38
- inputConfiguration: {
39
- audio: {
40
- disabled: false
41
- },
42
- video: {
43
- disabled: false
44
- },
45
- image: {
46
- disabled: false
47
- }
48
- }
49
- },
50
- showExcludeZero: {
51
- settings: true,
52
- label: 'Ability to exclude zero'
53
- },
54
- showMaxPoint: {
55
- settings: true,
56
- label: 'Show max points dropdown'
57
- },
58
- settingsPanelDisabled: false,
59
- // width: '500px'
60
- mathMlOptions: {
61
- mmlOutput: false,
62
- mmlEditing: false
63
- },
64
- maxMaxPoints: 9
65
- }
66
- };
67
- //# sourceMappingURL=defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","names":["model","points","sampleAnswers","maxPoints","excludeZero","excludeZeroEnabled","maxPointsEnabled","configuration","baseInputConfiguration","audio","disabled","video","image","textAlign","showParagraphs","separateParagraphs","rubriclessInstruction","inputConfiguration","showExcludeZero","settings","label","showMaxPoint","settingsPanelDisabled","mathMlOptions","mmlOutput","mmlEditing","maxMaxPoints"],"sources":["../src/defaults.js"],"sourcesContent":["export default {\n model: {\n points: ['', '', '', ''],\n sampleAnswers: [null, null, null, null],\n maxPoints: 3,\n excludeZero: false,\n excludeZeroEnabled: true,\n maxPointsEnabled: true,\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n textAlign: { disabled: true },\n showParagraphs: { disabled: false },\n separateParagraphs: { disabled: true },\n },\n rubriclessInstruction: {\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n },\n showExcludeZero: {\n settings: true,\n label: 'Ability to exclude zero',\n },\n showMaxPoint: {\n settings: true,\n label: 'Show max points dropdown',\n },\n settingsPanelDisabled: false,\n // width: '500px'\n mathMlOptions: {\n mmlOutput: false,\n mmlEditing: false,\n },\n maxMaxPoints: 9,\n },\n};\n"],"mappings":";;;;;;iCAAe;EACbA,KAAK,EAAE;IACLC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACxBC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IACvCC,SAAS,EAAE,CAAC;IACZC,WAAW,EAAE,KAAK;IAClBC,kBAAkB,EAAE,IAAI;IACxBC,gBAAgB,EAAE;EACpB,CAAC;EACDC,aAAa,EAAE;IACbC,sBAAsB,EAAE;MACtBC,KAAK,EAAE;QAAEC,QAAQ,EAAE;MAAM,CAAC;MAC1BC,KAAK,EAAE;QAAED,QAAQ,EAAE;MAAM,CAAC;MAC1BE,KAAK,EAAE;QAAEF,QAAQ,EAAE;MAAM,CAAC;MAC1BG,SAAS,EAAE;QAAEH,QAAQ,EAAE;MAAK,CAAC;MAC7BI,cAAc,EAAE;QAAEJ,QAAQ,EAAE;MAAM,CAAC;MACnCK,kBAAkB,EAAE;QAAEL,QAAQ,EAAE;MAAK;IACvC,CAAC;IACDM,qBAAqB,EAAE;MACrBC,kBAAkB,EAAE;QAClBR,KAAK,EAAE;UAAEC,QAAQ,EAAE;QAAM,CAAC;QAC1BC,KAAK,EAAE;UAAED,QAAQ,EAAE;QAAM,CAAC;QAC1BE,KAAK,EAAE;UAAEF,QAAQ,EAAE;QAAM;MAC3B;IACF,CAAC;IACDQ,eAAe,EAAE;MACfC,QAAQ,EAAE,IAAI;MACdC,KAAK,EAAE;IACT,CAAC;IACDC,YAAY,EAAE;MACZF,QAAQ,EAAE,IAAI;MACdC,KAAK,EAAE;IACT,CAAC;IACDE,qBAAqB,EAAE,KAAK;IAC5B;IACAC,aAAa,EAAE;MACbC,SAAS,EAAE,KAAK;MAChBC,UAAU,EAAE;IACd,CAAC;IACDC,YAAY,EAAE;EAChB;AACF,CAAC","ignoreList":[]}
@@ -1,135 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
10
- var _react = _interopRequireDefault(require("react"));
11
- var _client = require("react-dom/client");
12
- var _debug = _interopRequireDefault(require("debug"));
13
- var _main = _interopRequireDefault(require("./main"));
14
- var _defaults = _interopRequireDefault(require("./defaults"));
15
- const modelWithDefaults = m => ({
16
- ..._defaults.default.model,
17
- ...m
18
- });
19
- const configurationWithDefaults = c => ({
20
- ..._defaults.default.configuration,
21
- ...c
22
- });
23
- class RubricElement extends HTMLElement {
24
- constructor() {
25
- super();
26
- (0, _defineProperty2.default)(this, "updateModelAccordingToReceivedProps", nextModel => {
27
- const currentModel = {
28
- ...this._model
29
- };
30
- if (!nextModel) {
31
- return currentModel;
32
- }
33
- const validatedModel = {
34
- ...nextModel
35
- };
36
-
37
- // excludeZero should be false and disabled when maxPoints is 1
38
- if (validatedModel.maxPoints === 1) {
39
- validatedModel.excludeZero = false;
40
- }
41
- const {
42
- maxPoints,
43
- excludeZero
44
- } = validatedModel || {};
45
- validatedModel.points = validatedModel.points ? [...validatedModel.points] : [];
46
- validatedModel.sampleAnswers = validatedModel.sampleAnswers ? [...validatedModel.sampleAnswers] : [];
47
- const howManyPointsShouldHave = excludeZero ? maxPoints : maxPoints + 1;
48
- const howManyPointsDoesItHave = validatedModel.points.length;
49
- const excludeZeroChanged = currentModel?.excludeZero !== nextModel?.excludeZero;
50
- const maxPointsChanged = currentModel?.maxPoints !== nextModel?.maxPoints;
51
- if (howManyPointsDoesItHave < howManyPointsShouldHave) {
52
- if (excludeZeroChanged && !excludeZero) {
53
- validatedModel.points = ['', ...validatedModel.points];
54
- validatedModel.sampleAnswers = [null, ...validatedModel.sampleAnswers];
55
- }
56
- if (maxPointsChanged) {
57
- for (let i = 0; i < howManyPointsShouldHave - howManyPointsDoesItHave; i++) {
58
- validatedModel.points.push('');
59
- validatedModel.sampleAnswers.push(null);
60
- }
61
- }
62
- } else if (howManyPointsDoesItHave > howManyPointsShouldHave) {
63
- if (excludeZeroChanged && excludeZero) {
64
- validatedModel.points = validatedModel.points.slice(1);
65
- validatedModel.sampleAnswers = validatedModel.sampleAnswers.slice(1);
66
- }
67
- if (maxPointsChanged) {
68
- validatedModel.points = validatedModel.points.slice(0, howManyPointsShouldHave);
69
- validatedModel.sampleAnswers = validatedModel.sampleAnswers.slice(0, howManyPointsShouldHave);
70
- }
71
- }
72
- return validatedModel;
73
- });
74
- (0, _defineProperty2.default)(this, "onConfigurationChanged", c => {
75
- this._configuration = configurationWithDefaults(c);
76
- if (this._model) {
77
- this.onModelChanged(this._model);
78
- }
79
- this._render();
80
- });
81
- this._root = null;
82
- _debug.default.log('constructor called');
83
- this._model = modelWithDefaults();
84
- this._configuration = configurationWithDefaults();
85
- this.onModelChanged = this.onModelChanged.bind(this);
86
- this.onConfigurationChanged = this.onConfigurationChanged.bind(this);
87
- }
88
- set model(m) {
89
- this._model = this.updateModelAccordingToReceivedProps(modelWithDefaults(m));
90
- this._render();
91
- }
92
- set configuration(c) {
93
- this._configuration = configurationWithDefaults(c);
94
- this._render();
95
- }
96
- onModelChanged(m) {
97
- this._model = this.updateModelAccordingToReceivedProps(m);
98
- this._render();
99
- this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model, false));
100
- }
101
- insertImage(handler) {
102
- this.dispatchEvent(new _pieConfigureEvents.InsertImageEvent(handler));
103
- }
104
- onDeleteImage(src, done) {
105
- this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
106
- }
107
- connectedCallback() {
108
- this._render();
109
- }
110
- _render() {
111
- if (this._model) {
112
- let element = /*#__PURE__*/_react.default.createElement(_main.default, {
113
- model: this._model,
114
- configuration: this._configuration,
115
- onModelChanged: this.onModelChanged,
116
- onConfigurationChanged: this.onConfigurationChanged,
117
- imageSupport: {
118
- add: this.insertImage.bind(this),
119
- delete: this.onDeleteImage.bind(this)
120
- }
121
- });
122
- if (!this._root) {
123
- this._root = (0, _client.createRoot)(this);
124
- }
125
- this._root.render(element);
126
- }
127
- }
128
- disconnectedCallback() {
129
- if (this._root) {
130
- this._root.unmount();
131
- }
132
- }
133
- }
134
- exports.default = RubricElement;
135
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_pieConfigureEvents","require","_react","_interopRequireDefault","_client","_debug","_main","_defaults","modelWithDefaults","m","defaults","model","configurationWithDefaults","c","configuration","RubricElement","HTMLElement","constructor","_defineProperty2","default","nextModel","currentModel","_model","validatedModel","maxPoints","excludeZero","points","sampleAnswers","howManyPointsShouldHave","howManyPointsDoesItHave","length","excludeZeroChanged","maxPointsChanged","i","push","slice","_configuration","onModelChanged","_render","_root","debug","log","bind","onConfigurationChanged","updateModelAccordingToReceivedProps","dispatchEvent","ModelUpdatedEvent","insertImage","handler","InsertImageEvent","onDeleteImage","src","done","DeleteImageEvent","connectedCallback","element","React","createElement","Main","imageSupport","add","delete","createRoot","render","disconnectedCallback","unmount","exports"],"sources":["../src/index.js"],"sourcesContent":["import { ModelUpdatedEvent, InsertImageEvent, DeleteImageEvent } from '@pie-framework/pie-configure-events';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport debug from 'debug';\n\nimport Main from './main';\nimport defaults from './defaults';\n\nconst modelWithDefaults = (m) => ({ ...defaults.model, ...m });\n\nconst configurationWithDefaults = (c) => ({ ...defaults.configuration, ...c });\n\nexport default class RubricElement extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n debug.log('constructor called');\n this._model = modelWithDefaults();\n this._configuration = configurationWithDefaults();\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n updateModelAccordingToReceivedProps = (nextModel) => {\n const currentModel = { ...this._model };\n\n if (!nextModel) {\n return currentModel;\n }\n\n const validatedModel = { ...nextModel };\n\n // excludeZero should be false and disabled when maxPoints is 1\n if (validatedModel.maxPoints === 1) {\n validatedModel.excludeZero = false;\n }\n\n const { maxPoints, excludeZero } = validatedModel || {};\n\n validatedModel.points = validatedModel.points ? [...validatedModel.points] : [];\n validatedModel.sampleAnswers = validatedModel.sampleAnswers ? [...validatedModel.sampleAnswers] : [];\n\n const howManyPointsShouldHave = excludeZero ? maxPoints : maxPoints + 1;\n const howManyPointsDoesItHave = validatedModel.points.length;\n\n const excludeZeroChanged = currentModel?.excludeZero !== nextModel?.excludeZero;\n const maxPointsChanged = currentModel?.maxPoints !== nextModel?.maxPoints;\n\n if (howManyPointsDoesItHave < howManyPointsShouldHave) {\n if (excludeZeroChanged && !excludeZero) {\n validatedModel.points = ['', ...validatedModel.points];\n validatedModel.sampleAnswers = [null, ...validatedModel.sampleAnswers];\n }\n\n if (maxPointsChanged) {\n for (let i = 0; i < howManyPointsShouldHave - howManyPointsDoesItHave; i++) {\n validatedModel.points.push('');\n validatedModel.sampleAnswers.push(null);\n }\n }\n } else if (howManyPointsDoesItHave > howManyPointsShouldHave) {\n if (excludeZeroChanged && excludeZero) {\n validatedModel.points = validatedModel.points.slice(1);\n validatedModel.sampleAnswers = validatedModel.sampleAnswers.slice(1);\n }\n\n if (maxPointsChanged) {\n validatedModel.points = validatedModel.points.slice(0, howManyPointsShouldHave);\n validatedModel.sampleAnswers = validatedModel.sampleAnswers.slice(0, howManyPointsShouldHave);\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(m);\n this._render();\n this.dispatchEvent(new ModelUpdatedEvent(this._model, false));\n }\n\n onConfigurationChanged = (c) => {\n this._configuration = configurationWithDefaults(c);\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\n this._render();\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 connectedCallback() {\n this._render();\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 imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(element);\n }\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,103 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _rubric = require("@pie-lib/rubric");
11
- var _styles = require("@mui/material/styles");
12
- var _configUi = require("@pie-lib/config-ui");
13
- const {
14
- Panel,
15
- toggle
16
- } = _configUi.settings;
17
- const StyledDiv = (0, _styles.styled)('div')(({
18
- theme,
19
- width
20
- }) => ({
21
- maxWidth: width,
22
- fontFamily: 'Cerebri Sans',
23
- fontSize: theme.typography.fontSize
24
- }));
25
- class Main extends _react.default.Component {
26
- constructor(...args) {
27
- super(...args);
28
- (0, _defineProperty2.default)(this, "verifyRubriclessModel", (m, config) => {
29
- const {
30
- rubricless = false
31
- } = config || {};
32
- return rubricless ? (({
33
- points,
34
- sampleAnswers,
35
- ...rest
36
- }) => rest)(m) : m;
37
- });
38
- }
39
- render() {
40
- const {
41
- model,
42
- configuration,
43
- onConfigurationChanged,
44
- onModelChanged,
45
- imageSupport
46
- } = this.props || {};
47
- const {
48
- baseInputConfiguration = {},
49
- contentDimensions = {},
50
- settingsPanelDisabled,
51
- showExcludeZero = {},
52
- showMaxPoint = {},
53
- mathMlOptions = {},
54
- rubricless = false,
55
- rubriclessInstruction,
56
- width
57
- } = configuration || {};
58
-
59
- // ensure to eliminate points and sampleAnswers in case of rubricless
60
- const value = this.verifyRubriclessModel(model, configuration);
61
- const {
62
- extraCSSRules
63
- } = model;
64
- const panelProperties = {
65
- excludeZeroEnabled: showExcludeZero.settings && toggle(showExcludeZero.label),
66
- maxPointsEnabled: showMaxPoint.settings && toggle(showMaxPoint.label),
67
- rubriclessInstructionEnabled: rubricless && rubriclessInstruction.settings && toggle(rubriclessInstruction.label)
68
- };
69
- const getPluginProps = props => {
70
- return Object.assign({
71
- ...baseInputConfiguration
72
- }, props || {});
73
- };
74
- return /*#__PURE__*/_react.default.createElement(_configUi.layout.ConfigLayout, {
75
- extraCSSRules: extraCSSRules,
76
- dimensions: contentDimensions,
77
- hideSettings: settingsPanelDisabled,
78
- settings: /*#__PURE__*/_react.default.createElement(Panel, {
79
- model: model,
80
- onChangeModel: onModelChanged,
81
- configuration: configuration,
82
- onChangeConfiguration: onConfigurationChanged,
83
- pluginOpts: getPluginProps(rubriclessInstruction?.inputConfiguration),
84
- groups: {
85
- Properties: panelProperties
86
- },
87
- imageSupport: imageSupport
88
- })
89
- }, /*#__PURE__*/_react.default.createElement(StyledDiv, {
90
- width: width
91
- }, /*#__PURE__*/_react.default.createElement(_rubric.Authoring, {
92
- value: value,
93
- config: configuration,
94
- onChange: onModelChanged,
95
- mathMlOptions: mathMlOptions,
96
- rubricless: rubricless,
97
- pluginOpts: baseInputConfiguration,
98
- imageSupport: imageSupport
99
- })));
100
- }
101
- }
102
- var _default = exports.default = Main;
103
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_rubric","_styles","_configUi","Panel","toggle","settings","StyledDiv","styled","theme","width","maxWidth","fontFamily","fontSize","typography","Main","React","Component","constructor","args","_defineProperty2","default","m","config","rubricless","points","sampleAnswers","rest","render","model","configuration","onConfigurationChanged","onModelChanged","imageSupport","props","baseInputConfiguration","contentDimensions","settingsPanelDisabled","showExcludeZero","showMaxPoint","mathMlOptions","rubriclessInstruction","value","verifyRubriclessModel","extraCSSRules","panelProperties","excludeZeroEnabled","label","maxPointsEnabled","rubriclessInstructionEnabled","getPluginProps","Object","assign","createElement","layout","ConfigLayout","dimensions","hideSettings","onChangeModel","onChangeConfiguration","pluginOpts","inputConfiguration","groups","Properties","Authoring","onChange","_default","exports"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport { Authoring } from '@pie-lib/rubric';\nimport { styled } from '@mui/material/styles';\nimport { layout, settings } from '@pie-lib/config-ui';\n\nconst { Panel, toggle } = settings;\n\nconst StyledDiv = styled('div')(({ theme, width }) => ({\n maxWidth: width,\n fontFamily: 'Cerebri Sans',\n fontSize: theme.typography.fontSize,\n}));\n\nclass Main extends React.Component {\n verifyRubriclessModel = (m, config) => {\n const { rubricless = false } = config || {};\n return rubricless ? (({ points, sampleAnswers, ...rest }) => rest)(m) : m;\n };\n\n render() {\n const { model, configuration, onConfigurationChanged, onModelChanged, imageSupport } = this.props || {};\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n settingsPanelDisabled,\n showExcludeZero = {},\n showMaxPoint = {},\n mathMlOptions = {},\n rubricless = false,\n rubriclessInstruction,\n width,\n } = configuration || {};\n\n // ensure to eliminate points and sampleAnswers in case of rubricless\n const value = this.verifyRubriclessModel(model, configuration);\n const { extraCSSRules } = model;\n\n const panelProperties = {\n excludeZeroEnabled: showExcludeZero.settings && toggle(showExcludeZero.label),\n maxPointsEnabled: showMaxPoint.settings && toggle(showMaxPoint.label),\n rubriclessInstructionEnabled: rubricless && rubriclessInstruction.settings && toggle(rubriclessInstruction.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={onModelChanged}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n pluginOpts={getPluginProps(rubriclessInstruction?.inputConfiguration)}\n groups={{\n Properties: panelProperties,\n }}\n imageSupport={imageSupport}\n />\n } >\n <StyledDiv width={width}>\n <Authoring\n value={value}\n config={configuration}\n onChange={onModelChanged}\n mathMlOptions={mathMlOptions}\n rubricless={rubricless}\n pluginOpts={baseInputConfiguration}\n imageSupport={imageSupport}\n />\n </StyledDiv>\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
@@ -1,24 +0,0 @@
1
- {
2
- "name": "@pie-element/rubric-configure",
3
- "private": true,
4
- "version": "5.2.0",
5
- "description": "Rubric authoring view",
6
- "main": "lib/index.js",
7
- "author": "Pie Framework Authors",
8
- "dependencies": {
9
- "@emotion/react": "^11.14.0",
10
- "@emotion/style": "^0.8.0",
11
- "@mui/icons-material": "^7.3.4",
12
- "@mui/material": "^7.3.4",
13
- "@pie-framework/pie-configure-events": "^1.3.0",
14
- "@pie-lib/config-ui": "11.36.1-mui-update.0",
15
- "@pie-lib/editable-html": "11.28.1-mui-update.0",
16
- "@pie-lib/render-ui": "4.42.1-mui-update.0",
17
- "@pie-lib/rubric": "0.35.1-mui-update.0",
18
- "debug": "^4.1.1",
19
- "react": "18.2.0",
20
- "react-beautiful-dnd": "^11.0.2",
21
- "react-dom": "18.2.0"
22
- },
23
- "license": "ISC"
24
- }
@@ -1,178 +0,0 @@
1
- import RubricElement from '../index';
2
- import defaults from '../defaults';
3
- import { ModelUpdatedEvent, InsertSoundEvent, DeleteSoundEvent } from '@pie-framework/pie-configure-events';
4
- import React from 'react';
5
-
6
- jest.mock('react-dom', () => ({
7
- render: jest.fn(),
8
- }));
9
-
10
- jest.mock('@pie-lib/config-ui', () => ({
11
- layout: {
12
- ConfigLayout: (props) => <div {...props} />,
13
- },
14
- settings: {
15
- Panel: (props) => <div {...props} />,
16
- toggle: jest.fn(),
17
- radio: jest.fn(),
18
- },
19
- }));
20
-
21
- const model = (extras) => ({
22
- id: '1',
23
- element: 'pie-rubric',
24
- points: ['A', 'B', 'C', 'D'],
25
- sampleAnswers: [true, true, false, false],
26
- maxPoints: 3,
27
- excludeZero: false,
28
- excludeZeroEnabled: true,
29
- maxPointsEnabled: true,
30
- ...extras,
31
- });
32
-
33
- const invalidModel = (extras) => ({
34
- id: '2',
35
- element: 'pie-rubric',
36
- points: ['A', 'B', 'C', 'D'],
37
- sampleAnswers: [true, true, false, false],
38
- maxPoints: 5,
39
- excludeZero: false,
40
- excludeZeroEnabled: true,
41
- maxPointsEnabled: true,
42
- ...extras,
43
- });
44
- const configuration = (c) => ({ ...defaults.configuration, ...c });
45
-
46
- describe('RubricElement', () => {
47
- let element;
48
-
49
- beforeEach(() => {
50
- element = new RubricElement();
51
- });
52
-
53
- afterEach(() => {
54
- jest.clearAllMocks();
55
- });
56
-
57
- describe('set model', () => {
58
- it('should set the model correctly', () => {
59
- const newModel = model();
60
- element.model = newModel;
61
- expect(element._model).toEqual(newModel);
62
- });
63
- });
64
-
65
- describe('onModelChanged', () => {
66
- it('should dispatch ModelUpdatedEvent on model change', () => {
67
- const newModel = model();
68
- const dispatchEventSpy = jest.spyOn(element, 'dispatchEvent');
69
- element.onModelChanged(newModel);
70
- expect(element._model).toEqual(newModel);
71
- expect(dispatchEventSpy).toHaveBeenCalledWith(new ModelUpdatedEvent(newModel, false));
72
- });
73
- });
74
-
75
- describe('set configuration', () => {
76
- it('should set the configuration correctly', () => {
77
- const newConfiguration = configuration();
78
- element.configuration = newConfiguration;
79
- expect(element._configuration).toEqual(newConfiguration);
80
- });
81
- });
82
-
83
- describe('onConfigurationChanged', () => {
84
- it('should call _render method on configuration change and overwrite the defaults with the new values', () => {
85
- const newConfiguration = configuration({ maxMaxPoints: 10 });
86
- const renderSpy = jest.spyOn(element, '_render');
87
- element.onConfigurationChanged(newConfiguration);
88
- expect(element._configuration.maxMaxPoints).toEqual(10);
89
- expect(renderSpy).toHaveBeenCalled();
90
- });
91
- });
92
-
93
- describe('updateModelAccordingToReceivedProps', () => {
94
- it('should return the same model if it is already valid', () => {
95
- const validModel = model();
96
- const validatedModel = element.updateModelAccordingToReceivedProps(validModel);
97
- expect(validatedModel).toEqual(validModel);
98
- });
99
-
100
- it('should return an empty model if the input model is undefined', () => {
101
- const validatedModel = element.updateModelAccordingToReceivedProps(undefined);
102
- expect(validatedModel).toEqual(defaults.model);
103
- });
104
-
105
- it('should return an empty model if the input model is null', () => {
106
- const validatedModel = element.updateModelAccordingToReceivedProps(null);
107
- expect(validatedModel).toEqual(defaults.model);
108
- });
109
-
110
- it('should handle undefined properties in the input model', () => {
111
- const validatedModel = element.updateModelAccordingToReceivedProps({});
112
- expect(validatedModel).toEqual({ points: [], sampleAnswers: [] });
113
- });
114
-
115
- it('should handle null properties in the input model', () => {
116
- const validatedModel = element.updateModelAccordingToReceivedProps({ maxPoints: null, excludeZero: null });
117
- expect(validatedModel).toEqual({
118
- excludeZero: null,
119
- maxPoints: null,
120
- points: ['', ''],
121
- sampleAnswers: [null, null],
122
- });
123
- });
124
-
125
- it('should handle undefined points and sampleAnswers arrays', () => {
126
- const validatedModel = element.updateModelAccordingToReceivedProps({ maxPoints: 5, excludeZero: false });
127
- expect(validatedModel.points).toEqual(['', '', '', '', '', '']);
128
- expect(validatedModel.sampleAnswers).toEqual([null, null, null, null, null, null]);
129
- });
130
-
131
- it('should handle case when howManyPointsDoesItHave is less than howManyPointsShouldHave with maxPoints & excludeZero changed', () => {
132
- const nextModel = model({
133
- maxPoints: 7,
134
- excludeZero: true,
135
- });
136
- const result = element.updateModelAccordingToReceivedProps(nextModel);
137
- expect(result.points).toEqual(['A', 'B', 'C', 'D', '', '', '']);
138
- expect(result.sampleAnswers).toEqual([true, true, false, false, null, null, null]);
139
- });
140
-
141
- it('should handle case when howManyPointsDoesItHave is less than howManyPointsShouldHave and maxPointsChanged', () => {
142
- const nextModel = model({
143
- maxPoints: 4,
144
- excludeZero: false,
145
- });
146
- const result = element.updateModelAccordingToReceivedProps(nextModel);
147
- expect(result.points).toEqual(['A', 'B', 'C', 'D', '']);
148
- expect(result.sampleAnswers).toEqual([true, true, false, false, null]);
149
- });
150
-
151
- it('should handle case when howManyPointsDoesItHave is greater than howManyPointsShouldHave and excludeZeroChanged', () => {
152
- const nextModel = model({
153
- maxPoints: 3,
154
- excludeZero: true,
155
- });
156
- const result = element.updateModelAccordingToReceivedProps(nextModel);
157
- expect(result.points).toEqual(['B', 'C', 'D']);
158
- expect(result.sampleAnswers).toEqual([true, false, false]);
159
- });
160
-
161
- it('should handle case when howManyPointsDoesItHave is greater than howManyPointsShouldHave and maxPointsChanged', () => {
162
- const nextModel = model({
163
- maxPoints: 1,
164
- excludeZero: false,
165
- });
166
- const result = element.updateModelAccordingToReceivedProps(nextModel);
167
- expect(result.points).toEqual(['A', 'B']);
168
- expect(result.sampleAnswers).toEqual([true, true]);
169
- });
170
-
171
- it('should handle case if invalid model is set, after updateModelAccordingToReceivedProps the returned model is valid', () => {
172
- const newModel = invalidModel();
173
- element.onModelChanged(newModel);
174
- expect(element._model.points).toEqual(['A', 'B', 'C', 'D', '', '']);
175
- expect(element._model.sampleAnswers).toEqual([true, true, false, false, null, null]);
176
- });
177
- });
178
- });
@@ -1,42 +0,0 @@
1
- export default {
2
- model: {
3
- points: ['', '', '', ''],
4
- sampleAnswers: [null, null, null, null],
5
- maxPoints: 3,
6
- excludeZero: false,
7
- excludeZeroEnabled: true,
8
- maxPointsEnabled: true,
9
- },
10
- configuration: {
11
- baseInputConfiguration: {
12
- audio: { disabled: false },
13
- video: { disabled: false },
14
- image: { disabled: false },
15
- textAlign: { disabled: true },
16
- showParagraphs: { disabled: false },
17
- separateParagraphs: { disabled: true },
18
- },
19
- rubriclessInstruction: {
20
- inputConfiguration: {
21
- audio: { disabled: false },
22
- video: { disabled: false },
23
- image: { disabled: false },
24
- },
25
- },
26
- showExcludeZero: {
27
- settings: true,
28
- label: 'Ability to exclude zero',
29
- },
30
- showMaxPoint: {
31
- settings: true,
32
- label: 'Show max points dropdown',
33
- },
34
- settingsPanelDisabled: false,
35
- // width: '500px'
36
- mathMlOptions: {
37
- mmlOutput: false,
38
- mmlEditing: false,
39
- },
40
- maxMaxPoints: 9,
41
- },
42
- };