@pie-element/complex-rubric 5.3.4-next.3 → 6.0.0-beta.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 (145) hide show
  1. package/configure/lib/defaults.js +52 -24
  2. package/configure/lib/defaults.js.map +1 -1
  3. package/configure/lib/index.js +103 -194
  4. package/configure/lib/index.js.map +1 -1
  5. package/configure/lib/main.js +140 -199
  6. package/configure/lib/main.js.map +1 -1
  7. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.json +1 -0
  8. package/configure/node_modules/@pie-element/multi-trait-rubric/CHANGELOG.md +2491 -0
  9. package/configure/node_modules/@pie-element/multi-trait-rubric/README.md +55 -0
  10. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.json +1 -0
  11. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/CHANGELOG.md +2333 -0
  12. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js +429 -0
  13. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/common.js.map +1 -0
  14. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js +181 -0
  15. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/defaults.js.map +1 -0
  16. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js +157 -0
  17. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/index.js.map +1 -0
  18. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js +455 -0
  19. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/main.js.map +1 -0
  20. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js +206 -0
  21. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/modals.js.map +1 -0
  22. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js +451 -0
  23. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/scale.js.map +1 -0
  24. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js +275 -0
  25. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/trait.js.map +1 -0
  26. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js +233 -0
  27. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/traitsHeader.js.map +1 -0
  28. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js +87 -0
  29. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/lib/utils.js.map +1 -0
  30. package/configure/node_modules/@pie-element/multi-trait-rubric/configure/package.json +24 -0
  31. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.json +1 -0
  32. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/CHANGELOG.md +1571 -0
  33. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js +18 -0
  34. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/defaults.js.map +1 -0
  35. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js +158 -0
  36. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/index.js.map +1 -0
  37. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js +11 -0
  38. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/lib/utils.js.map +1 -0
  39. package/configure/node_modules/@pie-element/multi-trait-rubric/controller/package.json +14 -0
  40. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json +1628 -0
  41. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/config-schema.json.md +1202 -0
  42. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/config.js +8 -0
  43. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/generate.js +117 -0
  44. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/index.html +1 -0
  45. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/demo/session.js +6 -0
  46. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json +861 -0
  47. package/configure/node_modules/@pie-element/multi-trait-rubric/docs/pie-schema.json.md +614 -0
  48. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js +54 -0
  49. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/index.js.map +1 -0
  50. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js +123 -0
  51. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/main.js.map +1 -0
  52. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js +248 -0
  53. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/scale.js.map +1 -0
  54. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js +83 -0
  55. package/configure/node_modules/@pie-element/multi-trait-rubric/lib/trait.js.map +1 -0
  56. package/configure/node_modules/@pie-element/multi-trait-rubric/package.json +32 -0
  57. package/configure/node_modules/@pie-element/rubric/CHANGELOG.json +257 -0
  58. package/configure/node_modules/@pie-element/rubric/CHANGELOG.md +2774 -0
  59. package/configure/node_modules/@pie-element/rubric/README.md +3 -0
  60. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.json +197 -0
  61. package/configure/node_modules/@pie-element/rubric/configure/CHANGELOG.md +2541 -0
  62. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js +67 -0
  63. package/configure/node_modules/@pie-element/rubric/configure/lib/defaults.js.map +1 -0
  64. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js +135 -0
  65. package/configure/node_modules/@pie-element/rubric/configure/lib/index.js.map +1 -0
  66. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js +103 -0
  67. package/configure/node_modules/@pie-element/rubric/configure/lib/main.js.map +1 -0
  68. package/configure/node_modules/@pie-element/rubric/configure/package.json +24 -0
  69. package/configure/node_modules/@pie-element/rubric/configure/src/__tests__/index.test.jsx +178 -0
  70. package/configure/node_modules/@pie-element/rubric/configure/src/defaults.js +42 -0
  71. package/configure/node_modules/@pie-element/rubric/configure/src/index.js +139 -0
  72. package/configure/node_modules/@pie-element/rubric/configure/src/main.jsx +87 -0
  73. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.json +17 -0
  74. package/configure/node_modules/@pie-element/rubric/controller/CHANGELOG.md +1564 -0
  75. package/configure/node_modules/@pie-element/rubric/controller/lib/defaults.js +15 -0
  76. package/configure/node_modules/@pie-element/rubric/controller/lib/defaults.js.map +1 -0
  77. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js +46 -0
  78. package/configure/node_modules/@pie-element/rubric/controller/lib/index.js.map +1 -0
  79. package/configure/node_modules/@pie-element/rubric/controller/package.json +12 -0
  80. package/configure/node_modules/@pie-element/rubric/controller/src/__tests__/index.test.js +33 -0
  81. package/configure/node_modules/@pie-element/rubric/controller/src/defaults.js +8 -0
  82. package/configure/node_modules/@pie-element/rubric/controller/src/index.js +41 -0
  83. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json +712 -0
  84. package/configure/node_modules/@pie-element/rubric/docs/config-schema.json.md +532 -0
  85. package/configure/node_modules/@pie-element/rubric/docs/demo/config.js +8 -0
  86. package/configure/node_modules/@pie-element/rubric/docs/demo/generate.js +8 -0
  87. package/configure/node_modules/@pie-element/rubric/docs/demo/index.html +2 -0
  88. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json +391 -0
  89. package/configure/node_modules/@pie-element/rubric/docs/pie-schema.json.md +281 -0
  90. package/configure/node_modules/@pie-element/rubric/lib/index.js +52 -0
  91. package/configure/node_modules/@pie-element/rubric/lib/index.js.map +1 -0
  92. package/configure/node_modules/@pie-element/rubric/lib/main.js +210 -0
  93. package/configure/node_modules/@pie-element/rubric/lib/main.js.map +1 -0
  94. package/configure/node_modules/@pie-element/rubric/lib/print.js +71 -0
  95. package/configure/node_modules/@pie-element/rubric/lib/print.js.map +1 -0
  96. package/configure/node_modules/@pie-element/rubric/package.json +30 -0
  97. package/configure/node_modules/@pie-element/rubric/src/__tests__/__snapshots__/rubric-view.test.jsx.snap +2641 -0
  98. package/configure/node_modules/@pie-element/rubric/src/__tests__/rubric-view.test.jsx +49 -0
  99. package/configure/node_modules/@pie-element/rubric/src/index.js +48 -0
  100. package/configure/node_modules/@pie-element/rubric/src/main.jsx +226 -0
  101. package/configure/node_modules/@pie-element/rubric/src/print.js +74 -0
  102. package/configure/node_modules/clsx/clsx.d.ts +6 -0
  103. package/configure/node_modules/clsx/dist/clsx.js +1 -0
  104. package/configure/node_modules/clsx/dist/clsx.m.js +1 -0
  105. package/configure/node_modules/clsx/dist/clsx.min.js +1 -0
  106. package/configure/node_modules/clsx/license +9 -0
  107. package/configure/node_modules/clsx/package.json +37 -0
  108. package/configure/node_modules/clsx/readme.md +88 -0
  109. package/configure/package.json +12 -9
  110. package/configure/src/__tests__/index.test.js +30 -5
  111. package/configure/src/__tests__/main.test.jsx +39 -23
  112. package/configure/src/index.js +13 -6
  113. package/configure/src/main.jsx +16 -15
  114. package/controller/lib/defaults.js +11 -15
  115. package/controller/lib/defaults.js.map +1 -1
  116. package/controller/lib/index.js +117 -180
  117. package/controller/lib/index.js.map +1 -1
  118. package/controller/lib/utils.js +1 -3
  119. package/controller/lib/utils.js.map +1 -1
  120. package/controller/package.json +1 -1
  121. package/lib/index.js +113 -204
  122. package/lib/index.js.map +1 -1
  123. package/lib/print.js +96 -190
  124. package/lib/print.js.map +1 -1
  125. package/package.json +10 -14
  126. package/src/__tests__/index.test.js +25 -7
  127. package/configure/src/__tests__/__snapshots__/main.test.jsx.snap +0 -193
  128. package/esm/configure.js +0 -15856
  129. package/esm/configure.js.map +0 -1
  130. package/esm/controller.js +0 -281
  131. package/esm/controller.js.map +0 -1
  132. package/esm/element.js +0 -179
  133. package/esm/element.js.map +0 -1
  134. package/esm/package.json +0 -3
  135. package/esm/print.js +0 -163
  136. package/esm/print.js.map +0 -1
  137. package/module/configure.js +0 -1
  138. package/module/controller.js +0 -262
  139. package/module/demo.js +0 -221
  140. package/module/element.js +0 -1
  141. package/module/index.html +0 -21
  142. package/module/manifest.json +0 -22
  143. package/module/print-demo.js +0 -259
  144. package/module/print.html +0 -18
  145. package/module/print.js +0 -1
