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

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