@pie-element/complex-rubric 6.0.0-beta.1 → 6.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +0 -11
  2. package/configure/CHANGELOG.md +0 -11
  3. package/configure/lib/defaults.js +9 -0
  4. package/configure/lib/defaults.js.map +1 -1
  5. package/configure/lib/index.js +8 -8
  6. package/configure/lib/index.js.map +1 -1
  7. package/configure/package.json +9 -9
  8. package/configure/src/__tests__/index.test.js +15 -0
  9. package/configure/src/__tests__/main.test.jsx +7 -0
  10. package/configure/src/defaults.js +3 -0
  11. package/configure/src/index.js +1 -1
  12. package/controller/package.json +1 -1
  13. package/module/configure.js +1 -0
  14. package/module/controller.js +262 -0
  15. package/module/demo.js +221 -0
  16. package/module/element.js +1 -0
  17. package/module/index.html +21 -0
  18. package/module/manifest.json +22 -0
  19. package/module/print-demo.js +259 -0
  20. package/module/print.html +18 -0
  21. package/module/print.js +1 -0
  22. package/package.json +10 -6
  23. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.json +0 -1
  24. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.md +0 -2491
  25. package/configure/node_modules/@pie-element/multi-trait-rubric/README.md +0 -55
  26. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.json +0 -1
  27. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.md +0 -2333
  28. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js +0 -429
  29. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js.map +0 -1
  30. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js +0 -181
  31. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js.map +0 -1
  32. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js +0 -157
  33. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js.map +0 -1
  34. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js +0 -455
  35. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js.map +0 -1
  36. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js +0 -206
  37. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js.map +0 -1
  38. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js +0 -451
  39. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js.map +0 -1
  40. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js +0 -275
  41. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js.map +0 -1
  42. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js +0 -233
  43. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js.map +0 -1
  44. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js +0 -87
  45. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js.map +0 -1
  46. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/package.json +0 -24
  47. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.json +0 -1
  48. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.md +0 -1571
  49. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js +0 -18
  50. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js.map +0 -1
  51. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js +0 -158
  52. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js.map +0 -1
  53. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js +0 -11
  54. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js.map +0 -1
  55. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/package.json +0 -14
  56. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json +0 -1628
  57. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json.md +0 -1202
  58. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/config.js +0 -8
  59. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/generate.js +0 -117
  60. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/index.html +0 -1
  61. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/session.js +0 -6
  62. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json +0 -861
  63. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json.md +0 -614
  64. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js +0 -54
  65. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js.map +0 -1
  66. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js +0 -123
  67. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js.map +0 -1
  68. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js +0 -248
  69. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js.map +0 -1
  70. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js +0 -83
  71. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js.map +0 -1
  72. package/configure/node_modules/@pie-element/multi-trait-rubric/package.json +0 -32
  73. package/configure/node_modules/@pie-element/rubric/CHANGELOG.json +0 -257
  74. package/configure/node_modules/@pie-element/rubric/CHANGELOG.md +0 -2774
  75. package/configure/node_modules/@pie-element/rubric/README.md +0 -3
  76. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.json +0 -197
  77. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.md +0 -2541
  78. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js +0 -67
  79. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js.map +0 -1
  80. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js +0 -135
  81. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js.map +0 -1
  82. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js +0 -103
  83. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js.map +0 -1
  84. package/configure/node_modules/@pie-element/rubric/configure/package.json +0 -24
  85. package/configure/node_modules/@pie-element/rubric/configure/src/__tests__/index.test.jsx +0 -178
  86. package/configure/node_modules/@pie-element/rubric/configure/src/defaults.js +0 -42
  87. package/configure/node_modules/@pie-element/rubric/configure/src/index.js +0 -139
  88. package/configure/node_modules/@pie-element/rubric/configure/src/main.jsx +0 -87
  89. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.json +0 -17
  90. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.md +0 -1564
  91. package/configure/node_modules/@pie-element/rubric/controller/lib/defaults.js +0 -15
  92. package/configure/node_modules/@pie-element/rubric/controller/lib/defaults.js.map +0 -1
  93. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js +0 -46
  94. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js.map +0 -1
  95. package/configure/node_modules/@pie-element/rubric/controller/package.json +0 -12
  96. package/configure/node_modules/@pie-element/rubric/controller/src/__tests__/index.test.js +0 -33
  97. package/configure/node_modules/@pie-element/rubric/controller/src/defaults.js +0 -8
  98. package/configure/node_modules/@pie-element/rubric/controller/src/index.js +0 -41
  99. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json +0 -712
  100. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json.md +0 -532
  101. package/configure/node_modules/@pie-element/rubric/docs/demo/config.js +0 -8
  102. package/configure/node_modules/@pie-element/rubric/docs/demo/generate.js +0 -8
  103. package/configure/node_modules/@pie-element/rubric/docs/demo/index.html +0 -2
  104. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json +0 -391
  105. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json.md +0 -281
  106. package/configure/node_modules/@pie-element/rubric/lib/index.js +0 -52
  107. package/configure/node_modules/@pie-element/rubric/lib/index.js.map +0 -1
  108. package/configure/node_modules/@pie-element/rubric/lib/main.js +0 -210
  109. package/configure/node_modules/@pie-element/rubric/lib/main.js.map +0 -1
  110. package/configure/node_modules/@pie-element/rubric/lib/print.js +0 -71
  111. package/configure/node_modules/@pie-element/rubric/lib/print.js.map +0 -1
  112. package/configure/node_modules/@pie-element/rubric/package.json +0 -30
  113. package/configure/node_modules/@pie-element/rubric/src/__tests__/__snapshots__/rubric-view.test.jsx.snap +0 -2641
  114. package/configure/node_modules/@pie-element/rubric/src/__tests__/rubric-view.test.jsx +0 -49
  115. package/configure/node_modules/@pie-element/rubric/src/index.js +0 -48
  116. package/configure/node_modules/@pie-element/rubric/src/main.jsx +0 -226
  117. package/configure/node_modules/@pie-element/rubric/src/print.js +0 -74
  118. package/configure/node_modules/clsx/clsx.d.ts +0 -6
  119. package/configure/node_modules/clsx/dist/clsx.js +0 -1
  120. package/configure/node_modules/clsx/dist/clsx.m.js +0 -1
  121. package/configure/node_modules/clsx/dist/clsx.min.js +0 -1
  122. package/configure/node_modules/clsx/license +0 -9
  123. package/configure/node_modules/clsx/package.json +0 -37
  124. 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
- };