@pie-element/multiple-choice 5.11.0-ps.13 → 6.0.0-strikethrough.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 (40) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/configure/CHANGELOG.md +31 -0
  3. package/configure/lib/__tests__/root.test.js +271 -0
  4. package/configure/lib/defaults.js +17 -4
  5. package/configure/lib/defaults.js.map +1 -1
  6. package/configure/lib/index.js +9 -4
  7. package/configure/lib/index.js.map +1 -1
  8. package/configure/lib/main.js +68 -19
  9. package/configure/lib/main.js.map +1 -1
  10. package/configure/package.json +4 -4
  11. package/controller/CHANGELOG.md +13 -0
  12. package/controller/lib/__tests__/index.test.js +864 -0
  13. package/controller/lib/__tests__/utils.test.js +8 -0
  14. package/controller/lib/defaults.js +4 -2
  15. package/controller/lib/defaults.js.map +1 -1
  16. package/controller/lib/index.js +25 -7
  17. package/controller/lib/index.js.map +1 -1
  18. package/controller/lib/utils.js +9 -1
  19. package/controller/lib/utils.js.map +1 -1
  20. package/controller/package.json +1 -1
  21. package/docs/demo/generate.js +17 -14
  22. package/lib/__tests__/choice-input-test.js +124 -0
  23. package/lib/__tests__/index-test.js +22 -0
  24. package/lib/__tests__/multiple-choice-test.js +237 -0
  25. package/lib/__tests__/session-updater-test.js +72 -0
  26. package/lib/choice-input.js +79 -18
  27. package/lib/choice-input.js.map +1 -1
  28. package/lib/choice.js +149 -0
  29. package/lib/choice.js.map +1 -0
  30. package/lib/feedback-tick.js +1 -1
  31. package/lib/feedback-tick.js.map +1 -1
  32. package/lib/index.js +70 -3
  33. package/lib/index.js.map +1 -1
  34. package/lib/main.js +1 -1
  35. package/lib/main.js.map +1 -1
  36. package/lib/multiple-choice.js +84 -144
  37. package/lib/multiple-choice.js.map +1 -1
  38. package/lib/print.js +125 -0
  39. package/lib/print.js.map +1 -0
  40. package/package.json +5 -5
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _react = _interopRequireDefault(require("react"));
8
+
9
+ var _lodash = _interopRequireDefault(require("lodash"));
10
+
11
+ var _enzyme = require("enzyme");
12
+
13
+ var _multipleChoice = require("../multiple-choice");
14
+
15
+ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
16
+
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
18
+
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
20
+
21
+ describe('Choice', function () {
22
+ var wrapper,
23
+ onChoiceChanged = jest.fn();
24
+ beforeEach(function () {
25
+ wrapper = function wrapper(extras) {
26
+ var props = _objectSpread({
27
+ classes: {},
28
+ choice: {},
29
+ index: 0,
30
+ choicesLength: 1,
31
+ showCorrect: false,
32
+ isEvaluateMode: false,
33
+ choiceMode: 'radio',
34
+ disabled: true,
35
+ onChoiceChanged: onChoiceChanged,
36
+ checked: true,
37
+ correctness: 'correct',
38
+ displayKey: '0',
39
+ choicesLayout: 'grid',
40
+ gridColumns: 2
41
+ }, extras);
42
+
43
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_multipleChoice.Choice, props));
44
+ };
45
+ });
46
+ describe('snapshot', function () {
47
+ it('renders', function () {
48
+ expect(wrapper()).toMatchSnapshot();
49
+ });
50
+ });
51
+ describe('logic', function () {
52
+ it('does not call onChoiceChanged if disabled is true', function () {
53
+ var w = wrapper();
54
+ w.instance().onChange();
55
+ expect(onChoiceChanged).not.toHaveBeenCalled();
56
+ });
57
+ it('calls onChoiceChanged if disabled is false', function () {
58
+ var w = wrapper({
59
+ disabled: false
60
+ });
61
+ w.instance().onChange();
62
+ expect(onChoiceChanged).toHaveBeenCalled();
63
+ });
64
+ });
65
+ });
66
+ describe('CorespringChoice', function () {
67
+ var wrapper, toggle;
68
+ beforeEach(function () {
69
+ toggle = function toggle() {
70
+ return /*#__PURE__*/_react["default"].createElement("div", null, "mocked-toggle");
71
+ };
72
+ });
73
+
74
+ var mkWrapper = function mkWrapper(opts) {
75
+ var clone = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
76
+ opts = clone ? opts = _lodash["default"].merge({
77
+ classes: {},
78
+ choices: [],
79
+ disabled: false,
80
+ keyMode: 'letters',
81
+ onChoiceChanged: jest.fn(),
82
+ mode: 'gather'
83
+ }, opts) : opts;
84
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_multipleChoice.MultipleChoice, opts));
85
+ };
86
+
87
+ describe('snapshot', function () {
88
+ it('renders', function () {
89
+ wrapper = mkWrapper({
90
+ choices: [{
91
+ value: 'a',
92
+ label: 'label a',
93
+ correct: true,
94
+ feedback: 'great'
95
+ }, {
96
+ value: 'b',
97
+ label: 'label b'
98
+ }, {
99
+ value: 'c',
100
+ label: 'label c',
101
+ correct: true,
102
+ feedback: 'great'
103
+ }]
104
+ });
105
+ expect(wrapper).toMatchSnapshot();
106
+ });
107
+ describe('renders incorrect tick if one answer is correct but it is not checked', function () {
108
+ it('renders', function () {
109
+ var w = mkWrapper({
110
+ mode: 'evaluate',
111
+ keyMode: 'none',
112
+ choices: [{
113
+ value: 'a',
114
+ label: 'label a',
115
+ correct: true,
116
+ feedback: 'great'
117
+ }, {
118
+ value: 'b',
119
+ label: 'label b'
120
+ }, {
121
+ value: 'c',
122
+ label: 'label c',
123
+ correct: true,
124
+ feedback: 'great'
125
+ }],
126
+ session: {
127
+ value: ['a']
128
+ }
129
+ });
130
+ expect(w).toMatchSnapshot();
131
+ });
132
+ });
133
+ describe('getCorrectness', function () {
134
+ var itemChoices = [{
135
+ value: 'a',
136
+ label: 'label a',
137
+ correct: true,
138
+ feedback: 'great'
139
+ }, {
140
+ value: 'b',
141
+ label: 'label b'
142
+ }, {
143
+ value: 'c',
144
+ label: 'label c',
145
+ feedback: 'great'
146
+ }, {
147
+ value: 'd',
148
+ label: 'label d',
149
+ correct: true,
150
+ feedback: 'great'
151
+ }];
152
+ var w = mkWrapper({
153
+ mode: 'evaluate',
154
+ choices: itemChoices,
155
+ session: {
156
+ value: ['a', 'c']
157
+ }
158
+ });
159
+ describe('showCorrectToggle disabled (state.showCorrect is false)', function () {
160
+ it('shows choice correctness only if was checked', function () {
161
+ // this one was selected and is correct
162
+ expect(w.instance().getCorrectness(itemChoices[0])).toEqual('correct'); // this one was not selected and is incorrect
163
+
164
+ expect(w.instance().getCorrectness(itemChoices[1])).toEqual(undefined); // this one was selected, but is incorrect
165
+
166
+ expect(w.instance().getCorrectness(itemChoices[2])).toEqual('incorrect'); // this one was not selected and is correct
167
+
168
+ expect(w.instance().getCorrectness(itemChoices[3])).toEqual('incorrect');
169
+ });
170
+ });
171
+ describe('showCorrectToggle enabled (state.showCorrect is true)', function () {
172
+ it('shows choice correctness no matter if was checked or not', function () {
173
+ w.instance().state.showCorrect = true; // this one is correct
174
+
175
+ expect(w.instance().getCorrectness(itemChoices[0])).toEqual('correct'); // this one is not correct
176
+
177
+ expect(w.instance().getCorrectness(itemChoices[1])).toEqual(undefined); // this one is not correct
178
+
179
+ expect(w.instance().getCorrectness(itemChoices[2])).toEqual(undefined); // this one is correct
180
+
181
+ expect(w.instance().getCorrectness(itemChoices[3])).toEqual('correct');
182
+ });
183
+ });
184
+ });
185
+ describe('onToggle', function () {
186
+ it('toggles the state', function () {
187
+ var w = mkWrapper({
188
+ mode: 'evaluate'
189
+ });
190
+ expect(w.state('showCorrect')).toEqual(false);
191
+ w.instance().onToggle();
192
+ expect(w.state('showCorrect')).toEqual(true);
193
+ });
194
+ });
195
+ describe('Toggle', function () {
196
+ it('toggle is rendered', function () {
197
+ var t = mkWrapper().find(_correctAnswerToggle["default"]);
198
+ expect(t.length).toEqual(1);
199
+ });
200
+ it('toggle show is set to false', function () {
201
+ expect(mkWrapper().find(_correctAnswerToggle["default"]).prop('show')).toEqual(false);
202
+ });
203
+ it('shows toggle if mode is evaluate, feedback is enabled and responseCorrect is false', function () {
204
+ expect(mkWrapper({
205
+ mode: 'evaluate',
206
+ responseCorrect: false,
207
+ feedbackEnabled: true
208
+ }).find(_correctAnswerToggle["default"]).prop('show')).toEqual(true);
209
+ });
210
+ it('hides toggle if mode is evaluate and responseCorrect is false', function () {
211
+ expect(mkWrapper({
212
+ mode: 'evaluate',
213
+ responseCorrect: true
214
+ }).find(_correctAnswerToggle["default"]).prop('show')).toEqual(false);
215
+ });
216
+ it('not toggled if showCorrect is false', function () {
217
+ var w = mkWrapper({
218
+ mode: 'evaluate'
219
+ });
220
+ w.setState({
221
+ showCorrect: false
222
+ });
223
+ expect(w.find(_correctAnswerToggle["default"]).prop('toggled')).toEqual(false);
224
+ });
225
+ it('is toggled showCorrect=true && mode=evaluate', function () {
226
+ var w = mkWrapper({
227
+ mode: 'evaluate'
228
+ });
229
+ w.setState({
230
+ showCorrect: true
231
+ });
232
+ expect(w.find(_correctAnswerToggle["default"]).prop('toggled')).toEqual(true);
233
+ });
234
+ });
235
+ });
236
+ });
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbXVsdGlwbGUtY2hvaWNlLXRlc3QuanN4Il0sIm5hbWVzIjpbImRlc2NyaWJlIiwid3JhcHBlciIsIm9uQ2hvaWNlQ2hhbmdlZCIsImplc3QiLCJmbiIsImJlZm9yZUVhY2giLCJleHRyYXMiLCJwcm9wcyIsImNsYXNzZXMiLCJjaG9pY2UiLCJpbmRleCIsImNob2ljZXNMZW5ndGgiLCJzaG93Q29ycmVjdCIsImlzRXZhbHVhdGVNb2RlIiwiY2hvaWNlTW9kZSIsImRpc2FibGVkIiwiY2hlY2tlZCIsImNvcnJlY3RuZXNzIiwiZGlzcGxheUtleSIsImNob2ljZXNMYXlvdXQiLCJncmlkQ29sdW1ucyIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90IiwidyIsImluc3RhbmNlIiwib25DaGFuZ2UiLCJub3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwidG9nZ2xlIiwibWtXcmFwcGVyIiwib3B0cyIsImNsb25lIiwiXyIsIm1lcmdlIiwiY2hvaWNlcyIsImtleU1vZGUiLCJtb2RlIiwidmFsdWUiLCJsYWJlbCIsImNvcnJlY3QiLCJmZWVkYmFjayIsInNlc3Npb24iLCJpdGVtQ2hvaWNlcyIsImdldENvcnJlY3RuZXNzIiwidG9FcXVhbCIsInVuZGVmaW5lZCIsInN0YXRlIiwib25Ub2dnbGUiLCJ0IiwiZmluZCIsIkNvcnJlY3RBbnN3ZXJUb2dnbGUiLCJsZW5ndGgiLCJwcm9wIiwicmVzcG9uc2VDb3JyZWN0IiwiZmVlZGJhY2tFbmFibGVkIiwic2V0U3RhdGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFHQUEsUUFBUSxDQUFDLFFBQUQsRUFBVyxZQUFNO0FBQ3ZCLE1BQUlDLE9BQUo7QUFBQSxNQUFhQyxlQUFlLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUEvQjtBQUVBQyxFQUFBQSxVQUFVLENBQUMsWUFBTTtBQUNmSixJQUFBQSxPQUFPLEdBQUcsaUJBQUFLLE1BQU0sRUFBSTtBQUNsQixVQUFNQyxLQUFLO0FBQ1RDLFFBQUFBLE9BQU8sRUFBRSxFQURBO0FBRVRDLFFBQUFBLE1BQU0sRUFBRSxFQUZDO0FBR1RDLFFBQUFBLEtBQUssRUFBRSxDQUhFO0FBSVRDLFFBQUFBLGFBQWEsRUFBRSxDQUpOO0FBS1RDLFFBQUFBLFdBQVcsRUFBRSxLQUxKO0FBTVRDLFFBQUFBLGNBQWMsRUFBRSxLQU5QO0FBT1RDLFFBQUFBLFVBQVUsRUFBRSxPQVBIO0FBUVRDLFFBQUFBLFFBQVEsRUFBRSxJQVJEO0FBU1RiLFFBQUFBLGVBQWUsRUFBZkEsZUFUUztBQVVUYyxRQUFBQSxPQUFPLEVBQUUsSUFWQTtBQVdUQyxRQUFBQSxXQUFXLEVBQUUsU0FYSjtBQVlUQyxRQUFBQSxVQUFVLEVBQUUsR0FaSDtBQWFUQyxRQUFBQSxhQUFhLEVBQUUsTUFiTjtBQWNUQyxRQUFBQSxXQUFXLEVBQUU7QUFkSixTQWVOZCxNQWZNLENBQVg7O0FBaUJBLGFBQU8sbUNBQVEsZ0NBQUMsc0JBQUQsRUFBWUMsS0FBWixDQUFSLENBQVA7QUFDRCxLQW5CRDtBQW9CRCxHQXJCUyxDQUFWO0FBdUJBUCxFQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekJxQixJQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDbEJDLE1BQUFBLE1BQU0sQ0FBQ3JCLE9BQU8sRUFBUixDQUFOLENBQWtCc0IsZUFBbEI7QUFDRCxLQUZDLENBQUY7QUFHRCxHQUpPLENBQVI7QUFNQXZCLEVBQUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBTTtBQUN0QnFCLElBQUFBLEVBQUUsQ0FBQyxtREFBRCxFQUFzRCxZQUFNO0FBQzVELFVBQUlHLENBQUMsR0FBR3ZCLE9BQU8sRUFBZjtBQUVBdUIsTUFBQUEsQ0FBQyxDQUFDQyxRQUFGLEdBQWFDLFFBQWI7QUFFQUosTUFBQUEsTUFBTSxDQUFDcEIsZUFBRCxDQUFOLENBQXdCeUIsR0FBeEIsQ0FBNEJDLGdCQUE1QjtBQUNELEtBTkMsQ0FBRjtBQVFBUCxJQUFBQSxFQUFFLENBQUMsNENBQUQsRUFBK0MsWUFBTTtBQUNyRCxVQUFJRyxDQUFDLEdBQUd2QixPQUFPLENBQUM7QUFBRWMsUUFBQUEsUUFBUSxFQUFFO0FBQVosT0FBRCxDQUFmO0FBRUFTLE1BQUFBLENBQUMsQ0FBQ0MsUUFBRixHQUFhQyxRQUFiO0FBRUFKLE1BQUFBLE1BQU0sQ0FBQ3BCLGVBQUQsQ0FBTixDQUF3QjBCLGdCQUF4QjtBQUNELEtBTkMsQ0FBRjtBQU9ELEdBaEJPLENBQVI7QUFpQkQsQ0FqRE8sQ0FBUjtBQW1EQTVCLFFBQVEsQ0FBQyxrQkFBRCxFQUFxQixZQUFNO0FBQ2pDLE1BQUlDLE9BQUosRUFBYTRCLE1BQWI7QUFFQXhCLEVBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2Z3QixJQUFBQSxNQUFNLEdBQUcsa0JBQU07QUFDYiwwQkFBTyw2REFBUDtBQUNELEtBRkQ7QUFHRCxHQUpTLENBQVY7O0FBTUEsTUFBSUMsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ0MsSUFBRCxFQUF3QjtBQUFBLFFBQWpCQyxLQUFpQix1RUFBVCxJQUFTO0FBQ3RDRCxJQUFBQSxJQUFJLEdBQUdDLEtBQUssR0FDUEQsSUFBSSxHQUFHRSxtQkFBRUMsS0FBRixDQUNSO0FBQ0UxQixNQUFBQSxPQUFPLEVBQUUsRUFEWDtBQUVFMkIsTUFBQUEsT0FBTyxFQUFFLEVBRlg7QUFHRXBCLE1BQUFBLFFBQVEsRUFBRSxLQUhaO0FBSUVxQixNQUFBQSxPQUFPLEVBQUUsU0FKWDtBQUtFbEMsTUFBQUEsZUFBZSxFQUFFQyxJQUFJLENBQUNDLEVBQUwsRUFMbkI7QUFNRWlDLE1BQUFBLElBQUksRUFBRTtBQU5SLEtBRFEsRUFTUk4sSUFUUSxDQURBLEdBWVJBLElBWko7QUFjQSxXQUFPLG1DQUFRLGdDQUFDLDhCQUFELEVBQW9CQSxJQUFwQixDQUFSLENBQVA7QUFDRCxHQWhCRDs7QUFrQkEvQixFQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekJxQixJQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDbEJwQixNQUFBQSxPQUFPLEdBQUc2QixTQUFTLENBQUM7QUFDbEJLLFFBQUFBLE9BQU8sRUFBRSxDQUNQO0FBQUVHLFVBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNDLFVBQUFBLEtBQUssRUFBRSxTQUFyQjtBQUFnQ0MsVUFBQUEsT0FBTyxFQUFFLElBQXpDO0FBQStDQyxVQUFBQSxRQUFRLEVBQUU7QUFBekQsU0FETyxFQUVQO0FBQUVILFVBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNDLFVBQUFBLEtBQUssRUFBRTtBQUFyQixTQUZPLEVBR1A7QUFBRUQsVUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0MsVUFBQUEsS0FBSyxFQUFFLFNBQXJCO0FBQWdDQyxVQUFBQSxPQUFPLEVBQUUsSUFBekM7QUFBK0NDLFVBQUFBLFFBQVEsRUFBRTtBQUF6RCxTQUhPO0FBRFMsT0FBRCxDQUFuQjtBQVFBbkIsTUFBQUEsTUFBTSxDQUFDckIsT0FBRCxDQUFOLENBQWdCc0IsZUFBaEI7QUFDRCxLQVZDLENBQUY7QUFZQXZCLElBQUFBLFFBQVEsQ0FBQyx1RUFBRCxFQUEwRSxZQUFNO0FBQ3RGcUIsTUFBQUEsRUFBRSxDQUFDLFNBQUQsRUFBWSxZQUFNO0FBQ2xCLFlBQUlHLENBQUMsR0FBR00sU0FBUyxDQUFDO0FBQ2hCTyxVQUFBQSxJQUFJLEVBQUUsVUFEVTtBQUVoQkQsVUFBQUEsT0FBTyxFQUFFLE1BRk87QUFHaEJELFVBQUFBLE9BQU8sRUFBRSxDQUNQO0FBQUVHLFlBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNDLFlBQUFBLEtBQUssRUFBRSxTQUFyQjtBQUFnQ0MsWUFBQUEsT0FBTyxFQUFFLElBQXpDO0FBQStDQyxZQUFBQSxRQUFRLEVBQUU7QUFBekQsV0FETyxFQUVQO0FBQUVILFlBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNDLFlBQUFBLEtBQUssRUFBRTtBQUFyQixXQUZPLEVBR1A7QUFBRUQsWUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0MsWUFBQUEsS0FBSyxFQUFFLFNBQXJCO0FBQWdDQyxZQUFBQSxPQUFPLEVBQUUsSUFBekM7QUFBK0NDLFlBQUFBLFFBQVEsRUFBRTtBQUF6RCxXQUhPLENBSE87QUFRaEJDLFVBQUFBLE9BQU8sRUFBRTtBQUNQSixZQUFBQSxLQUFLLEVBQUUsQ0FBQyxHQUFEO0FBREE7QUFSTyxTQUFELENBQWpCO0FBYUFoQixRQUFBQSxNQUFNLENBQUNFLENBQUQsQ0FBTixDQUFVRCxlQUFWO0FBQ0QsT0FmQyxDQUFGO0FBZ0JELEtBakJPLENBQVI7QUFtQkF2QixJQUFBQSxRQUFRLENBQUMsZ0JBQUQsRUFBbUIsWUFBTTtBQUMvQixVQUFJMkMsV0FBVyxHQUFHLENBQ2hCO0FBQUVMLFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNDLFFBQUFBLEtBQUssRUFBRSxTQUFyQjtBQUFnQ0MsUUFBQUEsT0FBTyxFQUFFLElBQXpDO0FBQStDQyxRQUFBQSxRQUFRLEVBQUU7QUFBekQsT0FEZ0IsRUFFaEI7QUFBRUgsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0MsUUFBQUEsS0FBSyxFQUFFO0FBQXJCLE9BRmdCLEVBR2hCO0FBQUVELFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNDLFFBQUFBLEtBQUssRUFBRSxTQUFyQjtBQUFnQ0UsUUFBQUEsUUFBUSxFQUFFO0FBQTFDLE9BSGdCLEVBSWhCO0FBQUVILFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNDLFFBQUFBLEtBQUssRUFBRSxTQUFyQjtBQUFnQ0MsUUFBQUEsT0FBTyxFQUFFLElBQXpDO0FBQStDQyxRQUFBQSxRQUFRLEVBQUU7QUFBekQsT0FKZ0IsQ0FBbEI7QUFNQSxVQUFJakIsQ0FBQyxHQUFHTSxTQUFTLENBQUM7QUFDaEJPLFFBQUFBLElBQUksRUFBRSxVQURVO0FBRWhCRixRQUFBQSxPQUFPLEVBQUVRLFdBRk87QUFHaEJELFFBQUFBLE9BQU8sRUFBRTtBQUNQSixVQUFBQSxLQUFLLEVBQUUsQ0FBQyxHQUFELEVBQU0sR0FBTjtBQURBO0FBSE8sT0FBRCxDQUFqQjtBQVFBdEMsTUFBQUEsUUFBUSxDQUFDLHlEQUFELEVBQTRELFlBQU07QUFDeEVxQixRQUFBQSxFQUFFLENBQUMsOENBQUQsRUFBaUQsWUFBTTtBQUN2RDtBQUNBQyxVQUFBQSxNQUFNLENBQUNFLENBQUMsQ0FBQ0MsUUFBRixHQUFhbUIsY0FBYixDQUE0QkQsV0FBVyxDQUFDLENBQUQsQ0FBdkMsQ0FBRCxDQUFOLENBQW9ERSxPQUFwRCxDQUE0RCxTQUE1RCxFQUZ1RCxDQUd2RDs7QUFDQXZCLFVBQUFBLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDQyxRQUFGLEdBQWFtQixjQUFiLENBQTRCRCxXQUFXLENBQUMsQ0FBRCxDQUF2QyxDQUFELENBQU4sQ0FBb0RFLE9BQXBELENBQTREQyxTQUE1RCxFQUp1RCxDQUt2RDs7QUFDQXhCLFVBQUFBLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDQyxRQUFGLEdBQWFtQixjQUFiLENBQTRCRCxXQUFXLENBQUMsQ0FBRCxDQUF2QyxDQUFELENBQU4sQ0FBb0RFLE9BQXBELENBQTRELFdBQTVELEVBTnVELENBT3ZEOztBQUNBdkIsVUFBQUEsTUFBTSxDQUFDRSxDQUFDLENBQUNDLFFBQUYsR0FBYW1CLGNBQWIsQ0FBNEJELFdBQVcsQ0FBQyxDQUFELENBQXZDLENBQUQsQ0FBTixDQUFvREUsT0FBcEQsQ0FBNEQsV0FBNUQ7QUFDRCxTQVRDLENBQUY7QUFVRCxPQVhPLENBQVI7QUFhQTdDLE1BQUFBLFFBQVEsQ0FBQyx1REFBRCxFQUEwRCxZQUFNO0FBQ3RFcUIsUUFBQUEsRUFBRSxDQUFDLDBEQUFELEVBQTZELFlBQU07QUFDbkVHLFVBQUFBLENBQUMsQ0FBQ0MsUUFBRixHQUFhc0IsS0FBYixDQUFtQm5DLFdBQW5CLEdBQWlDLElBQWpDLENBRG1FLENBR25FOztBQUNBVSxVQUFBQSxNQUFNLENBQUNFLENBQUMsQ0FBQ0MsUUFBRixHQUFhbUIsY0FBYixDQUE0QkQsV0FBVyxDQUFDLENBQUQsQ0FBdkMsQ0FBRCxDQUFOLENBQW9ERSxPQUFwRCxDQUE0RCxTQUE1RCxFQUptRSxDQUtuRTs7QUFDQXZCLFVBQUFBLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDQyxRQUFGLEdBQWFtQixjQUFiLENBQTRCRCxXQUFXLENBQUMsQ0FBRCxDQUF2QyxDQUFELENBQU4sQ0FBb0RFLE9BQXBELENBQTREQyxTQUE1RCxFQU5tRSxDQU9uRTs7QUFDQXhCLFVBQUFBLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDQyxRQUFGLEdBQWFtQixjQUFiLENBQTRCRCxXQUFXLENBQUMsQ0FBRCxDQUF2QyxDQUFELENBQU4sQ0FBb0RFLE9BQXBELENBQTREQyxTQUE1RCxFQVJtRSxDQVNuRTs7QUFDQXhCLFVBQUFBLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDQyxRQUFGLEdBQWFtQixjQUFiLENBQTRCRCxXQUFXLENBQUMsQ0FBRCxDQUF2QyxDQUFELENBQU4sQ0FBb0RFLE9BQXBELENBQTRELFNBQTVEO0FBQ0QsU0FYQyxDQUFGO0FBWUQsT0FiTyxDQUFSO0FBY0QsS0ExQ08sQ0FBUjtBQTRDQTdDLElBQUFBLFFBQVEsQ0FBQyxVQUFELEVBQWEsWUFBTTtBQUN6QnFCLE1BQUFBLEVBQUUsQ0FBQyxtQkFBRCxFQUFzQixZQUFNO0FBQzVCLFlBQUlHLENBQUMsR0FBR00sU0FBUyxDQUFDO0FBQUVPLFVBQUFBLElBQUksRUFBRTtBQUFSLFNBQUQsQ0FBakI7QUFDQWYsUUFBQUEsTUFBTSxDQUFDRSxDQUFDLENBQUN1QixLQUFGLENBQVEsYUFBUixDQUFELENBQU4sQ0FBK0JGLE9BQS9CLENBQXVDLEtBQXZDO0FBQ0FyQixRQUFBQSxDQUFDLENBQUNDLFFBQUYsR0FBYXVCLFFBQWI7QUFDQTFCLFFBQUFBLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDdUIsS0FBRixDQUFRLGFBQVIsQ0FBRCxDQUFOLENBQStCRixPQUEvQixDQUF1QyxJQUF2QztBQUNELE9BTEMsQ0FBRjtBQU1ELEtBUE8sQ0FBUjtBQVNBN0MsSUFBQUEsUUFBUSxDQUFDLFFBQUQsRUFBVyxZQUFNO0FBQ3ZCcUIsTUFBQUEsRUFBRSxDQUFDLG9CQUFELEVBQXVCLFlBQU07QUFDN0IsWUFBTTRCLENBQUMsR0FBR25CLFNBQVMsR0FBR29CLElBQVosQ0FBaUJDLCtCQUFqQixDQUFWO0FBQ0E3QixRQUFBQSxNQUFNLENBQUMyQixDQUFDLENBQUNHLE1BQUgsQ0FBTixDQUFpQlAsT0FBakIsQ0FBeUIsQ0FBekI7QUFDRCxPQUhDLENBQUY7QUFLQXhCLE1BQUFBLEVBQUUsQ0FBQyw2QkFBRCxFQUFnQyxZQUFNO0FBQ3RDQyxRQUFBQSxNQUFNLENBQ0pRLFNBQVMsR0FDTm9CLElBREgsQ0FDUUMsK0JBRFIsRUFFR0UsSUFGSCxDQUVRLE1BRlIsQ0FESSxDQUFOLENBSUVSLE9BSkYsQ0FJVSxLQUpWO0FBS0QsT0FOQyxDQUFGO0FBUUF4QixNQUFBQSxFQUFFLENBQUMsb0ZBQUQsRUFBdUYsWUFBTTtBQUM3RkMsUUFBQUEsTUFBTSxDQUNKUSxTQUFTLENBQUM7QUFBRU8sVUFBQUEsSUFBSSxFQUFFLFVBQVI7QUFBb0JpQixVQUFBQSxlQUFlLEVBQUUsS0FBckM7QUFBNENDLFVBQUFBLGVBQWUsRUFBRTtBQUE3RCxTQUFELENBQVQsQ0FDR0wsSUFESCxDQUNRQywrQkFEUixFQUVHRSxJQUZILENBRVEsTUFGUixDQURJLENBQU4sQ0FJRVIsT0FKRixDQUlVLElBSlY7QUFLRCxPQU5DLENBQUY7QUFRQXhCLE1BQUFBLEVBQUUsQ0FBQywrREFBRCxFQUFrRSxZQUFNO0FBQ3hFQyxRQUFBQSxNQUFNLENBQ0pRLFNBQVMsQ0FBQztBQUFFTyxVQUFBQSxJQUFJLEVBQUUsVUFBUjtBQUFvQmlCLFVBQUFBLGVBQWUsRUFBRTtBQUFyQyxTQUFELENBQVQsQ0FDR0osSUFESCxDQUNRQywrQkFEUixFQUVHRSxJQUZILENBRVEsTUFGUixDQURJLENBQU4sQ0FJRVIsT0FKRixDQUlVLEtBSlY7QUFLRCxPQU5DLENBQUY7QUFRQXhCLE1BQUFBLEVBQUUsQ0FBQyxxQ0FBRCxFQUF3QyxZQUFNO0FBQzlDLFlBQUlHLENBQUMsR0FBR00sU0FBUyxDQUFDO0FBQUVPLFVBQUFBLElBQUksRUFBRTtBQUFSLFNBQUQsQ0FBakI7QUFDQWIsUUFBQUEsQ0FBQyxDQUFDZ0MsUUFBRixDQUFXO0FBQUU1QyxVQUFBQSxXQUFXLEVBQUU7QUFBZixTQUFYO0FBQ0FVLFFBQUFBLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDMEIsSUFBRixDQUFPQywrQkFBUCxFQUE0QkUsSUFBNUIsQ0FBaUMsU0FBakMsQ0FBRCxDQUFOLENBQW9EUixPQUFwRCxDQUE0RCxLQUE1RDtBQUNELE9BSkMsQ0FBRjtBQU1BeEIsTUFBQUEsRUFBRSxDQUFDLDhDQUFELEVBQWlELFlBQU07QUFDdkQsWUFBSUcsQ0FBQyxHQUFHTSxTQUFTLENBQUM7QUFBRU8sVUFBQUEsSUFBSSxFQUFFO0FBQVIsU0FBRCxDQUFqQjtBQUNBYixRQUFBQSxDQUFDLENBQUNnQyxRQUFGLENBQVc7QUFBRTVDLFVBQUFBLFdBQVcsRUFBRTtBQUFmLFNBQVg7QUFDQVUsUUFBQUEsTUFBTSxDQUFDRSxDQUFDLENBQUMwQixJQUFGLENBQU9DLCtCQUFQLEVBQTRCRSxJQUE1QixDQUFpQyxTQUFqQyxDQUFELENBQU4sQ0FBb0RSLE9BQXBELENBQTRELElBQTVEO0FBQ0QsT0FKQyxDQUFGO0FBS0QsS0F6Q08sQ0FBUjtBQTBDRCxHQS9ITyxDQUFSO0FBZ0lELENBM0pPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IHsgTXVsdGlwbGVDaG9pY2UsIENob2ljZSB9IGZyb20gJy4uL211bHRpcGxlLWNob2ljZSc7XG5pbXBvcnQgQ29ycmVjdEFuc3dlclRvZ2dsZSBmcm9tICdAcGllLWxpYi9jb3JyZWN0LWFuc3dlci10b2dnbGUnO1xuXG5cbmRlc2NyaWJlKCdDaG9pY2UnLCAoKSA9PiB7XG4gIGxldCB3cmFwcGVyLCBvbkNob2ljZUNoYW5nZWQgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgd3JhcHBlciA9IGV4dHJhcyA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgIGNob2ljZToge30sXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBjaG9pY2VzTGVuZ3RoOiAxLFxuICAgICAgICBzaG93Q29ycmVjdDogZmFsc2UsXG4gICAgICAgIGlzRXZhbHVhdGVNb2RlOiBmYWxzZSxcbiAgICAgICAgY2hvaWNlTW9kZTogJ3JhZGlvJyxcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIG9uQ2hvaWNlQ2hhbmdlZCxcbiAgICAgICAgY2hlY2tlZDogdHJ1ZSxcbiAgICAgICAgY29ycmVjdG5lc3M6ICdjb3JyZWN0JyxcbiAgICAgICAgZGlzcGxheUtleTogJzAnLFxuICAgICAgICBjaG9pY2VzTGF5b3V0OiAnZ3JpZCcsXG4gICAgICAgIGdyaWRDb2x1bW5zOiAyLFxuICAgICAgICAuLi5leHRyYXNcbiAgICAgIH07XG4gICAgICByZXR1cm4gc2hhbGxvdyg8Q2hvaWNlIHsuLi5wcm9wc30vPik7XG4gICAgfTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBpdCgnZG9lcyBub3QgY2FsbCBvbkNob2ljZUNoYW5nZWQgaWYgZGlzYWJsZWQgaXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIGxldCB3ID0gd3JhcHBlcigpO1xuXG4gICAgICB3Lmluc3RhbmNlKCkub25DaGFuZ2UoKTtcblxuICAgICAgZXhwZWN0KG9uQ2hvaWNlQ2hhbmdlZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNob2ljZUNoYW5nZWQgaWYgZGlzYWJsZWQgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICBsZXQgdyA9IHdyYXBwZXIoeyBkaXNhYmxlZDogZmFsc2UgfSk7XG5cbiAgICAgIHcuaW5zdGFuY2UoKS5vbkNoYW5nZSgpO1xuXG4gICAgICBleHBlY3Qob25DaG9pY2VDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDb3Jlc3ByaW5nQ2hvaWNlJywgKCkgPT4ge1xuICBsZXQgd3JhcHBlciwgdG9nZ2xlO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRvZ2dsZSA9ICgpID0+IHtcbiAgICAgIHJldHVybiA8ZGl2Pm1vY2tlZC10b2dnbGU8L2Rpdj47XG4gICAgfTtcbiAgfSk7XG5cbiAgbGV0IG1rV3JhcHBlciA9IChvcHRzLCBjbG9uZSA9IHRydWUpID0+IHtcbiAgICBvcHRzID0gY2xvbmVcbiAgICAgID8gKG9wdHMgPSBfLm1lcmdlKFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGtleU1vZGU6ICdsZXR0ZXJzJyxcbiAgICAgICAgICBvbkNob2ljZUNoYW5nZWQ6IGplc3QuZm4oKSxcbiAgICAgICAgICBtb2RlOiAnZ2F0aGVyJ1xuICAgICAgICB9LFxuICAgICAgICBvcHRzXG4gICAgICApKVxuICAgICAgOiBvcHRzO1xuXG4gICAgcmV0dXJuIHNoYWxsb3coPE11bHRpcGxlQ2hvaWNlIHsuLi5vcHRzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgd3JhcHBlciA9IG1rV3JhcHBlcih7XG4gICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICB7IHZhbHVlOiAnYScsIGxhYmVsOiAnbGFiZWwgYScsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH0sXG4gICAgICAgICAgeyB2YWx1ZTogJ2InLCBsYWJlbDogJ2xhYmVsIGInIH0sXG4gICAgICAgICAgeyB2YWx1ZTogJ2MnLCBsYWJlbDogJ2xhYmVsIGMnLCBjb3JyZWN0OiB0cnVlLCBmZWVkYmFjazogJ2dyZWF0JyB9XG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncmVuZGVycyBpbmNvcnJlY3QgdGljayBpZiBvbmUgYW5zd2VyIGlzIGNvcnJlY3QgYnV0IGl0IGlzIG5vdCBjaGVja2VkJywgKCkgPT4ge1xuICAgICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHtcbiAgICAgICAgICBtb2RlOiAnZXZhbHVhdGUnLFxuICAgICAgICAgIGtleU1vZGU6ICdub25lJyxcbiAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICB7IHZhbHVlOiAnYScsIGxhYmVsOiAnbGFiZWwgYScsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYicsIGxhYmVsOiAnbGFiZWwgYicgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6ICdjJywgbGFiZWw6ICdsYWJlbCBjJywgY29ycmVjdDogdHJ1ZSwgZmVlZGJhY2s6ICdncmVhdCcgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2Vzc2lvbjoge1xuICAgICAgICAgICAgdmFsdWU6IFsnYSddXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdnZXRDb3JyZWN0bmVzcycsICgpID0+IHtcbiAgICAgIGxldCBpdGVtQ2hvaWNlcyA9IFtcbiAgICAgICAgeyB2YWx1ZTogJ2EnLCBsYWJlbDogJ2xhYmVsIGEnLCBjb3JyZWN0OiB0cnVlLCBmZWVkYmFjazogJ2dyZWF0JyB9LFxuICAgICAgICB7IHZhbHVlOiAnYicsIGxhYmVsOiAnbGFiZWwgYicgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2MnLCBsYWJlbDogJ2xhYmVsIGMnLCBmZWVkYmFjazogJ2dyZWF0JyB9LFxuICAgICAgICB7IHZhbHVlOiAnZCcsIGxhYmVsOiAnbGFiZWwgZCcsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH1cbiAgICAgIF07XG4gICAgICBsZXQgdyA9IG1rV3JhcHBlcih7XG4gICAgICAgIG1vZGU6ICdldmFsdWF0ZScsXG4gICAgICAgIGNob2ljZXM6IGl0ZW1DaG9pY2VzLFxuICAgICAgICBzZXNzaW9uOiB7XG4gICAgICAgICAgdmFsdWU6IFsnYScsICdjJ11cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdzaG93Q29ycmVjdFRvZ2dsZSBkaXNhYmxlZCAoc3RhdGUuc2hvd0NvcnJlY3QgaXMgZmFsc2UpJywgKCkgPT4ge1xuICAgICAgICBpdCgnc2hvd3MgY2hvaWNlIGNvcnJlY3RuZXNzIG9ubHkgaWYgd2FzIGNoZWNrZWQnLCAoKSA9PiB7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgd2FzIHNlbGVjdGVkIGFuZCBpcyBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1swXSkpLnRvRXF1YWwoJ2NvcnJlY3QnKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSB3YXMgbm90IHNlbGVjdGVkIGFuZCBpcyBpbmNvcnJlY3RcbiAgICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmdldENvcnJlY3RuZXNzKGl0ZW1DaG9pY2VzWzFdKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuICAgICAgICAgIC8vIHRoaXMgb25lIHdhcyBzZWxlY3RlZCwgYnV0IGlzIGluY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbMl0pKS50b0VxdWFsKCdpbmNvcnJlY3QnKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSB3YXMgbm90IHNlbGVjdGVkIGFuZCBpcyBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1szXSkpLnRvRXF1YWwoJ2luY29ycmVjdCcpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnc2hvd0NvcnJlY3RUb2dnbGUgZW5hYmxlZCAoc3RhdGUuc2hvd0NvcnJlY3QgaXMgdHJ1ZSknLCAoKSA9PiB7XG4gICAgICAgIGl0KCdzaG93cyBjaG9pY2UgY29ycmVjdG5lc3Mgbm8gbWF0dGVyIGlmIHdhcyBjaGVja2VkIG9yIG5vdCcsICgpID0+IHtcbiAgICAgICAgICB3Lmluc3RhbmNlKCkuc3RhdGUuc2hvd0NvcnJlY3QgPSB0cnVlO1xuXG4gICAgICAgICAgLy8gdGhpcyBvbmUgaXMgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbMF0pKS50b0VxdWFsKCdjb3JyZWN0Jyk7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgaXMgbm90IGNvcnJlY3RcbiAgICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmdldENvcnJlY3RuZXNzKGl0ZW1DaG9pY2VzWzFdKSkudG9FcXVhbCh1bmRlZmluZWQpO1xuICAgICAgICAgIC8vIHRoaXMgb25lIGlzIG5vdCBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1syXSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSBpcyBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1szXSkpLnRvRXF1YWwoJ2NvcnJlY3QnKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblRvZ2dsZScsICgpID0+IHtcbiAgICAgIGl0KCd0b2dnbGVzIHRoZSBzdGF0ZScsICgpID0+IHtcbiAgICAgICAgbGV0IHcgPSBta1dyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnIH0pO1xuICAgICAgICBleHBlY3Qody5zdGF0ZSgnc2hvd0NvcnJlY3QnKSkudG9FcXVhbChmYWxzZSk7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblRvZ2dsZSgpO1xuICAgICAgICBleHBlY3Qody5zdGF0ZSgnc2hvd0NvcnJlY3QnKSkudG9FcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1RvZ2dsZScsICgpID0+IHtcbiAgICAgIGl0KCd0b2dnbGUgaXMgcmVuZGVyZWQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHQgPSBta1dyYXBwZXIoKS5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpO1xuICAgICAgICBleHBlY3QodC5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3RvZ2dsZSBzaG93IGlzIHNldCB0byBmYWxzZScsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KFxuICAgICAgICAgIG1rV3JhcHBlcigpXG4gICAgICAgICAgICAuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKVxuICAgICAgICAgICAgLnByb3AoJ3Nob3cnKVxuICAgICAgICApLnRvRXF1YWwoZmFsc2UpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG93cyB0b2dnbGUgaWYgbW9kZSBpcyBldmFsdWF0ZSwgZmVlZGJhY2sgaXMgZW5hYmxlZCBhbmQgcmVzcG9uc2VDb3JyZWN0IGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoXG4gICAgICAgICAgbWtXcmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJywgcmVzcG9uc2VDb3JyZWN0OiBmYWxzZSwgZmVlZGJhY2tFbmFibGVkOiB0cnVlIH0pXG4gICAgICAgICAgICAuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKVxuICAgICAgICAgICAgLnByb3AoJ3Nob3cnKVxuICAgICAgICApLnRvRXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2hpZGVzIHRvZ2dsZSBpZiBtb2RlIGlzIGV2YWx1YXRlIGFuZCByZXNwb25zZUNvcnJlY3QgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChcbiAgICAgICAgICBta1dyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnLCByZXNwb25zZUNvcnJlY3Q6IHRydWUgfSlcbiAgICAgICAgICAgIC5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpXG4gICAgICAgICAgICAucHJvcCgnc2hvdycpXG4gICAgICAgICkudG9FcXVhbChmYWxzZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ25vdCB0b2dnbGVkIGlmIHNob3dDb3JyZWN0IGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgICBsZXQgdyA9IG1rV3JhcHBlcih7IG1vZGU6ICdldmFsdWF0ZScgfSk7XG4gICAgICAgIHcuc2V0U3RhdGUoeyBzaG93Q29ycmVjdDogZmFsc2UgfSk7XG4gICAgICAgIGV4cGVjdCh3LmZpbmQoQ29ycmVjdEFuc3dlclRvZ2dsZSkucHJvcCgndG9nZ2xlZCcpKS50b0VxdWFsKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnaXMgdG9nZ2xlZCBzaG93Q29ycmVjdD10cnVlICYmIG1vZGU9ZXZhbHVhdGUnLCAoKSA9PiB7XG4gICAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJyB9KTtcbiAgICAgICAgdy5zZXRTdGF0ZSh7IHNob3dDb3JyZWN0OiB0cnVlIH0pO1xuICAgICAgICBleHBlY3Qody5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpLnByb3AoJ3RvZ2dsZWQnKSkudG9FcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ var _sessionUpdater = require("../session-updater");
4
+
5
+ describe('session-updater', function () {
6
+ var updater;
7
+ beforeEach(function () {});
8
+ describe('updateSessionValue', function () {
9
+ var assert = function assert(mode, session, data, expected) {
10
+ return function () {
11
+ (0, _sessionUpdater.updateSessionValue)(session, mode, data);
12
+ expect(session.value).toEqual(expected);
13
+ };
14
+ };
15
+
16
+ describe('checkbox', function () {
17
+ var cb = assert.bind(null, 'checkbox');
18
+ it('adds 1', cb({
19
+ value: []
20
+ }, {
21
+ value: '1',
22
+ selected: true
23
+ }, ['1']));
24
+ it('removes 1', cb({
25
+ value: ['1']
26
+ }, {
27
+ value: '1',
28
+ selected: false
29
+ }, []));
30
+ it('adds 2', cb({
31
+ value: ['1']
32
+ }, {
33
+ value: '2',
34
+ selected: true
35
+ }, ['1', '2']));
36
+ it('does not add duplicate 1', cb({
37
+ value: ['1']
38
+ }, {
39
+ value: '1',
40
+ selected: true
41
+ }, ['1']));
42
+ it('does not remove if not in arrary', cb({
43
+ value: ['1']
44
+ }, {
45
+ value: '2',
46
+ selected: false
47
+ }, ['1']));
48
+ });
49
+ describe('radio', function () {
50
+ var cb = assert.bind(null, 'radio');
51
+ it('adds 1', cb({
52
+ value: []
53
+ }, {
54
+ value: '1',
55
+ selected: true
56
+ }, ['1']));
57
+ it('adds 2', cb({
58
+ value: ['1']
59
+ }, {
60
+ value: '2',
61
+ selected: true
62
+ }, ['2']));
63
+ it('does not add duplicate 1', cb({
64
+ value: ['1']
65
+ }, {
66
+ value: '1',
67
+ selected: true
68
+ }, ['1']));
69
+ });
70
+ });
71
+ });
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vc2Vzc2lvbi11cGRhdGVyLXRlc3QuanN4Il0sIm5hbWVzIjpbImRlc2NyaWJlIiwidXBkYXRlciIsImJlZm9yZUVhY2giLCJhc3NlcnQiLCJtb2RlIiwic2Vzc2lvbiIsImRhdGEiLCJleHBlY3RlZCIsImV4cGVjdCIsInZhbHVlIiwidG9FcXVhbCIsImNiIiwiYmluZCIsIml0Iiwic2VsZWN0ZWQiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBRUFBLFFBQVEsQ0FBQyxpQkFBRCxFQUFvQixZQUFNO0FBQ2hDLE1BQUlDLE9BQUo7QUFFQUMsRUFBQUEsVUFBVSxDQUFDLFlBQU0sQ0FBRSxDQUFULENBQVY7QUFFQUYsRUFBQUEsUUFBUSxDQUFDLG9CQUFELEVBQXVCLFlBQU07QUFDbkMsUUFBTUcsTUFBTSxHQUFHLFNBQVRBLE1BQVMsQ0FBQ0MsSUFBRCxFQUFPQyxPQUFQLEVBQWdCQyxJQUFoQixFQUFzQkMsUUFBdEIsRUFBbUM7QUFDaEQsYUFBTyxZQUFNO0FBQ1gsZ0RBQW1CRixPQUFuQixFQUE0QkQsSUFBNUIsRUFBa0NFLElBQWxDO0FBQ0FFLFFBQUFBLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDSSxLQUFULENBQU4sQ0FBc0JDLE9BQXRCLENBQThCSCxRQUE5QjtBQUNELE9BSEQ7QUFJRCxLQUxEOztBQU9BUCxJQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekIsVUFBTVcsRUFBRSxHQUFHUixNQUFNLENBQUNTLElBQVAsQ0FBWSxJQUFaLEVBQWtCLFVBQWxCLENBQVg7QUFDQUMsTUFBQUEsRUFBRSxDQUFDLFFBQUQsRUFBV0YsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRTtBQUFULE9BQUQsRUFBZ0I7QUFBRUEsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0ssUUFBQUEsUUFBUSxFQUFFO0FBQXhCLE9BQWhCLEVBQWdELENBQUMsR0FBRCxDQUFoRCxDQUFiLENBQUY7QUFDQUQsTUFBQUEsRUFBRSxDQUNBLFdBREEsRUFFQUYsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRSxDQUFDLEdBQUQ7QUFBVCxPQUFELEVBQW1CO0FBQUVBLFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNLLFFBQUFBLFFBQVEsRUFBRTtBQUF4QixPQUFuQixFQUFvRCxFQUFwRCxDQUZGLENBQUY7QUFJQUQsTUFBQUEsRUFBRSxDQUNBLFFBREEsRUFFQUYsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRSxDQUFDLEdBQUQ7QUFBVCxPQUFELEVBQW1CO0FBQUVBLFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNLLFFBQUFBLFFBQVEsRUFBRTtBQUF4QixPQUFuQixFQUFtRCxDQUFDLEdBQUQsRUFBTSxHQUFOLENBQW5ELENBRkYsQ0FBRjtBQUlBRCxNQUFBQSxFQUFFLENBQ0EsMEJBREEsRUFFQUYsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRSxDQUFDLEdBQUQ7QUFBVCxPQUFELEVBQW1CO0FBQUVBLFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNLLFFBQUFBLFFBQVEsRUFBRTtBQUF4QixPQUFuQixFQUFtRCxDQUFDLEdBQUQsQ0FBbkQsQ0FGRixDQUFGO0FBSUFELE1BQUFBLEVBQUUsQ0FDQSxrQ0FEQSxFQUVBRixFQUFFLENBQUM7QUFBRUYsUUFBQUEsS0FBSyxFQUFFLENBQUMsR0FBRDtBQUFULE9BQUQsRUFBbUI7QUFBRUEsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0ssUUFBQUEsUUFBUSxFQUFFO0FBQXhCLE9BQW5CLEVBQW9ELENBQUMsR0FBRCxDQUFwRCxDQUZGLENBQUY7QUFJRCxLQW5CTyxDQUFSO0FBcUJBZCxJQUFBQSxRQUFRLENBQUMsT0FBRCxFQUFVLFlBQU07QUFDdEIsVUFBTVcsRUFBRSxHQUFHUixNQUFNLENBQUNTLElBQVAsQ0FBWSxJQUFaLEVBQWtCLE9BQWxCLENBQVg7QUFDQUMsTUFBQUEsRUFBRSxDQUFDLFFBQUQsRUFBV0YsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRTtBQUFULE9BQUQsRUFBZ0I7QUFBRUEsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0ssUUFBQUEsUUFBUSxFQUFFO0FBQXhCLE9BQWhCLEVBQWdELENBQUMsR0FBRCxDQUFoRCxDQUFiLENBQUY7QUFDQUQsTUFBQUEsRUFBRSxDQUFDLFFBQUQsRUFBV0YsRUFBRSxDQUFDO0FBQUVGLFFBQUFBLEtBQUssRUFBRSxDQUFDLEdBQUQ7QUFBVCxPQUFELEVBQW1CO0FBQUVBLFFBQUFBLEtBQUssRUFBRSxHQUFUO0FBQWNLLFFBQUFBLFFBQVEsRUFBRTtBQUF4QixPQUFuQixFQUFtRCxDQUFDLEdBQUQsQ0FBbkQsQ0FBYixDQUFGO0FBQ0FELE1BQUFBLEVBQUUsQ0FDQSwwQkFEQSxFQUVBRixFQUFFLENBQUM7QUFBRUYsUUFBQUEsS0FBSyxFQUFFLENBQUMsR0FBRDtBQUFULE9BQUQsRUFBbUI7QUFBRUEsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY0ssUUFBQUEsUUFBUSxFQUFFO0FBQXhCLE9BQW5CLEVBQW1ELENBQUMsR0FBRCxDQUFuRCxDQUZGLENBQUY7QUFJRCxLQVJPLENBQVI7QUFTRCxHQXRDTyxDQUFSO0FBdUNELENBNUNPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1cGRhdGVTZXNzaW9uVmFsdWUgfSBmcm9tICcuLi9zZXNzaW9uLXVwZGF0ZXInO1xuXG5kZXNjcmliZSgnc2Vzc2lvbi11cGRhdGVyJywgKCkgPT4ge1xuICBsZXQgdXBkYXRlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHt9KTtcblxuICBkZXNjcmliZSgndXBkYXRlU2Vzc2lvblZhbHVlJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydCA9IChtb2RlLCBzZXNzaW9uLCBkYXRhLCBleHBlY3RlZCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdXBkYXRlU2Vzc2lvblZhbHVlKHNlc3Npb24sIG1vZGUsIGRhdGEpO1xuICAgICAgICBleHBlY3Qoc2Vzc2lvbi52YWx1ZSkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBkZXNjcmliZSgnY2hlY2tib3gnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjYiA9IGFzc2VydC5iaW5kKG51bGwsICdjaGVja2JveCcpO1xuICAgICAgaXQoJ2FkZHMgMScsIGNiKHsgdmFsdWU6IFtdIH0sIHsgdmFsdWU6ICcxJywgc2VsZWN0ZWQ6IHRydWUgfSwgWycxJ10pKTtcbiAgICAgIGl0KFxuICAgICAgICAncmVtb3ZlcyAxJyxcbiAgICAgICAgY2IoeyB2YWx1ZTogWycxJ10gfSwgeyB2YWx1ZTogJzEnLCBzZWxlY3RlZDogZmFsc2UgfSwgW10pXG4gICAgICApO1xuICAgICAgaXQoXG4gICAgICAgICdhZGRzIDInLFxuICAgICAgICBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMicsIHNlbGVjdGVkOiB0cnVlIH0sIFsnMScsICcyJ10pXG4gICAgICApO1xuICAgICAgaXQoXG4gICAgICAgICdkb2VzIG5vdCBhZGQgZHVwbGljYXRlIDEnLFxuICAgICAgICBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMScsIHNlbGVjdGVkOiB0cnVlIH0sIFsnMSddKVxuICAgICAgKTtcbiAgICAgIGl0KFxuICAgICAgICAnZG9lcyBub3QgcmVtb3ZlIGlmIG5vdCBpbiBhcnJhcnknLFxuICAgICAgICBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMicsIHNlbGVjdGVkOiBmYWxzZSB9LCBbJzEnXSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncmFkaW8nLCAoKSA9PiB7XG4gICAgICBjb25zdCBjYiA9IGFzc2VydC5iaW5kKG51bGwsICdyYWRpbycpO1xuICAgICAgaXQoJ2FkZHMgMScsIGNiKHsgdmFsdWU6IFtdIH0sIHsgdmFsdWU6ICcxJywgc2VsZWN0ZWQ6IHRydWUgfSwgWycxJ10pKTtcbiAgICAgIGl0KCdhZGRzIDInLCBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMicsIHNlbGVjdGVkOiB0cnVlIH0sIFsnMiddKSk7XG4gICAgICBpdChcbiAgICAgICAgJ2RvZXMgbm90IGFkZCBkdXBsaWNhdGUgMScsXG4gICAgICAgIGNiKHsgdmFsdWU6IFsnMSddIH0sIHsgdmFsdWU6ICcxJywgc2VsZWN0ZWQ6IHRydWUgfSwgWycxJ10pXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -43,9 +43,9 @@ var _classnames = _interopRequireDefault(require("classnames"));
43
43
 