@@ -0,0 +1,139 @@
1
+ import { ModelUpdatedEvent, InsertImageEvent, DeleteImageEvent } from '@pie-framework/pie-configure-events';
2
+ import React from 'react';
3
+ import { createRoot } from 'react-dom/client';
4
+ import debug from 'debug';
5
+
6
+ import Main from './main';
7
+ import defaults from './defaults';
8
+
9
+ const modelWithDefaults = (m) => ({ ...defaults.model, ...m });
10
+
11
+ const configurationWithDefaults = (c) => ({ ...defaults.configuration, ...c });
12
+
13
+ export default class RubricElement extends HTMLElement {
14
+ constructor() {
15
+ super();
16
+ this._root = null;
17
+ debug.log('constructor called');
18
+ this._model = modelWithDefaults();
19
+ this._configuration = configurationWithDefaults();
20
+ this.onModelChanged = this.onModelChanged.bind(this);
21
+ this.onConfigurationChanged = this.onConfigurationChanged.bind(this);
22
+ }
23
+
24
+ updateModelAccordingToReceivedProps = (nextModel) => {
25
+ const currentModel = { ...this._model };
26
+
27
+ if (!nextModel) {
28
+ return currentModel;
29
+ }
30
+
31
+ const validatedModel = { ...nextModel };
32
+
33
+ // excludeZero should be false and disabled when maxPoints is 1
34
+ if (validatedModel.maxPoints === 1) {
35
+ validatedModel.excludeZero = false;
36
+ }
37
+
38
+ const { maxPoints, excludeZero } = validatedModel || {};
39
+
40
+ validatedModel.points = validatedModel.points ? [...validatedModel.points] : [];
41
+ validatedModel.sampleAnswers = validatedModel.sampleAnswers ? [...validatedModel.sampleAnswers] : [];
42
+
43
+ const howManyPointsShouldHave = excludeZero ? maxPoints : maxPoints + 1;
44
+ const howManyPointsDoesItHave = validatedModel.points.length;
45
+
46
+ const excludeZeroChanged = currentModel?.excludeZero !== nextModel?.excludeZero;
47
+ const maxPointsChanged = currentModel?.maxPoints !== nextModel?.maxPoints;
48
+
49
+ if (howManyPointsDoesItHave < howManyPointsShouldHave) {
50
+ if (excludeZeroChanged && !excludeZero) {
51
+ validatedModel.points = ['', ...validatedModel.points];
52
+ validatedModel.sampleAnswers = [null, ...validatedModel.sampleAnswers];
53
+ }
54
+
55
+ if (maxPointsChanged) {
56
+ for (let i = 0; i < howManyPointsShouldHave - howManyPointsDoesItHave; i++) {
57
+ validatedModel.points.push('');
58
+ validatedModel.sampleAnswers.push(null);
59
+ }
60
+ }
61
+ } else if (howManyPointsDoesItHave > howManyPointsShouldHave) {
62
+ if (excludeZeroChanged && excludeZero) {
63
+ validatedModel.points = validatedModel.points.slice(1);
64
+ validatedModel.sampleAnswers = validatedModel.sampleAnswers.slice(1);
65
+ }
66
+
67
+ if (maxPointsChanged) {
68
+ validatedModel.points = validatedModel.points.slice(0, howManyPointsShouldHave);
69
+ validatedModel.sampleAnswers = validatedModel.sampleAnswers.slice(0, howManyPointsShouldHave);
70
+ }
71
+ }
72
+
73
+ return validatedModel;
74
+ };
75
+
76
+ set model(m) {
77
+ this._model = this.updateModelAccordingToReceivedProps(modelWithDefaults(m));
78
+ this._render();
79
+ }
80
+
81
+ set configuration(c) {
82
+ this._configuration = configurationWithDefaults(c);
83
+ this._render();
84
+ }
85
+
86
+ onModelChanged(m) {
87
+ this._model = this.updateModelAccordingToReceivedProps(m);
88
+ this._render();
89
+ this.dispatchEvent(new ModelUpdatedEvent(this._model, false));
90
+ }
91
+
92
+ onConfigurationChanged = (c) => {
93
+ this._configuration = configurationWithDefaults(c);
94
+
95
+ if (this._model) {
96
+ this.onModelChanged(this._model);
97
+ }
98
+
99
+ this._render();
100
+ };
101
+
102
+ insertImage(handler) {
103
+ this.dispatchEvent(new InsertImageEvent(handler));
104
+ }
105
+
106
+ onDeleteImage(src, done) {
107
+ this.dispatchEvent(new DeleteImageEvent(src, done));
108
+ }
109
+
110
+ connectedCallback() {
111
+ this._render();
112
+ }
113
+
114
+ _render() {
115
+ if (this._model) {
116
+ let element = React.createElement(Main, {
117
+ model: this._model,
118
+ configuration: this._configuration,
119
+ onModelChanged: this.onModelChanged,
120
+ onConfigurationChanged: this.onConfigurationChanged,
121
+ imageSupport: {
122
+ add: this.insertImage.bind(this),
123
+ delete: this.onDeleteImage.bind(this),
124
+ },
125
+ });
126
+
127
+ if (!this._root) {
128
+ this._root = createRoot(this);
129
+ }
130
+ this._root.render(element);
131
+ }
132
+ }
133
+
134
+ disconnectedCallback() {
135
+ if (this._root) {
136
+ this._root.unmount();
137
+ }
138
+ }
139
+ }
@@ -0,0 +1,87 @@
1
+ import React from 'react';
2
+ import { Authoring } from '@pie-lib/rubric';
3
+ import { styled } from '@mui/material/styles';
4
+ import { layout, settings } from '@pie-lib/config-ui';
5
+
6
+ const { Panel, toggle } = settings;
7
+
8
+ const StyledDiv = styled('div')(({ theme, width }) => ({
9
+ maxWidth: width,
10
+ fontFamily: 'Cerebri Sans',
11
+ fontSize: theme.typography.fontSize,
12
+ }));
13
+
14
+ class Main extends React.Component {
15
+ verifyRubriclessModel = (m, config) => {
16
+ const { rubricless = false } = config || {};
17
+ return rubricless ? (({ points, sampleAnswers, ...rest }) => rest)(m) : m;
18
+ };
19
+
20
+ render() {
21
+ const { model, configuration, onConfigurationChanged, onModelChanged, imageSupport } = this.props || {};
22
+ const {
23
+ baseInputConfiguration = {},
24
+ contentDimensions = {},
25
+ settingsPanelDisabled,
26
+ showExcludeZero = {},
27
+ showMaxPoint = {},
28
+ mathMlOptions = {},
29
+ rubricless = false,
30
+ rubriclessInstruction,
31
+ width,
32
+ } = configuration || {};
33
+
34
+ // ensure to eliminate points and sampleAnswers in case of rubricless
35
+ const value = this.verifyRubriclessModel(model, configuration);
36
+ const { extraCSSRules } = model;
37
+
38
+ const panelProperties = {
39
+ excludeZeroEnabled: showExcludeZero.settings && toggle(showExcludeZero.label),
40
+ maxPointsEnabled: showMaxPoint.settings && toggle(showMaxPoint.label),
41
+ rubriclessInstructionEnabled: rubricless && rubriclessInstruction.settings && toggle(rubriclessInstruction.label),
42
+ };
43
+
44
+ const getPluginProps = (props) => {
45
+ return Object.assign(
46
+ {
47
+ ...baseInputConfiguration,
48
+ },
49
+ props || {},
50
+ );
51
+ };
52
+
53
+ return (
54
+ <layout.ConfigLayout
55
+ extraCSSRules={extraCSSRules}
56
+ dimensions={contentDimensions}
57
+ hideSettings={settingsPanelDisabled}
58
+ settings={
59
+ <Panel
60
+ model={model}
61
+ onChangeModel={onModelChanged}
62
+ configuration={configuration}
63
+ onChangeConfiguration={onConfigurationChanged}
64
+ pluginOpts={getPluginProps(rubriclessInstruction?.inputConfiguration)}
65
+ groups={{
66
+ Properties: panelProperties,
67
+ }}
68
+ imageSupport={imageSupport}
69
+ />
70
+ } >
71
+ <StyledDiv width={width}>
72
+ <Authoring
73
+ value={value}
74
+ config={configuration}
75
+ onChange={onModelChanged}
76
+ mathMlOptions={mathMlOptions}
77
+ rubricless={rubricless}
78
+ pluginOpts={baseInputConfiguration}
79
+ imageSupport={imageSupport}
80
+ />
81
+ </StyledDiv>
82
+ </layout.ConfigLayout>
83
+ );
84
+ }
85
+ }
86
+
87
+ export default Main;
@@ -0,0 +1,17 @@
1
+ [
2
+ {
3
+ "type": "fix",
4
+ "scope": null,
5
+ "subject": "bump all packages to avoid tag conflict",
6
+ "merge": null,
7
+ "header": "fix: bump all packages to avoid tag conflict",
8
+ "body": null,
9
+ "footer": null,
10
+ "notes": [],
11
+ "hash": "d9ec9a8689f0a391594b5e2f4ea958c6dc9f6d7b",
12
+ "gitTags": " (develop)",
13
+ "committerDate": "2020-04-10 20:01:37 +0100",
14
+ "isTagged": true,
15
+ "tag": "@pie-element/rubric-controller@1.1.1"
16
+ }
17
+ ]