@pie-lib/config-ui 11.30.3-next.2 → 11.30.4-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/CHANGELOG.md +7 -78
  2. package/lib/__tests__/alert-dialog.test.js +262 -0
  3. package/lib/__tests__/checkbox.test.js +227 -0
  4. package/lib/__tests__/choice-utils.test.js +14 -0
  5. package/lib/__tests__/form-section.test.js +252 -0
  6. package/lib/__tests__/help.test.js +270 -0
  7. package/lib/__tests__/input.test.js +268 -0
  8. package/lib/__tests__/langs.test.js +541 -0
  9. package/lib/__tests__/number-text-field-custom.test.js +362 -0
  10. package/lib/__tests__/number-text-field.test.js +421 -0
  11. package/lib/__tests__/radio-with-label.test.js +233 -0
  12. package/lib/__tests__/settings-panel.test.js +184 -0
  13. package/lib/__tests__/settings.test.js +653 -0
  14. package/lib/__tests__/tabs.test.js +211 -0
  15. package/lib/__tests__/two-choice.test.js +124 -0
  16. package/lib/__tests__/with-stateful-model.test.js +221 -0
  17. package/lib/alert-dialog.js +36 -43
  18. package/lib/alert-dialog.js.map +1 -1
  19. package/lib/checkbox.js +57 -72
  20. package/lib/checkbox.js.map +1 -1
  21. package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
  22. package/lib/choice-configuration/__tests__/index.test.js +253 -0
  23. package/lib/choice-configuration/feedback-menu.js +30 -65
  24. package/lib/choice-configuration/feedback-menu.js.map +1 -1
  25. package/lib/choice-configuration/index.js +203 -263
  26. package/lib/choice-configuration/index.js.map +1 -1
  27. package/lib/choice-utils.js +7 -19
  28. package/lib/choice-utils.js.map +1 -1
  29. package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
  30. package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
  31. package/lib/feedback-config/feedback-selector.js +80 -116
  32. package/lib/feedback-config/feedback-selector.js.map +1 -1
  33. package/lib/feedback-config/group.js +27 -41
  34. package/lib/feedback-config/group.js.map +1 -1
  35. package/lib/feedback-config/index.js +48 -91
  36. package/lib/feedback-config/index.js.map +1 -1
  37. package/lib/form-section.js +32 -34
  38. package/lib/form-section.js.map +1 -1
  39. package/lib/help.js +40 -81
  40. package/lib/help.js.map +1 -1
  41. package/lib/index.js +2 -32
  42. package/lib/index.js.map +1 -1
  43. package/lib/input.js +22 -55
  44. package/lib/input.js.map +1 -1
  45. package/lib/inputs.js +62 -96
  46. package/lib/inputs.js.map +1 -1
  47. package/lib/langs.js +59 -102
  48. package/lib/langs.js.map +1 -1
  49. package/lib/layout/__tests__/config.layout.test.js +70 -0
  50. package/lib/layout/__tests__/layout-content.test.js +6 -0
  51. package/lib/layout/config-layout.js +41 -71
  52. package/lib/layout/config-layout.js.map +1 -1
  53. package/lib/layout/index.js +1 -4
  54. package/lib/layout/index.js.map +1 -1
  55. package/lib/layout/layout-contents.js +73 -104
  56. package/lib/layout/layout-contents.js.map +1 -1
  57. package/lib/layout/settings-box.js +28 -57
  58. package/lib/layout/settings-box.js.map +1 -1
  59. package/lib/mui-box/index.js +42 -58
  60. package/lib/mui-box/index.js.map +1 -1
  61. package/lib/number-text-field-custom.js +80 -162
  62. package/lib/number-text-field-custom.js.map +1 -1
  63. package/lib/number-text-field.js +81 -115
  64. package/lib/number-text-field.js.map +1 -1
  65. package/lib/radio-with-label.js +31 -32
  66. package/lib/radio-with-label.js.map +1 -1
  67. package/lib/settings/display-size.js +17 -33
  68. package/lib/settings/display-size.js.map +1 -1
  69. package/lib/settings/index.js +15 -48
  70. package/lib/settings/index.js.map +1 -1
  71. package/lib/settings/panel.js +160 -230
  72. package/lib/settings/panel.js.map +1 -1
  73. package/lib/settings/settings-radio-label.js +29 -31
  74. package/lib/settings/settings-radio-label.js.map +1 -1
  75. package/lib/settings/toggle.js +36 -47
  76. package/lib/settings/toggle.js.map +1 -1
  77. package/lib/tabs/index.js +23 -58
  78. package/lib/tabs/index.js.map +1 -1
  79. package/lib/tags-input/__tests__/index.test.js +183 -0
  80. package/lib/tags-input/index.js +51 -100
  81. package/lib/tags-input/index.js.map +1 -1
  82. package/lib/two-choice.js +47 -91
  83. package/lib/two-choice.js.map +1 -1
  84. package/lib/with-stateful-model.js +9 -32
  85. package/lib/with-stateful-model.js.map +1 -1
  86. package/package.json +12 -20
  87. package/src/__tests__/alert-dialog.test.jsx +283 -0
  88. package/src/__tests__/checkbox.test.jsx +249 -0
  89. package/src/__tests__/form-section.test.jsx +334 -0
  90. package/src/__tests__/help.test.jsx +184 -0
  91. package/src/__tests__/input.test.jsx +192 -0
  92. package/src/__tests__/langs.test.jsx +435 -15
  93. package/src/__tests__/number-text-field-custom.test.jsx +438 -0
  94. package/src/__tests__/number-text-field.test.jsx +295 -102
  95. package/src/__tests__/radio-with-label.test.jsx +259 -0
  96. package/src/__tests__/settings-panel.test.js +66 -83
  97. package/src/__tests__/settings.test.jsx +515 -0
  98. package/src/__tests__/tabs.test.jsx +193 -0
  99. package/src/__tests__/two-choice.test.js +104 -18
  100. package/src/__tests__/with-stateful-model.test.jsx +145 -0
  101. package/src/alert-dialog.jsx +21 -19
  102. package/src/checkbox.jsx +42 -46
  103. package/src/choice-configuration/__tests__/feedback-menu.test.jsx +157 -4
  104. package/src/choice-configuration/__tests__/index.test.jsx +198 -56
  105. package/src/choice-configuration/feedback-menu.jsx +6 -6
  106. package/src/choice-configuration/index.jsx +201 -196
  107. package/src/feedback-config/__tests__/feedback-config.test.jsx +130 -60
  108. package/src/feedback-config/__tests__/feedback-selector.test.jsx +87 -40
  109. package/src/feedback-config/feedback-selector.jsx +52 -53
  110. package/src/feedback-config/group.jsx +21 -22
  111. package/src/feedback-config/index.jsx +27 -29
  112. package/src/form-section.jsx +26 -18
  113. package/src/help.jsx +20 -28
  114. package/src/input.jsx +1 -1
  115. package/src/inputs.jsx +34 -50
  116. package/src/langs.jsx +41 -46
  117. package/src/layout/__tests__/config.layout.test.jsx +55 -38
  118. package/src/layout/config-layout.jsx +38 -32
  119. package/src/layout/layout-contents.jsx +38 -39
  120. package/src/layout/settings-box.jsx +16 -19
  121. package/src/mui-box/index.jsx +35 -43
  122. package/src/number-text-field-custom.jsx +30 -36
  123. package/src/number-text-field.jsx +45 -29
  124. package/src/radio-with-label.jsx +25 -13
  125. package/src/settings/display-size.jsx +12 -11
  126. package/src/settings/panel.jsx +97 -91
  127. package/src/settings/settings-radio-label.jsx +25 -13
  128. package/src/settings/toggle.jsx +30 -29
  129. package/src/tabs/index.jsx +8 -8
  130. package/src/tags-input/__tests__/index.test.jsx +88 -37
  131. package/src/tags-input/index.jsx +35 -38
  132. package/src/two-choice.jsx +15 -19
  133. package/esm/index.css +0 -847
  134. package/esm/index.js +0 -213950
  135. package/esm/index.js.map +0 -1
  136. package/esm/package.json +0 -3
  137. package/src/__tests__/__snapshots__/langs.test.jsx.snap +0 -32
  138. package/src/__tests__/__snapshots__/settings-panel.test.js.snap +0 -115
  139. package/src/__tests__/__snapshots__/two-choice.test.js.snap +0 -171
  140. package/src/choice-configuration/__tests__/__snapshots__/feedback-menu.test.jsx.snap +0 -51
  141. package/src/choice-configuration/__tests__/__snapshots__/index.test.jsx.snap +0 -519
  142. package/src/feedback-config/__tests__/__snapshots__/feedback-config.test.jsx.snap +0 -27
  143. package/src/feedback-config/__tests__/__snapshots__/feedback-selector.test.jsx.snap +0 -38
  144. package/src/layout/__tests__/__snapshots__/config.layout.test.jsx.snap +0 -59
  145. package/src/tags-input/__tests__/__snapshots__/index.test.jsx.snap +0 -170
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _react2 = require("@testing-library/react");
8
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
9
+ var _feedbackMenu = _interopRequireDefault(require("../feedback-menu"));
10
+ describe('feedback-menu', function () {
11
+ var onChange = jest.fn();
12
+ beforeEach(function () {
13
+ onChange.mockClear();
14
+ });
15
+ describe('rendering', function () {
16
+ it('renders feedback menu with default options', function () {
17
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
18
+ onChange: onChange,
19
+ classes: {}
20
+ })),
21
+ container = _render.container;
22
+ expect(container.firstChild).toBeInTheDocument();
23
+ });
24
+ it('renders menu with feedback type selector', function () {
25
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
26
+ onChange: onChange,
27
+ value: {
28
+ type: 'default'
29
+ },
30
+ classes: {}
31
+ }));
32
+ // Menu button should be in the document
33
+ expect(_react2.screen.getByRole('button')).toBeInTheDocument();
34
+ });
35
+ it('renders with no feedback type', function () {
36
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
37
+ onChange: onChange,
38
+ value: {
39
+ type: 'none'
40
+ },
41
+ classes: {}
42
+ }));
43
+ expect(_react2.screen.getByRole('button')).toBeInTheDocument();
44
+ });
45
+ it('renders with custom feedback type', function () {
46
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
47
+ onChange: onChange,
48
+ value: {
49
+ type: 'custom'
50
+ },
51
+ classes: {}
52
+ }));
53
+ expect(_react2.screen.getByRole('button')).toBeInTheDocument();
54
+ });
55
+ it('renders feedback icon button', function () {
56
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
57
+ onChange: onChange,
58
+ classes: {}
59
+ }));
60
+ var button = _react2.screen.getByRole('button');
61
+ expect(button).toBeInTheDocument();
62
+ });
63
+ });
64
+ describe('user interactions', function () {
65
+ it('opens menu when button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
66
+ var user, button;
67
+ return _regenerator["default"].wrap(function (_context) {
68
+ while (1) switch (_context.prev = _context.next) {
69
+ case 0:
70
+ user = _userEvent["default"].setup();
71
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
72
+ onChange: onChange,
73
+ value: {
74
+ type: 'default'
75
+ },
76
+ classes: {}
77
+ }));
78
+ button = _react2.screen.getByRole('button');
79
+ _context.next = 1;
80
+ return user.click(button);
81
+ case 1:
82
+ // Menu items should appear
83
+ expect(_react2.screen.getByText('No Feedback')).toBeInTheDocument();
84
+ expect(_react2.screen.getByText('Default')).toBeInTheDocument();
85
+ expect(_react2.screen.getByText('Custom')).toBeInTheDocument();
86
+ case 2:
87
+ case "end":
88
+ return _context.stop();
89
+ }
90
+ }, _callee);
91
+ })));
92
+ it('calls onChange with "none" when No Feedback is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
93
+ var user, button, noFeedbackOption;
94
+ return _regenerator["default"].wrap(function (_context2) {
95
+ while (1) switch (_context2.prev = _context2.next) {
96
+ case 0:
97
+ user = _userEvent["default"].setup();
98
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
99
+ onChange: onChange,
100
+ value: {
101
+ type: 'default'
102
+ },
103
+ classes: {}
104
+ }));
105
+ button = _react2.screen.getByRole('button');
106
+ _context2.next = 1;
107
+ return user.click(button);
108
+ case 1:
109
+ noFeedbackOption = _react2.screen.getByText('No Feedback');
110
+ _context2.next = 2;
111
+ return user.click(noFeedbackOption);
112
+ case 2:
113
+ expect(onChange).toHaveBeenCalledWith('none');
114
+ case 3:
115
+ case "end":
116
+ return _context2.stop();
117
+ }
118
+ }, _callee2);
119
+ })));
120
+ it('calls onChange with "default" when Default is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
121
+ var user, button, defaultOption;
122
+ return _regenerator["default"].wrap(function (_context3) {
123
+ while (1) switch (_context3.prev = _context3.next) {
124
+ case 0:
125
+ user = _userEvent["default"].setup();
126
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
127
+ onChange: onChange,
128
+ value: {
129
+ type: 'none'
130
+ },
131
+ classes: {}
132
+ }));
133
+ button = _react2.screen.getByRole('button');
134
+ _context3.next = 1;
135
+ return user.click(button);
136
+ case 1:
137
+ defaultOption = _react2.screen.getByText('Default');
138
+ _context3.next = 2;
139
+ return user.click(defaultOption);
140
+ case 2:
141
+ expect(onChange).toHaveBeenCalledWith('default');
142
+ case 3:
143
+ case "end":
144
+ return _context3.stop();
145
+ }
146
+ }, _callee3);
147
+ })));
148
+ it('calls onChange with "custom" when Custom is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
149
+ var user, button, customOption;
150
+ return _regenerator["default"].wrap(function (_context4) {
151
+ while (1) switch (_context4.prev = _context4.next) {
152
+ case 0:
153
+ user = _userEvent["default"].setup();
154
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
155
+ onChange: onChange,
156
+ value: {
157
+ type: 'none'
158
+ },
159
+ classes: {}
160
+ }));
161
+ button = _react2.screen.getByRole('button');
162
+ _context4.next = 1;
163
+ return user.click(button);
164
+ case 1:
165
+ customOption = _react2.screen.getByText('Custom');
166
+ _context4.next = 2;
167
+ return user.click(customOption);
168
+ case 2:
169
+ expect(onChange).toHaveBeenCalledWith('custom');
170
+ case 3:
171
+ case "end":
172
+ return _context4.stop();
173
+ }
174
+ }, _callee4);
175
+ })));
176
+ it('closes menu after selection', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
177
+ var user, button, noFeedbackOption;
178
+ return _regenerator["default"].wrap(function (_context5) {
179
+ while (1) switch (_context5.prev = _context5.next) {
180
+ case 0:
181
+ user = _userEvent["default"].setup();
182
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
183
+ onChange: onChange,
184
+ value: {
185
+ type: 'default'
186
+ },
187
+ classes: {}
188
+ }));
189
+ button = _react2.screen.getByRole('button');
190
+ _context5.next = 1;
191
+ return user.click(button);
192
+ case 1:
193
+ expect(_react2.screen.getByText('No Feedback')).toBeInTheDocument();
194
+ noFeedbackOption = _react2.screen.getByText('No Feedback');
195
+ _context5.next = 2;
196
+ return user.click(noFeedbackOption);
197
+ case 2:
198
+ // Menu should close after selection
199
+ expect(onChange).toHaveBeenCalledWith('none');
200
+ case 3:
201
+ case "end":
202
+ return _context5.stop();
203
+ }
204
+ }, _callee5);
205
+ })));
206
+ });
207
+ describe('feedback type indicators', function () {
208
+ it('shows correct icon color for default feedback', function () {
209
+ var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
210
+ onChange: onChange,
211
+ value: {
212
+ type: 'default'
213
+ },
214
+ classes: {}
215
+ })),
216
+ container = _render2.container;
217
+ // Icon should be present with primary color
218
+ expect(container.querySelector('svg')).toBeInTheDocument();
219
+ });
220
+ it('shows correct icon color for custom feedback', function () {
221
+ var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
222
+ onChange: onChange,
223
+ value: {
224
+ type: 'custom'
225
+ },
226
+ classes: {}
227
+ })),
228
+ container = _render3.container;
229
+ // Icon should be present with primary color
230
+ expect(container.querySelector('svg')).toBeInTheDocument();
231
+ });
232
+ it('shows correct icon color for disabled feedback', function () {
233
+ var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
234
+ onChange: onChange,
235
+ value: {
236
+ type: 'none'
237
+ },
238
+ classes: {}
239
+ })),
240
+ container = _render4.container;
241
+ // Icon should be present with disabled color
242
+ expect(container.querySelector('svg')).toBeInTheDocument();
243
+ });
244
+ });
245
+ describe('aria labels', function () {
246
+ it('has aria-label on button for default feedback', function () {
247
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
248
+ onChange: onChange,
249
+ value: {
250
+ type: 'default'
251
+ },
252
+ classes: {}
253
+ }));
254
+ var button = _react2.screen.getByRole('button', {
255
+ name: /Default Feedback/i
256
+ });
257
+ expect(button).toBeInTheDocument();
258
+ });
259
+ it('has aria-label on button for custom feedback', function () {
260
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
261
+ onChange: onChange,
262
+ value: {
263
+ type: 'custom'
264
+ },
265
+ classes: {}
266
+ }));
267
+ var button = _react2.screen.getByRole('button', {
268
+ name: /Custom Feedback/i
269
+ });
270
+ expect(button).toBeInTheDocument();
271
+ });
272
+ it('has aria-label on button for disabled feedback', function () {
273
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_feedbackMenu["default"], {
274
+ onChange: onChange,
275
+ value: {
276
+ type: 'none'
277
+ },
278
+ classes: {}
279
+ }));
280
+ var button = _react2.screen.getByRole('button', {
281
+ name: /Feedback disabled/i
282
+ });
283
+ expect(button).toBeInTheDocument();
284
+ });
285
+ });
286
+ });
287
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2ZlZWRiYWNrTWVudSIsImRlc2NyaWJlIiwib25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJiZWZvcmVFYWNoIiwibW9ja0NsZWFyIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzZXMiLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJ2YWx1ZSIsInR5cGUiLCJzY3JlZW4iLCJnZXRCeVJvbGUiLCJidXR0b24iLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInVzZXIiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVzZXJFdmVudCIsInNldHVwIiwiY2xpY2siLCJnZXRCeVRleHQiLCJzdG9wIiwiX2NhbGxlZTIiLCJub0ZlZWRiYWNrT3B0aW9uIiwiX2NvbnRleHQyIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJfY2FsbGVlMyIsImRlZmF1bHRPcHRpb24iLCJfY29udGV4dDMiLCJfY2FsbGVlNCIsImN1c3RvbU9wdGlvbiIsIl9jb250ZXh0NCIsIl9jYWxsZWU1IiwiX2NvbnRleHQ1IiwiX3JlbmRlcjIiLCJxdWVyeVNlbGVjdG9yIiwiX3JlbmRlcjMiLCJfcmVuZGVyNCIsIm5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2hvaWNlLWNvbmZpZ3VyYXRpb24vX190ZXN0c19fL2ZlZWRiYWNrLW1lbnUudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgdXNlckV2ZW50IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvdXNlci1ldmVudCc7XG5pbXBvcnQgRmVlZGJhY2tNZW51IGZyb20gJy4uL2ZlZWRiYWNrLW1lbnUnO1xuXG5kZXNjcmliZSgnZmVlZGJhY2stbWVudScsICgpID0+IHtcbiAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25DaGFuZ2UubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgZmVlZGJhY2sgbWVudSB3aXRoIGRlZmF1bHQgb3B0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IGNsYXNzZXM9e3t9fSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBtZW51IHdpdGggZmVlZGJhY2sgdHlwZSBzZWxlY3RvcicsICgpID0+IHtcbiAgICAgIHJlbmRlcig8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2RlZmF1bHQnIH19IGNsYXNzZXM9e3t9fSAvPik7XG4gICAgICAvLyBNZW51IGJ1dHRvbiBzaG91bGQgYmUgaW4gdGhlIGRvY3VtZW50XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIG5vIGZlZWRiYWNrIHR5cGUnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz4pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBjdXN0b20gZmVlZGJhY2sgdHlwZScsICgpID0+IHtcbiAgICAgIHJlbmRlcig8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2N1c3RvbScgfX0gY2xhc3Nlcz17e319IC8+KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGZlZWRiYWNrIGljb24gYnV0dG9uJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxGZWVkYmFja01lbnUgb25DaGFuZ2U9e29uQ2hhbmdlfSBjbGFzc2VzPXt7fX0gLz4pO1xuICAgICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgICBleHBlY3QoYnV0dG9uKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXNlciBpbnRlcmFjdGlvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ29wZW5zIG1lbnUgd2hlbiBidXR0b24gaXMgY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIHJlbmRlcig8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2RlZmF1bHQnIH19IGNsYXNzZXM9e3t9fSAvPik7XG5cbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuXG4gICAgICAvLyBNZW51IGl0ZW1zIHNob3VsZCBhcHBlYXJcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdObyBGZWVkYmFjaycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0RlZmF1bHQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdDdXN0b20nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aXRoIFwibm9uZVwiIHdoZW4gTm8gRmVlZGJhY2sgaXMgc2VsZWN0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdkZWZhdWx0JyB9fSBjbGFzc2VzPXt7fX0gLz4pO1xuXG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soYnV0dG9uKTtcblxuICAgICAgY29uc3Qgbm9GZWVkYmFja09wdGlvbiA9IHNjcmVlbi5nZXRCeVRleHQoJ05vIEZlZWRiYWNrJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKG5vRmVlZGJhY2tPcHRpb24pO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdub25lJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2l0aCBcImRlZmF1bHRcIiB3aGVuIERlZmF1bHQgaXMgc2VsZWN0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz4pO1xuXG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soYnV0dG9uKTtcblxuICAgICAgY29uc3QgZGVmYXVsdE9wdGlvbiA9IHNjcmVlbi5nZXRCeVRleHQoJ0RlZmF1bHQnKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soZGVmYXVsdE9wdGlvbik7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2RlZmF1bHQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aXRoIFwiY3VzdG9tXCIgd2hlbiBDdXN0b20gaXMgc2VsZWN0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz4pO1xuXG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soYnV0dG9uKTtcblxuICAgICAgY29uc3QgY3VzdG9tT3B0aW9uID0gc2NyZWVuLmdldEJ5VGV4dCgnQ3VzdG9tJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKGN1c3RvbU9wdGlvbik7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2N1c3RvbScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Nsb3NlcyBtZW51IGFmdGVyIHNlbGVjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIHJlbmRlcig8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2RlZmF1bHQnIH19IGNsYXNzZXM9e3t9fSAvPik7XG5cbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnTm8gRmVlZGJhY2snKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcblxuICAgICAgY29uc3Qgbm9GZWVkYmFja09wdGlvbiA9IHNjcmVlbi5nZXRCeVRleHQoJ05vIEZlZWRiYWNrJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKG5vRmVlZGJhY2tPcHRpb24pO1xuXG4gICAgICAvLyBNZW51IHNob3VsZCBjbG9zZSBhZnRlciBzZWxlY3Rpb25cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ25vbmUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZlZWRiYWNrIHR5cGUgaW5kaWNhdG9ycycsICgpID0+IHtcbiAgICBpdCgnc2hvd3MgY29ycmVjdCBpY29uIGNvbG9yIGZvciBkZWZhdWx0IGZlZWRiYWNrJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdkZWZhdWx0JyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICAvLyBJY29uIHNob3VsZCBiZSBwcmVzZW50IHdpdGggcHJpbWFyeSBjb2xvclxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBjb3JyZWN0IGljb24gY29sb3IgZm9yIGN1c3RvbSBmZWVkYmFjaycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxGZWVkYmFja01lbnUgb25DaGFuZ2U9e29uQ2hhbmdlfSB2YWx1ZT17eyB0eXBlOiAnY3VzdG9tJyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICAvLyBJY29uIHNob3VsZCBiZSBwcmVzZW50IHdpdGggcHJpbWFyeSBjb2xvclxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG93cyBjb3JyZWN0IGljb24gY29sb3IgZm9yIGRpc2FibGVkIGZlZWRiYWNrJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICAvLyBJY29uIHNob3VsZCBiZSBwcmVzZW50IHdpdGggZGlzYWJsZWQgY29sb3JcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhcmlhIGxhYmVscycsICgpID0+IHtcbiAgICBpdCgnaGFzIGFyaWEtbGFiZWwgb24gYnV0dG9uIGZvciBkZWZhdWx0IGZlZWRiYWNrJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8RmVlZGJhY2tNZW51IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3sgdHlwZTogJ2RlZmF1bHQnIH19IGNsYXNzZXM9e3t9fSAvPlxuICAgICAgKTtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL0RlZmF1bHQgRmVlZGJhY2svaSB9KTtcbiAgICAgIGV4cGVjdChidXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGFyaWEtbGFiZWwgb24gYnV0dG9uIGZvciBjdXN0b20gZmVlZGJhY2snLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGZWVkYmFja01lbnUgb25DaGFuZ2U9e29uQ2hhbmdlfSB2YWx1ZT17eyB0eXBlOiAnY3VzdG9tJyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9DdXN0b20gRmVlZGJhY2svaSB9KTtcbiAgICAgIGV4cGVjdChidXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGFyaWEtbGFiZWwgb24gYnV0dG9uIGZvciBkaXNhYmxlZCBmZWVkYmFjaycsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZlZWRiYWNrTWVudSBvbkNoYW5nZT17b25DaGFuZ2V9IHZhbHVlPXt7IHR5cGU6ICdub25lJyB9fSBjbGFzc2VzPXt7fX0gLz5cbiAgICAgICk7XG4gICAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9GZWVkYmFjayBkaXNhYmxlZC9pIH0pO1xuICAgICAgZXhwZWN0KGJ1dHRvbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQUksUUFBUSxDQUFDLGVBQWUsRUFBRSxZQUFNO0VBQzlCLElBQU1DLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztFQUUxQkMsVUFBVSxDQUFDLFlBQU07SUFDZkgsUUFBUSxDQUFDSSxTQUFTLENBQUMsQ0FBQztFQUN0QixDQUFDLENBQUM7RUFFRkwsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0lBQzFCTSxFQUFFLENBQUMsNENBQTRDLEVBQUUs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
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _react2 = require("@testing-library/react");
9
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
+ var _index = require("../index");
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ jest.mock('@pie-lib/editable-html', function () {
14
+ return {
15
+ __esModule: true,
16
+ "default": function _default(_ref) {
17
+ var markup = _ref.markup,
18
+ _onChange = _ref.onChange,
19
+ disabled = _ref.disabled;
20
+ return /*#__PURE__*/_react["default"].createElement("textarea", {
21
+ "data-testid": "editable-html",
22
+ defaultValue: markup || '',
23
+ onChange: function onChange(e) {
24
+ return _onChange(e.target.value);
25
+ },
26
+ disabled: disabled
27
+ });
28
+ }
29
+ };
30
+ });
31
+ var defaultFeedback = {
32
+ correct: 'Correct',
33
+ incorrect: 'Incorrect'
34
+ };
35
+ var data = {
36
+ correct: true,
37
+ value: 'foo',
38
+ label: 'Foo',
39
+ feedback: {
40
+ type: 'custom'
41
+ }
42
+ };
43
+ var classes = {
44
+ choiceConfiguration: 'choiceConfiguration'
45
+ };
46
+ describe('ChoiceConfiguration', function () {
47
+ var onChange = jest.fn();
48
+ beforeEach(function () {
49
+ onChange.mockClear();
50
+ });
51
+ describe('rendering', function () {
52
+ it('renders correctly with default props', function () {
53
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
54
+ classes: classes,
55
+ defaultFeedback: defaultFeedback,
56
+ data: data,
57
+ onChange: onChange
58
+ })),
59
+ container = _render.container;
60
+ expect(container.firstChild).toBeInTheDocument();
61
+ });
62
+ it('renders with checked state', function () {
63
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
64
+ classes: classes,
65
+ defaultFeedback: defaultFeedback,
66
+ data: data,
67
+ onChange: onChange,
68
+ mode: "checkbox"
69
+ }));
70
+ var checkbox = _react2.screen.getByRole('checkbox');
71
+ expect(checkbox).toBeChecked();
72
+ });
73
+ it('renders without feedback when allowFeedBack is false', function () {
74
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
75
+ allowFeedBack: false,
76
+ classes: classes,
77
+ defaultFeedback: defaultFeedback,
78
+ data: data,
79
+ onChange: onChange
80
+ }));
81
+ expect(_react2.screen.queryByRole('button', {
82
+ name: /feedback/i
83
+ })).not.toBeInTheDocument();
84
+ });
85
+ it('renders without delete button when allowDelete is false', function () {
86
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
87
+ allowDelete: false,
88
+ classes: classes,
89
+ defaultFeedback: defaultFeedback,
90
+ data: data,
91
+ onChange: onChange
92
+ }));
93
+ expect(_react2.screen.queryByRole('button', {
94
+ name: /delete/i
95
+ })).not.toBeInTheDocument();
96
+ });
97
+ });
98
+ describe('user interactions', function () {
99
+ it('calls onChange when label is edited', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
100
+ var user, editableHtmlElements, editableHtml;
101
+ return _regenerator["default"].wrap(function (_context) {
102
+ while (1) switch (_context.prev = _context.next) {
103
+ case 0:
104
+ user = _userEvent["default"].setup();
105
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
106
+ classes: classes,
107
+ defaultFeedback: defaultFeedback,
108
+ data: data,
109
+ onChange: onChange
110
+ }));
111
+ editableHtmlElements = _react2.screen.getAllByTestId('editable-html');
112
+ editableHtml = editableHtmlElements[0];
113
+ _context.next = 1;
114
+ return user.clear(editableHtml);
115
+ case 1:
116
+ _context.next = 2;
117
+ return user.type(editableHtml, 'new label');
118
+ case 2:
119
+ expect(onChange).toHaveBeenCalled();
120
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
121
+ label: expect.stringContaining('new label')
122
+ }));
123
+ case 3:
124
+ case "end":
125
+ return _context.stop();
126
+ }
127
+ }, _callee);
128
+ })));
129
+ it('calls onChange when checkbox is toggled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
130
+ var user, checkbox;
131
+ return _regenerator["default"].wrap(function (_context2) {
132
+ while (1) switch (_context2.prev = _context2.next) {
133
+ case 0:
134
+ user = _userEvent["default"].setup();
135
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
136
+ classes: classes,
137
+ defaultFeedback: defaultFeedback,
138
+ data: _objectSpread(_objectSpread({}, data), {}, {
139
+ correct: false
140
+ }),
141
+ onChange: onChange,
142
+ mode: "checkbox"
143
+ }));
144
+ checkbox = _react2.screen.getByRole('checkbox');
145
+ _context2.next = 1;
146
+ return user.click(checkbox);
147
+ case 1:
148
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
149
+ correct: true
150
+ }));
151
+ case 2:
152
+ case "end":
153
+ return _context2.stop();
154
+ }
155
+ }, _callee2);
156
+ })));
157
+ });
158
+ describe('prop variations', function () {
159
+ it('renders with radio mode instead of checkbox', function () {
160
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
161
+ classes: classes,
162
+ defaultFeedback: defaultFeedback,
163
+ data: data,
164
+ onChange: onChange,
165
+ mode: "radio"
166
+ }));
167
+ var radio = _react2.screen.getByRole('radio');
168
+ expect(radio).toBeInTheDocument();
169
+ });
170
+ it('renders with disabled state', function () {
171
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
172
+ classes: classes,
173
+ defaultFeedback: defaultFeedback,
174
+ data: data,
175
+ onChange: onChange,
176
+ disabled: true,
177
+ mode: "checkbox"
178
+ }));
179
+ var checkbox = _react2.screen.getByRole('checkbox');
180
+ expect(checkbox).toBeInTheDocument();
181
+ });
182
+ it('renders with custom feedback type', function () {
183
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
184
+ classes: classes,
185
+ defaultFeedback: defaultFeedback,
186
+ data: _objectSpread(_objectSpread({}, data), {}, {
187
+ feedback: {
188
+ type: 'custom'
189
+ }
190
+ }),
191
+ onChange: onChange,
192
+ mode: "checkbox"
193
+ }));
194
+ var editableElements = _react2.screen.getAllByTestId('editable-html');
195
+ expect(editableElements.length).toBeGreaterThan(0);
196
+ });
197
+ it('renders with incorrect answer', function () {
198
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
199
+ classes: classes,
200
+ defaultFeedback: defaultFeedback,
201
+ data: _objectSpread(_objectSpread({}, data), {}, {
202
+ correct: false
203
+ }),
204
+ onChange: onChange,
205
+ mode: "checkbox"
206
+ }));
207
+ var checkbox = _react2.screen.getByRole('checkbox');
208
+ expect(checkbox).not.toBeChecked();
209
+ });
210
+ });
211
+ describe('edge cases', function () {
212
+ it('handles data with empty label', function () {
213
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
214
+ classes: classes,
215
+ defaultFeedback: defaultFeedback,
216
+ data: _objectSpread(_objectSpread({}, data), {}, {
217
+ label: ''
218
+ }),
219
+ onChange: onChange
220
+ }));
221
+ var editableElements = _react2.screen.getAllByTestId('editable-html');
222
+ expect(editableElements.length).toBeGreaterThan(0);
223
+ });
224
+ it('handles multiple feedback types', function () {
225
+ var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
226
+ classes: classes,
227
+ defaultFeedback: defaultFeedback,
228
+ data: _objectSpread(_objectSpread({}, data), {}, {
229
+ feedback: {
230
+ type: 'default'
231
+ }
232
+ }),
233
+ onChange: onChange
234
+ })),
235
+ rerender = _render2.rerender;
236
+ var editableElements = _react2.screen.getAllByTestId('editable-html');
237
+ expect(editableElements.length).toBeGreaterThan(0);
238
+ rerender(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
239
+ classes: classes,
240
+ defaultFeedback: defaultFeedback,
241
+ data: _objectSpread(_objectSpread({}, data), {}, {
242
+ feedback: {
243
+ type: 'custom'
244
+ }
245
+ }),
246
+ onChange: onChange
247
+ }));
248
+ editableElements = _react2.screen.getAllByTestId('editable-html');
249
+ expect(editableElements.length).toBeGreaterThan(0);
250
+ });
251
+ });
252
+ });
253
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2luZGV4Iiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJqZXN0IiwibW9jayIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX3JlZiIsIm1hcmt1cCIsIm9uQ2hhbmdlIiwiZGlzYWJsZWQiLCJjcmVhdGVFbGVtZW50IiwiZGVmYXVsdFZhbHVlIiwidGFyZ2V0IiwidmFsdWUiLCJkZWZhdWx0RmVlZGJhY2siLCJjb3JyZWN0IiwiaW5jb3JyZWN0IiwiZGF0YSIsImxhYmVsIiwiZmVlZGJhY2siLCJ0eXBlIiwiY2xhc3NlcyIsImNob2ljZUNvbmZpZ3VyYXRpb24iLCJkZXNjcmliZSIsImZuIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsIkNob2ljZUNvbmZpZ3VyYXRpb24iLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJtb2RlIiwiY2hlY2tib3giLCJzY3JlZW4iLCJnZXRCeVJvbGUiLCJ0b0JlQ2hlY2tlZCIsImFsbG93RmVlZEJhY2siLCJxdWVyeUJ5Um9sZSIsIm5hbWUiLCJub3QiLCJhbGxvd0RlbGV0ZSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwidXNlciIsImVkaXRhYmxlSHRtbEVsZW1lbnRzIiwiZWRpdGFibGVIdG1sIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImdldEFsbEJ5VGVzdElkIiwiY2xlYXIiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJvYmplY3RDb250YWluaW5nIiwic3RyaW5nQ29udGFpbmluZyIsInN0b3AiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsImNsaWNrIiwicmFkaW8iLCJlZGl0YWJsZUVsZW1lbnRzIiwidG9CZUdyZWF0ZXJUaGFuIiwiX3JlbmRlcjIiLCJyZXJlbmRlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaG9pY2UtY29uZmlndXJhdGlvbi9fX3Rlc3RzX18vaW5kZXgudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgdXNlckV2ZW50IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvdXNlci1ldmVudCc7XG5pbXBvcnQgeyBDaG9pY2VDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2VkaXRhYmxlLWh0bWwnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBtYXJrdXAsIG9uQ2hhbmdlLCBkaXNhYmxlZCB9KSA9PiAoXG4gICAgPHRleHRhcmVhXG4gICAgICBkYXRhLXRlc3RpZD1cImVkaXRhYmxlLWh0bWxcIlxuICAgICAgZGVmYXVsdFZhbHVlPXttYXJrdXAgfHwgJyd9XG4gICAgICBvbkNoYW5nZT17KGUpID0+IG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAvPlxuICApLFxufSkpO1xuXG5jb25zdCBkZWZhdWx0RmVlZGJhY2sgPSB7XG4gIGNvcnJlY3Q6ICdDb3JyZWN0JyxcbiAgaW5jb3JyZWN0OiAnSW5jb3JyZWN0Jyxcbn07XG5cbmNvbnN0IGRhdGEgPSB7XG4gIGNvcnJlY3Q6IHRydWUsXG4gIHZhbHVlOiAnZm9vJyxcbiAgbGFiZWw6ICdGb28nLFxuICBmZWVkYmFjazoge1xuICAgIHR5cGU6ICdjdXN0b20nLFxuICB9LFxufTtcblxuY29uc3QgY2xhc3NlcyA9IHtcbiAgY2hvaWNlQ29uZmlndXJhdGlvbjogJ2Nob2ljZUNvbmZpZ3VyYXRpb24nLFxufTtcblxuZGVzY3JpYmUoJ0Nob2ljZUNvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gIGNvbnN0IG9uQ2hhbmdlID0gamVzdC5mbigpO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2hhbmdlLm1vY2tDbGVhcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGRlZmF1bHQgcHJvcHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvbiBjbGFzc2VzPXtjbGFzc2VzfSBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja30gZGF0YT17ZGF0YX0gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGNoZWNrZWQgc3RhdGUnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXtkYXRhfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBtb2RlPVwiY2hlY2tib3hcIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBjb25zdCBjaGVja2JveCA9IHNjcmVlbi5nZXRCeVJvbGUoJ2NoZWNrYm94Jyk7XG4gICAgICBleHBlY3QoY2hlY2tib3gpLnRvQmVDaGVja2VkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRob3V0IGZlZWRiYWNrIHdoZW4gYWxsb3dGZWVkQmFjayBpcyBmYWxzZScsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb25cbiAgICAgICAgICBhbGxvd0ZlZWRCYWNrPXtmYWxzZX1cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e2RhdGF9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9mZWVkYmFjay9pIH0pKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgZGVsZXRlIGJ1dHRvbiB3aGVuIGFsbG93RGVsZXRlIGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGFsbG93RGVsZXRlPXtmYWxzZX1cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e2RhdGF9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9kZWxldGUvaSB9KSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd1c2VyIGludGVyYWN0aW9ucycsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2hlbiBsYWJlbCBpcyBlZGl0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uIGNsYXNzZXM9e2NsYXNzZXN9IGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfSBkYXRhPXtkYXRhfSBvbkNoYW5nZT17b25DaGFuZ2V9IC8+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZWRpdGFibGVIdG1sRWxlbWVudHMgPSBzY3JlZW4uZ2V0QWxsQnlUZXN0SWQoJ2VkaXRhYmxlLWh0bWwnKTtcbiAgICAgIGNvbnN0IGVkaXRhYmxlSHRtbCA9IGVkaXRhYmxlSHRtbEVsZW1lbnRzWzBdO1xuICAgICAgYXdhaXQgdXNlci5jbGVhcihlZGl0YWJsZUh0bWwpO1xuICAgICAgYXdhaXQgdXNlci50eXBlKGVkaXRhYmxlSHRtbCwgJ25ldyBsYWJlbCcpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgICBsYWJlbDogZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ25ldyBsYWJlbCcpLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2hlbiBjaGVja2JveCBpcyB0b2dnbGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17eyAuLi5kYXRhLCBjb3JyZWN0OiBmYWxzZSB9fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBtb2RlPVwiY2hlY2tib3hcIlxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soY2hlY2tib3gpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncHJvcCB2YXJpYXRpb25zJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggcmFkaW8gbW9kZSBpbnN0ZWFkIG9mIGNoZWNrYm94JywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17ZGF0YX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgbW9kZT1cInJhZGlvXCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuICAgICAgY29uc3QgcmFkaW8gPSBzY3JlZW4uZ2V0QnlSb2xlKCdyYWRpbycpO1xuICAgICAgZXhwZWN0KHJhZGlvKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBkaXNhYmxlZCBzdGF0ZScsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb25cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e2RhdGF9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIGRpc2FibGVkPXt0cnVlfVxuICAgICAgICAgIG1vZGU9XCJjaGVja2JveFwiXG4gICAgICAgIC8+LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKTtcbiAgICAgIGV4cGVjdChjaGVja2JveCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggY3VzdG9tIGZlZWRiYWNrIHR5cGUnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXt7IC4uLmRhdGEsIGZlZWRiYWNrOiB7IHR5cGU6ICdjdXN0b20nIH0gfX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgbW9kZT1cImNoZWNrYm94XCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuICAgICAgY29uc3QgZWRpdGFibGVFbGVtZW50cyA9IHNjcmVlbi5nZXRBbGxCeVRlc3RJZCgnZWRpdGFibGUtaHRtbCcpO1xuICAgICAgZXhwZWN0KGVkaXRhYmxlRWxlbWVudHMubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGluY29ycmVjdCBhbnN3ZXInLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXt7IC4uLmRhdGEsIGNvcnJlY3Q6IGZhbHNlIH19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIG1vZGU9XCJjaGVja2JveFwiXG4gICAgICAgIC8+LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKTtcbiAgICAgIGV4cGVjdChjaGVja2JveCkubm90LnRvQmVDaGVja2VkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdlZGdlIGNhc2VzJywgKCkgPT4ge1xuICAgIGl0KCdoYW5kbGVzIGRhdGEgd2l0aCBlbXB0eSBsYWJlbCcsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb25cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e3sgLi4uZGF0YSwgbGFiZWw6ICcnIH19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBjb25zdCBlZGl0YWJsZUVsZW1lbnRzID0gc2NyZWVuLmdldEFsbEJ5VGVzdElkKCdlZGl0YWJsZS1odG1sJyk7XG4gICAgICBleHBlY3QoZWRpdGFibGVFbGVtZW50cy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIG11bHRpcGxlIGZlZWRiYWNrIHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17eyAuLi5kYXRhLCBmZWVkYmFjazogeyB0eXBlOiAnZGVmYXVsdCcgfSB9fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBsZXQgZWRpdGFibGVFbGVtZW50cyA9IHNjcmVlbi5nZXRBbGxCeVRlc3RJZCgnZWRpdGFibGUtaHRtbCcpO1xuICAgICAgZXhwZWN0KGVkaXRhYmxlRWxlbWVudHMubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG5cbiAgICAgIHJlcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17eyAuLi5kYXRhLCBmZWVkYmFjazogeyB0eXBlOiAnY3VzdG9tJyB9IH19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGVkaXRhYmxlRWxlbWVudHMgPSBzY3JlZW4uZ2V0QWxsQnlUZXN0SWQoJ2VkaXRhYmxlLWh0bWwnKTtcbiAgICAgIGV4cGVjdChlZGl0YWJsZUVsZW1lbnRzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9B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