44
44
  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); }; }
45
45
 
46
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
46
+ 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; } }
47
47
 
48
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
48
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
49
49
 
50
50
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
51
51
 
@@ -56,6 +56,36 @@ var styleSheet = function styleSheet() {
56
56
  alignItems: 'center',
57
57
  backgroundColor: _renderUi.color.background()
58
58
  },
59
+ promptStrikethrough: {
60
+ '& > *': {
61
+ textDecoration: 'line-through'
62
+ },
63
+ textDecoration: 'line-through',
64
+ '& mjx-mtr': {
65
+ position: 'relative'
66
+ },
67
+ '& mjx-mtr:after': {
68
+ width: '100%',
69
+ position: 'absolute',
70
+ top: '50%',
71
+ background: _renderUi.color.text(),
72
+ height: '1px',
73
+ left: '0',
74
+ content: '" "'
75
+ },
76
+ '& mjx-math': {
77
+ position: 'relative'
78
+ },
79
+ '& mjx-math:after': {
80
+ width: '100%',
81
+ position: 'absolute',
82
+ top: '50%',
83
+ background: _renderUi.color.text(),
84
+ height: '1px',
85
+ left: '0',
86
+ content: '" "'
87
+ }
88
+ },
59
89
  checkboxHolder: {
60
90
  display: 'flex',
61
91
  alignItems: 'center',
@@ -113,14 +143,24 @@ var inputStyles = {
113
143
  opacity: 0.6,
114
144
  cursor: 'not-allowed !important',
115
145
  pointerEvents: 'initial !important'
116
- })
146
+ }),
147
+ strikethroughTag: {
148
+ '&:before': {
149
+ content: '"——"',
150
+ position: 'absolute',
151
+ letterSpacing: '-3px',
152
+ left: '0.3em'
153
+ }
154
+ }
117
155
  };
