@pie-element/rubric 6.1.0 → 6.2.0-mui-update.1

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 (42) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/configure/CHANGELOG.md +11 -0
  3. package/configure/lib/__tests__/index.test.js +174 -0
  4. package/configure/lib/defaults.js +3 -4
  5. package/configure/lib/defaults.js.map +1 -1
  6. package/configure/lib/index.js +91 -153
  7. package/configure/lib/index.js.map +1 -1
  8. package/configure/lib/main.js +91 -150
  9. package/configure/lib/main.js.map +1 -1
  10. package/configure/package.json +10 -7
  11. package/configure/src/index.js +12 -2
  12. package/configure/src/main.jsx +11 -13
  13. package/controller/CHANGELOG.md +8 -0
  14. package/controller/lib/__tests__/index.test.js +39 -0
  15. package/controller/lib/defaults.js +3 -4
  16. package/controller/lib/defaults.js.map +1 -1
  17. package/controller/lib/index.js +16 -29
  18. package/controller/lib/index.js.map +1 -1
  19. package/controller/package.json +1 -1
  20. package/docs/demo/pie.manifest.json +11 -0
  21. package/lib/__tests__/rubric-view.test.js +49 -0
  22. package/lib/index.js +39 -81
  23. package/lib/index.js.map +1 -1
  24. package/lib/main.js +185 -245
  25. package/lib/main.js.map +1 -1
  26. package/lib/print.js +42 -85
  27. package/lib/print.js.map +1 -1
  28. package/package.json +8 -5
  29. package/src/__tests__/__snapshots__/rubric-view.test.jsx.snap +2350 -1524
  30. package/src/index.js +14 -3
  31. package/src/main.jsx +100 -93
  32. package/src/print.js +13 -2
  33. package/LICENSE.md +0 -5
  34. package/configure/lib/pie-toolbox-rubric/authoring.js +0 -573
  35. package/configure/lib/pie-toolbox-rubric/authoring.js.map +0 -1
  36. package/configure/lib/pie-toolbox-rubric/index.js +0 -24
  37. package/configure/lib/pie-toolbox-rubric/index.js.map +0 -1
  38. package/configure/lib/pie-toolbox-rubric/point-menu.js +0 -172
  39. package/configure/lib/pie-toolbox-rubric/point-menu.js.map +0 -1
  40. package/configure/src/pie-toolbox-rubric/authoring.jsx +0 -449
  41. package/configure/src/pie-toolbox-rubric/index.js +0 -9
  42. package/configure/src/pie-toolbox-rubric/point-menu.jsx +0 -94
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [6.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/rubric@6.0.0...@pie-element/rubric@6.2.0) (2025-10-10)
7
+
8
+
9
+ ### Features
10
+
11
+ * update libs PD-5208, PD-5211, PD-5199, PD-5218, PD-5217 ([da327fa](https://github.com/pie-framework/pie-elements/commit/da327fa501f6e9eff1c0b30b5ef092426a91f78b))
12
+
13
+
14
+
15
+
16
+
6
17
  # [6.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/rubric@5.0.0...@pie-element/rubric@6.1.0) (2025-10-07)
7
18
 
8
19
  **Note:** Version bump only for package @pie-element/rubric
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/rubric-configure@5.0.1...@pie-element/rubric-configure@5.2.0) (2025-10-10)
7
+
8
+
9
+ ### Features
10
+
11
+ * update libs PD-5208, PD-5211, PD-5199, PD-5218, PD-5217 ([da327fa](https://github.com/pie-framework/pie-elements/commit/da327fa501f6e9eff1c0b30b5ef092426a91f78b))
12
+
13
+
14
+
15
+
16
+
6
17
  # [5.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/rubric-configure@5.0.0...@pie-element/rubric-configure@5.1.0) (2025-10-07)
7
18
 
8
19
  **Note:** Version bump only for package @pie-element/rubric-configure
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _index = _interopRequireDefault(require("../index"));
5
+ var _defaults = _interopRequireDefault(require("../defaults"));
6
+ var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
7
+ var _react = _interopRequireDefault(require("react"));
8
+ jest.mock('react-dom', () => ({
9
+ render: jest.fn()
10
+ }));
11
+ jest.mock('@pie-lib/config-ui', () => ({
12
+ layout: {
13
+ ConfigLayout: props => /*#__PURE__*/_react.default.createElement("div", props)
14
+ },
15
+ settings: {
16
+ Panel: props => /*#__PURE__*/_react.default.createElement("div", props),
17
+ toggle: jest.fn(),
18
+ radio: jest.fn()
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
+ const invalidModel = extras => ({
33
+ id: '2',
34
+ element: 'pie-rubric',
35
+ points: ['A', 'B', 'C', 'D'],
36
+ sampleAnswers: [true, true, false, false],
37
+ maxPoints: 5,
38
+ excludeZero: false,
39
+ excludeZeroEnabled: true,
40
+ maxPointsEnabled: true,
41
+ ...extras
42
+ });
43
+ const configuration = c => ({
44
+ ..._defaults.default.configuration,
45
+ ...c
46
+ });
47
+ describe('RubricElement', () => {
48
+ let element;
49
+ beforeEach(() => {
50
+ element = new _index.default();
51
+ });
52
+ afterEach(() => {
53
+ jest.clearAllMocks();
54
+ });
55
+ describe('set model', () => {
56
+ it('should set the model correctly', () => {
57
+ const newModel = model();
58
+ element.model = newModel;
59
+ expect(element._model).toEqual(newModel);
60
+ });
61
+ });
62
+ describe('onModelChanged', () => {
63
+ it('should dispatch ModelUpdatedEvent on model change', () => {
64
+ const newModel = model();
65
+ const dispatchEventSpy = jest.spyOn(element, 'dispatchEvent');
66
+ element.onModelChanged(newModel);
67
+ expect(element._model).toEqual(newModel);
68
+ expect(dispatchEventSpy).toHaveBeenCalledWith(new _pieConfigureEvents.ModelUpdatedEvent(newModel, false));
69
+ });
70
+ });
71
+ describe('set configuration', () => {
72
+ it('should set the configuration correctly', () => {
73
+ const newConfiguration = configuration();
74
+ element.configuration = newConfiguration;
75
+ expect(element._configuration).toEqual(newConfiguration);
76
+ });
77
+ });
78
+ describe('onConfigurationChanged', () => {
79
+ it('should call _render method on configuration change and overwrite the defaults with the new values', () => {
80
+ const newConfiguration = configuration({
81
+ maxMaxPoints: 10
82
+ });
83
+ const renderSpy = jest.spyOn(element, '_render');
84
+ element.onConfigurationChanged(newConfiguration);
85
+ expect(element._configuration.maxMaxPoints).toEqual(10);
86
+ expect(renderSpy).toHaveBeenCalled();
87
+ });
88
+ });
89
+ describe('updateModelAccordingToReceivedProps', () => {
90
+ it('should return the same model if it is already valid', () => {
91
+ const validModel = model();
92
+ const validatedModel = element.updateModelAccordingToReceivedProps(validModel);
93
+ expect(validatedModel).toEqual(validModel);
94
+ });
95
+ it('should return an empty model if the input model is undefined', () => {
96
+ const validatedModel = element.updateModelAccordingToReceivedProps(undefined);
97
+ expect(validatedModel).toEqual(_defaults.default.model);
98
+ });
99
+ it('should return an empty model if the input model is null', () => {
100
+ const validatedModel = element.updateModelAccordingToReceivedProps(null);
101
+ expect(validatedModel).toEqual(_defaults.default.model);
102
+ });
103
+ it('should handle undefined properties in the input model', () => {
104
+ const validatedModel = element.updateModelAccordingToReceivedProps({});
105
+ expect(validatedModel).toEqual({
106
+ points: [],
107
+ sampleAnswers: []
108
+ });
109
+ });
110
+ it('should handle null properties in the input model', () => {
111
+ const validatedModel = element.updateModelAccordingToReceivedProps({
112
+ maxPoints: null,
113
+ excludeZero: null
114
+ });
115
+ expect(validatedModel).toEqual({
116
+ excludeZero: null,
117
+ maxPoints: null,
118
+ points: ['', ''],
119
+ sampleAnswers: [null, null]
120
+ });
121
+ });
122
+ it('should handle undefined points and sampleAnswers arrays', () => {
123
+ const validatedModel = element.updateModelAccordingToReceivedProps({
124
+ maxPoints: 5,
125
+ excludeZero: false
126
+ });
127
+ expect(validatedModel.points).toEqual(['', '', '', '', '', '']);
128
+ expect(validatedModel.sampleAnswers).toEqual([null, null, null, null, null, null]);
129
+ });
130
+ it('should handle case when howManyPointsDoesItHave is less than howManyPointsShouldHave with maxPoints & excludeZero changed', () => {
131
+ const nextModel = model({
132
+ maxPoints: 7,
133
+ excludeZero: true
134
+ });
135
+ const result = element.updateModelAccordingToReceivedProps(nextModel);
136
+ expect(result.points).toEqual(['A', 'B', 'C', 'D', '', '', '']);
137
+ expect(result.sampleAnswers).toEqual([true, true, false, false, null, null, null]);
138
+ });
139
+ it('should handle case when howManyPointsDoesItHave is less than howManyPointsShouldHave and maxPointsChanged', () => {
140
+ const nextModel = model({
141
+ maxPoints: 4,
142
+ excludeZero: false
143
+ });
144
+ const result = element.updateModelAccordingToReceivedProps(nextModel);
145
+ expect(result.points).toEqual(['A', 'B', 'C', 'D', '']);
146
+ expect(result.sampleAnswers).toEqual([true, true, false, false, null]);
147
+ });
148
+ it('should handle case when howManyPointsDoesItHave is greater than howManyPointsShouldHave and excludeZeroChanged', () => {
149
+ const nextModel = model({
150
+ maxPoints: 3,
151
+ excludeZero: true
152
+ });
153
+ const result = element.updateModelAccordingToReceivedProps(nextModel);
154
+ expect(result.points).toEqual(['B', 'C', 'D']);
155
+ expect(result.sampleAnswers).toEqual([true, false, false]);
156
+ });
157
+ it('should handle case when howManyPointsDoesItHave is greater than howManyPointsShouldHave and maxPointsChanged', () => {
158
+ const nextModel = model({
159
+ maxPoints: 1,
160
+ excludeZero: false
161
+ });
162
+ const result = element.updateModelAccordingToReceivedProps(nextModel);
163
+ expect(result.points).toEqual(['A', 'B']);
164
+ expect(result.sampleAnswers).toEqual([true, true]);
165
+ });
166
+ it('should handle case if invalid model is set, after updateModelAccordingToReceivedProps the returned model is valid', () => {
167
+ const newModel = invalidModel();
168
+ element.onModelChanged(newModel);
169
+ expect(element._model.points).toEqual(['A', 'B', 'C', 'D', '', '']);
170
+ expect(element._model.sampleAnswers).toEqual([true, true, false, false, null, null]);
171
+ });
172
+ });
173
+ });
174
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9kZWZhdWx0cyIsIl9waWVDb25maWd1cmVFdmVudHMiLCJfcmVhY3QiLCJqZXN0IiwibW9jayIsInJlbmRlciIsImZuIiwibGF5b3V0IiwiQ29uZmlnTGF5b3V0IiwicHJvcHMiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsInNldHRpbmdzIiwiUGFuZWwiLCJ0b2dnbGUiLCJyYWRpbyIsIm1vZGVsIiwiZXh0cmFzIiwiaWQiLCJlbGVtZW50IiwicG9pbnRzIiwic2FtcGxlQW5zd2VycyIsIm1heFBvaW50cyIsImV4Y2x1ZGVaZXJvIiwiZXhjbHVkZVplcm9FbmFibGVkIiwibWF4UG9pbnRzRW5hYmxlZCIsImludmFsaWRNb2RlbCIsImNvbmZpZ3VyYXRpb24iLCJjIiwiZGVmYXVsdHMiLCJkZXNjcmliZSIsImJlZm9yZUVhY2giLCJSdWJyaWNFbGVtZW50IiwiYWZ0ZXJFYWNoIiwiY2xlYXJBbGxNb2NrcyIsIml0IiwibmV3TW9kZWwiLCJleHBlY3QiLCJfbW9kZWwiLCJ0b0VxdWFsIiwiZGlzcGF0Y2hFdmVudFNweSIsInNweU9uIiwib25Nb2RlbENoYW5nZWQiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsIk1vZGVsVXBkYXRlZEV2ZW50IiwibmV3Q29uZmlndXJhdGlvbiIsIl9jb25maWd1cmF0aW9uIiwibWF4TWF4UG9pbnRzIiwicmVuZGVyU3B5Iiwib25Db25maWd1cmF0aW9uQ2hhbmdlZCIsInRvSGF2ZUJlZW5DYWxsZWQiLCJ2YWxpZE1vZGVsIiwidmFsaWRhdGVkTW9kZWwiLCJ1cGRhdGVNb2RlbEFjY29yZGluZ1RvUmVjZWl2ZWRQcm9wcyIsInVuZGVmaW5lZCIsIm5leHRNb2RlbCIsInJlc3VsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5kZXgudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJ1YnJpY0VsZW1lbnQgZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzJztcbmltcG9ydCB7IE1vZGVsVXBkYXRlZEV2ZW50LCBJbnNlcnRTb3VuZEV2ZW50LCBEZWxldGVTb3VuZEV2ZW50IH0gZnJvbSAnQHBpZS1mcmFtZXdvcmsvcGllLWNvbmZpZ3VyZS1ldmVudHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuamVzdC5tb2NrKCdyZWFjdC1kb20nLCAoKSA9PiAoe1xuICByZW5kZXI6IGplc3QuZm4oKSxcbn0pKTtcblxuamVzdC5tb2NrKCdAcGllLWxpYi9jb25maWctdWknLCAoKSA9PiAoe1xuICBsYXlvdXQ6IHtcbiAgICBDb25maWdMYXlvdXQ6IChwcm9wcykgPT4gPGRpdiB7Li4ucHJvcHN9IC8+LFxuICB9LFxuICBzZXR0aW5nczoge1xuICAgIFBhbmVsOiAocHJvcHMpID0+IDxkaXYgey4uLnByb3BzfSAvPixcbiAgICB0b2dnbGU6IGplc3QuZm4oKSxcbiAgICByYWRpbzogamVzdC5mbigpLFxuICB9LFxufSkpO1xuXG5jb25zdCBtb2RlbCA9IChleHRyYXMpID0+ICh7XG4gIGlkOiAnMScsXG4gIGVsZW1lbnQ6ICdwaWUtcnVicmljJyxcbiAgcG9pbnRzOiBbJ0EnLCAnQicsICdDJywgJ0QnXSxcbiAgc2FtcGxlQW5zd2VyczogW3RydWUsIHRydWUsIGZhbHNlLCBmYWxzZV0sXG4gIG1heFBvaW50czogMyxcbiAgZXhjbHVkZVplcm86IGZhbHNlLFxuICBleGNsdWRlWmVyb0VuYWJsZWQ6IHRydWUsXG4gIG1heFBvaW50c0VuYWJsZWQ6IHRydWUsXG4gIC4uLmV4dHJhcyxcbn0pO1xuXG5jb25zdCBpbnZhbGlkTW9kZWwgPSAoZXh0cmFzKSA9PiAoe1xuICBpZDogJzInLFxuICBlbGVtZW50OiAncGllLXJ1YnJpYycsXG4gIHBvaW50czogWydBJywgJ0InLCAnQycsICdEJ10sXG4gIHNhbXBsZUFuc3dlcnM6IFt0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2VdLFxuICBtYXhQb2ludHM6IDUsXG4gIGV4Y2x1ZGVaZXJvOiBmYWxzZSxcbiAgZXhjbHVkZVplcm9FbmFibGVkOiB0cnVlLFxuICBtYXhQb2ludHNFbmFibGVkOiB0cnVlLFxuICAuLi5leHRyYXMsXG59KTtcbmNvbnN0IGNvbmZpZ3VyYXRpb24gPSAoYykgPT4gKHsgLi4uZGVmYXVsdHMuY29uZmlndXJhdGlvbiwgLi4uYyB9KTtcblxuZGVzY3JpYmUoJ1J1YnJpY0VsZW1lbnQnLCAoKSA9PiB7XG4gIGxldCBlbGVtZW50O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGVsZW1lbnQgPSBuZXcgUnVicmljRWxlbWVudCgpO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2V0IG1vZGVsJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2V0IHRoZSBtb2RlbCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgICBjb25zdCBuZXdNb2RlbCA9IG1vZGVsKCk7XG4gICAgICBlbGVtZW50Lm1vZGVsID0gbmV3TW9kZWw7XG4gICAgICBleHBlY3QoZWxlbWVudC5fbW9kZWwpLnRvRXF1YWwobmV3TW9kZWwpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnb25Nb2RlbENoYW5nZWQnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBkaXNwYXRjaCBNb2RlbFVwZGF0ZWRFdmVudCBvbiBtb2RlbCBjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCBuZXdNb2RlbCA9IG1vZGVsKCk7XG4gICAgICBjb25zdCBkaXNwYXRjaEV2ZW50U3B5ID0gamVzdC5zcHlPbihlbGVtZW50LCAnZGlzcGF0Y2hFdmVudCcpO1xuICAgICAgZWxlbWVudC5vbk1vZGVsQ2hhbmdlZChuZXdNb2RlbCk7XG4gICAgICBleHBlY3QoZWxlbWVudC5fbW9kZWwpLnRvRXF1YWwobmV3TW9kZWwpO1xuICAgICAgZXhwZWN0KGRpc3BhdGNoRXZlbnRTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKG5ldyBNb2RlbFVwZGF0ZWRFdmVudChuZXdNb2RlbCwgZmFsc2UpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NldCBjb25maWd1cmF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc2V0IHRoZSBjb25maWd1cmF0aW9uIGNvcnJlY3RseScsICgpID0+IHtcbiAgICAgIGNvbnN0IG5ld0NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uKCk7XG4gICAgICBlbGVtZW50LmNvbmZpZ3VyYXRpb24gPSBuZXdDb25maWd1cmF0aW9uO1xuICAgICAgZXhwZWN0KGVsZW1lbnQuX2NvbmZpZ3VyYXRpb24pLnRvRXF1YWwobmV3Q29uZmlndXJhdGlvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY2FsbCBfcmVuZGVyIG1ldGhvZCBvbiBjb25maWd1cmF0aW9uIGNoYW5nZSBhbmQgb3ZlcndyaXRlIHRoZSBkZWZhdWx0cyB3aXRoIHRoZSBuZXcgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbmV3Q29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24oeyBtYXhNYXhQb2ludHM6IDEwIH0pO1xuICAgICAgY29uc3QgcmVuZGVyU3B5ID0gamVzdC5zcHlPbihlbGVtZW50LCAnX3JlbmRlcicpO1xuICAgICAgZWxlbWVudC5vbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5ld0NvbmZpZ3VyYXRpb24pO1xuICAgICAgZXhwZWN0KGVsZW1lbnQuX2NvbmZpZ3VyYXRpb24ubWF4TWF4UG9pbnRzKS50b0VxdWFsKDEwKTtcbiAgICAgIGV4cGVjdChyZW5kZXJTcHkpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3VwZGF0ZU1vZGVsQWNjb3JkaW5nVG9SZWNlaXZlZFByb3BzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIG1vZGVsIGlmIGl0IGlzIGFscmVhZHkgdmFsaWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZE1vZGVsID0gbW9kZWwoKTtcbiAgICAgIGNvbnN0IHZhbGlkYXRlZE1vZGVsID0gZWxlbWVudC51cGRhdGVNb2RlbEFjY29yZGluZ1RvUmVjZWl2ZWRQcm9wcyh2YWxpZE1vZGVsKTtcbiAgICAgIGV4cGVjdCh2YWxpZGF0ZWRNb2RlbCkudG9FcXVhbCh2YWxpZE1vZGVsKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IG1vZGVsIGlmIHRoZSBpbnB1dCBtb2RlbCBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWRNb2RlbCA9IGVsZW1lbnQudXBkYXRlTW9kZWxBY2NvcmRpbmdUb1JlY2VpdmVkUHJvcHModW5kZWZpbmVkKTtcbiAgICAgIGV4cGVjdCh2YWxpZGF0ZWRNb2RlbCkudG9FcXVhbChkZWZhdWx0cy5tb2RlbCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBtb2RlbCBpZiB0aGUgaW5wdXQgbW9kZWwgaXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlZE1vZGVsID0gZWxlbWVudC51cGRhdGVNb2RlbEFjY29yZGluZ1RvUmVjZWl2ZWRQcm9wcyhudWxsKTtcbiAgICAgIGV4cGVjdCh2YWxpZGF0ZWRNb2RlbCkudG9FcXVhbChkZWZhdWx0cy5tb2RlbCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB1bmRlZmluZWQgcHJvcGVydGllcyBpbiB0aGUgaW5wdXQgbW9kZWwnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWRNb2RlbCA9IGVsZW1lbnQudXBkYXRlTW9kZWxBY2NvcmRpbmdUb1JlY2VpdmVkUHJvcHMoe30pO1xuICAgICAgZXhwZWN0KHZhbGlkYXRlZE1vZGVsKS50b0VxdWFsKHsgcG9pbnRzOiBbXSwgc2FtcGxlQW5zd2VyczogW10gfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBudWxsIHByb3BlcnRpZXMgaW4gdGhlIGlucHV0IG1vZGVsJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVkTW9kZWwgPSBlbGVtZW50LnVwZGF0ZU1vZGVsQWNjb3JkaW5nVG9SZWNlaXZlZFByb3BzKHsgbWF4UG9pbnRzOiBudWxsLCBleGNsdWRlWmVybzogbnVsbCB9KTtcbiAgICAgIGV4cGVjdCh2YWxpZGF0ZWRNb2RlbCkudG9FcXVhbCh7XG4gICAgICAgIGV4Y2x1ZGVaZXJvOiBudWxsLFxuICAgICAgICBtYXhQb2ludHM6IG51bGwsXG4gICAgICAgIHBvaW50czogWycnLCAnJ10sXG4gICAgICAgIHNhbXBsZUFuc3dlcnM6IFtudWxsLCBudWxsXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgdW5kZWZpbmVkIHBvaW50cyBhbmQgc2FtcGxlQW5zd2VycyBhcnJheXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWRNb2RlbCA9IGVsZW1lbnQudXBkYXRlTW9kZWxBY2NvcmRpbmdUb1JlY2VpdmVkUHJvcHMoeyBtYXhQb2ludHM6IDUsIGV4Y2x1ZGVaZXJvOiBmYWxzZSB9KTtcbiAgICAgIGV4cGVjdCh2YWxpZGF0ZWRNb2RlbC5wb2ludHMpLnRvRXF1YWwoWycnLCAnJywgJycsICcnLCAnJywgJyddKTtcbiAgICAgIGV4cGVjdCh2YWxpZGF0ZWRNb2RlbC5zYW1wbGVBbnN3ZXJzKS50b0VxdWFsKFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBjYXNlIHdoZW4gaG93TWFueVBvaW50c0RvZXNJdEhhdmUgaXMgbGVzcyB0aGFuIGhvd01hbnlQb2ludHNTaG91bGRIYXZlIHdpdGggbWF4UG9pbnRzICYgZXhjbHVkZVplcm8gY2hhbmdlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRNb2RlbCA9IG1vZGVsKHtcbiAgICAgICAgbWF4UG9pbnRzOiA3LFxuICAgICAgICBleGNsdWRlWmVybzogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZWxlbWVudC51cGRhdGVNb2RlbEFjY29yZGluZ1RvUmVjZWl2ZWRQcm9wcyhuZXh0TW9kZWwpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5wb2ludHMpLnRvRXF1YWwoWydBJywgJ0InLCAnQycsICdEJywgJycsICcnLCAnJ10pO1xuICAgICAgZXhwZWN0KHJlc3VsdC5zYW1wbGVBbnN3ZXJzKS50b0VxdWFsKFt0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIG51bGwsIG51bGwsIG51bGxdKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGNhc2Ugd2hlbiBob3dNYW55UG9pbnRzRG9lc0l0SGF2ZSBpcyBsZXNzIHRoYW4gaG93TWFueVBvaW50c1Nob3VsZEhhdmUgYW5kIG1heFBvaW50c0NoYW5nZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBuZXh0TW9kZWwgPSBtb2RlbCh7XG4gICAgICAgIG1heFBvaW50czogNCxcbiAgICAgICAgZXhjbHVkZVplcm86IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBlbGVtZW50LnVwZGF0ZU1vZGVsQWNjb3JkaW5nVG9SZWNlaXZlZFByb3BzKG5leHRNb2RlbCk7XG4gICAgICBleHBlY3QocmVzdWx0LnBvaW50cykudG9FcXVhbChbJ0EnLCAnQicsICdDJywgJ0QnLCAnJ10pO1xuICAgICAgZXhwZWN0KHJlc3VsdC5zYW1wbGVBbnN3ZXJzKS50b0VxdWFsKFt0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIG51bGxdKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGNhc2Ugd2hlbiBob3dNYW55UG9pbnRzRG9lc0l0SGF2ZSBpcyBncmVhdGVyIHRoYW4gaG93TWFueVBvaW50c1Nob3VsZEhhdmUgYW5kIGV4Y2x1ZGVaZXJvQ2hhbmdlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRNb2RlbCA9IG1vZGVsKHtcbiAgICAgICAgbWF4UG9pbnRzOiAzLFxuICAgICAgICBleGNsdWRlWmVybzogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZWxlbWVudC51cGRhdGVNb2RlbEFjY29yZGluZ1RvUmVjZWl2ZWRQcm9wcyhuZXh0TW9kZWwpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5wb2ludHMpLnRvRXF1YWwoWydCJywgJ0MnLCAnRCddKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuc2FtcGxlQW5zd2VycykudG9FcXVhbChbdHJ1ZSwgZmFsc2UsIGZhbHNlXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBjYXNlIHdoZW4gaG93TWFueVBvaW50c0RvZXNJdEhhdmUgaXMgZ3JlYXRlciB0aGFuIGhvd01hbnlQb2ludHNTaG91bGRIYXZlIGFuZCBtYXhQb2ludHNDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgY29uc3QgbmV4dE1vZGVsID0gbW9kZWwoe1xuICAgICAgICBtYXhQb2ludHM6IDEsXG4gICAgICAgIGV4Y2x1ZGVaZXJvOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZWxlbWVudC51cGRhdGVNb2RlbEFjY29yZGluZ1RvUmVjZWl2ZWRQcm9wcyhuZXh0TW9kZWwpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5wb2ludHMpLnRvRXF1YWwoWydBJywgJ0InXSk7XG4gICAgICBleHBlY3QocmVzdWx0LnNhbXBsZUFuc3dlcnMpLnRvRXF1YWwoW3RydWUsIHRydWVdKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGNhc2UgaWYgaW52YWxpZCBtb2RlbCBpcyBzZXQsIGFmdGVyIHVwZGF0ZU1vZGVsQWNjb3JkaW5nVG9SZWNlaXZlZFByb3BzIHRoZSByZXR1cm5lZCBtb2RlbCBpcyB2YWxpZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG5ld01vZGVsID0gaW52YWxpZE1vZGVsKCk7XG4gICAgICBlbGVtZW50Lm9uTW9kZWxDaGFuZ2VkKG5ld01vZGVsKTtcbiAgICAgIGV4cGVjdChlbGVtZW50Ll9tb2RlbC5wb2ludHMpLnRvRXF1YWwoWydBJywgJ0InLCAnQycsICdEJywgJycsICcnXSk7XG4gICAgICBleHBlY3QoZWxlbWVudC5fbW9kZWwuc2FtcGxlQW5zd2VycykudG9FcXVhbChbdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBudWxsLCBudWxsXSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLG1CQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQUksSUFBSSxDQUFDQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU87RUFDNUJDLE1BQU0sRUFBRUYsSUFBSSxDQUFDRyxFQUFFLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFFSEgsSUFBSSxDQUFDQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsT0FBTztFQUNyQ0csTUFBTSxFQUFFO0lBQ05DLFlBQVksRUFBR0MsS0FBSyxpQkFBS1AsTUFBQSxDQUFBUSxPQUFBLENBQUFDLGFBQUEsUUFBU0YsS0FBUTtFQUM1QyxDQUFDO0VBQ0RHLFFBQVEsRUFBRTtJQUNSQyxLQUFLLEVBQUdKLEtBQUssaUJBQUtQLE1BQUEsQ0FBQVEsT0FBQSxDQUFBQyxhQUFBLFFBQVNGLEtBQVEsQ0FBQztJQUNwQ0ssTUFBTSxFQUFFWCxJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCUyxLQUFLLEVBQUVaLElBQUksQ0FBQ0csRUFBRSxDQUFDO0VBQ2pCO0FBQ0YsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNVSxLQUFLLEdB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
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
7
- var _default = {
6
+ exports.default = void 0;
7
+ var _default = exports.default = {
8
8
  model: {
9
9
  points: ['', '', '', ''],
10
10
  sampleAnswers: [null, null, null, null],
@@ -64,5 +64,4 @@ var _default = {
64
64
  maxMaxPoints: 9
65
65
  }
66
66
  };
67
- exports["default"] = _default;
68
- //# sourceMappingURL=defaults.js.map
67
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2RlbCIsInBvaW50cyIsInNhbXBsZUFuc3dlcnMiLCJtYXhQb2ludHMiLCJleGNsdWRlWmVybyIsImV4Y2x1ZGVaZXJvRW5hYmxlZCIsIm1heFBvaW50c0VuYWJsZWQiLCJjb25maWd1cmF0aW9uIiwiYmFzZUlucHV0Q29uZmlndXJhdGlvbiIsImF1ZGlvIiwiZGlzYWJsZWQiLCJ2aWRlbyIsImltYWdlIiwidGV4dEFsaWduIiwic2hvd1BhcmFncmFwaHMiLCJzZXBhcmF0ZVBhcmFncmFwaHMiLCJydWJyaWNsZXNzSW5zdHJ1Y3Rpb24iLCJpbnB1dENvbmZpZ3VyYXRpb24iLCJzaG93RXhjbHVkZVplcm8iLCJzZXR0aW5ncyIsImxhYmVsIiwic2hvd01heFBvaW50Iiwic2V0dGluZ3NQYW5lbERpc2FibGVkIiwibWF0aE1sT3B0aW9ucyIsIm1tbE91dHB1dCIsIm1tbEVkaXRpbmciLCJtYXhNYXhQb2ludHMiXSwic291cmNlcyI6WyIuLi9zcmMvZGVmYXVsdHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICBtb2RlbDoge1xuICAgIHBvaW50czogWycnLCAnJywgJycsICcnXSxcbiAgICBzYW1wbGVBbnN3ZXJzOiBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbF0sXG4gICAgbWF4UG9pbnRzOiAzLFxuICAgIGV4Y2x1ZGVaZXJvOiBmYWxzZSxcbiAgICBleGNsdWRlWmVyb0VuYWJsZWQ6IHRydWUsXG4gICAgbWF4UG9pbnRzRW5hYmxlZDogdHJ1ZSxcbiAgfSxcbiAgY29uZmlndXJhdGlvbjoge1xuICAgIGJhc2VJbnB1dENvbmZpZ3VyYXRpb246IHtcbiAgICAgIGF1ZGlvOiB7IGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgdmlkZW86IHsgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICBpbWFnZTogeyBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgIHRleHRBbGlnbjogeyBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgICAgc2hvd1BhcmFncmFwaHM6IHsgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICBzZXBhcmF0ZVBhcmFncmFwaHM6IHsgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB9LFxuICAgIHJ1YnJpY2xlc3NJbnN0cnVjdGlvbjoge1xuICAgICAgaW5wdXRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGF1ZGlvOiB7IGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB2aWRlbzogeyBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgaW1hZ2U6IHsgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2hvd0V4Y2x1ZGVaZXJvOiB7XG4gICAgICBzZXR0aW5nczogdHJ1ZSxcbiAgICAgIGxhYmVsOiAnQWJpbGl0eSB0byBleGNsdWRlIHplcm8nLFxuICAgIH0sXG4gICAgc2hvd01heFBvaW50OiB7XG4gICAgICBzZXR0aW5nczogdHJ1ZSxcbiAgICAgIGxhYmVsOiAnU2hvdyBtYXggcG9pbnRzIGRyb3Bkb3duJyxcbiAgICB9LFxuICAgIHNldHRpbmdzUGFuZWxEaXNhYmxlZDogZmFsc2UsXG4gICAgLy8gd2lkdGg6ICc1MDBweCdcbiAgICBtYXRoTWxPcHRpb25zOiB7XG4gICAgICBtbWxPdXRwdXQ6IGZhbHNlLFxuICAgICAgbW1sRWRpdGluZzogZmFsc2UsXG4gICAgfSxcbiAgICBtYXhNYXhQb2ludHM6IDksXG4gIH0sXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7aUNBQWU7RUFDYkEsS0FBSyxFQUFFO0lBQ0xDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN4QkMsYUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0lBQ3ZDQyxTQUFTLEVBQUUsQ0FBQztJQUNaQyxXQUFXLEVBQUUsS0FBSztJQUNsQkMsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QkMsZ0JBQWdCLEVBQUU7RUFDcEIsQ0FBQztFQUNEQyxhQUFhLEVBQUU7SUFDYkMsc0JBQXNCLEVBQUU7TUFDdEJDLEtBQUssRUFBRTtRQUFFQyxRQUFRLEVBQUU7TUFBTSxDQUFDO01BQzFCQyxLQUFLLEVBQUU7UUFBRUQsUUFBUSxFQUFFO01BQU0sQ0FBQztNQUMxQkUsS0FBSyxFQUFFO1FBQUVGLFFBQVEsRUFBRTtNQUFNLENBQUM7TUFDMUJHLFNBQVMsRUFBRTtRQUFFSCxRQUFRLEVBQUU7TUFBSyxDQUFDO01BQzdCSSxjQUFjLEVBQUU7UUFBRUosUUFBUSxFQUFFO01BQU0sQ0FBQztNQUNuQ0ssa0JBQWtCLEVBQUU7UUFBRUwsUUFBUSxFQUFFO01BQUs7SUFDdkMsQ0FBQztJQUNETSxxQkFBcUIsRUFBRTtNQUNyQkMsa0JBQWtCLEVBQUU7UUFDbEJSLEtBQUssRUFBRTtVQUFFQyxRQUFRLEVBQUU7UUFBTSxDQUFDO1FBQzFCQyxLQUFLLEVBQUU7VUFBRUQsUUFBUSxFQUFFO1FBQU0sQ0FBQztRQUMxQkUsS0FBSyxFQUFFO1VBQUVGLFFBQVEsRUFBRTtRQUFNO01BQzNCO0lBQ0YsQ0FBQztJQUNEUSxlQUFlLEVBQUU7TUFDZkMsUUFBUSxFQUFFLElBQUk7TUFDZEMsS0FBSyxFQUFFO0lBQ1QsQ0FBQztJQUNEQyxZQUFZLEVBQUU7TUFDWkYsUUFBUSxFQUFFLElBQUk7TUFDZEMsS0FBSyxFQUFFO0lBQ1QsQ0FBQztJQUNERSxxQkFBcUIsRUFBRSxLQUFLO0lBQzVCO0lBQ0FDLGFBQWEsRUFBRTtNQUNiQyxTQUFTLEVBQUUsS0FBSztNQUNoQkMsVUFBVSxFQUFFO0lBQ2QsQ0FBQztJQUNEQyxZQUFZLEVBQUU7RUFDaEI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/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"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,MAAM,EAAE,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,CADH;AAELC,IAAAA,aAAa,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,CAFV;AAGLC,IAAAA,SAAS,EAAE,CAHN;AAILC,IAAAA,WAAW,EAAE,KAJR;AAKLC,IAAAA,kBAAkB,EAAE,IALf;AAMLC,IAAAA,gBAAgB,EAAE;AANb,GADM;AASbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OADe;AAEtBC,MAAAA,KAAK,EAAE;AAAED,QAAAA,QAAQ,EAAE;AAAZ,OAFe;AAGtBE,MAAAA,KAAK,EAAE;AAAEF,QAAAA,QAAQ,EAAE;AAAZ,OAHe;AAItBG,MAAAA,SAAS,EAAE;AAAEH,QAAAA,QAAQ,EAAE;AAAZ,OAJW;AAKtBI,MAAAA,cAAc,EAAE;AAAEJ,QAAAA,QAAQ,EAAE;AAAZ,OALM;AAMtBK,MAAAA,kBAAkB,EAAE;AAAEL,QAAAA,QAAQ,EAAE;AAAZ;AANE,KADX;AASbM,IAAAA,qBAAqB,EAAE;AACrBC,MAAAA,kBAAkB,EAAE;AAClBR,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW;AADC,KATV;AAgBbQ,IAAAA,eAAe,EAAE;AACfC,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KAhBJ;AAoBbC,IAAAA,YAAY,EAAE;AACZF,MAAAA,QAAQ,EAAE,IADE;AAEZC,MAAAA,KAAK,EAAE;AAFK,KApBD;AAwBbE,IAAAA,qBAAqB,EAAE,KAxBV;AAyBb;AACAC,IAAAA,aAAa,EAAE;AACbC,MAAAA,SAAS,EAAE,KADE;AAEbC,MAAAA,UAAU,EAAE;AAFC,KA1BF;AA8BbC,IAAAA,YAAY,EAAE;AA9BD;AATF,C","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"],"file":"defaults.js"}
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,101 +1,60 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports["default"] = void 0;
9
-
10
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
25
-
7
+ exports.default = void 0;
26
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
-
28
9
  var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
29
-
30
10
  var _react = _interopRequireDefault(require("react"));
31
-
32
- var _reactDom = _interopRequireDefault(require("react-dom"));
33
-
11
+ var _client = require("react-dom/client");
34
12
  var _debug = _interopRequireDefault(require("debug"));
35
-
36
13
  var _main = _interopRequireDefault(require("./main"));
37
-
38
14
  var _defaults = _interopRequireDefault(require("./defaults"));
39
-
40
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
41
-
42
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
-
44
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
45
-
46
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
47
-
48
- var modelWithDefaults = function modelWithDefaults(m) {
49
- return _objectSpread(_objectSpread({}, _defaults["default"].model), m);
50
- };
51
-
52
- var configurationWithDefaults = function configurationWithDefaults(c) {
53
- return _objectSpread(_objectSpread({}, _defaults["default"].configuration), c);
54
- };
55
-
56
- var RubricElement = /*#__PURE__*/function (_HTMLElement) {
57
- (0, _inherits2["default"])(RubricElement, _HTMLElement);
58
-
59
- var _super = _createSuper(RubricElement);
60
-
61
- function RubricElement() {
62
- var _this;
63
-
64
- (0, _classCallCheck2["default"])(this, RubricElement);
65
- _this = _super.call(this);
66
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateModelAccordingToReceivedProps", function (nextModel) {
67
- var currentModel = _objectSpread({}, _this._model);
68
-
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
+ };
69
30
  if (!nextModel) {
70
31
  return currentModel;
71
32
  }
33
+ const validatedModel = {
34
+ ...nextModel
35
+ };
72
36
 
73
- var validatedModel = _objectSpread({}, nextModel); // excludeZero should be false and disabled when maxPoints is 1
74
-
75
-
37
+ // excludeZero should be false and disabled when maxPoints is 1
76
38
  if (validatedModel.maxPoints === 1) {
77
39
  validatedModel.excludeZero = false;
78
40
  }
79
-
80
- var _ref = validatedModel || {},
81
- maxPoints = _ref.maxPoints,
82
- excludeZero = _ref.excludeZero;
83
-
84
- validatedModel.points = validatedModel.points ? (0, _toConsumableArray2["default"])(validatedModel.points) : [];
85
- validatedModel.sampleAnswers = validatedModel.sampleAnswers ? (0, _toConsumableArray2["default"])(validatedModel.sampleAnswers) : [];
86
- var howManyPointsShouldHave = excludeZero ? maxPoints : maxPoints + 1;
87
- var howManyPointsDoesItHave = validatedModel.points.length;
88
- var excludeZeroChanged = (currentModel === null || currentModel === void 0 ? void 0 : currentModel.excludeZero) !== (nextModel === null || nextModel === void 0 ? void 0 : nextModel.excludeZero);
89
- var maxPointsChanged = (currentModel === null || currentModel === void 0 ? void 0 : currentModel.maxPoints) !== (nextModel === null || nextModel === void 0 ? void 0 : nextModel.maxPoints);
90
-
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;
91
51
  if (howManyPointsDoesItHave < howManyPointsShouldHave) {
92
52
  if (excludeZeroChanged && !excludeZero) {
93
- validatedModel.points = [''].concat((0, _toConsumableArray2["default"])(validatedModel.points));
94
- validatedModel.sampleAnswers = [null].concat((0, _toConsumableArray2["default"])(validatedModel.sampleAnswers));
53
+ validatedModel.points = ['', ...validatedModel.points];
54
+ validatedModel.sampleAnswers = [null, ...validatedModel.sampleAnswers];
95
55
  }
96
-
97
56
  if (maxPointsChanged) {
98
- for (var i = 0; i < howManyPointsShouldHave - howManyPointsDoesItHave; i++) {
57
+ for (let i = 0; i < howManyPointsShouldHave - howManyPointsDoesItHave; i++) {
99
58
  validatedModel.points.push('');
100
59
  validatedModel.sampleAnswers.push(null);
101
60
  }
@@ -105,93 +64,72 @@ var RubricElement = /*#__PURE__*/function (_HTMLElement) {
105
64
  validatedModel.points = validatedModel.points.slice(1);
106
65
  validatedModel.sampleAnswers = validatedModel.sampleAnswers.slice(1);
107
66
  }
108
-
109
67
  if (maxPointsChanged) {
110
68
  validatedModel.points = validatedModel.points.slice(0, howManyPointsShouldHave);
111
69
  validatedModel.sampleAnswers = validatedModel.sampleAnswers.slice(0, howManyPointsShouldHave);
112
70
  }
113
71
  }
114
-
115
72
  return validatedModel;
116
73
  });
117
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onConfigurationChanged", function (c) {
118
- _this._configuration = configurationWithDefaults(c);
119
-
120
- if (_this._model) {
121
- _this.onModelChanged(_this._model);
74
+ (0, _defineProperty2.default)(this, "onConfigurationChanged", c => {
75
+ this._configuration = configurationWithDefaults(c);
76
+ if (this._model) {
77
+ this.onModelChanged(this._model);
122
78
  }
123
-
124
- _this._render();
79
+ this._render();
125
80
  });
126
-
127
- _debug["default"].log('constructor called');
128
-
129
- _this._model = modelWithDefaults();
130
- _this._configuration = configurationWithDefaults();
131
- _this.onModelChanged = _this.onModelChanged.bind((0, _assertThisInitialized2["default"])(_this));
132
- _this.onConfigurationChanged = _this.onConfigurationChanged.bind((0, _assertThisInitialized2["default"])(_this));
133
- return _this;
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);
134
87
  }
135
-
136
- (0, _createClass2["default"])(RubricElement, [{
137
- key: "model",
138
- set: function set(m) {
139
- this._model = this.updateModelAccordingToReceivedProps(modelWithDefaults(m));
140
-
141
- this._render();
142
- }
143
- }, {
144
- key: "configuration",
145
- set: function set(c) {
146
- this._configuration = configurationWithDefaults(c);
147
-
148
- this._render();
149
- }
150
- }, {
151
- key: "onModelChanged",
152
- value: function onModelChanged(m) {
153
- this._model = this.updateModelAccordingToReceivedProps(m);
154
-
155
- this._render();
156
-
157
- this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model, false));
158
- }
159
- }, {
160
- key: "insertImage",
161
- value: function insertImage(handler) {
162
- this.dispatchEvent(new _pieConfigureEvents.InsertImageEvent(handler));
163
- }
164
- }, {
165
- key: "onDeleteImage",
166
- value: function onDeleteImage(src, done) {
167
- this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
168
- }
169
- }, {
170
- key: "connectedCallback",
171
- value: function connectedCallback() {
172
- this._render();
173
- }
174
- }, {
175
- key: "_render",
176
- value: function _render() {
177
- if (this._model) {
178
- var element = /*#__PURE__*/_react["default"].createElement(_main["default"], {
179
- model: this._model,
180
- configuration: this._configuration,
181
- onModelChanged: this.onModelChanged,
182
- onConfigurationChanged: this.onConfigurationChanged,
183
- imageSupport: {
184
- add: this.insertImage.bind(this),
185
- "delete": this.onDeleteImage.bind(this)
186
- }
187
- });
188
-
189
- _reactDom["default"].render(element, this);
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);
190
124
  }
125
+ this._root.render(element);
191
126
  }
192
- }]);
193
- return RubricElement;
194
- }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
195
-
196
- exports["default"] = RubricElement;
197
- //# sourceMappingURL=index.js.map
127
+ }
128
+ disconnectedCallback() {
129
+ if (this._root) {
130
+ this._root.unmount();
131
+ }
132
+ }
133
+ }
134
+ exports.default = RubricElement;
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGllQ29uZmlndXJlRXZlbnRzIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xpZW50IiwiX2RlYnVnIiwiX21haW4iLCJfZGVmYXVsdHMiLCJtb2RlbFdpdGhEZWZhdWx0cyIsIm0iLCJkZWZhdWx0cyIsIm1vZGVsIiwiY29uZmlndXJhdGlvbldpdGhEZWZhdWx0cyIsImMiLCJjb25maWd1cmF0aW9uIiwiUnVicmljRWxlbWVudCIsIkhUTUxFbGVtZW50IiwiY29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsIm5leHRNb2RlbCIsImN1cnJlbnRNb2RlbCIsIl9tb2RlbCIsInZhbGlkYXRlZE1vZGVsIiwibWF4UG9pbnRzIiwiZXhjbHVkZVplcm8iLCJwb2ludHMiLCJzYW1wbGVBbnN3ZXJzIiwiaG93TWFueVBvaW50c1Nob3VsZEhhdmUiLCJob3dNYW55UG9pbnRzRG9lc0l0SGF2ZSIsImxlbmd0aCIsImV4Y2x1ZGVaZXJvQ2hhbmdlZCIsIm1heFBvaW50c0NoYW5nZWQiLCJpIiwicHVzaCIsInNsaWNlIiwiX2NvbmZpZ3VyYXRpb24iLCJvbk1vZGVsQ2hhbmdlZCIsIl9yZW5kZXIiLCJfcm9vdCIsImRlYnVnIiwibG9nIiwiYmluZCIsIm9uQ29uZmlndXJhdGlvbkNoYW5nZWQiLCJ1cGRhdGVNb2RlbEFjY29yZGluZ1RvUmVjZWl2ZWRQcm9wcyIsImRpc3BhdGNoRXZlbnQiLCJNb2RlbFVwZGF0ZWRFdmVudCIsImluc2VydEltYWdlIiwiaGFuZGxlciIsIkluc2VydEltYWdlRXZlbnQiLCJvbkRlbGV0ZUltYWdlIiwic3JjIiwiZG9uZSIsIkRlbGV0ZUltYWdlRXZlbnQiLCJjb25uZWN0ZWRDYWxsYmFjayIsImVsZW1lbnQiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJNYWluIiwiaW1hZ2VTdXBwb3J0IiwiYWRkIiwiZGVsZXRlIiwiY3JlYXRlUm9vdCIsInJlbmRlciIsImRpc2Nvbm5lY3RlZENhbGxiYWNrIiwidW5tb3VudCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxVcGRhdGVkRXZlbnQsIEluc2VydEltYWdlRXZlbnQsIERlbGV0ZUltYWdlRXZlbnQgfSBmcm9tICdAcGllLWZyYW1ld29yay9waWUtY29uZmlndXJlLWV2ZW50cyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlUm9vdCB9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IE1haW4gZnJvbSAnLi9tYWluJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuL2RlZmF1bHRzJztcblxuY29uc3QgbW9kZWxXaXRoRGVmYXVsdHMgPSAobSkgPT4gKHsgLi4uZGVmYXVsdHMubW9kZWwsIC4uLm0gfSk7XG5cbmNvbnN0IGNvbmZpZ3VyYXRpb25XaXRoRGVmYXVsdHMgPSAoYykgPT4gKHsgLi4uZGVmYXVsdHMuY29uZmlndXJhdGlvbiwgLi4uYyB9KTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnVicmljRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9yb290ID0gbnVsbDtcbiAgICBkZWJ1Zy5sb2coJ2NvbnN0cnVjdG9yIGNhbGxlZCcpO1xuICAgIHRoaXMuX21vZGVsID0gbW9kZWxXaXRoRGVmYXVsdHMoKTtcbiAgICB0aGlzLl9jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbldpdGhEZWZhdWx0cygpO1xuICAgIHRoaXMub25Nb2RlbENoYW5nZWQgPSB0aGlzLm9uTW9kZWxDaGFuZ2VkLmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbkNvbmZpZ3VyYXRpb25DaGFuZ2VkID0gdGhpcy5vbkNvbmZpZ3VyYXRpb25DaGFuZ2VkLmJpbmQodGhpcyk7XG4gIH1cblxuICB1cGRhdGVNb2RlbEFjY29yZGluZ1RvUmVjZWl2ZWRQcm9wcyA9IChuZXh0TW9kZWwpID0+IHtcbiAgICBjb25zdCBjdXJyZW50TW9kZWwgPSB7IC4uLnRoaXMuX21vZGVsIH07XG5cbiAgICBpZiAoIW5leHRNb2RlbCkge1xuICAgICAgcmV0dXJuIGN1cnJlbnRNb2RlbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZWRNb2RlbCA9IHsgLi4ubmV4dE1vZGVsIH07XG5cbiAgICAvLyBleGNsdWRlWmVybyBzaG91bGQgYmUgZmFsc2UgYW5kIGRpc2FibGVkIHdoZW4gbWF4UG9pbnRzIGlzIDFcbiAgICBpZiAodmFsaWRhdGVkTW9kZWwubWF4UG9pbnRzID09PSAxKSB7XG4gICAgICB2YWxpZGF0ZWRNb2RlbC5leGNsdWRlWmVybyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbWF4UG9pbnRzLCBleGNsdWRlWmVybyB9ID0gdmFsaWRhdGVkTW9kZWwgfHwge307XG5cbiAgICB2YWxpZGF0ZWRNb2RlbC5wb2ludHMgPSB2YWxpZGF0ZWRNb2RlbC5wb2ludHMgPyBbLi4udmFsaWRhdGVkTW9kZWwucG9pbnRzXSA6IFtdO1xuICAgIHZhbGlkYXRlZE1vZGVsLnNhbXBsZUFuc3dlcnMgPSB2YWxpZGF0ZWRNb2RlbC5zYW1wbGVBbnN3ZXJzID8gWy4uLnZhbGlkYXRlZE1vZGVsLnNhbXBsZUFuc3dlcnNdIDogW107XG5cbiAgICBjb25zdCBob3dNYW55UG9pbnRzU2hvdWxkSGF2ZSA9IGV4Y2x1ZGVaZXJvID8gbWF4UG9pbnRzIDogbWF4UG9pbnRzICsgMTtcbiAgICBjb25zdCBob3dNYW55UG9pbnRzRG9lc0l0SGF2ZSA9IHZhbGlkYXRlZE1vZGVsLnBvaW50cy5sZW5ndGg7XG5cbiAgICBjb25zdCBleGNsdWRlWmVyb0NoYW5nZWQgPSBjdXJyZW50TW9kZWw/LmV4Y2x1ZGVaZXJvICE9PSBuZXh0TW9kZWw/LmV4Y2x1ZGVaZXJvO1xuICAgIGNvbnN0IG1heFBvaW50c0NoYW5nZWQgPSBjdXJyZW50TW9kZWw/Lm1heFBvaW50cyAhPT0gbmV4dE1vZGVsPy5tYXhQb2ludHM7XG5cbiAgICBpZiAoaG93TWFueVBvaW50c0RvZXNJdEhhdmUgPCBob3dNYW55UG9pbnRzU2hvdWxkSGF2ZSkge1xuICAgICAgaWYgKGV4Y2x1ZGVaZXJvQ2hhbmdlZCAmJiAhZXhjbHVkZVplcm8pIHtcbiAgICAgICAgdmFsaWRhdGVkTW9kZWwucG9pbnRzID0gWycnLCAuLi52YWxpZGF0ZWRNb2RlbC5wb2ludHNdO1xuICAgICAgICB2YWxpZGF0ZWRNb2RlbC5zYW1wbGVBbnN3ZXJzID0gW251bGwsIC4uLnZhbGlkYXRlZE1vZGVsLnNhbXBsZUFuc3dlcnNdO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4UG9pbnRzQ2hhbmdlZCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhvd01hbnlQb2ludHNTaG91bGRIYXZlIC0gaG93TWFueVBvaW50c0RvZXNJdEhhdmU7IGkrKykge1xuICAgICAgICAgIHZhbGlkYXRlZE1vZGVsLnBvaW50cy5wdXNoKCcnKTtcbiAgICAgICAgICB2YWxpZGF0ZWRNb2RlbC5zYW1wbGVBbnN3ZXJzLnB1c2gobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhvd01hbnlQb2ludHNEb2VzSXRIYXZlID4gaG93TWFueVBvaW50c1Nob3VsZEhhdmUpIHtcbiAgICAgIGlmIChleGNsdWRlWmVyb0NoYW5nZWQgJiYgZXhjbHVkZVplcm8pIHtcbiAgICAgICAgdmFsaWRhdGVkTW9kZWwucG9pbnRzID0gdmFsaWRhdGVkTW9kZWwucG9pbnRzLnNsaWNlKDEpO1xuICAgICAgICB2YWxpZGF0ZWRNb2RlbC5zYW1wbGVBbnN3ZXJzID0gdmFsaWRhdGVkTW9kZWwuc2FtcGxlQW5zd2Vycy5zbGljZSgxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heFBvaW50c0NoYW5nZWQpIHtcbiAgICAgICAgdmFsaWRhdGVkTW9kZWwucG9pbnRzID0gdmFsaWRhdGVkTW9kZWwucG9pbnRzLnNsaWNlKDAsIGhvd01hbnlQb2ludHNTaG91bGRIYXZlKTtcbiAgICAgICAgdmFsaWRhdGVkTW9kZWwuc2FtcGxlQW5zd2VycyA9IHZhbGlkYXRlZE1vZGVsLnNhbXBsZUFuc3dlcnMuc2xpY2UoMCwgaG93TWFueVBvaW50c1Nob3VsZEhhdmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZWRNb2RlbDtcbiAgfTtcblxuICBzZXQgbW9kZWwobSkge1xuICAgIHRoaXMuX21vZGVsID0gdGhpcy51cGRhdGVNb2RlbEFjY29yZGluZ1RvUmVjZWl2ZWRQcm9wcyhtb2RlbFdpdGhEZWZhdWx0cyhtKSk7XG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICBzZXQgY29uZmlndXJhdGlvbihjKSB7XG4gICAgdGhpcy5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25XaXRoRGVmYXVsdHMoYyk7XG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICBvbk1vZGVsQ2hhbmdlZChtKSB7XG4gICAgdGhpcy5fbW9kZWwgPSB0aGlzLnVwZGF0ZU1vZGVsQWNjb3JkaW5nVG9SZWNlaXZlZFByb3BzKG0pO1xuICAgIHRoaXMuX3JlbmRlcigpO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgTW9kZWxVcGRhdGVkRXZlbnQodGhpcy5fbW9kZWwsIGZhbHNlKSk7XG4gIH1cblxuICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkID0gKGMpID0+IHtcbiAgICB0aGlzLl9jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbldpdGhEZWZhdWx0cyhjKTtcblxuICAgIGlmICh0aGlzLl9tb2RlbCkge1xuICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlZCh0aGlzLl9tb2RlbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH07XG5cbiAgaW5zZXJ0SW1hZ2UoaGFuZGxlcikge1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5zZXJ0SW1hZ2VFdmVudChoYW5kbGVyKSk7XG4gIH1cblxuICBvbkRlbGV0ZUltYWdlKHNyYywgZG9uZSkge1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRGVsZXRlSW1hZ2VFdmVudChzcmMsIGRvbmUpKTtcbiAgfVxuXG4gIGNvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgX3JlbmRlcigpIHtcbiAgICBpZiAodGhpcy5fbW9kZWwpIHtcbiAgICAgIGxldCBlbGVtZW50ID0gUmVhY3QuY3JlYXRlRWxlbWVudChNYWluLCB7XG4gICAgICAgIG1vZGVsOiB0aGlzLl9tb2RlbCxcbiAgICAgICAgY29uZmlndXJhdGlvbjogdGhpcy5fY29uZmlndXJhdGlvbixcbiAgICAgICAgb25Nb2RlbENoYW5nZWQ6IHRoaXMub25Nb2RlbENoYW5nZWQsXG4gICAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQ6IHRoaXMub25Db25maWd1cmF0aW9uQ2hhbmdlZCxcbiAgICAgICAgaW1hZ2VTdXBwb3J0OiB7XG4gICAgICAgICAgYWRkOiB0aGlzLmluc2VydEltYWdlLmJpbmQodGhpcyksXG4gICAgICAgICAgZGVsZXRlOiB0aGlzLm9uRGVsZXRlSW1hZ2UuYmluZCh0aGlzKSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXRoaXMuX3Jvb3QpIHtcbiAgICAgICAgdGhpcy5fcm9vdCA9IGNyZWF0ZVJvb3QodGhpcyk7XG4gICAgICB9XG4gICAgICB0aGlzLl9yb290LnJlbmRlcihlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICBpZiAodGhpcy5fcm9vdCkge1xuICAgICAgdGhpcy5fcm9vdC51bm1vdW50KCk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsbUJBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElB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