@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,211 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
- var _react = _interopRequireDefault(require("react"));
7
- var _react2 = require("@testing-library/react");
8
- var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
9
- var _tabs = require("../tabs");
10
- describe('Tabs Component', function () {
11
- it('renders tabs with correct titles', function () {
12
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
13
- title: "Tab 1"
14
- }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
15
- title: "Tab 2"
16
- }, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
17
- title: "Tab 3"
18
- }, "Content 3")));
19
- expect(_react2.screen.getByText('Tab 1')).toBeInTheDocument();
20
- expect(_react2.screen.getByText('Tab 2')).toBeInTheDocument();
21
- expect(_react2.screen.getByText('Tab 3')).toBeInTheDocument();
22
- });
23
- it('renders first tab content by default', function () {
24
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
25
- title: "Tab 1"
26
- }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
27
- title: "Tab 2"
28
- }, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
29
- title: "Tab 3"
30
- }, "Content 3")));
31
- expect(_react2.screen.getByText('Content 1')).toBeInTheDocument();
32
- expect(_react2.screen.queryByText('Content 2')).not.toBeInTheDocument();
33
- expect(_react2.screen.queryByText('Content 3')).not.toBeInTheDocument();
34
- });
35
- it('switches to selected tab when clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
36
- var user, tab2;
37
- return _regenerator["default"].wrap(function (_context) {
38
- while (1) switch (_context.prev = _context.next) {
39
- case 0:
40
- user = _userEvent["default"].setup();
41
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
42
- title: "Tab 1"
43
- }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
44
- title: "Tab 2"
45
- }, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
46
- title: "Tab 3"
47
- }, "Content 3")));
48
- tab2 = _react2.screen.getByRole('tab', {
49
- name: 'Tab 2'
50
- });
51
- _context.next = 1;
52
- return user.click(tab2);
53
- case 1:
54
- expect(_react2.screen.queryByText('Content 1')).not.toBeInTheDocument();
55
- expect(_react2.screen.getByText('Content 2')).toBeInTheDocument();
56
- expect(_react2.screen.queryByText('Content 3')).not.toBeInTheDocument();
57
- case 2:
58
- case "end":
59
- return _context.stop();
60
- }
61
- }, _callee);
62
- })));
63
- it('displays correct content when multiple tabs are clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
64
- var user;
65
- return _regenerator["default"].wrap(function (_context2) {
66
- while (1) switch (_context2.prev = _context2.next) {
67
- case 0:
68
- user = _userEvent["default"].setup();
69
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
70
- title: "Tab 1"
71
- }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
72
- title: "Tab 2"
73
- }, "Content 2"), /*#__PURE__*/_react["default"].createElement("div", {
74
- title: "Tab 3"
75
- }, "Content 3")));
76
- _context2.next = 1;
77
- return user.click(_react2.screen.getByRole('tab', {
78
- name: 'Tab 2'
79
- }));
80
- case 1:
81
- expect(_react2.screen.getByText('Content 2')).toBeInTheDocument();
82
- _context2.next = 2;
83
- return user.click(_react2.screen.getByRole('tab', {
84
- name: 'Tab 3'
85
- }));
86
- case 2:
87
- expect(_react2.screen.getByText('Content 3')).toBeInTheDocument();
88
- _context2.next = 3;
89
- return user.click(_react2.screen.getByRole('tab', {
90
- name: 'Tab 1'
91
- }));
92
- case 3:
93
- expect(_react2.screen.getByText('Content 1')).toBeInTheDocument();
94
- case 4:
95
- case "end":
96
- return _context2.stop();
97
- }
98
- }, _callee2);
99
- })));
100
- it('applies custom className to root element', function () {
101
- var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, {
102
- className: "custom-tabs-class"
103
- }, /*#__PURE__*/_react["default"].createElement("div", {
104
- title: "Tab 1"
105
- }, "Content 1"))),
106
- container = _render.container;
107
- var rootDiv = container.querySelector('.custom-tabs-class');
108
- expect(rootDiv).toBeInTheDocument();
109
- });
110
- it('handles tabs without title prop gracefully', function () {
111
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
112
- title: "Tab 1"
113
- }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", null, "No Title Child"), /*#__PURE__*/_react["default"].createElement("div", {
114
- title: "Tab 2"
115
- }, "Content 2")));
116
- var tabs = _react2.screen.getAllByRole('tab');
117
- // Should only have 2 tabs since one doesn't have a title
118
- expect(tabs).toHaveLength(2);
119
- expect(_react2.screen.getByText('Tab 1')).toBeInTheDocument();
120
- expect(_react2.screen.getByText('Tab 2')).toBeInTheDocument();
121
- });
122
- it('handles null children gracefully', function () {
123
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
124
- title: "Tab 1"
125
- }, "Content 1"), null, /*#__PURE__*/_react["default"].createElement("div", {
126
- title: "Tab 2"
127
- }, "Content 2")));
128
- var tabs = _react2.screen.getAllByRole('tab');
129
- expect(tabs).toHaveLength(2);
130
- });
131
- it('handles complex content in tabs', function () {
132
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
133
- title: "Tab 1"
134
- }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h2", null, "Tab 1 Header"), /*#__PURE__*/_react["default"].createElement("p", null, "Tab 1 description"), /*#__PURE__*/_react["default"].createElement("button", null, "Button in Tab 1"))), /*#__PURE__*/_react["default"].createElement("div", {
135
- title: "Tab 2"
136
- }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h2", null, "Tab 2 Header"), /*#__PURE__*/_react["default"].createElement("input", {
137
- type: "text",
138
- placeholder: "Input in Tab 2"
139
- })))));
140
- expect(_react2.screen.getByText('Tab 1 Header')).toBeInTheDocument();
141
- expect(_react2.screen.getByRole('button', {
142
- name: 'Button in Tab 1'
143
- })).toBeInTheDocument();
144
- var tab2 = _react2.screen.getByRole('tab', {
145
- name: 'Tab 2'
146
- });
147
- expect(tab2).toBeInTheDocument();
148
- });
149
- it('renders all tabs in MuiTabs component', function () {
150
- var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
151
- title: "Tab A"
152
- }, "Content A"), /*#__PURE__*/_react["default"].createElement("div", {
153
- title: "Tab B"
154
- }, "Content B"), /*#__PURE__*/_react["default"].createElement("div", {
155
- title: "Tab C"
156
- }, "Content C"))),
157
- container = _render2.container;
158
- var tabsComponent = container.querySelector('[role="tablist"]');
159
- expect(tabsComponent).toBeInTheDocument();
160
- });
161
- it('applies correct value prop to MuiTabs', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
162
- var user, tab1, tab2;
163
- return _regenerator["default"].wrap(function (_context3) {
164
- while (1) switch (_context3.prev = _context3.next) {
165
- case 0:
166
- user = _userEvent["default"].setup();
167
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
168
- title: "Tab 1"
169
- }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
170
- title: "Tab 2"
171
- }, "Content 2")));
172
-
173
- // Initially first tab should be selected (value 0)
174
- tab1 = _react2.screen.getByRole('tab', {
175
- name: 'Tab 1'
176
- });
177
- expect(tab1).toHaveAttribute('aria-selected', 'true');
178
-
179
- // Click second tab
180
- _context3.next = 1;
181
- return user.click(_react2.screen.getByRole('tab', {
182
- name: 'Tab 2'
183
- }));
184
- case 1:
185
- tab2 = _react2.screen.getByRole('tab', {
186
- name: 'Tab 2'
187
- });
188
- expect(tab2).toHaveAttribute('aria-selected', 'true');
189
- expect(tab1).toHaveAttribute('aria-selected', 'false');
190
- case 2:
191
- case "end":
192
- return _context3.stop();
193
- }
194
- }, _callee3);
195
- })));
196
- it('renders with empty children array', function () {
197
- var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, [])),
198
- container = _render3.container;
199
- expect(container).toBeInTheDocument();
200
- });
201
- it('handles long tab titles', function () {
202
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tabs.Tabs, null, /*#__PURE__*/_react["default"].createElement("div", {
203
- title: "This is a very long tab title that should still render correctly"
204
- }, "Content 1"), /*#__PURE__*/_react["default"].createElement("div", {
205
- title: "Short"
206
- }, "Content 2")));
207
- expect(_react2.screen.getByText('This is a very long tab title that should still render correctly')).toBeInTheDocument();
208
- expect(_react2.screen.getByText('Short')).toBeInTheDocument();
209
- });
210
- });
211
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX3RhYnMiLCJkZXNjcmliZSIsIml0IiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIlRhYnMiLCJ0aXRsZSIsImV4cGVjdCIsInNjcmVlbiIsImdldEJ5VGV4dCIsInRvQmVJblRoZURvY3VtZW50IiwicXVlcnlCeVRleHQiLCJub3QiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInVzZXIiLCJ0YWIyIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImdldEJ5Um9sZSIsIm5hbWUiLCJjbGljayIsInN0b3AiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9yZW5kZXIiLCJjbGFzc05hbWUiLCJjb250YWluZXIiLCJyb290RGl2IiwicXVlcnlTZWxlY3RvciIsInRhYnMiLCJnZXRBbGxCeVJvbGUiLCJ0b0hhdmVMZW5ndGgiLCJ0eXBlIiwicGxhY2Vob2xkZXIiLCJfcmVuZGVyMiIsInRhYnNDb21wb25lbnQiLCJfY2FsbGVlMyIsInRhYjEiLCJfY29udGV4dDMiLCJ0b0hhdmVBdHRyaWJ1dGUiLCJfcmVuZGVyMyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdGFicy50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB1c2VyRXZlbnQgZnJvbSAnQHRlc3RpbmctbGlicmFyeS91c2VyLWV2ZW50JztcbmltcG9ydCB7IFRhYnMgfSBmcm9tICcuLi90YWJzJztcblxuZGVzY3JpYmUoJ1RhYnMgQ29tcG9uZW50JywgKCkgPT4ge1xuICBpdCgncmVuZGVycyB0YWJzIHdpdGggY29ycmVjdCB0aXRsZXMnLCAoKSA9PiB7XG4gICAgcmVuZGVyKFxuICAgICAgPFRhYnM+XG4gICAgICAgIDxkaXYgdGl0bGU9XCJUYWIgMVwiPkNvbnRlbnQgMTwvZGl2PlxuICAgICAgICA8ZGl2IHRpdGxlPVwiVGFiIDJcIj5Db250ZW50IDI8L2Rpdj5cbiAgICAgICAgPGRpdiB0aXRsZT1cIlRhYiAzXCI+Q29udGVudCAzPC9kaXY+XG4gICAgICA8L1RhYnM+LFxuICAgICk7XG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVGFiIDEnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVGFiIDInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVGFiIDMnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgZmlyc3QgdGFiIGNvbnRlbnQgYnkgZGVmYXVsdCcsICgpID0+IHtcbiAgICByZW5kZXIoXG4gICAgICA8VGFicz5cbiAgICAgICAgPGRpdiB0aXRsZT1cIlRhYiAxXCI+Q29udGVudCAxPC9kaXY+XG4gICAgICAgIDxkaXYgdGl0bGU9XCJUYWIgMlwiPkNvbnRlbnQgMjwvZGl2PlxuICAgICAgICA8ZGl2IHRpdGxlPVwiVGFiIDNcIj5Db250ZW50IDM8L2Rpdj5cbiAgICAgIDwvVGFicz4sXG4gICAgKTtcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdDb250ZW50IDEnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdDb250ZW50IDInKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnQ29udGVudCAzJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnc3dpdGNoZXMgdG8gc2VsZWN0ZWQgdGFiIHdoZW4gY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgcmVuZGVyKFxuICAgICAgPFRhYnM+XG4gICAgICAgIDxkaXYgdGl0bGU9XCJUYWIgMVwiPkNvbnRlbnQgMTwvZGl2PlxuICAgICAgICA8ZGl2IHRpdGxlPVwiVGFiIDJcIj5Db250ZW50IDI8L2Rpdj5cbiAgICAgICAgPGRpdiB0aXRsZT1cIlRhYiAzXCI+Q29udGVudCAzPC9kaXY+XG4gICAgICA8L1RhYnM+LFxuICAgICk7XG5cbiAgICBjb25zdCB0YWIyID0gc2NyZWVuLmdldEJ5Um9sZSgndGFiJywgeyBuYW1lOiAnVGFiIDInIH0pO1xuICAgIGF3YWl0IHVzZXIuY2xpY2sodGFiMik7XG5cbiAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdDb250ZW50IDEnKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0NvbnRlbnQgMicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRleHQoJ0NvbnRlbnQgMycpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc3BsYXlzIGNvcnJlY3QgY29udGVudCB3aGVuIG11bHRpcGxlIHRhYnMgYXJlIGNsaWNrZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIHJlbmRlcihcbiAgICAgIDxUYWJzPlxuICAgICAgICA8ZGl2IHRpdGxlPVwiVGFiIDFcIj5Db250ZW50IDE8L2Rpdj5cbiAgICAgICAgPGRpdiB0aXRsZT1cIlRhYiAyXCI+Q29udGVudCAyPC9kaXY+XG4gICAgICAgIDxkaXYgdGl0bGU9XCJUYWIgM1wiPkNvbnRlbnQgMzwvZGl2PlxuICAgICAgPC9UYWJzPixcbiAgICApO1xuXG4gICAgYXdhaXQgdXNlci5jbGljayhzY3JlZW4uZ2V0QnlSb2xlKCd0YWInLCB7IG5hbWU6ICdUYWIgMicgfSkpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdDb250ZW50IDInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcblxuICAgIGF3YWl0IHVzZXIuY2xpY2soc2NyZWVuLmdldEJ5Um9sZSgndGFiJywgeyBuYW1lOiAnVGFiIDMnIH0pKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ29udGVudCAzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICBhd2FpdCB1c2VyLmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ3RhYicsIHsgbmFtZTogJ1RhYiAxJyB9KSk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0NvbnRlbnQgMScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnYXBwbGllcyBjdXN0b20gY2xhc3NOYW1lIHRvIHJvb3QgZWxlbWVudCcsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgPFRhYnMgY2xhc3NOYW1lPVwiY3VzdG9tLXRhYnMtY2xhc3NcIj5cbiAgICAgICAgPGRpdiB0aXRsZT1cIlRhYiAxXCI+Q29udGVudCAxPC9kaXY+XG4gICAgICA8L1RhYnM+LFxuICAgICk7XG5cbiAgICBjb25zdCByb290RGl2ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5jdXN0b20tdGFicy1jbGFzcycpO1xuICAgIGV4cGVjdChyb290RGl2KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnaGFuZGxlcyB0YWJzIHdpdGhvdXQgdGl0bGUgcHJvcCBncmFjZWZ1bGx5JywgKCkgPT4ge1xuICAgIHJlbmRlcihcbiAgICAgIDxUYWJzPlxuICAgICAgICA8ZGl2IHRpdGxlPVwiVGFiIDFcIj5Db250ZW50IDE8L2Rpdj5cbiAgICAgICAgPGRpdj5ObyBUaXRsZSBDaGlsZDwvZGl2PlxuICAgICAgICA8ZGl2IHRpdGxlPVwiVGFiIDJcIj5Db250ZW50IDI8L2Rpdj5cbiAgICAgIDwvVGFicz4sXG4gICAgKTtcblxuICAgIGNvbnN0IHRhYnMgPSBzY3JlZW4uZ2V0QWxsQnlSb2xlKCd0YWInKTtcbiAgICAvLyBTaG91bGQgb25seSBoYXZlIDIgdGFicyBzaW5jZSBvbmUgZG9lc24ndCBoYXZlIGEgdGl0bGVcbiAgICBleHBlY3QodGFicykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdUYWIgMScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdUYWIgMicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnaGFuZGxlcyBudWxsIGNoaWxkcmVuIGdyYWNlZnVsbHknLCAoKSA9PiB7XG4gICAgcmVuZGVyKFxuICAgICAgPFRhYnM+XG4gICAgICAgIDxkaXYgdGl0bGU9XCJUYWIgMVwiPkNvbnRlbnQgMTwvZGl2PlxuICAgICAgICB7bnVsbH1cbiAgICAgICAgPGRpdiB0aXRsZT1cIlRhYiAyXCI+Q29udGVudCAyPC9kaXY+XG4gICAgICA8L1RhYnM+LFxuICAgICk7XG5cbiAgICBjb25zdCB0YWJzID0gc2NyZWVuLmdldEFsbEJ5Um9sZSgndGFiJyk7XG4gICAgZXhwZWN0KHRhYnMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgY29tcGxleCBjb250ZW50IGluIHRhYnMnLCAoKSA9PiB7XG4gICAgcmVuZGVyKFxuICAgICAgPFRhYnM+XG4gICAgICAgIDxkaXYgdGl0bGU9XCJUYWIgMVwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDI+VGFiIDEgSGVhZGVyPC9oMj5cbiAgICAgICAgICAgIDxwPlRhYiAxIGRlc2NyaXB0aW9uPC9wPlxuICAgICAgICAgICAgPGJ1dHRvbj5CdXR0b24gaW4gVGFiIDE8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgdGl0bGU9XCJUYWIgMlwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDI+VGFiIDIgSGVhZGVyPC9oMj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiSW5wdXQgaW4gVGFiIDJcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvVGFicz4sXG4gICAgKTtcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdUYWIgMSBIZWFkZXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnQnV0dG9uIGluIFRhYiAxJyB9KSkudG9CZUluVGhlRG9jdW1lbnQoKTtcblxuICAgIGNvbnN0IHRhYjIgPSBzY3JlZW4uZ2V0QnlSb2xlKCd0YWInLCB7IG5hbWU6ICdUYWIgMicgfSk7XG4gICAgZXhwZWN0KHRhYjIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIGFsbCB0YWJzIGluIE11aVRhYnMgY29tcG9uZW50JywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICA8VGFicz5cbiAgICAgICAgPGRpdiB0aXRsZT1cIlRhYiBBXCI+Q29udGVudCBBPC9kaXY+XG4gICAgICAgIDxkaXYgdGl0bGU9XCJUYWIgQlwiPkNvbnRlbnQgQjwvZGl2PlxuICAgICAgICA8ZGl2IHRpdGxlPVwiVGFiIENcIj5Db250ZW50IEM8L2Rpdj5cbiAgICAgIDwvVGFicz4sXG4gICAgKTtcblxuICAgIGNvbnN0IHRhYnNDb21wb25lbnQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW3JvbGU9XCJ0YWJsaXN0XCJdJyk7XG4gICAgZXhwZWN0KHRhYnNDb21wb25lbnQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdhcHBsaWVzIGNvcnJlY3QgdmFsdWUgcHJvcCB0byBNdWlUYWJzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICByZW5kZXIoXG4gICAgICA8VGFicz5cbiAgICAgICAgPGRpdiB0aXRsZT1cIlRhYiAxXCI+Q29udGVudCAxPC9kaXY+XG4gICAgICAgIDxkaXYgdGl0bGU9XCJUYWIgMlwiPkNvbnRlbnQgMjwvZGl2PlxuICAgICAgPC9UYWJzPixcbiAgICApO1xuXG4gICAgLy8gSW5pdGlhbGx5IGZpcnN0IHRhYiBzaG91bGQgYmUgc2VsZWN0ZWQgKHZhbHVlIDApXG4gICAgY29uc3QgdGFiMSA9IHNjcmVlbi5nZXRCeVJvbGUoJ3RhYicsIHsgbmFtZTogJ1RhYiAxJyB9KTtcbiAgICBleHBlY3QodGFiMSkudG9IYXZlQXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcblxuICAgIC8vIENsaWNrIHNlY29uZCB0YWJcbiAgICBhd2FpdCB1c2VyLmNsaWNrKHNjcmVlbi5nZXRCeVJvbGUoJ3RhYicsIHsgbmFtZTogJ1RhYiAyJyB9KSk7XG4gICAgY29uc3QgdGFiMiA9IHNjcmVlbi5nZXRCeVJvbGUoJ3RhYicsIHsgbmFtZTogJ1RhYiAyJyB9KTtcbiAgICBleHBlY3QodGFiMikudG9IYXZlQXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcbiAgICBleHBlY3QodGFiMSkudG9IYXZlQXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIHdpdGggZW1wdHkgY2hpbGRyZW4gYXJyYXknLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8VGFicz57W119PC9UYWJzPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgbG9uZyB0YWIgdGl0bGVzJywgKCkgPT4ge1xuICAgIHJlbmRlcihcbiAgICAgIDxUYWJzPlxuICAgICAgICA8ZGl2IHRpdGxlPVwiVGhpcyBpcyBhIHZlcnkgbG9uZyB0YWIgdGl0bGUgdGhhdCBzaG91bGQgc3RpbGwgcmVuZGVyIGNvcnJlY3RseVwiPkNvbnRlbnQgMTwvZGl2PlxuICAgICAgICA8ZGl2IHRpdGxlPVwiU2hvcnRcIj5Db250ZW50IDI8L2Rpdj5cbiAgICAgIDwvVGFicz4sXG4gICAgKTtcblxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdUaGlzIGlzIGEgdmVyeSBsb25nIHRhYiB0aXRsZSB0aGF0IHNob3VsZCBzdGlsbCByZW5kZXIgY29ycmVjdGx5JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1Nob3J0JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBRUFJLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFNO0VBQy9CQyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsWUFBTTtJQUMzQyxJQUFBQyxjQUFNLGVBQ0pSLE1BQUEsWUFBQVMsYUFBQSxDQUFDSixLQUFBLENBQUFLLElBQUkscUJBQ0hWLE1BQUEsWUFBQVMsYUFBQTtNQUFLRSxLQUFLLEVBQUM7SUFBTyxHQUFDLFdBQWMsQ0FBQyxlQUNsQ1gsTUFBQSxZQUFBUyxhQUFBO01BQUtFLEtBQUssRUFBQztJQUFPLEdBQUMsV0FBYyxDQUFDLGVBQ2xDWCxNQUFBLFlBQUFTLGFBQUE7TUFBS0UsS0FBSyxFQUFDO0lBQU8sR0FBQyxXQUFjLENBQzdCLENBQ1IsQ0FBQztJQUVEQyxNQUFNLENBQUNDLGNBQU0sQ0FBQ0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFD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
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
- var _react = _interopRequireDefault(require("react"));
7
- var _react2 = require("@testing-library/react");
8
- var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
9
- var _twoChoice = require("../two-choice");
10
- describe('NChoice', function () {
11
- var onChange = jest.fn();
12
- beforeEach(function () {
13
- onChange.mockClear();
14
- });
15
- it('renders radio buttons with vertical direction', function () {
16
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
17
- direction: "vertical",
18
- header: "n-choice-vertical",
19
- value: 'left',
20
- onChange: onChange,
21
- opts: [{
22
- label: 'left',
23
- value: 'left'
24
- }, {
25
- label: 'center',
26
- value: 'center'
27
- }, {
28
- label: 'right',
29
- value: 'right'
30
- }]
31
- }));
32
- expect(_react2.screen.getByText('n-choice-vertical')).toBeInTheDocument();
33
- expect(_react2.screen.getByLabelText('left')).toBeInTheDocument();
34
- expect(_react2.screen.getByLabelText('center')).toBeInTheDocument();
35
- expect(_react2.screen.getByLabelText('right')).toBeInTheDocument();
36
- });
37
- it('shows selected value as checked', function () {
38
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
39
- direction: "vertical",
40
- header: "Options",
41
- value: 'center',
42
- onChange: onChange,
43
- opts: [{
44
- label: 'left',
45
- value: 'left'
46
- }, {
47
- label: 'center',
48
- value: 'center'
49
- }, {
50
- label: 'right',
51
- value: 'right'
52
- }]
53
- }));
54
- var centerRadio = _react2.screen.getByLabelText('center');
55
- expect(centerRadio).toBeChecked();
56
- expect(_react2.screen.getByLabelText('left')).not.toBeChecked();
57
- expect(_react2.screen.getByLabelText('right')).not.toBeChecked();
58
- });
59
- it('calls onChange when user selects a different option', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
60
- var user;
61
- return _regenerator["default"].wrap(function (_context) {
62
- while (1) switch (_context.prev = _context.next) {
63
- case 0:
64
- user = _userEvent["default"].setup();
65
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
66
- direction: "vertical",
67
- header: "Options",
68
- value: 'left',
69
- onChange: onChange,
70
- opts: [{
71
- label: 'left',
72
- value: 'left'
73
- }, {
74
- label: 'center',
75
- value: 'center'
76
- }, {
77
- label: 'right',
78
- value: 'right'
79
- }]
80
- }));
81
- _context.next = 1;
82
- return user.click(_react2.screen.getByLabelText('center'));
83
- case 1:
84
- expect(onChange).toHaveBeenCalledWith('center');
85
- case 2:
86
- case "end":
87
- return _context.stop();
88
- }
89
- }, _callee);
90
- })));
91
- it('renders with horizontal direction', function () {
92
- var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
93
- direction: "horizontal",
94
- header: "Options",
95
- value: 'left',
96
- onChange: onChange,
97
- opts: [{
98
- label: 'left',
99
- value: 'left'
100
- }, {
101
- label: 'right',
102
- value: 'right'
103
- }]
104
- })),
105
- container = _render.container;
106
-
107
- // Check that all options are rendered
108
- expect(_react2.screen.getByLabelText('left')).toBeInTheDocument();
109
- expect(_react2.screen.getByLabelText('right')).toBeInTheDocument();
110
- });
111
- it('handles string options by converting them', function () {
112
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
113
- direction: "vertical",
114
- header: "Options",
115
- value: 'option1',
116
- onChange: onChange,
117
- opts: ['option1', 'option2', 'option3']
118
- }));
119
- expect(_react2.screen.getByLabelText('option1')).toBeInTheDocument();
120
- expect(_react2.screen.getByLabelText('option2')).toBeInTheDocument();
121
- expect(_react2.screen.getByLabelText('option3')).toBeInTheDocument();
122
- });
123
- });
124
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX3R3b0Nob2ljZSIsImRlc2NyaWJlIiwib25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJiZWZvcmVFYWNoIiwibW9ja0NsZWFyIiwiaXQiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiTkNob2ljZSIsImRpcmVjdGlvbiIsImhlYWRlciIsInZhbHVlIiwib3B0cyIsImxhYmVsIiwiZXhwZWN0Iiwic2NyZWVuIiwiZ2V0QnlUZXh0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJnZXRCeUxhYmVsVGV4dCIsImNlbnRlclJhZGlvIiwidG9CZUNoZWNrZWQiLCJub3QiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInVzZXIiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVzZXJFdmVudCIsInNldHVwIiwiY2xpY2siLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInN0b3AiLCJfcmVuZGVyIiwiY29udGFpbmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy90d28tY2hvaWNlLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgdXNlckV2ZW50IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvdXNlci1ldmVudCc7XG5pbXBvcnQgeyBOQ2hvaWNlIH0gZnJvbSAnLi4vdHdvLWNob2ljZSc7XG5cbmRlc2NyaWJlKCdOQ2hvaWNlJywgKCkgPT4ge1xuICBjb25zdCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZS5tb2NrQ2xlYXIoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgcmFkaW8gYnV0dG9ucyB3aXRoIHZlcnRpY2FsIGRpcmVjdGlvbicsICgpID0+IHtcbiAgICByZW5kZXIoXG4gICAgICA8TkNob2ljZVxuICAgICAgICBkaXJlY3Rpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgIGhlYWRlcj1cIm4tY2hvaWNlLXZlcnRpY2FsXCJcbiAgICAgICAgdmFsdWU9eydsZWZ0J31cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICBvcHRzPXtbXG4gICAgICAgICAgeyBsYWJlbDogJ2xlZnQnLCB2YWx1ZTogJ2xlZnQnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2NlbnRlcicsIHZhbHVlOiAnY2VudGVyJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdyaWdodCcsIHZhbHVlOiAncmlnaHQnIH0sXG4gICAgICAgIF19XG4gICAgICAvPixcbiAgICApO1xuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ24tY2hvaWNlLXZlcnRpY2FsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnbGVmdCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ2NlbnRlcicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ3JpZ2h0JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG93cyBzZWxlY3RlZCB2YWx1ZSBhcyBjaGVja2VkJywgKCkgPT4ge1xuICAgIHJlbmRlcihcbiAgICAgIDxOQ2hvaWNlXG4gICAgICAgIGRpcmVjdGlvbj1cInZlcnRpY2FsXCJcbiAgICAgICAgaGVhZGVyPVwiT3B0aW9uc1wiXG4gICAgICAgIHZhbHVlPXsnY2VudGVyJ31cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICBvcHRzPXtbXG4gICAgICAgICAgeyBsYWJlbDogJ2xlZnQnLCB2YWx1ZTogJ2xlZnQnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2NlbnRlcicsIHZhbHVlOiAnY2VudGVyJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdyaWdodCcsIHZhbHVlOiAncmlnaHQnIH0sXG4gICAgICAgIF19XG4gICAgICAvPixcbiAgICApO1xuXG4gICAgY29uc3QgY2VudGVyUmFkaW8gPSBzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ2NlbnRlcicpO1xuICAgIGV4cGVjdChjZW50ZXJSYWRpbykudG9CZUNoZWNrZWQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdsZWZ0JykpLm5vdC50b0JlQ2hlY2tlZCgpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ3JpZ2h0JykpLm5vdC50b0JlQ2hlY2tlZCgpO1xuICB9KTtcblxuICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2hlbiB1c2VyIHNlbGVjdHMgYSBkaWZmZXJlbnQgb3B0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICByZW5kZXIoXG4gICAgICA8TkNob2ljZVxuICAgICAgICBkaXJlY3Rpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgIGhlYWRlcj1cIk9wdGlvbnNcIlxuICAgICAgICB2YWx1ZT17J2xlZnQnfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIG9wdHM9e1tcbiAgICAgICAgICB7IGxhYmVsOiAnbGVmdCcsIHZhbHVlOiAnbGVmdCcgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnY2VudGVyJywgdmFsdWU6ICdjZW50ZXInIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ3JpZ2h0JywgdmFsdWU6ICdyaWdodCcgfSxcbiAgICAgICAgXX1cbiAgICAgIC8+LFxuICAgICk7XG5cbiAgICBhd2FpdCB1c2VyLmNsaWNrKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnY2VudGVyJykpO1xuXG4gICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnY2VudGVyJyk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIHdpdGggaG9yaXpvbnRhbCBkaXJlY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgIDxOQ2hvaWNlXG4gICAgICAgIGRpcmVjdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICBoZWFkZXI9XCJPcHRpb25zXCJcbiAgICAgICAgdmFsdWU9eydsZWZ0J31cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICBvcHRzPXtbXG4gICAgICAgICAgeyBsYWJlbDogJ2xlZnQnLCB2YWx1ZTogJ2xlZnQnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ3JpZ2h0JywgdmFsdWU6ICdyaWdodCcgfSxcbiAgICAgICAgXX1cbiAgICAgIC8+LFxuICAgICk7XG5cbiAgICAvLyBDaGVjayB0aGF0IGFsbCBvcHRpb25zIGFyZSByZW5kZXJlZFxuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ2xlZnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdyaWdodCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnaGFuZGxlcyBzdHJpbmcgb3B0aW9ucyBieSBjb252ZXJ0aW5nIHRoZW0nLCAoKSA9PiB7XG4gICAgcmVuZGVyKFxuICAgICAgPE5DaG9pY2VcbiAgICAgICAgZGlyZWN0aW9uPVwidmVydGljYWxcIlxuICAgICAgICBoZWFkZXI9XCJPcHRpb25zXCJcbiAgICAgICAgdmFsdWU9eydvcHRpb24xJ31cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICBvcHRzPXtbJ29wdGlvbjEnLCAnb3B0aW9uMicsICdvcHRpb24zJ119XG4gICAgICAvPixcbiAgICApO1xuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnb3B0aW9uMScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ29wdGlvbjInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdvcHRpb24zJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBRUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBTTtFQUN4QixJQUFNQyxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7RUFFMUJDLFVBQVUsQ0FBQyxZQUFNO0lBQ2ZILFFBQVEsQ0FBQ0ksU0FBUyxDQUFDLENBQUM7RUFDdEIsQ0FBQyxDQUFDO0VBRUZDLEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxZQUFNO0lBQ3hELElBQUFDLGNBQU0sZUFDSmIsTUFBQSxZQUFBYyxhQUFBLENBQUNULFVBQUEsQ0FBQVUsT0FBTztNQUNOQyxTQUFTLEVBQUMsVUFBVTtNQUNwQkMsTUFBTSxFQUFDLG1CQUFtQjtNQUMxQkMsS0FBSyxFQUFFLE1BQU87TUFDZFgsUUFBUSxFQUFFQSxRQUFTO01BQ25CWSxJQUFJLEVBQUUsQ0FDSjtRQUFFQyxLQUFLLEVBQUUsTUFBTTtRQUFFRixLQUFLLEVBQUU7TUFBTyxDQUFDLEVBQ2hDO1FBQUVFLEtBQUssRUFBRSxRQUFRO1FBQUVGLEtBQUssRUFBRTtNQUFTLENBQUMsRUFDcEM7UUFBRUUsS0FBSyxFQUFFLE9BQU87UUFBRUYsS0FBSyxFQUFFO01BQVEsQ0FBQztJQUNsQyxDQUNILENBQ0gsQ0FBQztJQUVERyxNQUFNLENBQUNDLGNBQU0sQ0FBQ0MsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNqRUgsTUFBTSxDQUFDQyxjQUFNLENBQUNHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDRCxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pESCxNQUFNLENBQUNDLGNBQU0sQ0FBQ0csY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUNELGlCQUFpQixDQUFDLENBQUM7SUFDM0RILE1BQU0sQ0FBQ0MsY0FBTSxDQUFDRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQ0QsaUJBQWlCLENBQUMsQ0FBQztFQUM1RCxDQUFDLENBQUM7RUFFRlosRUFBRSxDQUFDLGlDQUFpQyxFQUFFLFlBQU07SUFDMUMsSUFBQUMsY0FBTSxlQUNKYixNQUFBLFlBQUFjLGFBQUEsQ0FBQ1QsVUFBQSxDQUFBVSxPQUFPO01BQ05DLFNBQVMsRUFBQyxVQUFVO01BQ3BCQyxNQUFNLEVBQUMsU0FBUztNQUNoQkMsS0FBSyxFQUFFLFFBQVM7TUFDaEJYLFFBQVEsRUFBRUEsUUFBUztNQUNuQlksSUFBSSxFQUFFLENBQ0o7UUFBRUMsS0FBSyxFQUFFLE1BQU07UUFBRUYsS0FBSyxFQUFFO01BQU8sQ0FBQyxFQUNoQztRQUFFRSxLQUFLLEVBQUUsUUFBUTtRQUFFRixLQUFLLEVBQUU7TUFBUyxDQUFDLEVBQ3BDO1FBQUVFLEtBQUssRUFBRSxPQUFPO1FBQUVGLEtBQUssRUFBRTtNQUFRLENBQUM7SUFDbEMsQ0FDSCxDQUNILENBQUM7SUFFRCxJQUFNUSxXQUFXLEdBQUdKLGNBQU0sQ0FBQ0csY0FBYyxDQUFDLFFBQVEsQ0FBQztJQUNuREosTUFBTSxDQUFDSyxXQUFXLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7SUFDakNOLE1BQU0sQ0FBQ0MsY0FBTSxDQUFDRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0csR0FBRyxDQUFDRCxXQUFXLENBQUMsQ0FBQztJQUN2RE4sTUFBTSxDQUFDQyxjQUFNLENBQUNHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDRyxHQUFHLENBQUNELFdBQVcsQ0FBQyxDQUFDO0VBQzFELENBQUMsQ0FBQztFQUVGZixFQUFFLENBQUMscURBQXFELG1CQUFBaUIsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUFFLFNBQUFDLFFBQUE7SUFBQSxJQUFBQyxJQUFBO0lBQUEsT0FBQUgsWUFBQSxZQUFBSSxJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQ2xESixJQUFJLEdBQUdLLHFCQUFTLENBQUNDLEtBQUssQ0FBQyxDQUFDO1VBQzlCLElBQUExQixjQUFNLGVBQ0piLE1BQUEsWUFBQWMsYUFBQSxDQUFDVCxVQUFBLENBQUFVLE9BQU87WUFDTkMsU0FBUyxFQUFDLFVBQVU7WUFDcEJDLE1BQU0sRUFBQyxTQUFTO1lBQ2hCQyxLQUFLLEVBQUUsTUFBTztZQUNkWCxRQUFRLEVBQUVBLFFBQVM7WUFDbkJZLElBQUksRUFBRSxDQUNKO2NBQUVDLEtBQUssRUFBRSxNQUFNO2NBQUVGLEtBQUssRUFBRTtZQUFPLENBQUMsRUFDaEM7Y0FBRUUsS0FBSyxFQUFFLFFBQVE7Y0FBRUYsS0FBSyxFQUFFO1lBQVMsQ0FBQyxFQUNwQztjQUFFRSxLQUFLLEVBQUUsT0FBTztjQUFFRixLQUFLLEVBQUU7WUFBUSxDQUFDO1VBQ2xDLENBQ0gsQ0FDSCxDQUFDO1VBQUNpQixRQUFBLENBQUFFLElBQUE7VUFBQSxPQUVJSixJQUFJLENBQUNPLEtBQUssQ0FBQ2xCLGNBQU0sQ0FBQ0csY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQUE7VUFFakRKLE1BQU0sQ0FBQ2QsUUFBUSxDQUFDLENBQUNrQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7UUFBQztRQUFBO1VBQUEsT0FBQU4sUUFBQSxDQUFBTyxJQUFBO01BQUE7SUFBQSxHQUFBVixPQUFBO0VBQUEsQ0FDakQsR0FBQztFQUVGcEIsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLFlBQU07SUFDNUMsSUFBQStCLE9BQUEsR0FBc0IsSUFBQTlCLGNBQU0sZUFDMUJiLE1BQUEsWUFBQWMsYUFBQSxDQUFDVCxVQUFBLENBQUFVLE9BQU87UUFDTkMsU0FBUyxFQUFDLFlBQVk7UUFDdEJDLE1BQU0sRUFBQyxTQUFTO1FBQ2hCQyxLQUFLLEVBQUUsTUFBTztRQUNkWCxRQUFRLEVBQUVBLFFBQVM7UUFDbkJZLElBQUksRUFBRSxDQUNKO1VBQUVDLEtBQUssRUFBRSxNQUFNO1VBQUVGLEtBQUssRUFBRTtRQUFPLENBQUMsRUFDaEM7VUFBRUUsS0FBSyxFQUFFLE9BQU87VUFBRUYsS0FBSyxFQUFFO1FBQVEsQ0FBQztNQUNsQyxDQUNILENBQ0gsQ0FBQztNQVhPMEIsU0FBUyxHQUFBRCxPQUFBLENBQVRDLFNBQVM7O0lBYWpCO0lBQ0F2QixNQUFNLENBQUNDLGNBQU0sQ0FBQ0csY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUNELGlCQUFpQixDQUFDLENBQUM7SUFDekRILE1BQU0sQ0FBQ0MsY0FBTSxDQUFDRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQ0QsaUJBQWlCLENBQUMsQ0FBQztFQUM1RCxDQUFDLENBQUM7RUFFRlosRUFBRSxDQUFDLDJDQUEyQyxFQUFFLFlBQU07SUFDcEQsSUFBQUMsY0FBTSxlQUNKYixNQUFBLFlBQUFjLGFBQUEsQ0FBQ1QsVUFBQSxDQUFBVSxPQUFPO01BQ05DLFNBQVMsRUFBQyxVQUFVO01BQ3BCQyxNQUFNLEVBQUMsU0FBUztNQUNoQkMsS0FBSyxFQUFFLFNBQVU7TUFDakJYLFFBQVEsRUFBRUEsUUFBUztNQUNuQlksSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTO0lBQUUsQ0FDekMsQ0FDSCxDQUFDO0lBRURFLE1BQU0sQ0FBQ0MsY0FBTSxDQUFDRyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQ0QsaUJBQWlCLENBQUMsQ0FBQztJQUM1REgsTUFBTSxDQUFDQyxjQUFNLENBQUNHLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDRCxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVESCxNQUFNLENBQUNDLGNBQU0sQ0FBQ0csY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUNELGlCQUFpQixDQUFDLENBQUM7RUFDOUQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119