@pie-lib/config-ui 12.2.0-next.2 → 12.2.0-next.21

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 (58) hide show
  1. package/CHANGELOG.md +80 -28
  2. package/LICENSE.md +5 -0
  3. package/lib/alert-dialog.js +1 -1
  4. package/lib/checkbox.js +1 -1
  5. package/lib/choice-configuration/feedback-menu.js +1 -1
  6. package/lib/choice-configuration/index.js +1 -1
  7. package/lib/choice-utils.js +1 -1
  8. package/lib/feedback-config/feedback-selector.js +1 -1
  9. package/lib/feedback-config/group.js +1 -1
  10. package/lib/feedback-config/index.js +1 -1
  11. package/lib/form-section.js +1 -1
  12. package/lib/help.js +1 -1
  13. package/lib/index.js +1 -1
  14. package/lib/input.js +1 -1
  15. package/lib/inputs.js +1 -1
  16. package/lib/langs.js +1 -1
  17. package/lib/layout/config-layout.js +1 -1
  18. package/lib/layout/index.js +1 -1
  19. package/lib/layout/layout-contents.js +1 -1
  20. package/lib/layout/settings-box.js +1 -1
  21. package/lib/mui-box/index.js +1 -1
  22. package/lib/number-text-field-custom.js +1 -1
  23. package/lib/number-text-field.js +2 -2
  24. package/lib/number-text-field.js.map +1 -1
  25. package/lib/radio-with-label.js +1 -1
  26. package/lib/settings/display-size.js +1 -1
  27. package/lib/settings/index.js +1 -1
  28. package/lib/settings/panel.js +1 -1
  29. package/lib/settings/settings-radio-label.js +1 -1
  30. package/lib/settings/toggle.js +1 -1
  31. package/lib/tabs/index.js +1 -1
  32. package/lib/tags-input/index.js +1 -1
  33. package/lib/two-choice.js +1 -1
  34. package/lib/with-stateful-model.js +1 -1
  35. package/package.json +5 -5
  36. package/src/number-text-field.jsx +1 -1
  37. package/lib/__tests__/alert-dialog.test.js +0 -262
  38. package/lib/__tests__/checkbox.test.js +0 -227
  39. package/lib/__tests__/choice-utils.test.js +0 -14
  40. package/lib/__tests__/form-section.test.js +0 -252
  41. package/lib/__tests__/help.test.js +0 -270
  42. package/lib/__tests__/input.test.js +0 -268
  43. package/lib/__tests__/langs.test.js +0 -541
  44. package/lib/__tests__/number-text-field-custom.test.js +0 -362
  45. package/lib/__tests__/number-text-field.test.js +0 -421
  46. package/lib/__tests__/radio-with-label.test.js +0 -233
  47. package/lib/__tests__/settings-panel.test.js +0 -184
  48. package/lib/__tests__/settings.test.js +0 -653
  49. package/lib/__tests__/tabs.test.js +0 -211
  50. package/lib/__tests__/two-choice.test.js +0 -124
  51. package/lib/__tests__/with-stateful-model.test.js +0 -221
  52. package/lib/choice-configuration/__tests__/feedback-menu.test.js +0 -287
  53. package/lib/choice-configuration/__tests__/index.test.js +0 -253
  54. package/lib/feedback-config/__tests__/feedback-config.test.js +0 -201
  55. package/lib/feedback-config/__tests__/feedback-selector.test.js +0 -177
  56. package/lib/layout/__tests__/config.layout.test.js +0 -70
  57. package/lib/layout/__tests__/layout-content.test.js +0 -6
  58. package/lib/tags-input/__tests__/index.test.js +0 -183
