@pie-lib/config-ui 12.1.1-next.2 → 12.1.1-next.3
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.
- package/LICENSE.md +5 -0
- package/NEXT.CHANGELOG.json +1 -0
- package/lib/alert-dialog.js +1 -2
- package/lib/alert-dialog.js.map +1 -1
- package/lib/checkbox.js +1 -11
- package/lib/checkbox.js.map +1 -1
- package/lib/choice-configuration/feedback-menu.js +1 -6
- package/lib/choice-configuration/feedback-menu.js.map +1 -1
- package/lib/choice-configuration/index.js +1 -13
- package/lib/choice-configuration/index.js.map +1 -1
- package/lib/choice-utils.js +3 -14
- package/lib/choice-utils.js.map +1 -1
- package/lib/feedback-config/feedback-selector.js +1 -15
- package/lib/feedback-config/feedback-selector.js.map +1 -1
- package/lib/feedback-config/group.js +1 -6
- package/lib/feedback-config/group.js.map +1 -1
- package/lib/feedback-config/index.js +3 -20
- package/lib/feedback-config/index.js.map +1 -1
- package/lib/form-section.js +1 -2
- package/lib/form-section.js.map +1 -1
- package/lib/help.js +1 -3
- package/lib/help.js.map +1 -1
- package/lib/index.js +1 -8
- package/lib/index.js.map +1 -1
- package/lib/input.js +1 -9
- package/lib/input.js.map +1 -1
- package/lib/inputs.js +1 -11
- package/lib/inputs.js.map +1 -1
- package/lib/langs.js +1 -6
- package/lib/langs.js.map +1 -1
- package/lib/layout/config-layout.js +1 -10
- package/lib/layout/config-layout.js.map +1 -1
- package/lib/layout/index.js +1 -2
- package/lib/layout/index.js.map +1 -1
- package/lib/layout/layout-contents.js +1 -12
- package/lib/layout/layout-contents.js.map +1 -1
- package/lib/layout/settings-box.js +1 -3
- package/lib/layout/settings-box.js.map +1 -1
- package/lib/mui-box/index.js +1 -2
- package/lib/mui-box/index.js.map +1 -1
- package/lib/number-text-field-custom.js +9 -26
- package/lib/number-text-field-custom.js.map +1 -1
- package/lib/number-text-field.js +8 -16
- package/lib/number-text-field.js.map +1 -1
- package/lib/radio-with-label.js +1 -2
- package/lib/radio-with-label.js.map +1 -1
- package/lib/settings/display-size.js +1 -11
- package/lib/settings/display-size.js.map +1 -1
- package/lib/settings/index.js +1 -13
- package/lib/settings/index.js.map +1 -1
- package/lib/settings/panel.js +6 -22
- package/lib/settings/panel.js.map +1 -1
- package/lib/settings/settings-radio-label.js +1 -2
- package/lib/settings/settings-radio-label.js.map +1 -1
- package/lib/settings/toggle.js +1 -2
- package/lib/settings/toggle.js.map +1 -1
- package/lib/tabs/index.js +1 -5
- package/lib/tabs/index.js.map +1 -1
- package/lib/tags-input/index.js +3 -11
- package/lib/tags-input/index.js.map +1 -1
- package/lib/two-choice.js +1 -14
- package/lib/two-choice.js.map +1 -1
- package/lib/with-stateful-model.js +1 -3
- package/lib/with-stateful-model.js.map +1 -1
- package/package.json +6 -6
- package/src/__tests__/alert-dialog.test.jsx +13 -113
- package/src/__tests__/checkbox.test.jsx +17 -114
- package/src/__tests__/form-section.test.jsx +2 -8
- package/src/__tests__/help.test.jsx +18 -18
- package/src/__tests__/input.test.jsx +22 -58
- package/src/__tests__/langs.test.jsx +15 -96
- package/src/__tests__/number-text-field-custom.test.jsx +34 -217
- package/src/__tests__/number-text-field.test.jsx +21 -99
- package/src/__tests__/radio-with-label.test.jsx +19 -123
- package/src/__tests__/settings-panel.test.js +1 -1
- package/src/__tests__/settings.test.jsx +17 -80
- package/src/__tests__/tabs.test.jsx +2 -7
- package/src/__tests__/with-stateful-model.test.jsx +3 -9
- package/src/alert-dialog.jsx +19 -2
- package/src/checkbox.jsx +1 -9
- package/src/choice-configuration/__tests__/feedback-menu.test.jsx +6 -18
- package/src/choice-configuration/feedback-menu.jsx +7 -1
- package/src/choice-utils.js +1 -1
- package/src/feedback-config/__tests__/feedback-config.test.jsx +2 -2
- package/src/feedback-config/index.jsx +2 -1
- package/src/index.js +2 -2
- package/src/inputs.jsx +3 -16
- package/src/langs.jsx +9 -4
- package/src/layout/config-layout.jsx +2 -3
- package/src/number-text-field-custom.jsx +5 -3
- package/src/number-text-field.jsx +3 -2
- package/src/radio-with-label.jsx +1 -5
- package/src/settings/display-size.jsx +1 -1
- package/src/settings/index.js +1 -1
- package/src/settings/panel.jsx +4 -5
- package/src/settings/settings-radio-label.jsx +1 -5
- package/src/settings/toggle.jsx +1 -5
- package/src/tags-input/__tests__/index.test.jsx +1 -1
- package/src/tags-input/index.jsx +1 -1
- package/lib/__tests__/alert-dialog.test.js +0 -267
- package/lib/__tests__/checkbox.test.js +0 -227
- package/lib/__tests__/choice-utils.test.js +0 -16
- package/lib/__tests__/form-section.test.js +0 -252
- package/lib/__tests__/help.test.js +0 -278
- package/lib/__tests__/input.test.js +0 -268
- package/lib/__tests__/langs.test.js +0 -551
- package/lib/__tests__/number-text-field-custom.test.js +0 -364
- package/lib/__tests__/number-text-field.test.js +0 -421
- package/lib/__tests__/radio-with-label.test.js +0 -233
- package/lib/__tests__/settings-panel.test.js +0 -194
- package/lib/__tests__/settings.test.js +0 -653
- package/lib/__tests__/tabs.test.js +0 -211
- package/lib/__tests__/two-choice.test.js +0 -124
- package/lib/__tests__/with-stateful-model.test.js +0 -232
- package/lib/choice-configuration/__tests__/feedback-menu.test.js +0 -287
- package/lib/choice-configuration/__tests__/index.test.js +0 -263
- package/lib/feedback-config/__tests__/feedback-config.test.js +0 -211
- package/lib/feedback-config/__tests__/feedback-selector.test.js +0 -177
- package/lib/layout/__tests__/config.layout.test.js +0 -70
- package/lib/layout/__tests__/layout-content.test.js +0 -6
- package/lib/tags-input/__tests__/index.test.js +0 -183
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("core-js/modules/es.symbol.js");
|
|
4
|
-
require("core-js/modules/es.array.filter.js");
|
|
5
|
-
require("core-js/modules/es.array.for-each.js");
|
|
6
|
-
require("core-js/modules/es.object.define-properties.js");
|
|
7
|
-
require("core-js/modules/es.object.define-property.js");
|
|
8
|
-
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
9
|
-
require("core-js/modules/es.object.get-own-property-descriptors.js");
|
|
10
|
-
require("core-js/modules/es.object.keys.js");
|
|
11
|
-
require("core-js/modules/es.object.to-string.js");
|
|
12
|
-
require("core-js/modules/web.dom-collections.for-each.js");
|
|
13
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
14
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
-
var _react = _interopRequireDefault(require("react"));
|
|
18
|
-
var _react2 = require("@testing-library/react");
|
|
19
|
-
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
20
|
-
var _index = require("../index");
|
|
21
|
-
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; }
|
|
22
|
-
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; }
|
|
23
|
-
jest.mock('@pie-lib/editable-html-tip-tap', function () {
|
|
24
|
-
return {
|
|
25
|
-
__esModule: true,
|
|
26
|
-
"default": function _default(_ref) {
|
|
27
|
-
var markup = _ref.markup,
|
|
28
|
-
_onChange = _ref.onChange,
|
|
29
|
-
disabled = _ref.disabled;
|
|
30
|
-
return /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
31
|
-
"data-testid": "editable-html",
|
|
32
|
-
defaultValue: markup || '',
|
|
33
|
-
onChange: function onChange(e) {
|
|
34
|
-
return _onChange(e.target.value);
|
|
35
|
-
},
|
|
36
|
-
disabled: disabled
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
});
|
|
41
|
-
var defaultFeedback = {
|
|
42
|
-
correct: 'Correct',
|
|
43
|
-
incorrect: 'Incorrect'
|
|
44
|
-
};
|
|
45
|
-
var data = {
|
|
46
|
-
correct: true,
|
|
47
|
-
value: 'foo',
|
|
48
|
-
label: 'Foo',
|
|
49
|
-
feedback: {
|
|
50
|
-
type: 'custom'
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
var classes = {
|
|
54
|
-
choiceConfiguration: 'choiceConfiguration'
|
|
55
|
-
};
|
|
56
|
-
describe('ChoiceConfiguration', function () {
|
|
57
|
-
var onChange = jest.fn();
|
|
58
|
-
beforeEach(function () {
|
|
59
|
-
onChange.mockClear();
|
|
60
|
-
});
|
|
61
|
-
describe('rendering', function () {
|
|
62
|
-
it('renders correctly with default props', function () {
|
|
63
|
-
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
64
|
-
classes: classes,
|
|
65
|
-
defaultFeedback: defaultFeedback,
|
|
66
|
-
data: data,
|
|
67
|
-
onChange: onChange
|
|
68
|
-
})),
|
|
69
|
-
container = _render.container;
|
|
70
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
71
|
-
});
|
|
72
|
-
it('renders with checked state', function () {
|
|
73
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
74
|
-
classes: classes,
|
|
75
|
-
defaultFeedback: defaultFeedback,
|
|
76
|
-
data: data,
|
|
77
|
-
onChange: onChange,
|
|
78
|
-
mode: "checkbox"
|
|
79
|
-
}));
|
|
80
|
-
var checkbox = _react2.screen.getByRole('checkbox');
|
|
81
|
-
expect(checkbox).toBeChecked();
|
|
82
|
-
});
|
|
83
|
-
it('renders without feedback when allowFeedBack is false', function () {
|
|
84
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
85
|
-
allowFeedBack: false,
|
|
86
|
-
classes: classes,
|
|
87
|
-
defaultFeedback: defaultFeedback,
|
|
88
|
-
data: data,
|
|
89
|
-
onChange: onChange
|
|
90
|
-
}));
|
|
91
|
-
expect(_react2.screen.queryByRole('button', {
|
|
92
|
-
name: /feedback/i
|
|
93
|
-
})).not.toBeInTheDocument();
|
|
94
|
-
});
|
|
95
|
-
it('renders without delete button when allowDelete is false', function () {
|
|
96
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
97
|
-
allowDelete: false,
|
|
98
|
-
classes: classes,
|
|
99
|
-
defaultFeedback: defaultFeedback,
|
|
100
|
-
data: data,
|
|
101
|
-
onChange: onChange
|
|
102
|
-
}));
|
|
103
|
-
expect(_react2.screen.queryByRole('button', {
|
|
104
|
-
name: /delete/i
|
|
105
|
-
})).not.toBeInTheDocument();
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
describe('user interactions', function () {
|
|
109
|
-
it('calls onChange when label is edited', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
110
|
-
var user, editableHtmlElements, editableHtml;
|
|
111
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
112
|
-
while (1) switch (_context.prev = _context.next) {
|
|
113
|
-
case 0:
|
|
114
|
-
user = _userEvent["default"].setup();
|
|
115
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
116
|
-
classes: classes,
|
|
117
|
-
defaultFeedback: defaultFeedback,
|
|
118
|
-
data: data,
|
|
119
|
-
onChange: onChange
|
|
120
|
-
}));
|
|
121
|
-
editableHtmlElements = _react2.screen.getAllByTestId('editable-html');
|
|
122
|
-
editableHtml = editableHtmlElements[0];
|
|
123
|
-
_context.next = 1;
|
|
124
|
-
return user.clear(editableHtml);
|
|
125
|
-
case 1:
|
|
126
|
-
_context.next = 2;
|
|
127
|
-
return user.type(editableHtml, 'new label');
|
|
128
|
-
case 2:
|
|
129
|
-
expect(onChange).toHaveBeenCalled();
|
|
130
|
-
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
131
|
-
label: expect.stringContaining('new label')
|
|
132
|
-
}));
|
|
133
|
-
case 3:
|
|
134
|
-
case "end":
|
|
135
|
-
return _context.stop();
|
|
136
|
-
}
|
|
137
|
-
}, _callee);
|
|
138
|
-
})));
|
|
139
|
-
it('calls onChange when checkbox is toggled', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
140
|
-
var user, checkbox;
|
|
141
|
-
return _regenerator["default"].wrap(function (_context2) {
|
|
142
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
143
|
-
case 0:
|
|
144
|
-
user = _userEvent["default"].setup();
|
|
145
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
146
|
-
classes: classes,
|
|
147
|
-
defaultFeedback: defaultFeedback,
|
|
148
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
149
|
-
correct: false
|
|
150
|
-
}),
|
|
151
|
-
onChange: onChange,
|
|
152
|
-
mode: "checkbox"
|
|
153
|
-
}));
|
|
154
|
-
checkbox = _react2.screen.getByRole('checkbox');
|
|
155
|
-
_context2.next = 1;
|
|
156
|
-
return user.click(checkbox);
|
|
157
|
-
case 1:
|
|
158
|
-
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
159
|
-
correct: true
|
|
160
|
-
}));
|
|
161
|
-
case 2:
|
|
162
|
-
case "end":
|
|
163
|
-
return _context2.stop();
|
|
164
|
-
}
|
|
165
|
-
}, _callee2);
|
|
166
|
-
})));
|
|
167
|
-
});
|
|
168
|
-
describe('prop variations', function () {
|
|
169
|
-
it('renders with radio mode instead of checkbox', function () {
|
|
170
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
171
|
-
classes: classes,
|
|
172
|
-
defaultFeedback: defaultFeedback,
|
|
173
|
-
data: data,
|
|
174
|
-
onChange: onChange,
|
|
175
|
-
mode: "radio"
|
|
176
|
-
}));
|
|
177
|
-
var radio = _react2.screen.getByRole('radio');
|
|
178
|
-
expect(radio).toBeInTheDocument();
|
|
179
|
-
});
|
|
180
|
-
it('renders with disabled state', function () {
|
|
181
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
182
|
-
classes: classes,
|
|
183
|
-
defaultFeedback: defaultFeedback,
|
|
184
|
-
data: data,
|
|
185
|
-
onChange: onChange,
|
|
186
|
-
disabled: true,
|
|
187
|
-
mode: "checkbox"
|
|
188
|
-
}));
|
|
189
|
-
var checkbox = _react2.screen.getByRole('checkbox');
|
|
190
|
-
expect(checkbox).toBeInTheDocument();
|
|
191
|
-
});
|
|
192
|
-
it('renders with custom feedback type', function () {
|
|
193
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
194
|
-
classes: classes,
|
|
195
|
-
defaultFeedback: defaultFeedback,
|
|
196
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
197
|
-
feedback: {
|
|
198
|
-
type: 'custom'
|
|
199
|
-
}
|
|
200
|
-
}),
|
|
201
|
-
onChange: onChange,
|
|
202
|
-
mode: "checkbox"
|
|
203
|
-
}));
|
|
204
|
-
var editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
205
|
-
expect(editableElements.length).toBeGreaterThan(0);
|
|
206
|
-
});
|
|
207
|
-
it('renders with incorrect answer', function () {
|
|
208
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
209
|
-
classes: classes,
|
|
210
|
-
defaultFeedback: defaultFeedback,
|
|
211
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
212
|
-
correct: false
|
|
213
|
-
}),
|
|
214
|
-
onChange: onChange,
|
|
215
|
-
mode: "checkbox"
|
|
216
|
-
}));
|
|
217
|
-
var checkbox = _react2.screen.getByRole('checkbox');
|
|
218
|
-
expect(checkbox).not.toBeChecked();
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
describe('edge cases', function () {
|
|
222
|
-
it('handles data with empty label', function () {
|
|
223
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
224
|
-
classes: classes,
|
|
225
|
-
defaultFeedback: defaultFeedback,
|
|
226
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
227
|
-
label: ''
|
|
228
|
-
}),
|
|
229
|
-
onChange: onChange
|
|
230
|
-
}));
|
|
231
|
-
var editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
232
|
-
expect(editableElements.length).toBeGreaterThan(0);
|
|
233
|
-
});
|
|
234
|
-
it('handles multiple feedback types', function () {
|
|
235
|
-
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
236
|
-
classes: classes,
|
|
237
|
-
defaultFeedback: defaultFeedback,
|
|
238
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
239
|
-
feedback: {
|
|
240
|
-
type: 'default'
|
|
241
|
-
}
|
|
242
|
-
}),
|
|
243
|
-
onChange: onChange
|
|
244
|
-
})),
|
|
245
|
-
rerender = _render2.rerender;
|
|
246
|
-
var editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
247
|
-
expect(editableElements.length).toBeGreaterThan(0);
|
|
248
|
-
rerender(/*#__PURE__*/_react["default"].createElement(_index.ChoiceConfiguration, {
|
|
249
|
-
classes: classes,
|
|
250
|
-
defaultFeedback: defaultFeedback,
|
|
251
|
-
data: _objectSpread(_objectSpread({}, data), {}, {
|
|
252
|
-
feedback: {
|
|
253
|
-
type: 'custom'
|
|
254
|
-
}
|
|
255
|
-
}),
|
|
256
|
-
onChange: onChange
|
|
257
|
-
}));
|
|
258
|
-
editableElements = _react2.screen.getAllByTestId('editable-html');
|
|
259
|
-
expect(editableElements.length).toBeGreaterThan(0);
|
|
260
|
-
});
|
|
261
|
-
});
|
|
262
|
-
});
|
|
263
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2luZGV4Iiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJqZXN0IiwibW9jayIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX3JlZiIsIm1hcmt1cCIsIm9uQ2hhbmdlIiwiZGlzYWJsZWQiLCJjcmVhdGVFbGVtZW50IiwiZGVmYXVsdFZhbHVlIiwidGFyZ2V0IiwidmFsdWUiLCJkZWZhdWx0RmVlZGJhY2siLCJjb3JyZWN0IiwiaW5jb3JyZWN0IiwiZGF0YSIsImxhYmVsIiwiZmVlZGJhY2siLCJ0eXBlIiwiY2xhc3NlcyIsImNob2ljZUNvbmZpZ3VyYXRpb24iLCJkZXNjcmliZSIsImZuIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsIkNob2ljZUNvbmZpZ3VyYXRpb24iLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJtb2RlIiwiY2hlY2tib3giLCJzY3JlZW4iLCJnZXRCeVJvbGUiLCJ0b0JlQ2hlY2tlZCIsImFsbG93RmVlZEJhY2siLCJxdWVyeUJ5Um9sZSIsIm5hbWUiLCJub3QiLCJhbGxvd0RlbGV0ZSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwidXNlciIsImVkaXRhYmxlSHRtbEVsZW1lbnRzIiwiZWRpdGFibGVIdG1sIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImdldEFsbEJ5VGVzdElkIiwiY2xlYXIiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJvYmplY3RDb250YWluaW5nIiwic3RyaW5nQ29udGFpbmluZyIsInN0b3AiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsImNsaWNrIiwicmFkaW8iLCJlZGl0YWJsZUVsZW1lbnRzIiwidG9CZUdyZWF0ZXJUaGFuIiwiX3JlbmRlcjIiLCJyZXJlbmRlciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaG9pY2UtY29uZmlndXJhdGlvbi9fX3Rlc3RzX18vaW5kZXgudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgdXNlckV2ZW50IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvdXNlci1ldmVudCc7XG5pbXBvcnQgeyBDaG9pY2VDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2VkaXRhYmxlLWh0bWwtdGlwLXRhcCcsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6ICh7IG1hcmt1cCwgb25DaGFuZ2UsIGRpc2FibGVkIH0pID0+IChcbiAgICA8dGV4dGFyZWFcbiAgICAgIGRhdGEtdGVzdGlkPVwiZWRpdGFibGUtaHRtbFwiXG4gICAgICBkZWZhdWx0VmFsdWU9e21hcmt1cCB8fCAnJ31cbiAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgIC8+XG4gICksXG59KSk7XG5cbmNvbnN0IGRlZmF1bHRGZWVkYmFjayA9IHtcbiAgY29ycmVjdDogJ0NvcnJlY3QnLFxuICBpbmNvcnJlY3Q6ICdJbmNvcnJlY3QnLFxufTtcblxuY29uc3QgZGF0YSA9IHtcbiAgY29ycmVjdDogdHJ1ZSxcbiAgdmFsdWU6ICdmb28nLFxuICBsYWJlbDogJ0ZvbycsXG4gIGZlZWRiYWNrOiB7XG4gICAgdHlwZTogJ2N1c3RvbScsXG4gIH0sXG59O1xuXG5jb25zdCBjbGFzc2VzID0ge1xuICBjaG9pY2VDb25maWd1cmF0aW9uOiAnY2hvaWNlQ29uZmlndXJhdGlvbicsXG59O1xuXG5kZXNjcmliZSgnQ2hvaWNlQ29uZmlndXJhdGlvbicsICgpID0+IHtcbiAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25DaGFuZ2UubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdpdGggZGVmYXVsdCBwcm9wcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uIGNsYXNzZXM9e2NsYXNzZXN9IGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfSBkYXRhPXtkYXRhfSBvbkNoYW5nZT17b25DaGFuZ2V9IC8+LFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggY2hlY2tlZCBzdGF0ZScsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb25cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e2RhdGF9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIG1vZGU9XCJjaGVja2JveFwiXG4gICAgICAgIC8+LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKTtcbiAgICAgIGV4cGVjdChjaGVja2JveCkudG9CZUNoZWNrZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgZmVlZGJhY2sgd2hlbiBhbGxvd0ZlZWRCYWNrIGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGFsbG93RmVlZEJhY2s9e2ZhbHNlfVxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17ZGF0YX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIC8+LFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL2ZlZWRiYWNrL2kgfSkpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBkZWxldGUgYnV0dG9uIHdoZW4gYWxsb3dEZWxldGUgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgYWxsb3dEZWxldGU9e2ZhbHNlfVxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17ZGF0YX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIC8+LFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVJvbGUoJ2J1dHRvbicsIHsgbmFtZTogL2RlbGV0ZS9pIH0pKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3VzZXIgaW50ZXJhY3Rpb25zJywgKCkgPT4ge1xuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aGVuIGxhYmVsIGlzIGVkaXRlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb24gY2xhc3Nlcz17Y2xhc3Nlc30gZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9IGRhdGE9e2RhdGF9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBlZGl0YWJsZUh0bWxFbGVtZW50cyA9IHNjcmVlbi5nZXRBbGxCeVRlc3RJZCgnZWRpdGFibGUtaHRtbCcpO1xuICAgICAgY29uc3QgZWRpdGFibGVIdG1sID0gZWRpdGFibGVIdG1sRWxlbWVudHNbMF07XG4gICAgICBhd2FpdCB1c2VyLmNsZWFyKGVkaXRhYmxlSHRtbCk7XG4gICAgICBhd2FpdCB1c2VyLnR5cGUoZWRpdGFibGVIdG1sLCAnbmV3IGxhYmVsJyk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgIGxhYmVsOiBleHBlY3Quc3RyaW5nQ29udGFpbmluZygnbmV3IGxhYmVsJyksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aGVuIGNoZWNrYm94IGlzIHRvZ2dsZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXt7IC4uLmRhdGEsIGNvcnJlY3Q6IGZhbHNlIH19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIG1vZGU9XCJjaGVja2JveFwiXG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgY2hlY2tib3ggPSBzY3JlZW4uZ2V0QnlSb2xlKCdjaGVja2JveCcpO1xuICAgICAgYXdhaXQgdXNlci5jbGljayhjaGVja2JveCk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwcm9wIHZhcmlhdGlvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aCByYWRpbyBtb2RlIGluc3RlYWQgb2YgY2hlY2tib3gnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXtkYXRhfVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBtb2RlPVwicmFkaW9cIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBjb25zdCByYWRpbyA9IHNjcmVlbi5nZXRCeVJvbGUoJ3JhZGlvJyk7XG4gICAgICBleHBlY3QocmFkaW8pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGRpc2FibGVkIHN0YXRlJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17ZGF0YX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgZGlzYWJsZWQ9e3RydWV9XG4gICAgICAgICAgbW9kZT1cImNoZWNrYm94XCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuICAgICAgY29uc3QgY2hlY2tib3ggPSBzY3JlZW4uZ2V0QnlSb2xlKCdjaGVja2JveCcpO1xuICAgICAgZXhwZWN0KGNoZWNrYm94KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBjdXN0b20gZmVlZGJhY2sgdHlwZScsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb25cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e3sgLi4uZGF0YSwgZmVlZGJhY2s6IHsgdHlwZTogJ2N1c3RvbScgfSB9fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBtb2RlPVwiY2hlY2tib3hcIlxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBjb25zdCBlZGl0YWJsZUVsZW1lbnRzID0gc2NyZWVuLmdldEFsbEJ5VGVzdElkKCdlZGl0YWJsZS1odG1sJyk7XG4gICAgICBleHBlY3QoZWRpdGFibGVFbGVtZW50cy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggaW5jb3JyZWN0IGFuc3dlcicsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENob2ljZUNvbmZpZ3VyYXRpb25cbiAgICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICAgIGRlZmF1bHRGZWVkYmFjaz17ZGVmYXVsdEZlZWRiYWNrfVxuICAgICAgICAgIGRhdGE9e3sgLi4uZGF0YSwgY29ycmVjdDogZmFsc2UgfX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgbW9kZT1cImNoZWNrYm94XCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuICAgICAgY29uc3QgY2hlY2tib3ggPSBzY3JlZW4uZ2V0QnlSb2xlKCdjaGVja2JveCcpO1xuICAgICAgZXhwZWN0KGNoZWNrYm94KS5ub3QudG9CZUNoZWNrZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2VkZ2UgY2FzZXMnLCAoKSA9PiB7XG4gICAgaXQoJ2hhbmRsZXMgZGF0YSB3aXRoIGVtcHR5IGxhYmVsJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgICAgZGVmYXVsdEZlZWRiYWNrPXtkZWZhdWx0RmVlZGJhY2t9XG4gICAgICAgICAgZGF0YT17eyAuLi5kYXRhLCBsYWJlbDogJycgfX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIC8+LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVkaXRhYmxlRWxlbWVudHMgPSBzY3JlZW4uZ2V0QWxsQnlUZXN0SWQoJ2VkaXRhYmxlLWh0bWwnKTtcbiAgICAgIGV4cGVjdChlZGl0YWJsZUVsZW1lbnRzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgbXVsdGlwbGUgZmVlZGJhY2sgdHlwZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXt7IC4uLmRhdGEsIGZlZWRiYWNrOiB7IHR5cGU6ICdkZWZhdWx0JyB9IH19XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGxldCBlZGl0YWJsZUVsZW1lbnRzID0gc2NyZWVuLmdldEFsbEJ5VGVzdElkKCdlZGl0YWJsZS1odG1sJyk7XG4gICAgICBleHBlY3QoZWRpdGFibGVFbGVtZW50cy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcblxuICAgICAgcmVyZW5kZXIoXG4gICAgICAgIDxDaG9pY2VDb25maWd1cmF0aW9uXG4gICAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e2RlZmF1bHRGZWVkYmFja31cbiAgICAgICAgICBkYXRhPXt7IC4uLmRhdGEsIGZlZWRiYWNrOiB7IHR5cGU6ICdjdXN0b20nIH0gfX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgZWRpdGFibGVFbGVtZW50cyA9IHNjcmVlbi5nZXRBbGxCeVRlc3RJZCgnZWRpdGFibGUtaHRtbCcpO1xuICAgICAgZXhwZWN0KGVkaXRhYmxlRWxlbWVudHMubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdB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
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("core-js/modules/es.symbol.js");
|
|
4
|
-
require("core-js/modules/es.array.filter.js");
|
|
5
|
-
require("core-js/modules/es.array.for-each.js");
|
|
6
|
-
require("core-js/modules/es.object.define-properties.js");
|
|
7
|
-
require("core-js/modules/es.object.define-property.js");
|
|
8
|
-
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
9
|
-
require("core-js/modules/es.object.get-own-property-descriptors.js");
|
|
10
|
-
require("core-js/modules/es.object.keys.js");
|
|
11
|
-
require("core-js/modules/es.object.to-string.js");
|
|
12
|
-
require("core-js/modules/web.dom-collections.for-each.js");
|
|
13
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
14
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
16
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
var _react = _interopRequireDefault(require("react"));
|
|
18
|
-
var _react2 = require("@testing-library/react");
|
|
19
|
-
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
20
|
-
var _index = require("../index");
|
|
21
|
-
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; }
|
|
22
|
-
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; }
|
|
23
|
-
// Mock FeedbackSelector to simplify testing
|
|
24
|
-
jest.mock('../feedback-selector', function () {
|
|
25
|
-
return function FeedbackSelector(_ref) {
|
|
26
|
-
var label = _ref.label,
|
|
27
|
-
feedback = _ref.feedback,
|
|
28
|
-
_onChange = _ref.onChange;
|
|
29
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
30
|
-
"data-testid": "feedback-selector"
|
|
31
|
-
}, /*#__PURE__*/_react["default"].createElement("label", null, label), /*#__PURE__*/_react["default"].createElement("select", {
|
|
32
|
-
"aria-label": label,
|
|
33
|
-
value: feedback.type,
|
|
34
|
-
onChange: function onChange(e) {
|
|
35
|
-
return _onChange(_objectSpread(_objectSpread({}, feedback), {}, {
|
|
36
|
-
type: e.target.value
|
|
37
|
-
}));
|
|
38
|
-
}
|
|
39
|
-
}, /*#__PURE__*/_react["default"].createElement("option", {
|
|
40
|
-
value: "default"
|
|
41
|
-
}, "Default"), /*#__PURE__*/_react["default"].createElement("option", {
|
|
42
|
-
value: "custom"
|
|
43
|
-
}, "Custom"), /*#__PURE__*/_react["default"].createElement("option", {
|
|
44
|
-
value: "none"
|
|
45
|
-
}, "None")));
|
|
46
|
-
};
|
|
47
|
-
});
|
|
48
|
-
describe('FeedbackConfig', function () {
|
|
49
|
-
var onChange = jest.fn();
|
|
50
|
-
beforeEach(function () {
|
|
51
|
-
onChange.mockClear();
|
|
52
|
-
});
|
|
53
|
-
describe('rendering', function () {
|
|
54
|
-
it('renders with default feedback types', function () {
|
|
55
|
-
var feedback = (0, _index.buildDefaults)();
|
|
56
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.FeedbackConfig, {
|
|
57
|
-
feedback: feedback,
|
|
58
|
-
onChange: onChange
|
|
59
|
-
}));
|
|
60
|
-
expect(_react2.screen.getByText('Feedback')).toBeInTheDocument();
|
|
61
|
-
expect(_react2.screen.getByText('If correct, show')).toBeInTheDocument();
|
|
62
|
-
expect(_react2.screen.getByText('If partially correct, show')).toBeInTheDocument();
|
|
63
|
-
expect(_react2.screen.getByText('If incorrect, show')).toBeInTheDocument();
|
|
64
|
-
});
|
|
65
|
-
it('renders all three feedback selectors by default', function () {
|
|
66
|
-
var feedback = (0, _index.buildDefaults)();
|
|
67
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.FeedbackConfig, {
|
|
68
|
-
feedback: feedback,
|
|
69
|
-
onChange: onChange
|
|
70
|
-
}));
|
|
71
|
-
var selectors = _react2.screen.getAllByTestId('feedback-selector');
|
|
72
|
-
expect(selectors).toHaveLength(3);
|
|
73
|
-
});
|
|
74
|
-
it('does not render partial feedback selector when allowPartial is false', function () {
|
|
75
|
-
var feedback = (0, _index.buildDefaults)();
|
|
76
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.FeedbackConfig, {
|
|
77
|
-
allowPartial: false,
|
|
78
|
-
feedback: feedback,
|
|
79
|
-
onChange: onChange
|
|
80
|
-
}));
|
|
81
|
-
expect(_react2.screen.getByText('If correct, show')).toBeInTheDocument();
|
|
82
|
-
expect(_react2.screen.queryByText('If partially correct, show')).not.toBeInTheDocument();
|
|
83
|
-
expect(_react2.screen.getByText('If incorrect, show')).toBeInTheDocument();
|
|
84
|
-
var selectors = _react2.screen.getAllByTestId('feedback-selector');
|
|
85
|
-
expect(selectors).toHaveLength(2);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
describe('user interactions', function () {
|
|
89
|
-
it('calls onChange when correct feedback type changes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
90
|
-
var user, feedback, correctSelect;
|
|
91
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
92
|
-
while (1) switch (_context.prev = _context.next) {
|
|
93
|
-
case 0:
|
|
94
|
-
user = _userEvent["default"].setup();
|
|
95
|
-
feedback = (0, _index.buildDefaults)();
|
|
96
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.FeedbackConfig, {
|
|
97
|
-
feedback: feedback,
|
|
98
|
-
onChange: onChange
|
|
99
|
-
}));
|
|
100
|
-
correctSelect = _react2.screen.getByLabelText('If correct, show');
|
|
101
|
-
_context.next = 1;
|
|
102
|
-
return user.selectOptions(correctSelect, 'custom');
|
|
103
|
-
case 1:
|
|
104
|
-
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
105
|
-
correct: expect.objectContaining({
|
|
106
|
-
type: 'custom'
|
|
107
|
-
})
|
|
108
|
-
}));
|
|
109
|
-
case 2:
|
|
110
|
-
case "end":
|
|
111
|
-
return _context.stop();
|
|
112
|
-
}
|
|
113
|
-
}, _callee);
|
|
114
|
-
})));
|
|
115
|
-
it('calls onChange when incorrect feedback type changes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
116
|
-
var user, feedback, incorrectSelect;
|
|
117
|
-
return _regenerator["default"].wrap(function (_context2) {
|
|
118
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
119
|
-
case 0:
|
|
120
|
-
user = _userEvent["default"].setup();
|
|
121
|
-
feedback = (0, _index.buildDefaults)();
|
|
122
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.FeedbackConfig, {
|
|
123
|
-
feedback: feedback,
|
|
124
|
-
onChange: onChange
|
|
125
|
-
}));
|
|
126
|
-
incorrectSelect = _react2.screen.getByLabelText('If incorrect, show');
|
|
127
|
-
_context2.next = 1;
|
|
128
|
-
return user.selectOptions(incorrectSelect, 'none');
|
|
129
|
-
case 1:
|
|
130
|
-
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
131
|
-
incorrect: expect.objectContaining({
|
|
132
|
-
type: 'none'
|
|
133
|
-
})
|
|
134
|
-
}));
|
|
135
|
-
case 2:
|
|
136
|
-
case "end":
|
|
137
|
-
return _context2.stop();
|
|
138
|
-
}
|
|
139
|
-
}, _callee2);
|
|
140
|
-
})));
|
|
141
|
-
it('calls onChange when partial feedback type changes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
142
|
-
var user, feedback, partialSelect;
|
|
143
|
-
return _regenerator["default"].wrap(function (_context3) {
|
|
144
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
145
|
-
case 0:
|
|
146
|
-
user = _userEvent["default"].setup();
|
|
147
|
-
feedback = (0, _index.buildDefaults)();
|
|
148
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.FeedbackConfig, {
|
|
149
|
-
feedback: feedback,
|
|
150
|
-
onChange: onChange
|
|
151
|
-
}));
|
|
152
|
-
partialSelect = _react2.screen.getByLabelText('If partially correct, show');
|
|
153
|
-
_context3.next = 1;
|
|
154
|
-
return user.selectOptions(partialSelect, 'custom');
|
|
155
|
-
case 1:
|
|
156
|
-
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
|
|
157
|
-
partial: expect.objectContaining({
|
|
158
|
-
type: 'custom'
|
|
159
|
-
})
|
|
160
|
-
}));
|
|
161
|
-
case 2:
|
|
162
|
-
case "end":
|
|
163
|
-
return _context3.stop();
|
|
164
|
-
}
|
|
165
|
-
}, _callee3);
|
|
166
|
-
})));
|
|
167
|
-
});
|
|
168
|
-
describe('buildDefaults helper', function () {
|
|
169
|
-
it('returns default feedback configuration', function () {
|
|
170
|
-
var defaults = (0, _index.buildDefaults)();
|
|
171
|
-
expect(defaults).toEqual({
|
|
172
|
-
correct: {
|
|
173
|
-
type: 'default',
|
|
174
|
-
"default": 'Correct'
|
|
175
|
-
},
|
|
176
|
-
incorrect: {
|
|
177
|
-
type: 'default',
|
|
178
|
-
"default": 'Incorrect'
|
|
179
|
-
},
|
|
180
|
-
partial: {
|
|
181
|
-
type: 'default',
|
|
182
|
-
"default": 'Nearly'
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
it('merges custom values with defaults', function () {
|
|
187
|
-
var defaults = (0, _index.buildDefaults)({
|
|
188
|
-
correct: {
|
|
189
|
-
type: 'custom',
|
|
190
|
-
custom: 'Great job!'
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
expect(defaults).toEqual({
|
|
194
|
-
correct: {
|
|
195
|
-
type: 'custom',
|
|
196
|
-
"default": 'Correct',
|
|
197
|
-
custom: 'Great job!'
|
|
198
|
-
},
|
|
199
|
-
incorrect: {
|
|
200
|
-
type: 'default',
|
|
201
|
-
"default": 'Incorrect'
|
|
202
|
-
},
|
|
203
|
-
partial: {
|
|
204
|
-
type: 'default',
|
|
205
|
-
"default": 'Nearly'
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2luZGV4Iiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJqZXN0IiwibW9jayIsIkZlZWRiYWNrU2VsZWN0b3IiLCJfcmVmIiwibGFiZWwiLCJmZWVkYmFjayIsIm9uQ2hhbmdlIiwiY3JlYXRlRWxlbWVudCIsInZhbHVlIiwidHlwZSIsInRhcmdldCIsImRlc2NyaWJlIiwiZm4iLCJiZWZvcmVFYWNoIiwibW9ja0NsZWFyIiwiaXQiLCJidWlsZERlZmF1bHRzIiwicmVuZGVyIiwiRmVlZGJhY2tDb25maWciLCJleHBlY3QiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInNlbGVjdG9ycyIsImdldEFsbEJ5VGVzdElkIiwidG9IYXZlTGVuZ3RoIiwiYWxsb3dQYXJ0aWFsIiwicXVlcnlCeVRleHQiLCJub3QiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInVzZXIiLCJjb3JyZWN0U2VsZWN0Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImdldEJ5TGFiZWxUZXh0Iiwic2VsZWN0T3B0aW9ucyIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwib2JqZWN0Q29udGFpbmluZyIsImNvcnJlY3QiLCJzdG9wIiwiX2NhbGxlZTIiLCJpbmNvcnJlY3RTZWxlY3QiLCJfY29udGV4dDIiLCJpbmNvcnJlY3QiLCJfY2FsbGVlMyIsInBhcnRpYWxTZWxlY3QiLCJfY29udGV4dDMiLCJwYXJ0aWFsIiwiZGVmYXVsdHMiLCJ0b0VxdWFsIiwiY3VzdG9tIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZlZWRiYWNrLWNvbmZpZy9fX3Rlc3RzX18vZmVlZGJhY2stY29uZmlnLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiwgd2l0aGluIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgdXNlckV2ZW50IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvdXNlci1ldmVudCc7XG5pbXBvcnQgeyBGZWVkYmFja0NvbmZpZywgYnVpbGREZWZhdWx0cyB9IGZyb20gJy4uL2luZGV4JztcblxuLy8gTW9jayBGZWVkYmFja1NlbGVjdG9yIHRvIHNpbXBsaWZ5IHRlc3Rpbmdcbmplc3QubW9jaygnLi4vZmVlZGJhY2stc2VsZWN0b3InLCAoKSA9PiB7XG4gIHJldHVybiBmdW5jdGlvbiBGZWVkYmFja1NlbGVjdG9yKHsgbGFiZWwsIGZlZWRiYWNrLCBvbkNoYW5nZSB9KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgZGF0YS10ZXN0aWQ9XCJmZWVkYmFjay1zZWxlY3RvclwiPlxuICAgICAgICA8bGFiZWw+e2xhYmVsfTwvbGFiZWw+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBhcmlhLWxhYmVsPXtsYWJlbH1cbiAgICAgICAgICB2YWx1ZT17ZmVlZGJhY2sudHlwZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IG9uQ2hhbmdlKHsgLi4uZmVlZGJhY2ssIHR5cGU6IGUudGFyZ2V0LnZhbHVlIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRlZmF1bHRcIj5EZWZhdWx0PC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImN1c3RvbVwiPkN1c3RvbTwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub25lXCI+Tm9uZTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH07XG59KTtcblxuZGVzY3JpYmUoJ0ZlZWRiYWNrQ29uZmlnJywgKCkgPT4ge1xuICBjb25zdCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZS5tb2NrQ2xlYXIoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcmluZycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyB3aXRoIGRlZmF1bHQgZmVlZGJhY2sgdHlwZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmZWVkYmFjayA9IGJ1aWxkRGVmYXVsdHMoKTtcblxuICAgICAgcmVuZGVyKDxGZWVkYmFja0NvbmZpZyBmZWVkYmFjaz17ZmVlZGJhY2t9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4pO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnRmVlZGJhY2snKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdJZiBjb3JyZWN0LCBzaG93JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSWYgcGFydGlhbGx5IGNvcnJlY3QsIHNob3cnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdJZiBpbmNvcnJlY3QsIHNob3cnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGFsbCB0aHJlZSBmZWVkYmFjayBzZWxlY3RvcnMgYnkgZGVmYXVsdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGZlZWRiYWNrID0gYnVpbGREZWZhdWx0cygpO1xuXG4gICAgICByZW5kZXIoPEZlZWRiYWNrQ29uZmlnIGZlZWRiYWNrPXtmZWVkYmFja30gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG5cbiAgICAgIGNvbnN0IHNlbGVjdG9ycyA9IHNjcmVlbi5nZXRBbGxCeVRlc3RJZCgnZmVlZGJhY2stc2VsZWN0b3InKTtcbiAgICAgIGV4cGVjdChzZWxlY3RvcnMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCByZW5kZXIgcGFydGlhbCBmZWVkYmFjayBzZWxlY3RvciB3aGVuIGFsbG93UGFydGlhbCBpcyBmYWxzZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGZlZWRiYWNrID0gYnVpbGREZWZhdWx0cygpO1xuXG4gICAgICByZW5kZXIoPEZlZWRiYWNrQ29uZmlnIGFsbG93UGFydGlhbD17ZmFsc2V9IGZlZWRiYWNrPXtmZWVkYmFja30gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdJZiBjb3JyZWN0LCBzaG93JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdJZiBwYXJ0aWFsbHkgY29ycmVjdCwgc2hvdycpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdJZiBpbmNvcnJlY3QsIHNob3cnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcblxuICAgICAgY29uc3Qgc2VsZWN0b3JzID0gc2NyZWVuLmdldEFsbEJ5VGVzdElkKCdmZWVkYmFjay1zZWxlY3RvcicpO1xuICAgICAgZXhwZWN0KHNlbGVjdG9ycykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXNlciBpbnRlcmFjdGlvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIHdoZW4gY29ycmVjdCBmZWVkYmFjayB0eXBlIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICBjb25zdCBmZWVkYmFjayA9IGJ1aWxkRGVmYXVsdHMoKTtcblxuICAgICAgcmVuZGVyKDxGZWVkYmFja0NvbmZpZyBmZWVkYmFjaz17ZmVlZGJhY2t9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4pO1xuXG4gICAgICBjb25zdCBjb3JyZWN0U2VsZWN0ID0gc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdJZiBjb3JyZWN0LCBzaG93Jyk7XG4gICAgICBhd2FpdCB1c2VyLnNlbGVjdE9wdGlvbnMoY29ycmVjdFNlbGVjdCwgJ2N1c3RvbScpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgY29ycmVjdDogZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoeyB0eXBlOiAnY3VzdG9tJyB9KSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIHdoZW4gaW5jb3JyZWN0IGZlZWRiYWNrIHR5cGUgY2hhbmdlcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIGNvbnN0IGZlZWRiYWNrID0gYnVpbGREZWZhdWx0cygpO1xuXG4gICAgICByZW5kZXIoPEZlZWRiYWNrQ29uZmlnIGZlZWRiYWNrPXtmZWVkYmFja30gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG5cbiAgICAgIGNvbnN0IGluY29ycmVjdFNlbGVjdCA9IHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnSWYgaW5jb3JyZWN0LCBzaG93Jyk7XG4gICAgICBhd2FpdCB1c2VyLnNlbGVjdE9wdGlvbnMoaW5jb3JyZWN0U2VsZWN0LCAnbm9uZScpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgaW5jb3JyZWN0OiBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7IHR5cGU6ICdub25lJyB9KSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIHdoZW4gcGFydGlhbCBmZWVkYmFjayB0eXBlIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICBjb25zdCBmZWVkYmFjayA9IGJ1aWxkRGVmYXVsdHMoKTtcblxuICAgICAgcmVuZGVyKDxGZWVkYmFja0NvbmZpZyBmZWVkYmFjaz17ZmVlZGJhY2t9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4pO1xuXG4gICAgICBjb25zdCBwYXJ0aWFsU2VsZWN0ID0gc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdJZiBwYXJ0aWFsbHkgY29ycmVjdCwgc2hvdycpO1xuICAgICAgYXdhaXQgdXNlci5zZWxlY3RPcHRpb25zKHBhcnRpYWxTZWxlY3QsICdjdXN0b20nKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgIHBhcnRpYWw6IGV4cGVjdC5vYmplY3RDb250YWluaW5nKHsgdHlwZTogJ2N1c3RvbScgfSksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkRGVmYXVsdHMgaGVscGVyJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIGRlZmF1bHQgZmVlZGJhY2sgY29uZmlndXJhdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0gYnVpbGREZWZhdWx0cygpO1xuXG4gICAgICBleHBlY3QoZGVmYXVsdHMpLnRvRXF1YWwoe1xuICAgICAgICBjb3JyZWN0OiB7IHR5cGU6ICdkZWZhdWx0JywgZGVmYXVsdDogJ0NvcnJlY3QnIH0sXG4gICAgICAgIGluY29ycmVjdDogeyB0eXBlOiAnZGVmYXVsdCcsIGRlZmF1bHQ6ICdJbmNvcnJlY3QnIH0sXG4gICAgICAgIHBhcnRpYWw6IHsgdHlwZTogJ2RlZmF1bHQnLCBkZWZhdWx0OiAnTmVhcmx5JyB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnbWVyZ2VzIGN1c3RvbSB2YWx1ZXMgd2l0aCBkZWZhdWx0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0gYnVpbGREZWZhdWx0cyh7XG4gICAgICAgIGNvcnJlY3Q6IHsgdHlwZTogJ2N1c3RvbScsIGN1c3RvbTogJ0dyZWF0IGpvYiEnIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGRlZmF1bHRzKS50b0VxdWFsKHtcbiAgICAgICAgY29ycmVjdDogeyB0eXBlOiAnY3VzdG9tJywgZGVmYXVsdDogJ0NvcnJlY3QnLCBjdXN0b206ICdHcmVhdCBqb2IhJyB9LFxuICAgICAgICBpbmNvcnJlY3Q6IHsgdHlwZTogJ2RlZmF1bHQnLCBkZWZhdWx0OiAnSW5jb3JyZWN0JyB9LFxuICAgICAgICBwYXJ0aWFsOiB7IHR5cGU6ICdkZWZhdWx0JywgZGVmYXVsdDogJ05lYXJseScgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQXlELFNBQUFJLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEs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
|