118
156
  var StyledCheckbox = (0, _styles.withStyles)(inputStyles)(function (props) {
119
157
  var correctness = props.correctness,
120
158
  classes = props.classes,
121
159
  checked = props.checked,
122
160
  onChange = props.onChange,
123
- disabled = props.disabled;
161
+ disabled = props.disabled,
162
+ accessibility = props.accessibility,
163
+ strikethrough = props.strikethrough;
124
164
 
125
165
  var key = function key(k) {
126
166
  return correctness ? "".concat(correctness, "-").concat(k) : k;
@@ -136,8 +176,10 @@ var StyledCheckbox = (0, _styles.withStyles)(inputStyles)(function (props) {
136
176
  onChange: onChange,
137
177
  disabled: disabled
138
178
  };
139
- return /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], (0, _extends2["default"])({}, miniProps, {
140
- className: CLASS_NAME,
179
+ return /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], (0, _extends2["default"])({
180
+ "aria-label": accessibility
181
+ }, miniProps, {
182
+ className: (0, _classnames["default"])(CLASS_NAME, strikethrough && classes.strikethroughTag),
141
183
  classes: {
142
184
  root: resolved.root,
143
185
  checked: resolved.checked,
@@ -151,7 +193,9 @@ var StyledRadio = (0, _styles.withStyles)(inputStyles)(function (props) {
151
193
  classes = props.classes,
152
194
  checked = props.checked,
153
195
  onChange = props.onChange,
154
- disabled = props.disabled;
196
+ disabled = props.disabled,
197
+ accessibility = props.accessibility,
198
+ strikethrough = props.strikethrough;
155
199
 
156
200
  var key = function key(k) {
157
201
  return correctness ? "".concat(correctness, "-").concat(k) : k;
@@ -167,8 +211,10 @@ var StyledRadio = (0, _styles.withStyles)(inputStyles)(function (props) {
167
211
  onChange: onChange,
168
212
  disabled: disabled
169
213
  };
170
- return /*#__PURE__*/_react["default"].createElement(_Radio["default"], (0, _extends2["default"])({}, miniProps, {
171
- className: CLASS_NAME,
214
+ return /*#__PURE__*/_react["default"].createElement(_Radio["default"], (0, _extends2["default"])({
215
+ "aria-label": accessibility
216
+ }, miniProps, {
217
+ className: (0, _classnames["default"])(CLASS_NAME, strikethrough && classes.strikethroughTag),
172
218
  classes: {
173
219
  root: resolved.root,
174
220
  checked: resolved.checked
@@ -212,32 +258,42 @@ var ChoiceInput = /*#__PURE__*/function (_React$Component) {
212
258
  correctness = _this$props.correctness,
213
259
  classes = _this$props.classes,
214
260
  className = _this$props.className,
215
- rationale = _this$props.rationale;
261
+ rationale = _this$props.rationale,
262
+ accessibility = _this$props.accessibility,
263
+ hideTick = _this$props.hideTick,
264
+ isEvaluateMode = _this$props.isEvaluateMode,
265
+ strikethrough = _this$props.strikethrough;
216
266
  var Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;
217
267
  var classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';
218
268
  return /*#__PURE__*/_react["default"].createElement("div", {
219
- className: (0, _classnames["default"])(className, 'corespring-' + classSuffix)
269
+ className: (0, _classnames["default"])(className, 'corespring-' + classSuffix, 'choice-input')
220
270
  }, /*#__PURE__*/_react["default"].createElement("div", {
221
271
  className: classes.row
222
- }, /*#__PURE__*/_react["default"].createElement(_feedbackTick["default"], {
272
+ }, !hideTick && isEvaluateMode && /*#__PURE__*/_react["default"].createElement(_feedbackTick["default"], {
223
273
  correctness: correctness
224
274
  }), /*#__PURE__*/_react["default"].createElement("div", {
225
- className: classes.checkboxHolder
275
+ className: (0, _classnames["default"])(classes.checkboxHolder, 'checkbox-holder')
226
276
  }, /*#__PURE__*/_react["default"].createElement(StyledFormControlLabel, {
227
277
  disabled: disabled,
228
278
  label: displayKey ? displayKey + '. ' : '',
229
279
  control: /*#__PURE__*/_react["default"].createElement(Tag, {
280
+ accessibility: accessibility,
230
281
  checked: checked,
231
282
  correctness: correctness,
283
+ strikethrough: strikethrough,
284
+ className: (0, _classnames["default"])(classes.strikethroughTag),
232
285
  onChange: this.onToggleChoice
233
286
  })
234
- }), /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
235
- className: "label",
287
+ }), /*#__PURE__*/_react["default"].createElement("div", {
288
+ className: (0, _classnames["default"])(strikethrough && classes.promptStrikethrough)
289
+ }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
290
+ className: (0, _classnames["default"])('label'),
236
291
  onClick: this.onToggleChoice,
237
292
  prompt: label,
238
293
  tagName: "span"
239
- }))), rationale && /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
294
+ })))), rationale && /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
240
295
  className: "rationale",
296
+ defaultClassName: "rationale",
241
297
  prompt: rationale
242
298
  }), /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
243
299
  feedback: feedback,
@@ -258,14 +314,19 @@ exports.ChoiceInput = ChoiceInput;
258
314
  feedback: _propTypes["default"].string,
259
315
  label: _propTypes["default"].string.isRequired,
260
316
  rationale: _propTypes["default"].string,
317
+ accessibility: _propTypes["default"].string,
261
318
  onChange: _propTypes["default"].func.isRequired,
262
319
  value: _propTypes["default"].string.isRequired,
263
320
  classes: _propTypes["default"].object,
264
- className: _propTypes["default"].string
321
+ className: _propTypes["default"].string,
322
+ hideTick: _propTypes["default"].bool,
323
+ isEvaluateMode: _propTypes["default"].bool
265
324
  });
266
325
  (0, _defineProperty2["default"])(ChoiceInput, "defaultProps", {
267
326
  rationale: null,
268
- checked: false
327
+ accessibility: null,
328
+ checked: false,
329
+ isEvaluateMode: false
269
330
  });
270
331
 
271
332
  var _default = (0, _styles.withStyles)(styleSheet)(ChoiceInput);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/choice-input.jsx"],"names":["styleSheet","row","display","alignItems","backgroundColor","color","background","checkboxHolder","flex","text","formStyleSheet","label","StyledFormControlLabel","name","props","classes","CLASS_NAME","colorStyle","varName","fallback","inputStyles","correct","disabled","incorrect","root","primaryLight","checked","primary","opacity","cursor","pointerEvents","StyledCheckbox","correctness","onChange","key","k","resolved","miniProps","StyledRadio","ChoiceInput","onToggleChoice","bind","value","selected","choiceMode","displayKey","feedback","className","rationale","Tag","classSuffix","React","Component","PropTypes","oneOf","string","isRequired","bool","func","object"],"mappings":"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","sourcesContent":["import FormControlLabel from '@material-ui/core/FormControlLabel';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { Feedback, color, PreviewPrompt } from '@pie-lib/render-ui';\nimport FeedbackTick from './feedback-tick';\nimport Radio from '@material-ui/core/Radio';\nimport classNames from 'classnames';\n\nconst styleSheet = () => ({\n row: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n },\n checkboxHolder: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n flex: 1,\n '& label': {\n color: color.text(),\n },\n },\n});\n\nconst formStyleSheet = {\n label: {\n color: `${color.text()} !important`, //'var(--choice-input-color, black)'\n backgroundColor: color.background(),\n },\n};\n\nexport const StyledFormControlLabel = withStyles(formStyleSheet, {\n name: 'FormControlLabel',\n})((props) => (\n <FormControlLabel {...props} classes={{ label: props.classes.label }} />\n));\n\nconst CLASS_NAME = 'multiple-choice-component';\n\nconst colorStyle = (varName, fallback) => ({\n [`&.${CLASS_NAME}`]: {\n color: `var(--choice-input-${varName}, ${fallback}) !important`,\n },\n});\n\nconst inputStyles = {\n 'correct-root': colorStyle('correct-color', color.text()),\n 'correct-checked': colorStyle('correct-selected-color', color.correct()), //green[500]),\n 'correct-disabled': colorStyle('correct-disabled-color', color.disabled()), //'grey'),\n 'incorrect-root': colorStyle('incorrect-color', color.incorrect()),\n 'incorrect-checked': colorStyle('incorrect-checked', color.incorrect()), //orange[500]),\n 'incorrect-disabled': colorStyle(\n 'incorrect-disabled-color',\n color.disabled()\n ),\n root: {\n ...colorStyle('color', color.text()),\n '&:hover': { color: `${color.primaryLight()} !important` },\n },\n checked: colorStyle('selected-color', color.primary()),\n disabled: {\n ...colorStyle('disabled-color', color.text()),\n opacity: 0.6,\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n },\n};\n\nexport const StyledCheckbox = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n return (\n <Checkbox\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: resolved.disabled,\n }}\n />\n );\n});\n\nexport const StyledRadio = withStyles(inputStyles)((props) => {\n const { correctness, classes, checked, onChange, disabled } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n\n return (\n <Radio\n {...miniProps}\n className={CLASS_NAME}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n }}\n />\n );\n});\n\nexport class ChoiceInput extends React.Component {\n static propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n displayKey: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n correctness: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n feedback: PropTypes.string,\n label: PropTypes.string.isRequired,\n rationale: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n classes: PropTypes.object,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n rationale: null,\n checked: false,\n };\n\n constructor(props) {\n super(props);\n this.onToggleChoice = this.onToggleChoice.bind(this);\n }\n\n onToggleChoice() {\n this.props.onChange({\n value: this.props.value,\n selected: !this.props.checked,\n });\n }\n\n render() {\n const {\n choiceMode,\n disabled,\n displayKey,\n feedback,\n label,\n checked,\n correctness,\n classes,\n className,\n rationale,\n } = this.props;\n\n const Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;\n const classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';\n\n return (\n <div className={classNames(className, 'corespring-' + classSuffix)}>\n <div className={classes.row}>\n <FeedbackTick correctness={correctness} />\n <div className={classes.checkboxHolder}>\n <StyledFormControlLabel\n disabled={disabled}\n label={displayKey ? displayKey + '. ' : ''}\n control={\n <Tag\n checked={checked}\n correctness={correctness}\n onChange={this.onToggleChoice}\n />\n }\n />\n <PreviewPrompt\n className=\"label\"\n onClick={this.onToggleChoice}\n prompt={label}\n tagName=\"span\"\n />\n </div>\n </div>\n {rationale && (\n <PreviewPrompt className=\"rationale\" prompt={rationale} />\n )}\n <Feedback feedback={feedback} correctness={correctness} />\n </div>\n );\n }\n}\n\nexport default withStyles(styleSheet)(ChoiceInput);\n"],"file":"choice-input.js"}
1
+ {"version":3,"sources":["../src/choice-input.jsx"],"names":["styleSheet","row","display","alignItems","backgroundColor","color","background","promptStrikethrough","textDecoration","position","width","top","text","height","left","content","checkboxHolder","flex","formStyleSheet","label","StyledFormControlLabel","name","props","classes","CLASS_NAME","colorStyle","varName","fallback","inputStyles","correct","disabled","incorrect","root","primaryLight","checked","primary","opacity","cursor","pointerEvents","strikethroughTag","letterSpacing","StyledCheckbox","correctness","onChange","accessibility","strikethrough","key","k","resolved","miniProps","StyledRadio","ChoiceInput","onToggleChoice","bind","value","selected","choiceMode","displayKey","feedback","className","rationale","hideTick","isEvaluateMode","Tag","classSuffix","React","Component","PropTypes","oneOf","string","isRequired","bool","func","object"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,UAAU,GAAG,SAAbA,UAAa;AAAA,SAAO;AACxBC,IAAAA,GAAG,EAAE;AACHC,MAAAA,OAAO,EAAE,MADN;AAEHC,MAAAA,UAAU,EAAE,QAFT;AAGHC,MAAAA,eAAe,EAAEC,gBAAMC,UAAN;AAHd,KADmB;AAMxBC,IAAAA,mBAAmB,EAAE;AACnB,eAAS;AACPC,QAAAA,cAAc,EAAE;AADT,OADU;AAInBA,MAAAA,cAAc,EAAE,cAJG;AAKnB,mBAAa;AACXC,QAAAA,QAAQ,EAAE;AADC,OALM;AAQnB,yBAAmB;AACjBC,QAAAA,KAAK,EAAE,MADU;AAEjBD,QAAAA,QAAQ,EAAE,UAFO;AAGjBE,QAAAA,GAAG,EAAE,KAHY;AAIjBL,QAAAA,UAAU,EAAED,gBAAMO,IAAN,EAJK;AAKjBC,QAAAA,MAAM,EAAE,KALS;AAMjBC,QAAAA,IAAI,EAAE,GANW;AAOjBC,QAAAA,OAAO,EAAE;AAPQ,OARA;AAiBnB,oBAAc;AACZN,QAAAA,QAAQ,EAAE;AADE,OAjBK;AAoBnB,0BAAoB;AAClBC,QAAAA,KAAK,EAAE,MADW;AAElBD,QAAAA,QAAQ,EAAE,UAFQ;AAGlBE,QAAAA,GAAG,EAAE,KAHa;AAIlBL,QAAAA,UAAU,EAAED,gBAAMO,IAAN,EAJM;AAKlBC,QAAAA,MAAM,EAAE,KALU;AAMlBC,QAAAA,IAAI,EAAE,GANY;AAOlBC,QAAAA,OAAO,EAAE;AAPS;AApBD,KANG;AAoCxBC,IAAAA,cAAc,EAAE;AACdd,MAAAA,OAAO,EAAE,MADK;AAEdC,MAAAA,UAAU,EAAE,QAFE;AAGdC,MAAAA,eAAe,EAAEC,gBAAMC,UAAN,EAHH;AAIdW,MAAAA,IAAI,EAAE,CAJQ;AAKd,iBAAW;AACTZ,QAAAA,KAAK,EAAEA,gBAAMO,IAAN;AADE;AALG;AApCQ,GAAP;AAAA,CAAnB;;AA+CA,IAAMM,cAAc,GAAG;AACrBC,EAAAA,KAAK,EAAE;AACLd,IAAAA,KAAK,YAAKA,gBAAMO,IAAN,EAAL,gBADA;AACgC;AACrCR,IAAAA,eAAe,EAAEC,gBAAMC,UAAN;AAFZ;AADc,CAAvB;AAOO,IAAMc,sBAAsB,GAAG,wBAAWF,cAAX,EAA2B;AAC/DG,EAAAA,IAAI,EAAE;AADyD,CAA3B,EAEnC,UAACC,KAAD;AAAA,sBACD,gCAAC,4BAAD,gCAAsBA,KAAtB;AAA6B,IAAA,OAAO,EAAE;AAAEH,MAAAA,KAAK,EAAEG,KAAK,CAACC,OAAN,CAAcJ;AAAvB;AAAtC,KADC;AAAA,CAFmC,CAA/B;;AAMP,IAAMK,UAAU,GAAG,2BAAnB;;AAEA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,OAAD,EAAUC,QAAV;AAAA,0DACXH,UADW,GACI;AACnBnB,IAAAA,KAAK,+BAAwBqB,OAAxB,eAAoCC,QAApC;AADc,GADJ;AAAA,CAAnB;;AAMA,IAAMC,WAAW,GAAG;AAClB,kBAAgBH,UAAU,CAAC,eAAD,EAAkBpB,gBAAMO,IAAN,EAAlB,CADR;AAElB,qBAAmBa,UAAU,CAAC,wBAAD,EAA2BpB,gBAAMwB,OAAN,EAA3B,CAFX;AAEwD;AAC1E,sBAAoBJ,UAAU,CAAC,wBAAD,EAA2BpB,gBAAMyB,QAAN,EAA3B,CAHZ;AAG0D;AAC5E,oBAAkBL,UAAU,CAAC,iBAAD,EAAoBpB,gBAAM0B,SAAN,EAApB,CAJV;AAKlB,uBAAqBN,UAAU,CAAC,mBAAD,EAAsBpB,gBAAM0B,SAAN,EAAtB,CALb;AAKuD;AACzE,wBAAsBN,UAAU,CAC9B,0BAD8B,EAE9BpB,gBAAMyB,QAAN,EAF8B,CANd;AAUlBE,EAAAA,IAAI,kCACCP,UAAU,CAAC,OAAD,EAAUpB,gBAAMO,IAAN,EAAV,CADX;AAEF,eAAW;AAAEP,MAAAA,KAAK,YAAKA,gBAAM4B,YAAN,EAAL;AAAP;AAFT,IAVc;AAclBC,EAAAA,OAAO,EAAET,UAAU,CAAC,gBAAD,EAAmBpB,gBAAM8B,OAAN,EAAnB,CAdD;AAelBL,EAAAA,QAAQ,kCACHL,UAAU,CAAC,gBAAD,EAAmBpB,gBAAMO,IAAN,EAAnB,CADP;AAENwB,IAAAA,OAAO,EAAE,GAFH;AAGNC,IAAAA,MAAM,EAAE,wBAHF;AAINC,IAAAA,aAAa,EAAE;AAJT,IAfU;AAqBlBC,EAAAA,gBAAgB,EAAE;AAChB,gBAAY;AACVxB,MAAAA,OAAO,EAAE,MADC;AAEVN,MAAAA,QAAQ,EAAE,UAFA;AAGV+B,MAAAA,aAAa,EAAE,MAHL;AAIV1B,MAAAA,IAAI,EAAE;AAJI;AADI;AArBA,CAApB;AA+BO,IAAM2B,cAAc,GAAG,wBAAWb,WAAX,EAAwB,UAACN,KAAD,EAAW;AAC/D,MACEoB,WADF,GAQIpB,KARJ,CACEoB,WADF;AAAA,MAEEnB,OAFF,GAQID,KARJ,CAEEC,OAFF;AAAA,MAGEW,OAHF,GAQIZ,KARJ,CAGEY,OAHF;AAAA,MAIES,QAJF,GAQIrB,KARJ,CAIEqB,QAJF;AAAA,MAKEb,QALF,GAQIR,KARJ,CAKEQ,QALF;AAAA,MAMEc,aANF,GAQItB,KARJ,CAMEsB,aANF;AAAA,MAOEC,aAPF,GAQIvB,KARJ,CAOEuB,aAPF;;AASA,MAAMC,GAAG,GAAG,SAANA,GAAM,CAACC,CAAD;AAAA,WAAQL,WAAW,aAAMA,WAAN,cAAqBK,CAArB,IAA2BA,CAA9C;AAAA,GAAZ;;AAEA,MAAMC,QAAQ,GAAG;AACfhB,IAAAA,IAAI,EAAET,OAAO,CAACuB,GAAG,CAAC,MAAD,CAAJ,CADE;AAEfZ,IAAAA,OAAO,EAAEX,OAAO,CAACuB,GAAG,CAAC,SAAD,CAAJ,CAFD;AAGfhB,IAAAA,QAAQ,EAAEP,OAAO,CAACuB,GAAG,CAAC,UAAD,CAAJ;AAHF,GAAjB;AAMA,MAAMG,SAAS,GAAG;AAAEf,IAAAA,OAAO,EAAPA,OAAF;AAAWS,IAAAA,QAAQ,EAARA,QAAX;AAAqBb,IAAAA,QAAQ,EAARA;AAArB,GAAlB;AACA,sBACE,gCAAC,oBAAD;AACE,kBAAYc;AADd,KAEMK,SAFN;AAGE,IAAA,SAAS,EAAE,4BACTzB,UADS,EAETqB,aAAa,IAAItB,OAAO,CAACgB,gBAFhB,CAHb;AAOE,IAAA,OAAO,EAAE;AACPP,MAAAA,IAAI,EAAEgB,QAAQ,CAAChB,IADR;AAEPE,MAAAA,OAAO,EAAEc,QAAQ,CAACd,OAFX;AAGPJ,MAAAA,QAAQ,EAAEkB,QAAQ,CAAClB;AAHZ;AAPX,KADF;AAeD,CAlC6B,CAAvB;;AAoCA,IAAMoB,WAAW,GAAG,wBAAWtB,WAAX,EAAwB,UAACN,KAAD,EAAW;AAC5D,MACEoB,WADF,GAQIpB,KARJ,CACEoB,WADF;AAAA,MAEEnB,OAFF,GAQID,KARJ,CAEEC,OAFF;AAAA,MAGEW,OAHF,GAQIZ,KARJ,CAGEY,OAHF;AAAA,MAIES,QAJF,GAQIrB,KARJ,CAIEqB,QAJF;AAAA,MAKEb,QALF,GAQIR,KARJ,CAKEQ,QALF;AAAA,MAMEc,aANF,GAQItB,KARJ,CAMEsB,aANF;AAAA,MAOEC,aAPF,GAQIvB,KARJ,CAOEuB,aAPF;;AASA,MAAMC,GAAG,GAAG,SAANA,GAAM,CAACC,CAAD;AAAA,WAAQL,WAAW,aAAMA,WAAN,cAAqBK,CAArB,IAA2BA,CAA9C;AAAA,GAAZ;;AAEA,MAAMC,QAAQ,GAAG;AACfhB,IAAAA,IAAI,EAAET,OAAO,CAACuB,GAAG,CAAC,MAAD,CAAJ,CADE;AAEfZ,IAAAA,OAAO,EAAEX,OAAO,CAACuB,GAAG,CAAC,SAAD,CAAJ,CAFD;AAGfhB,IAAAA,QAAQ,EAAEP,OAAO,CAACuB,GAAG,CAAC,UAAD,CAAJ;AAHF,GAAjB;AAMA,MAAMG,SAAS,GAAG;AAAEf,IAAAA,OAAO,EAAPA,OAAF;AAAWS,IAAAA,QAAQ,EAARA,QAAX;AAAqBb,IAAAA,QAAQ,EAARA;AAArB,GAAlB;AAEA,sBACE,gCAAC,iBAAD;AACE,kBAAYc;AADd,KAEMK,SAFN;AAGE,IAAA,SAAS,EAAE,4BACTzB,UADS,EAETqB,aAAa,IAAItB,OAAO,CAACgB,gBAFhB,CAHb;AAOE,IAAA,OAAO,EAAE;AACPP,MAAAA,IAAI,EAAEgB,QAAQ,CAAChB,IADR;AAEPE,MAAAA,OAAO,EAAEc,QAAQ,CAACd;AAFX;AAPX,KADF;AAcD,CAlC0B,CAApB;;;IAoCMiB,W;;;;;AA0BX,uBAAY7B,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AACA,UAAK8B,cAAL,GAAsB,MAAKA,cAAL,CAAoBC,IAApB,gDAAtB;AAFiB;AAGlB;;;;WAED,0BAAiB;AACf,WAAK/B,KAAL,CAAWqB,QAAX,CAAoB;AAClBW,QAAAA,KAAK,EAAE,KAAKhC,KAAL,CAAWgC,KADA;AAElBC,QAAAA,QAAQ,EAAE,CAAC,KAAKjC,KAAL,CAAWY;AAFJ,OAApB;AAID;;;WAED,kBAAS;AACP,wBAeI,KAAKZ,KAfT;AAAA,UACEkC,UADF,eACEA,UADF;AAAA,UAEE1B,QAFF,eAEEA,QAFF;AAAA,UAGE2B,UAHF,eAGEA,UAHF;AAAA,UAIEC,QAJF,eAIEA,QAJF;AAAA,UAKEvC,KALF,eAKEA,KALF;AAAA,UAMEe,OANF,eAMEA,OANF;AAAA,UAOEQ,WAPF,eAOEA,WAPF;AAAA,UAQEnB,OARF,eAQEA,OARF;AAAA,UASEoC,SATF,eASEA,SATF;AAAA,UAUEC,SAVF,eAUEA,SAVF;AAAA,UAWEhB,aAXF,eAWEA,aAXF;AAAA,UAYEiB,QAZF,eAYEA,QAZF;AAAA,UAaEC,cAbF,eAaEA,cAbF;AAAA,UAcEjB,aAdF,eAcEA,aAdF;AAiBA,UAAMkB,GAAG,GAAGP,UAAU,KAAK,UAAf,GAA4Bf,cAA5B,GAA6CS,WAAzD;AACA,UAAMc,WAAW,GAAGR,UAAU,KAAK,UAAf,GAA4B,UAA5B,GAAyC,cAA7D;AAEA,0BACE;AACE,QAAA,SAAS,EAAE,4BACTG,SADS,EAET,gBAAgBK,WAFP,EAGT,cAHS;AADb,sBAOE;AAAK,QAAA,SAAS,EAAEzC,OAAO,CAACtB;AAAxB,SACG,CAAC4D,QAAD,IAAaC,cAAb,iBACC,gCAAC,wBAAD;AAAc,QAAA,WAAW,EAAEpB;AAA3B,QAFJ,eAIE;AACE,QAAA,SAAS,EAAE,4BAAWnB,OAAO,CAACP,cAAnB,EAAmC,iBAAnC;AADb,sBAGE,gCAAC,sBAAD;AACE,QAAA,QAAQ,EAAEc,QADZ;AAEE,QAAA,KAAK,EAAE2B,UAAU,GAAGA,UAAU,GAAG,IAAhB,GAAuB,EAF1C;AAGE,QAAA,OAAO,eACL,gCAAC,GAAD;AACE,UAAA,aAAa,EAAEb,aADjB;AAEE,UAAA,OAAO,EAAEV,OAFX;AAGE,UAAA,WAAW,EAAEQ,WAHf;AAIE,UAAA,aAAa,EAAEG,aAJjB;AAKE,UAAA,SAAS,EAAE,4BAAWtB,OAAO,CAACgB,gBAAnB,CALb;AAME,UAAA,QAAQ,EAAE,KAAKa;AANjB;AAJJ,QAHF,eAiBE;AACE,QAAA,SAAS,EAAE,4BACTP,aAAa,IAAItB,OAAO,CAAChB,mBADhB;AADb,sBAKE,gCAAC,uBAAD;AACE,QAAA,SAAS,EAAE,4BAAW,OAAX,CADb;AAEE,QAAA,OAAO,EAAE,KAAK6C,cAFhB;AAGE,QAAA,MAAM,EAAEjC,KAHV;AAIE,QAAA,OAAO,EAAC;AAJV,QALF,CAjBF,CAJF,CAPF,EA0CGyC,SAAS,iBACR,gCAAC,uBAAD;AACE,QAAA,SAAS,EAAC,WADZ;AAEE,QAAA,gBAAgB,EAAC,WAFnB;AAGE,QAAA,MAAM,EAAEA;AAHV,QA3CJ,eAiDE,gCAAC,kBAAD;AAAU,QAAA,QAAQ,EAAEF,QAApB;AAA8B,QAAA,WAAW,EAAEhB;AAA3C,QAjDF,CADF;AAqDD;;;EAhH8BuB,kBAAMC,S;;;iCAA1Bf,W,eACQ;AACjBK,EAAAA,UAAU,EAAEW,sBAAUC,KAAV,CAAgB,CAAC,OAAD,EAAU,UAAV,CAAhB,CADK;AAEjBX,EAAAA,UAAU,EAAEU,sBAAUE,MAAV,CAAiBC,UAFZ;AAGjBpC,EAAAA,OAAO,EAAEiC,sBAAUI,IAAV,CAAeD,UAHP;AAIjB5B,EAAAA,WAAW,EAAEyB,sBAAUE,MAJN;AAKjBvC,EAAAA,QAAQ,EAAEqC,sBAAUI,IAAV,CAAeD,UALR;AAMjBZ,EAAAA,QAAQ,EAAES,sBAAUE,MANH;AAOjBlD,EAAAA,KAAK,EAAEgD,sBAAUE,MAAV,CAAiBC,UAPP;AAQjBV,EAAAA,SAAS,EAAEO,sBAAUE,MARJ;AASjBzB,EAAAA,aAAa,EAAEuB,sBAAUE,MATR;AAUjB1B,EAAAA,QAAQ,EAAEwB,sBAAUK,IAAV,CAAeF,UAVR;AAWjBhB,EAAAA,KAAK,EAAEa,sBAAUE,MAAV,CAAiBC,UAXP;AAYjB/C,EAAAA,OAAO,EAAE4C,sBAAUM,MAZF;AAajBd,EAAAA,SAAS,EAAEQ,sBAAUE,MAbJ;AAcjBR,EAAAA,QAAQ,EAAEM,sBAAUI,IAdH;AAejBT,EAAAA,cAAc,EAAEK,sBAAUI;AAfT,C;iCADRpB,W,kBAmBW;AACpBS,EAAAA,SAAS,EAAE,IADS;AAEpBhB,EAAAA,aAAa,EAAE,IAFK;AAGpBV,EAAAA,OAAO,EAAE,KAHW;AAIpB4B,EAAAA,cAAc,EAAE;AAJI,C;;eAgGT,wBAAW9D,UAAX,EAAuBmD,WAAvB,C","sourcesContent":["import FormControlLabel from '@material-ui/core/FormControlLabel';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport Checkbox from '@material-ui/core/Checkbox';\nimport { Feedback, color, PreviewPrompt } from '@pie-lib/render-ui';\nimport FeedbackTick from './feedback-tick';\nimport Radio from '@material-ui/core/Radio';\nimport classNames from 'classnames';\n\nconst styleSheet = () => ({\n row: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n },\n promptStrikethrough: {\n '& > *': {\n textDecoration: 'line-through',\n },\n textDecoration: 'line-through',\n '& mjx-mtr': {\n position: 'relative',\n },\n '& mjx-mtr:after': {\n width: '100%',\n position: 'absolute',\n top: '50%',\n background: color.text(),\n height: '1px',\n left: '0',\n content: '\" \"',\n },\n '& mjx-math': {\n position: 'relative',\n },\n '& mjx-math:after': {\n width: '100%',\n position: 'absolute',\n top: '50%',\n background: color.text(),\n height: '1px',\n left: '0',\n content: '\" \"',\n },\n },\n checkboxHolder: {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: color.background(),\n flex: 1,\n '& label': {\n color: color.text(),\n },\n },\n});\n\nconst formStyleSheet = {\n label: {\n color: `${color.text()} !important`, //'var(--choice-input-color, black)'\n backgroundColor: color.background(),\n },\n};\n\nexport const StyledFormControlLabel = withStyles(formStyleSheet, {\n name: 'FormControlLabel',\n})((props) => (\n <FormControlLabel {...props} classes={{ label: props.classes.label }} />\n));\n\nconst CLASS_NAME = 'multiple-choice-component';\n\nconst colorStyle = (varName, fallback) => ({\n [`&.${CLASS_NAME}`]: {\n color: `var(--choice-input-${varName}, ${fallback}) !important`,\n },\n});\n\nconst inputStyles = {\n 'correct-root': colorStyle('correct-color', color.text()),\n 'correct-checked': colorStyle('correct-selected-color', color.correct()), //green[500]),\n 'correct-disabled': colorStyle('correct-disabled-color', color.disabled()), //'grey'),\n 'incorrect-root': colorStyle('incorrect-color', color.incorrect()),\n 'incorrect-checked': colorStyle('incorrect-checked', color.incorrect()), //orange[500]),\n 'incorrect-disabled': colorStyle(\n 'incorrect-disabled-color',\n color.disabled()\n ),\n root: {\n ...colorStyle('color', color.text()),\n '&:hover': { color: `${color.primaryLight()} !important` },\n },\n checked: colorStyle('selected-color', color.primary()),\n disabled: {\n ...colorStyle('disabled-color', color.text()),\n opacity: 0.6,\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n },\n strikethroughTag: {\n '&:before': {\n content: '\"——\"',\n position: 'absolute',\n letterSpacing: '-3px',\n left: '0.3em',\n },\n },\n};\n\nexport const StyledCheckbox = withStyles(inputStyles)((props) => {\n const {\n correctness,\n classes,\n checked,\n onChange,\n disabled,\n accessibility,\n strikethrough,\n } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n return (\n <Checkbox\n aria-label={accessibility}\n {...miniProps}\n className={classNames(\n CLASS_NAME,\n strikethrough && classes.strikethroughTag\n )}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n disabled: resolved.disabled,\n }}\n />\n );\n});\n\nexport const StyledRadio = withStyles(inputStyles)((props) => {\n const {\n correctness,\n classes,\n checked,\n onChange,\n disabled,\n accessibility,\n strikethrough,\n } = props;\n const key = (k) => (correctness ? `${correctness}-${k}` : k);\n\n const resolved = {\n root: classes[key('root')],\n checked: classes[key('checked')],\n disabled: classes[key('disabled')],\n };\n\n const miniProps = { checked, onChange, disabled };\n\n return (\n <Radio\n aria-label={accessibility}\n {...miniProps}\n className={classNames(\n CLASS_NAME,\n strikethrough && classes.strikethroughTag\n )}\n classes={{\n root: resolved.root,\n checked: resolved.checked,\n }}\n />\n );\n});\n\nexport class ChoiceInput extends React.Component {\n static propTypes = {\n choiceMode: PropTypes.oneOf(['radio', 'checkbox']),\n displayKey: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n correctness: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n feedback: PropTypes.string,\n label: PropTypes.string.isRequired,\n rationale: PropTypes.string,\n accessibility: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n classes: PropTypes.object,\n className: PropTypes.string,\n hideTick: PropTypes.bool,\n isEvaluateMode: PropTypes.bool,\n };\n\n static defaultProps = {\n rationale: null,\n accessibility: null,\n checked: false,\n isEvaluateMode: false,\n };\n\n constructor(props) {\n super(props);\n this.onToggleChoice = this.onToggleChoice.bind(this);\n }\n\n onToggleChoice() {\n this.props.onChange({\n value: this.props.value,\n selected: !this.props.checked,\n });\n }\n\n render() {\n const {\n choiceMode,\n disabled,\n displayKey,\n feedback,\n label,\n checked,\n correctness,\n classes,\n className,\n rationale,\n accessibility,\n hideTick,\n isEvaluateMode,\n strikethrough,\n } = this.props;\n\n const Tag = choiceMode === 'checkbox' ? StyledCheckbox : StyledRadio;\n const classSuffix = choiceMode === 'checkbox' ? 'checkbox' : 'radio-button';\n\n return (\n <div\n className={classNames(\n className,\n 'corespring-' + classSuffix,\n 'choice-input'\n )}\n >\n <div className={classes.row}>\n {!hideTick && isEvaluateMode && (\n <FeedbackTick correctness={correctness} />\n )}\n <div\n className={classNames(classes.checkboxHolder, 'checkbox-holder')}\n >\n <StyledFormControlLabel\n disabled={disabled}\n label={displayKey ? displayKey + '. ' : ''}\n control={\n <Tag\n accessibility={accessibility}\n checked={checked}\n correctness={correctness}\n strikethrough={strikethrough}\n className={classNames(classes.strikethroughTag)}\n onChange={this.onToggleChoice}\n />\n }\n />\n <div\n className={classNames(\n strikethrough && classes.promptStrikethrough\n )}\n >\n <PreviewPrompt\n className={classNames('label')}\n onClick={this.onToggleChoice}\n prompt={label}\n tagName=\"span\"\n />\n </div>\n </div>\n </div>\n {rationale && (\n <PreviewPrompt\n className=\"rationale\"\n defaultClassName=\"rationale\"\n prompt={rationale}\n />\n )}\n <Feedback feedback={feedback} correctness={correctness} />\n </div>\n );\n }\n}\n\nexport default withStyles(styleSheet)(ChoiceInput);\n"],"file":"choice-input.js"}