@@ -1,541 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
6
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
7
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
- var _react = require("@testing-library/react");
9
- var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
- var _react2 = _interopRequireDefault(require("react"));
11
- var _langs = require("../langs");
12
- 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; }
13
- 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; }
14
- describe('Langs Component', function () {
15
- var onChange;
16
- var renderComponent = function renderComponent() {
17
- var extras = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
18
- var defaults = {
19
- uid: '1',
20
- onChange: onChange,
21
- langs: ['en-US', 'es-ES'],
22
- selected: 'en-US'
23
- };
24
- var props = _objectSpread(_objectSpread({}, defaults), extras);
25
- return (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.Langs, props));
26
- };
27
- beforeEach(function () {
28
- onChange = jest.fn();
29
- });
30
- describe('rendering', function () {
31
- it('renders language selector with options', function () {
32
- renderComponent();
33
-
34
- // Select should be present
35
- var select = _react.screen.getByRole('combobox');
36
- expect(select).toBeInTheDocument();
37
-
38
- // Should show selected value - MUI Select displays value as text content
39
- expect(select).toHaveTextContent('en-US');
40
- });
41
- it('renders with custom label', function () {
42
- renderComponent({
43
- label: 'Choose Language'
44
- });
45
- expect(_react.screen.getByText('Choose Language')).toBeInTheDocument();
46
- });
47
- it('renders all language options', function () {
48
- var _renderComponent = renderComponent({
49
- langs: ['en-US', 'es-ES', 'fr-FR', 'de-DE']
50
- }),
51
- container = _renderComponent.container;
52
- var select = _react.screen.getByRole('combobox');
53
- expect(select).toBeInTheDocument();
54
- });
55
- it('renders with multiple languages', function () {
56
- var langs = ['en-US', 'es-ES', 'fr-FR', 'pt-BR'];
57
- renderComponent({
58
- langs: langs
59
- });
60
- var select = _react.screen.getByRole('combobox');
61
- expect(select).toHaveTextContent('en-US');
62
- });
63
- it('renders FormControl with proper structure', function () {
64
- var _renderComponent2 = renderComponent(),
65
- container = _renderComponent2.container;
66
- expect(container.querySelector('[class*="MuiFormControl"]')).toBeInTheDocument();
67
- });
68
- });
69
- describe('user interactions', function () {
70
- it('calls onChange when user selects a language', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
71
- var user, select;
72
- return _regenerator["default"].wrap(function (_context) {
73
- while (1) switch (_context.prev = _context.next) {
74
- case 0:
75
- user = _userEvent["default"].setup();
76
- renderComponent();
77
- select = _react.screen.getByRole('combobox'); // Open the select and choose es-ES
78
- _context.next = 1;
79
- return user.click(select);
80
- case 1:
81
- _context.next = 2;
82
- return user.click(_react.screen.getByRole('option', {
83
- name: 'es-ES'
84
- }));
85
- case 2:
86
- expect(onChange).toHaveBeenCalledWith('es-ES');
87
- case 3:
88
- case "end":
89
- return _context.stop();
90
- }
91
- }, _callee);
92
- })));
93
- it('calls onChange with correct value', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
94
- var user, select;
95
- return _regenerator["default"].wrap(function (_context2) {
96
- while (1) switch (_context2.prev = _context2.next) {
97
- case 0:
98
- user = _userEvent["default"].setup();
99
- renderComponent({
100
- selected: 'es-ES'
101
- });
102
- select = _react.screen.getByRole('combobox');
103
- _context2.next = 1;
104
- return user.click(select);
105
- case 1:
106
- _context2.next = 2;
107
- return user.click(_react.screen.getByRole('option', {
108
- name: 'en-US'
109
- }));
110
- case 2:
111
- expect(onChange).toHaveBeenCalledWith('en-US');
112
- case 3:
113
- case "end":
114
- return _context2.stop();
115
- }
116
- }, _callee2);
117
- })));
118
- it('opens dropdown on click', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
119
- var user, select;
120
- return _regenerator["default"].wrap(function (_context3) {
121
- while (1) switch (_context3.prev = _context3.next) {
122
- case 0:
123
- user = _userEvent["default"].setup();
124
- renderComponent({
125
- langs: ['en-US', 'es-ES', 'fr-FR']
126
- });
127
- select = _react.screen.getByRole('combobox');
128
- _context3.next = 1;
129
- return user.click(select);
130
- case 1:
131
- expect(_react.screen.getByRole('option', {
132
- name: 'en-US'
133
- })).toBeInTheDocument();
134
- expect(_react.screen.getByRole('option', {
135
- name: 'es-ES'
136
- })).toBeInTheDocument();
137
- expect(_react.screen.getByRole('option', {
138
- name: 'fr-FR'
139
- })).toBeInTheDocument();
140
- case 2:
141
- case "end":
142
- return _context3.stop();
143
- }
144
- }, _callee3);
145
- })));
146
- it('does not call onChange if no onChange prop provided', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
147
- var user, _render, container, select;
148
- return _regenerator["default"].wrap(function (_context4) {
149
- while (1) switch (_context4.prev = _context4.next) {
150
- case 0:
151
- user = _userEvent["default"].setup();
152
- _render = (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.Langs, {
153
- uid: "1",
154
- langs: ['en-US', 'es-ES'],
155
- selected: "en-US"
156
- })), container = _render.container;
157
- select = _react.screen.getByRole('combobox');
158
- _context4.next = 1;
159
- return user.click(select);
160
- case 1:
161
- _context4.next = 2;
162
- return user.click(_react.screen.getByRole('option', {
163
- name: 'es-ES'
164
- }));
165
- case 2:
166
- // Should not throw any error
167
- expect(select).toBeInTheDocument();
168
- case 3:
169
- case "end":
170
- return _context4.stop();
171
- }
172
- }, _callee4);
173
- })));
174
- });
175
- describe('props handling', function () {
176
- it('accepts custom uid', function () {
177
- var customUid = 'custom-uid-123';
178
- var _renderComponent3 = renderComponent({
179
- uid: customUid
180
- }),
181
- container = _renderComponent3.container;
182
- var input = container.querySelector("#".concat(customUid));
183
- expect(input).toBeInTheDocument();
184
- });
185
- it('generates random uid if not provided', function () {
186
- var _render2 = (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.Langs, {
187
- onChange: onChange,
188
- langs: ['en-US', 'es-ES'],
189
- selected: "en-US"
190
- })),
191
- container = _render2.container;
192
- var select = _react.screen.getByRole('combobox');
193
- expect(select).toBeInTheDocument();
194
- });
195
- it('handles empty label', function () {
196
- renderComponent({
197
- label: ''
198
- });
199
- var select = _react.screen.getByRole('combobox');
200
- expect(select).toBeInTheDocument();
201
- });
202
- it('handles very long label', function () {
203
- var longLabel = 'Choose the language you would like to use for editing this content';
204
- renderComponent({
205
- label: longLabel
206
- });
207
- expect(_react.screen.getByText(longLabel)).toBeInTheDocument();
208
- });
209
- });
210
- describe('value updates', function () {
211
- it('updates selected value when prop changes', function () {
212
- var _renderComponent4 = renderComponent({
213
- selected: 'en-US'
214
- }),
215
- rerender = _renderComponent4.rerender;
216
- var select = _react.screen.getByRole('combobox');
217
- expect(select).toHaveTextContent('en-US');
218
- rerender(/*#__PURE__*/_react2["default"].createElement(_langs.Langs, {
219
- uid: "1",
220
- onChange: onChange,
221
- langs: ['en-US', 'es-ES'],
222
- selected: "es-ES"
223
- }));
224
- select = _react.screen.getByRole('combobox');
225
- expect(select).toHaveTextContent('es-ES');
226
- });
227
- it('maintains state when language options change', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
228
- var user, _renderComponent5, rerender, select;
229
- return _regenerator["default"].wrap(function (_context5) {
230
- while (1) switch (_context5.prev = _context5.next) {
231
- case 0:
232
- user = _userEvent["default"].setup();
233
- _renderComponent5 = renderComponent({
234
- langs: ['en-US', 'es-ES'],
235
- selected: 'en-US'
236
- }), rerender = _renderComponent5.rerender;
237
- rerender(/*#__PURE__*/_react2["default"].createElement(_langs.Langs, {
238
- uid: "1",
239
- onChange: onChange,
240
- langs: ['en-US', 'es-ES', 'fr-FR'],
241
- selected: "en-US"
242
- }));
243
- select = _react.screen.getByRole('combobox');
244
- expect(select).toHaveTextContent('en-US');
245
- case 1:
246
- case "end":
247
- return _context5.stop();
248
- }
249
- }, _callee5);
250
- })));
251
- });
252
- describe('keyboard navigation', function () {
253
- it('opens dropdown with keyboard', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
254
- var user, select;
255
- return _regenerator["default"].wrap(function (_context6) {
256
- while (1) switch (_context6.prev = _context6.next) {
257
- case 0:
258
- user = _userEvent["default"].setup();
259
- renderComponent({
260
- langs: ['en-US', 'es-ES']
261
- });
262
- select = _react.screen.getByRole('combobox');
263
- select.focus();
264
- _context6.next = 1;
265
- return user.keyboard(' ');
266
- case 1:
267
- expect(_react.screen.getByRole('option', {
268
- name: 'en-US'
269
- })).toBeInTheDocument();
270
- case 2:
271
- case "end":
272
- return _context6.stop();
273
- }
274
- }, _callee6);
275
- })));
276
- });
277
- describe('accessibility', function () {
278
- it('has proper label association', function () {
279
- renderComponent({
280
- label: 'Select Language'
281
- });
282
- var select = _react.screen.getByRole('combobox');
283
- expect(select).toBeInTheDocument();
284
- });
285
- it('renders options with proper roles', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
286
- var user, select, options;
287
- return _regenerator["default"].wrap(function (_context7) {
288
- while (1) switch (_context7.prev = _context7.next) {
289
- case 0:
290
- user = _userEvent["default"].setup();
291
- renderComponent({
292
- langs: ['en-US', 'es-ES', 'fr-FR']
293
- });
294
- select = _react.screen.getByRole('combobox');
295
- _context7.next = 1;
296
- return user.click(select);
297
- case 1:
298
- options = _react.screen.getAllByRole('option');
299
- expect(options.length).toBe(3);
300
- case 2:
301
- case "end":
302
- return _context7.stop();
303
- }
304
- }, _callee7);
305
- })));
306
- });
307
- });
308
- describe('LanguageControls Component', function () {
309
- var defaultProps = {
310
- langs: ['en-US', 'es-ES', 'fr-FR'],
311
- activeLang: 'en-US',
312
- defaultLang: 'en-US',
313
- onActiveLangChange: jest.fn(),
314
- onDefaultLangChange: jest.fn()
315
- };
316
- beforeEach(function () {
317
- jest.clearAllMocks();
318
- });
319
- describe('rendering', function () {
320
- it('renders both language selectors', function () {
321
- (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, defaultProps));
322
- expect(_react.screen.getByText('Choose language to edit')).toBeInTheDocument();
323
- expect(_react.screen.getByText('Default language')).toBeInTheDocument();
324
- });
325
- it('renders with correct initial values', function () {
326
- (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, defaultProps));
327
- var selects = _react.screen.getAllByRole('combobox');
328
- expect(selects).toHaveLength(2);
329
- });
330
- it('applies custom className', function () {
331
- var _render3 = (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
332
- className: "custom-class"
333
- }))),
334
- container = _render3.container;
335
- expect(container.querySelector('.custom-class')).toBeInTheDocument();
336
- });
337
- });
338
- describe('user interactions', function () {
339
- it('calls onActiveLangChange when active language is changed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee8() {
340
- var user, onActiveLangChange, selects, activeSelect;
341
- return _regenerator["default"].wrap(function (_context8) {
342
- while (1) switch (_context8.prev = _context8.next) {
343
- case 0:
344
- user = _userEvent["default"].setup();
345
- onActiveLangChange = jest.fn();
346
- (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
347
- activeLang: "en-US",
348
- onActiveLangChange: onActiveLangChange
349
- })));
350
- selects = _react.screen.getAllByRole('combobox');
351
- activeSelect = selects[0];
352
- _context8.next = 1;
353
- return user.click(activeSelect);
354
- case 1:
355
- _context8.next = 2;
356
- return user.click(_react.screen.getByRole('option', {
357
- name: 'es-ES'
358
- }));
359
- case 2:
360
- expect(onActiveLangChange).toHaveBeenCalledWith('es-ES');
361
- case 3:
362
- case "end":
363
- return _context8.stop();
364
- }
365
- }, _callee8);
366
- })));
367
- it('calls onDefaultLangChange when default language is changed', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee9() {
368
- var user, onDefaultLangChange, selects, defaultSelect;
369
- return _regenerator["default"].wrap(function (_context9) {
370
- while (1) switch (_context9.prev = _context9.next) {
371
- case 0:
372
- user = _userEvent["default"].setup();
373
- onDefaultLangChange = jest.fn();
374
- (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
375
- defaultLang: "en-US",
376
- onDefaultLangChange: onDefaultLangChange
377
- })));
378
- selects = _react.screen.getAllByRole('combobox');
379
- defaultSelect = selects[1];
380
- _context9.next = 1;
381
- return user.click(defaultSelect);
382
- case 1:
383
- _context9.next = 2;
384
- return user.click(_react.screen.getByRole('option', {
385
- name: 'fr-FR'
386
- }));
387
- case 2:
388
- expect(onDefaultLangChange).toHaveBeenCalledWith('fr-FR');
389
- case 3:
390
- case "end":
391
- return _context9.stop();
392
- }
393
- }, _callee9);
394
- })));
395
- it('handles independent language changes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0() {
396
- var user, onActiveLangChange, onDefaultLangChange, selects;
397
- return _regenerator["default"].wrap(function (_context0) {
398
- while (1) switch (_context0.prev = _context0.next) {
399
- case 0:
400
- user = _userEvent["default"].setup();
401
- onActiveLangChange = jest.fn();
402
- onDefaultLangChange = jest.fn();
403
- (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
404
- activeLang: "en-US",
405
- defaultLang: "en-US",
406
- onActiveLangChange: onActiveLangChange,
407
- onDefaultLangChange: onDefaultLangChange
408
- })));
409
- selects = _react.screen.getAllByRole('combobox'); // Change active language
410
- _context0.next = 1;
411
- return user.click(selects[0]);
412
- case 1:
413
- _context0.next = 2;
414
- return user.click(_react.screen.getByRole('option', {
415
- name: 'es-ES'
416
- }));
417
- case 2:
418
- expect(onActiveLangChange).toHaveBeenCalledWith('es-ES');
419
- expect(onDefaultLangChange).not.toHaveBeenCalled();
420
- case 3:
421
- case "end":
422
- return _context0.stop();
423
- }
424
- }, _callee0);
425
- })));
426
- });
427
- describe('props handling', function () {
428
- it('displays correct language options', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee1() {
429
- var user, selects;
430
- return _regenerator["default"].wrap(function (_context1) {
431
- while (1) switch (_context1.prev = _context1.next) {
432
- case 0:
433
- user = _userEvent["default"].setup();
434
- (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
435
- langs: ['en-US', 'es-ES', 'fr-FR', 'de-DE']
436
- })));
437
- selects = _react.screen.getAllByRole('combobox');
438
- _context1.next = 1;
439
- return user.click(selects[0]);
440
- case 1:
441
- expect(_react.screen.getByRole('option', {
442
- name: 'en-US'
443
- })).toBeInTheDocument();
444
- expect(_react.screen.getByRole('option', {
445
- name: 'es-ES'
446
- })).toBeInTheDocument();
447
- expect(_react.screen.getByRole('option', {
448
- name: 'fr-FR'
449
- })).toBeInTheDocument();
450
- expect(_react.screen.getByRole('option', {
451
- name: 'de-DE'
452
- })).toBeInTheDocument();
453
- case 2:
454
- case "end":
455
- return _context1.stop();
456
- }
457
- }, _callee1);
458
- })));
459
- it('maintains different active and default languages', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee10() {
460
- var user, selects;
461
- return _regenerator["default"].wrap(function (_context10) {
462
- while (1) switch (_context10.prev = _context10.next) {
463
- case 0:
464
- user = _userEvent["default"].setup();
465
- (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
466
- activeLang: "es-ES",
467
- defaultLang: "en-US"
468
- })));
469
- selects = _react.screen.getAllByRole('combobox');
470
- expect(selects[0]).toHaveTextContent('es-ES');
471
- expect(selects[1]).toHaveTextContent('en-US');
472
- case 1:
473
- case "end":
474
- return _context10.stop();
475
- }
476
- }, _callee10);
477
- })));
478
- });
479
- describe('updates', function () {
480
- it('updates when activeLang prop changes', function () {
481
- var _render4 = (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
482
- activeLang: "en-US"
483
- }))),
484
- rerender = _render4.rerender;
485
- var selects = _react.screen.getAllByRole('combobox');
486
- expect(selects[0]).toHaveTextContent('en-US');
487
- rerender(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
488
- activeLang: "es-ES"
489
- })));
490
- selects = _react.screen.getAllByRole('combobox');
491
- expect(selects[0]).toHaveTextContent('es-ES');
492
- });
493
- it('updates when defaultLang prop changes', function () {
494
- var _render5 = (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
495
- defaultLang: "en-US"
496
- }))),
497
- rerender = _render5.rerender;
498
- var selects = _react.screen.getAllByRole('combobox');
499
- expect(selects[1]).toHaveTextContent('en-US');
500
- rerender(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
501
- defaultLang: "fr-FR"
502
- })));
503
- selects = _react.screen.getAllByRole('combobox');
504
- expect(selects[1]).toHaveTextContent('fr-FR');
505
- });
506
- it('updates when langs prop changes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee11() {
507
- var user, _render6, rerender, selects;
508
- return _regenerator["default"].wrap(function (_context11) {
509
- while (1) switch (_context11.prev = _context11.next) {
510
- case 0:
511
- user = _userEvent["default"].setup();
512
- _render6 = (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
513
- langs: ['en-US', 'es-ES']
514
- }))), rerender = _render6.rerender;
515
- rerender(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, (0, _extends2["default"])({}, defaultProps, {
516
- langs: ['en-US', 'es-ES', 'fr-FR']
517
- })));
518
- selects = _react.screen.getAllByRole('combobox');
519
- _context11.next = 1;
520
- return user.click(selects[0]);
521
- case 1:
522
- expect(_react.screen.getByRole('option', {
523
- name: 'fr-FR'
524
- })).toBeInTheDocument();
525
- case 2:
526
- case "end":
527
- return _context11.stop();
528
- }
529
- }, _callee11);
530
- })));
531
- });
532
- describe('accessibility', function () {
533
- it('has proper semantic structure', function () {
534
- var _render7 = (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_langs.LanguageControls, defaultProps)),
535
- container = _render7.container;
536
- var selects = _react.screen.getAllByRole('combobox');
537
- expect(selects.length).toBe(2);
538
- });
539
- });
540
- });
541
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZXJFdmVudCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3QyIiwiX2xhbmdzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJkZXNjcmliZSIsIm9uQ2hhbmdlIiwicmVuZGVyQ29tcG9uZW50IiwiZXh0cmFzIiwidW5kZWZpbmVkIiwiZGVmYXVsdHMiLCJ1aWQiLCJsYW5ncyIsInNlbGVjdGVkIiwicHJvcHMiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiTGFuZ3MiLCJiZWZvcmVFYWNoIiwiamVzdCIsImZuIiwiaXQiLCJzZWxlY3QiLCJzY3JlZW4iLCJnZXRCeVJvbGUiLCJleHBlY3QiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInRvSGF2ZVRleHRDb250ZW50IiwibGFiZWwiLCJnZXRCeVRleHQiLCJfcmVuZGVyQ29tcG9uZW50IiwiY29udGFpbmVyIiwiX3JlbmRlckNvbXBvbmVudDIiLCJxdWVyeVNlbGVjdG9yIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ1c2VyIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImNsaWNrIiwibmFtZSIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwic3RvcCIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJfY2FsbGVlNCIsIl9yZW5kZXIiLCJfY29udGV4dDQiLCJjdXN0b21VaWQiLCJfcmVuZGVyQ29tcG9uZW50MyIsImlucHV0IiwiY29uY2F0IiwiX3JlbmRlcjIiLCJsb25nTGFiZWwiLCJfcmVuZGVyQ29tcG9uZW50NCIsInJlcmVuZGVyIiwiX2NhbGxlZTUiLCJfcmVuZGVyQ29tcG9uZW50NSIsIl9jb250ZXh0NSIsIl9jYWxsZWU2IiwiX2NvbnRleHQ2IiwiZm9jdXMiLCJrZXlib2FyZCIsIl9jYWxsZWU3Iiwib3B0aW9ucyIsIl9jb250ZXh0NyIsImdldEFsbEJ5Um9sZSIsInRvQmUiLCJkZWZhdWx0UHJvcHMiLCJhY3RpdmVMYW5nIiwiZGVmYXVsdExhbmciLCJvbkFjdGl2ZUxhbmdDaGFuZ2UiLCJvbkRlZmF1bHRMYW5nQ2hhbmdlIiwiY2xlYXJBbGxNb2NrcyIsIkxhbmd1YWdlQ29udHJvbHMiLCJzZWxlY3RzIiwidG9IYXZlTGVuZ3RoIiwiX3JlbmRlcjMiLCJfZXh0ZW5kczIiLCJjbGFzc05hbWUiLCJfY2FsbGVlOCIsImFjdGl2ZVNlbGVjdCIsIl9jb250ZXh0OCIsIl9jYWxsZWU5IiwiZGVmYXVsdFNlbGVjdCIsIl9jb250ZXh0OSIsIl9jYWxsZWUwIiwiX2NvbnRleHQwIiwibm90IiwidG9IYXZlQmVlbkNhbGxlZCIsIl9jYWxsZWUxIiwiX2NvbnRleHQxIiwiX2NhbGxlZTEwIiwiX2NvbnRleHQxMCIsIl9yZW5kZXI0IiwiX3JlbmRlcjUiLCJfY2FsbGVlMTEiLCJfcmVuZGVyNiIsIl9jb250ZXh0MTEiLCJfcmVuZGVyNyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbGFuZ3MudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB1c2VyRXZlbnQgZnJvbSAnQHRlc3RpbmctbGlicmFyeS91c2VyLWV2ZW50JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMYW5ncywgTGFuZ3VhZ2VDb250cm9scyB9IGZyb20gJy4uL2xhbmdzJztcblxuZGVzY3JpYmUoJ0xhbmdzIENvbXBvbmVudCcsICgpID0+IHtcbiAgbGV0IG9uQ2hhbmdlO1xuICBjb25zdCByZW5kZXJDb21wb25lbnQgPSAoZXh0cmFzID0ge30pID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIHVpZDogJzEnLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBsYW5nczogWydlbi1VUycsICdlcy1FUyddLFxuICAgICAgc2VsZWN0ZWQ6ICdlbi1VUycsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiByZW5kZXIoPExhbmdzIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2hhbmdlID0gamVzdC5mbigpO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIGxhbmd1YWdlIHNlbGVjdG9yIHdpdGggb3B0aW9ucycsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCgpO1xuXG4gICAgICAvLyBTZWxlY3Qgc2hvdWxkIGJlIHByZXNlbnRcbiAgICAgIGNvbnN0IHNlbGVjdCA9IHNjcmVlbi5nZXRCeVJvbGUoJ2NvbWJvYm94Jyk7XG4gICAgICBleHBlY3Qoc2VsZWN0KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuXG4gICAgICAvLyBTaG91bGQgc2hvdyBzZWxlY3RlZCB2YWx1ZSAtIE1VSSBTZWxlY3QgZGlzcGxheXMgdmFsdWUgYXMgdGV4dCBjb250ZW50XG4gICAgICBleHBlY3Qoc2VsZWN0KS50b0hhdmVUZXh0Q29udGVudCgnZW4tVVMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggY3VzdG9tIGxhYmVsJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ29tcG9uZW50KHsgbGFiZWw6ICdDaG9vc2UgTGFuZ3VhZ2UnIH0pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0Nob29zZSBMYW5ndWFnZScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgYWxsIGxhbmd1YWdlIG9wdGlvbnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHtcbiAgICAgICAgbGFuZ3M6IFsnZW4tVVMnLCAnZXMtRVMnLCAnZnItRlInLCAnZGUtREUnXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzZWxlY3QgPSBzY3JlZW4uZ2V0QnlSb2xlKCdjb21ib2JveCcpO1xuICAgICAgZXhwZWN0KHNlbGVjdCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbGFuZ3MgPSBbJ2VuLVVTJywgJ2VzLUVTJywgJ2ZyLUZSJywgJ3B0LUJSJ107XG4gICAgICByZW5kZXJDb21wb25lbnQoeyBsYW5ncyB9KTtcblxuICAgICAgY29uc3Qgc2VsZWN0ID0gc2NyZWVuLmdldEJ5Um9sZSgnY29tYm9ib3gnKTtcbiAgICAgIGV4cGVjdChzZWxlY3QpLnRvSGF2ZVRleHRDb250ZW50KCdlbi1VUycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgRm9ybUNvbnRyb2wgd2l0aCBwcm9wZXIgc3RydWN0dXJlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCgpO1xuXG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tjbGFzcyo9XCJNdWlGb3JtQ29udHJvbFwiXScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXNlciBpbnRlcmFjdGlvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIHdoZW4gdXNlciBzZWxlY3RzIGEgbGFuZ3VhZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXJDb21wb25lbnQoKTtcblxuICAgICAgY29uc3Qgc2VsZWN0ID0gc2NyZWVuLmdldEJ5Um9sZSgnY29tYm9ib3gnKTtcblxuICAgICAgLy8gT3BlbiB0aGUgc2VsZWN0IGFuZCBjaG9vc2UgZXMtRVNcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soc2VsZWN0KTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnb3B0aW9uJywgeyBuYW1lOiAnZXMtRVMnIH0pKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZXMtRVMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aXRoIGNvcnJlY3QgdmFsdWUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyBzZWxlY3RlZDogJ2VzLUVTJyB9KTtcblxuICAgICAgY29uc3Qgc2VsZWN0ID0gc2NyZWVuLmdldEJ5Um9sZSgnY29tYm9ib3gnKTtcblxuICAgICAgYXdhaXQgdXNlci5jbGljayhzZWxlY3QpO1xuICAgICAgYXdhaXQgdXNlci5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCdvcHRpb24nLCB7IG5hbWU6ICdlbi1VUycgfSkpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdlbi1VUycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ29wZW5zIGRyb3Bkb3duIG9uIGNsaWNrJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgcmVuZGVyQ29tcG9uZW50KHtcbiAgICAgICAgbGFuZ3M6IFsnZW4tVVMnLCAnZXMtRVMnLCAnZnItRlInXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzZWxlY3QgPSBzY3JlZW4uZ2V0QnlSb2xlKCdjb21ib2JveCcpO1xuICAgICAgYXdhaXQgdXNlci5jbGljayhzZWxlY3QpO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnb3B0aW9uJywgeyBuYW1lOiAnZW4tVVMnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ29wdGlvbicsIHsgbmFtZTogJ2VzLUVTJyB9KSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdvcHRpb24nLCB7IG5hbWU6ICdmci1GUicgfSkpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgY2FsbCBvbkNoYW5nZSBpZiBubyBvbkNoYW5nZSBwcm9wIHByb3ZpZGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8TGFuZ3MgdWlkPVwiMVwiIGxhbmdzPXtbJ2VuLVVTJywgJ2VzLUVTJ119IHNlbGVjdGVkPVwiZW4tVVNcIiAvPik7XG5cbiAgICAgIGNvbnN0IHNlbGVjdCA9IHNjcmVlbi5nZXRCeVJvbGUoJ2NvbWJvYm94Jyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKHNlbGVjdCk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ29wdGlvbicsIHsgbmFtZTogJ2VzLUVTJyB9KSk7XG5cbiAgICAgIC8vIFNob3VsZCBub3QgdGhyb3cgYW55IGVycm9yXG4gICAgICBleHBlY3Qoc2VsZWN0KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncHJvcHMgaGFuZGxpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ2FjY2VwdHMgY3VzdG9tIHVpZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbVVpZCA9ICdjdXN0b20tdWlkLTEyMyc7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgdWlkOiBjdXN0b21VaWQgfSk7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYCMke2N1c3RvbVVpZH1gKTtcbiAgICAgIGV4cGVjdChpbnB1dCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdnZW5lcmF0ZXMgcmFuZG9tIHVpZCBpZiBub3QgcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxMYW5ncyBvbkNoYW5nZT17b25DaGFuZ2V9IGxhbmdzPXtbJ2VuLVVTJywgJ2VzLUVTJ119IHNlbGVjdGVkPVwiZW4tVVNcIiAvPik7XG5cbiAgICAgIGNvbnN0IHNlbGVjdCA9IHNjcmVlbi5nZXRCeVJvbGUoJ2NvbWJvYm94Jyk7XG4gICAgICBleHBlY3Qoc2VsZWN0KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgZW1wdHkgbGFiZWwnLCAoKSA9PiB7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyBsYWJlbDogJycgfSk7XG5cbiAgICAgIGNvbnN0IHNlbGVjdCA9IHNjcmVlbi5nZXRCeVJvbGUoJ2NvbWJvYm94Jyk7XG4gICAgICBleHBlY3Qoc2VsZWN0KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgdmVyeSBsb25nIGxhYmVsJywgKCkgPT4ge1xuICAgICAgY29uc3QgbG9uZ0xhYmVsID0gJ0Nob29zZSB0aGUgbGFuZ3VhZ2UgeW91IHdvdWxkIGxpa2UgdG8gdXNlIGZvciBlZGl0aW5nIHRoaXMgY29udGVudCc7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyBsYWJlbDogbG9uZ0xhYmVsIH0pO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dChsb25nTGFiZWwpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsdWUgdXBkYXRlcycsICgpID0+IHtcbiAgICBpdCgndXBkYXRlcyBzZWxlY3RlZCB2YWx1ZSB3aGVuIHByb3AgY2hhbmdlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IHNlbGVjdGVkOiAnZW4tVVMnIH0pO1xuXG4gICAgICBsZXQgc2VsZWN0ID0gc2NyZWVuLmdldEJ5Um9sZSgnY29tYm9ib3gnKTtcbiAgICAgIGV4cGVjdChzZWxlY3QpLnRvSGF2ZVRleHRDb250ZW50KCdlbi1VUycpO1xuXG4gICAgICByZXJlbmRlcig8TGFuZ3MgdWlkPVwiMVwiIG9uQ2hhbmdlPXtvbkNoYW5nZX0gbGFuZ3M9e1snZW4tVVMnLCAnZXMtRVMnXX0gc2VsZWN0ZWQ9XCJlcy1FU1wiIC8+KTtcblxuICAgICAgc2VsZWN0ID0gc2NyZWVuLmdldEJ5Um9sZSgnY29tYm9ib3gnKTtcbiAgICAgIGV4cGVjdChzZWxlY3QpLnRvSGF2ZVRleHRDb250ZW50KCdlcy1FUycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ21haW50YWlucyBzdGF0ZSB3aGVuIGxhbmd1YWdlIG9wdGlvbnMgY2hhbmdlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyQ29tcG9uZW50KHtcbiAgICAgICAgbGFuZ3M6IFsnZW4tVVMnLCAnZXMtRVMnXSxcbiAgICAgICAgc2VsZWN0ZWQ6ICdlbi1VUycsXG4gICAgICB9KTtcblxuICAgICAgcmVyZW5kZXIoPExhbmdzIHVpZD1cIjFcIiBvbkNoYW5nZT17b25DaGFuZ2V9IGxhbmdzPXtbJ2VuLVVTJywgJ2VzLUVTJywgJ2ZyLUZSJ119IHNlbGVjdGVkPVwiZW4tVVNcIiAvPik7XG5cbiAgICAgIGNvbnN0IHNlbGVjdCA9IHNjcmVlbi5nZXRCeVJvbGUoJ2NvbWJvYm94Jyk7XG4gICAgICBleHBlY3Qoc2VsZWN0KS50b0hhdmVUZXh0Q29udGVudCgnZW4tVVMnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2tleWJvYXJkIG5hdmlnYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ29wZW5zIGRyb3Bkb3duIHdpdGgga2V5Ym9hcmQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXJDb21wb25lbnQoe1xuICAgICAgICBsYW5nczogWydlbi1VUycsICdlcy1FUyddLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHNlbGVjdCA9IHNjcmVlbi5nZXRCeVJvbGUoJ2NvbWJvYm94Jyk7XG4gICAgICBzZWxlY3QuZm9jdXMoKTtcblxuICAgICAgYXdhaXQgdXNlci5rZXlib2FyZCgnICcpO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnb3B0aW9uJywgeyBuYW1lOiAnZW4tVVMnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWNjZXNzaWJpbGl0eScsICgpID0+IHtcbiAgICBpdCgnaGFzIHByb3BlciBsYWJlbCBhc3NvY2lhdGlvbicsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCh7IGxhYmVsOiAnU2VsZWN0IExhbmd1YWdlJyB9KTtcblxuICAgICAgY29uc3Qgc2VsZWN0ID0gc2NyZWVuLmdldEJ5Um9sZSgnY29tYm9ib3gnKTtcbiAgICAgIGV4cGVjdChzZWxlY3QpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBvcHRpb25zIHdpdGggcHJvcGVyIHJvbGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgcmVuZGVyQ29tcG9uZW50KHtcbiAgICAgICAgbGFuZ3M6IFsnZW4tVVMnLCAnZXMtRVMnLCAnZnItRlInXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzZWxlY3QgPSBzY3JlZW4uZ2V0QnlSb2xlKCdjb21ib2JveCcpO1xuICAgICAgYXdhaXQgdXNlci5jbGljayhzZWxlY3QpO1xuXG4gICAgICBjb25zdCBvcHRpb25zID0gc2NyZWVuLmdldEFsbEJ5Um9sZSgnb3B0aW9uJyk7XG4gICAgICBleHBlY3Qob3B0aW9ucy5sZW5ndGgpLnRvQmUoMyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdMYW5ndWFnZUNvbnRyb2xzIENvbXBvbmVudCcsICgpID0+IHtcbiAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgIGxhbmdzOiBbJ2VuLVVTJywgJ2VzLUVTJywgJ2ZyLUZSJ10sXG4gICAgYWN0aXZlTGFuZzogJ2VuLVVTJyxcbiAgICBkZWZhdWx0TGFuZzogJ2VuLVVTJyxcbiAgICBvbkFjdGl2ZUxhbmdDaGFuZ2U6IGplc3QuZm4oKSxcbiAgICBvbkRlZmF1bHRMYW5nQ2hhbmdlOiBqZXN0LmZuKCksXG4gIH07XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgYm90aCBsYW5ndWFnZSBzZWxlY3RvcnMnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoPExhbmd1YWdlQ29udHJvbHMgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ2hvb3NlIGxhbmd1YWdlIHRvIGVkaXQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdEZWZhdWx0IGxhbmd1YWdlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGNvcnJlY3QgaW5pdGlhbCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoPExhbmd1YWdlQ29udHJvbHMgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgICBjb25zdCBzZWxlY3RzID0gc2NyZWVuLmdldEFsbEJ5Um9sZSgnY29tYm9ib3gnKTtcbiAgICAgIGV4cGVjdChzZWxlY3RzKS50b0hhdmVMZW5ndGgoMik7XG4gICAgfSk7XG5cbiAgICBpdCgnYXBwbGllcyBjdXN0b20gY2xhc3NOYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8TGFuZ3VhZ2VDb250cm9scyB7Li4uZGVmYXVsdFByb3BzfSBjbGFzc05hbWU9XCJjdXN0b20tY2xhc3NcIiAvPik7XG5cbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignLmN1c3RvbS1jbGFzcycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXNlciBpbnRlcmFjdGlvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ2NhbGxzIG9uQWN0aXZlTGFuZ0NoYW5nZSB3aGVuIGFjdGl2ZSBsYW5ndWFnZSBpcyBjaGFuZ2VkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgY29uc3Qgb25BY3RpdmVMYW5nQ2hhbmdlID0gamVzdC5mbigpO1xuXG4gICAgICByZW5kZXIoPExhbmd1YWdlQ29udHJvbHMgey4uLmRlZmF1bHRQcm9wc30gYWN0aXZlTGFuZz1cImVuLVVTXCIgb25BY3RpdmVMYW5nQ2hhbmdlPXtvbkFjdGl2ZUxhbmdDaGFuZ2V9IC8+KTtcblxuICAgICAgY29uc3Qgc2VsZWN0cyA9IHNjcmVlbi5nZXRBbGxCeVJvbGUoJ2NvbWJvYm94Jyk7XG4gICAgICBjb25zdCBhY3RpdmVTZWxlY3QgPSBzZWxlY3RzWzBdO1xuXG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKGFjdGl2ZVNlbGVjdCk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ29wdGlvbicsIHsgbmFtZTogJ2VzLUVTJyB9KSk7XG5cbiAgICAgIGV4cGVjdChvbkFjdGl2ZUxhbmdDaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdlcy1FUycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIG9uRGVmYXVsdExhbmdDaGFuZ2Ugd2hlbiBkZWZhdWx0IGxhbmd1YWdlIGlzIGNoYW5nZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICBjb25zdCBvbkRlZmF1bHRMYW5nQ2hhbmdlID0gamVzdC5mbigpO1xuXG4gICAgICByZW5kZXIoPExhbmd1YWdlQ29udHJvbHMgey4uLmRlZmF1bHRQcm9wc30gZGVmYXVsdExhbmc9XCJlbi1VU1wiIG9uRGVmYXVsdExhbmdDaGFuZ2U9e29uRGVmYXVsdExhbmdDaGFuZ2V9IC8+KTtcblxuICAgICAgY29uc3Qgc2VsZWN0cyA9IHNjcmVlbi5nZXRBbGxCeVJvbGUoJ2NvbWJvYm94Jyk7XG4gICAgICBjb25zdCBkZWZhdWx0U2VsZWN0ID0gc2VsZWN0c1sxXTtcblxuICAgICAgYXdhaXQgdXNlci5jbGljayhkZWZhdWx0U2VsZWN0KTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnb3B0aW9uJywgeyBuYW1lOiAnZnItRlInIH0pKTtcblxuICAgICAgZXhwZWN0KG9uRGVmYXVsdExhbmdDaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdmci1GUicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgaW5kZXBlbmRlbnQgbGFuZ3VhZ2UgY2hhbmdlcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIGNvbnN0IG9uQWN0aXZlTGFuZ0NoYW5nZSA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IG9uRGVmYXVsdExhbmdDaGFuZ2UgPSBqZXN0LmZuKCk7XG5cbiAgICAgIHJlbmRlcihcbiAgICAgICAgPExhbmd1YWdlQ29udHJvbHNcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIGFjdGl2ZUxhbmc9XCJlbi1VU1wiXG4gICAgICAgICAgZGVmYXVsdExhbmc9XCJlbi1VU1wiXG4gICAgICAgICAgb25BY3RpdmVMYW5nQ2hhbmdlPXtvbkFjdGl2ZUxhbmdDaGFuZ2V9XG4gICAgICAgICAgb25EZWZhdWx0TGFuZ0NoYW5nZT17b25EZWZhdWx0TGFuZ0NoYW5nZX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzZWxlY3RzID0gc2NyZWVuLmdldEFsbEJ5Um9sZSgnY29tYm9ib3gnKTtcblxuICAgICAgLy8gQ2hhbmdlIGFjdGl2ZSBsYW5ndWFnZVxuICAgICAgYXdhaXQgdXNlci5jbGljayhzZWxlY3RzWzBdKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgnb3B0aW9uJywgeyBuYW1lOiAnZXMtRVMnIH0pKTtcblxuICAgICAgZXhwZWN0KG9uQWN0aXZlTGFuZ0NoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2VzLUVTJyk7XG4gICAgICBleHBlY3Qob25EZWZhdWx0TGFuZ0NoYW5nZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Byb3BzIGhhbmRsaW5nJywgKCkgPT4ge1xuICAgIGl0KCdkaXNwbGF5cyBjb3JyZWN0IGxhbmd1YWdlIG9wdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXIoPExhbmd1YWdlQ29udHJvbHMgey4uLmRlZmF1bHRQcm9wc30gbGFuZ3M9e1snZW4tVVMnLCAnZXMtRVMnLCAnZnItRlInLCAnZGUtREUnXX0gLz4pO1xuXG4gICAgICBjb25zdCBzZWxlY3RzID0gc2NyZWVuLmdldEFsbEJ5Um9sZSgnY29tYm9ib3gnKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soc2VsZWN0c1swXSk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdvcHRpb24nLCB7IG5hbWU6ICdlbi1VUycgfSkpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnb3B0aW9uJywgeyBuYW1lOiAnZXMtRVMnIH0pKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ29wdGlvbicsIHsgbmFtZTogJ2ZyLUZSJyB9KSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdvcHRpb24nLCB7IG5hbWU6ICdkZS1ERScgfSkpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnbWFpbnRhaW5zIGRpZmZlcmVudCBhY3RpdmUgYW5kIGRlZmF1bHQgbGFuZ3VhZ2VzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgcmVuZGVyKDxMYW5ndWFnZUNvbnRyb2xzIHsuLi5kZWZhdWx0UHJvcHN9IGFjdGl2ZUxhbmc9XCJlcy1FU1wiIGRlZmF1bHRMYW5nPVwiZW4tVVNcIiAvPik7XG5cbiAgICAgIGNvbnN0IHNlbGVjdHMgPSBzY3JlZW4uZ2V0QWxsQnlSb2xlKCdjb21ib2JveCcpO1xuICAgICAgZXhwZWN0KHNlbGVjdHNbMF0pLnRvSGF2ZVRleHRDb250ZW50KCdlcy1FUycpO1xuICAgICAgZXhwZWN0KHNlbGVjdHNbMV0pLnRvSGF2ZVRleHRDb250ZW50KCdlbi1VUycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXBkYXRlcycsICgpID0+IHtcbiAgICBpdCgndXBkYXRlcyB3aGVuIGFjdGl2ZUxhbmcgcHJvcCBjaGFuZ2VzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyKDxMYW5ndWFnZUNvbnRyb2xzIHsuLi5kZWZhdWx0UHJvcHN9IGFjdGl2ZUxhbmc9XCJlbi1VU1wiIC8+KTtcblxuICAgICAgbGV0IHNlbGVjdHMgPSBzY3JlZW4uZ2V0QWxsQnlSb2xlKCdjb21ib2JveCcpO1xuICAgICAgZXhwZWN0KHNlbGVjdHNbMF0pLnRvSGF2ZVRleHRDb250ZW50KCdlbi1VUycpO1xuXG4gICAgICByZXJlbmRlcig8TGFuZ3VhZ2VDb250cm9scyB7Li4uZGVmYXVsdFByb3BzfSBhY3RpdmVMYW5nPVwiZXMtRVNcIiAvPik7XG5cbiAgICAgIHNlbGVjdHMgPSBzY3JlZW4uZ2V0QWxsQnlSb2xlKCdjb21ib2JveCcpO1xuICAgICAgZXhwZWN0KHNlbGVjdHNbMF0pLnRvSGF2ZVRleHRDb250ZW50KCdlcy1FUycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3VwZGF0ZXMgd2hlbiBkZWZhdWx0TGFuZyBwcm9wIGNoYW5nZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoPExhbmd1YWdlQ29udHJvbHMgey4uLmRlZmF1bHRQcm9wc30gZGVmYXVsdExhbmc9XCJlbi1VU1wiIC8+KTtcblxuICAgICAgbGV0IHNlbGVjdHMgPSBzY3JlZW4uZ2V0QWxsQnlSb2xlKCdjb21ib2JveCcpO1xuICAgICAgZXhwZWN0KHNlbGVjdHNbMV0pLnRvSGF2ZVRleHRDb250ZW50KCdlbi1VUycpO1xuXG4gICAgICByZXJlbmRlcig8TGFuZ3VhZ2VDb250cm9scyB7Li4uZGVmYXVsdFByb3BzfSBkZWZhdWx0TGFuZz1cImZyLUZSXCIgLz4pO1xuXG4gICAgICBzZWxlY3RzID0gc2NyZWVuLmdldEFsbEJ5Um9sZSgnY29tYm9ib3gnKTtcbiAgICAgIGV4cGVjdChzZWxlY3RzWzFdKS50b0hhdmVUZXh0Q29udGVudCgnZnItRlInKTtcbiAgICB9KTtcblxuICAgIGl0KCd1cGRhdGVzIHdoZW4gbGFuZ3MgcHJvcCBjaGFuZ2VzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyKDxMYW5ndWFnZUNvbnRyb2xzIHsuLi5kZWZhdWx0UHJvcHN9IGxhbmdzPXtbJ2VuLVVTJywgJ2VzLUVTJ119IC8+KTtcblxuICAgICAgcmVyZW5kZXIoPExhbmd1YWdlQ29udHJvbHMgey4uLmRlZmF1bHRQcm9wc30gbGFuZ3M9e1snZW4tVVMnLCAnZXMtRVMnLCAnZnItRlInXX0gLz4pO1xuXG4gICAgICBjb25zdCBzZWxlY3RzID0gc2NyZWVuLmdldEFsbEJ5Um9sZSgnY29tYm9ib3gnKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soc2VsZWN0c1swXSk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdvcHRpb24nLCB7IG5hbWU6ICdmci1GUicgfSkpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhY2Nlc3NpYmlsaXR5JywgKCkgPT4ge1xuICAgIGl0KCdoYXMgcHJvcGVyIHNlbWFudGljIHN0cnVjdHVyZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPExhbmd1YWdlQ29udHJvbHMgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgICBjb25zdCBzZWxlY3RzID0gc2NyZWVuLmdldEFsbEJ5Um9sZSgnY29tYm9ib3gnKTtcbiAgICAgIGV4cGVjdChzZWxlY3RzLmxlbmd0aCkudG9CZSgyKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUQsc0JBQUEsQ0FB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