@pie-lib/config-ui 11.30.3-next.2 → 11.30.4-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -78
- package/lib/__tests__/alert-dialog.test.js +262 -0
- package/lib/__tests__/checkbox.test.js +227 -0
- package/lib/__tests__/choice-utils.test.js +14 -0
- package/lib/__tests__/form-section.test.js +252 -0
- package/lib/__tests__/help.test.js +270 -0
- package/lib/__tests__/input.test.js +268 -0
- package/lib/__tests__/langs.test.js +541 -0
- package/lib/__tests__/number-text-field-custom.test.js +362 -0
- package/lib/__tests__/number-text-field.test.js +421 -0
- package/lib/__tests__/radio-with-label.test.js +233 -0
- package/lib/__tests__/settings-panel.test.js +184 -0
- package/lib/__tests__/settings.test.js +653 -0
- package/lib/__tests__/tabs.test.js +211 -0
- package/lib/__tests__/two-choice.test.js +124 -0
- package/lib/__tests__/with-stateful-model.test.js +221 -0
- package/lib/alert-dialog.js +36 -43
- package/lib/alert-dialog.js.map +1 -1
- package/lib/checkbox.js +57 -72
- package/lib/checkbox.js.map +1 -1
- package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
- package/lib/choice-configuration/__tests__/index.test.js +253 -0
- package/lib/choice-configuration/feedback-menu.js +30 -65
- package/lib/choice-configuration/feedback-menu.js.map +1 -1
- package/lib/choice-configuration/index.js +203 -263
- package/lib/choice-configuration/index.js.map +1 -1
- package/lib/choice-utils.js +7 -19
- package/lib/choice-utils.js.map +1 -1
- package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
- package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
- package/lib/feedback-config/feedback-selector.js +80 -116
- package/lib/feedback-config/feedback-selector.js.map +1 -1
- package/lib/feedback-config/group.js +27 -41
- package/lib/feedback-config/group.js.map +1 -1
- package/lib/feedback-config/index.js +48 -91
- package/lib/feedback-config/index.js.map +1 -1
- package/lib/form-section.js +32 -34
- package/lib/form-section.js.map +1 -1
- package/lib/help.js +40 -81
- package/lib/help.js.map +1 -1
- package/lib/index.js +2 -32
- package/lib/index.js.map +1 -1
- package/lib/input.js +22 -55
- package/lib/input.js.map +1 -1
- package/lib/inputs.js +62 -96
- package/lib/inputs.js.map +1 -1
- package/lib/langs.js +59 -102
- package/lib/langs.js.map +1 -1
- package/lib/layout/__tests__/config.layout.test.js +70 -0
- package/lib/layout/__tests__/layout-content.test.js +6 -0
- package/lib/layout/config-layout.js +41 -71
- package/lib/layout/config-layout.js.map +1 -1
- package/lib/layout/index.js +1 -4
- package/lib/layout/index.js.map +1 -1
- package/lib/layout/layout-contents.js +73 -104
- package/lib/layout/layout-contents.js.map +1 -1
- package/lib/layout/settings-box.js +28 -57
- package/lib/layout/settings-box.js.map +1 -1
- package/lib/mui-box/index.js +42 -58
- package/lib/mui-box/index.js.map +1 -1
- package/lib/number-text-field-custom.js +80 -162
- package/lib/number-text-field-custom.js.map +1 -1
- package/lib/number-text-field.js +81 -115
- package/lib/number-text-field.js.map +1 -1
- package/lib/radio-with-label.js +31 -32
- package/lib/radio-with-label.js.map +1 -1
- package/lib/settings/display-size.js +17 -33
- package/lib/settings/display-size.js.map +1 -1
- package/lib/settings/index.js +15 -48
- package/lib/settings/index.js.map +1 -1
- package/lib/settings/panel.js +160 -230
- package/lib/settings/panel.js.map +1 -1
- package/lib/settings/settings-radio-label.js +29 -31
- package/lib/settings/settings-radio-label.js.map +1 -1
- package/lib/settings/toggle.js +36 -47
- package/lib/settings/toggle.js.map +1 -1
- package/lib/tabs/index.js +23 -58
- package/lib/tabs/index.js.map +1 -1
- package/lib/tags-input/__tests__/index.test.js +183 -0
- package/lib/tags-input/index.js +51 -100
- package/lib/tags-input/index.js.map +1 -1
- package/lib/two-choice.js +47 -91
- package/lib/two-choice.js.map +1 -1
- package/lib/with-stateful-model.js +9 -32
- package/lib/with-stateful-model.js.map +1 -1
- package/package.json +12 -20
- package/src/__tests__/alert-dialog.test.jsx +283 -0
- package/src/__tests__/checkbox.test.jsx +249 -0
- package/src/__tests__/form-section.test.jsx +334 -0
- package/src/__tests__/help.test.jsx +184 -0
- package/src/__tests__/input.test.jsx +192 -0
- package/src/__tests__/langs.test.jsx +435 -15
- package/src/__tests__/number-text-field-custom.test.jsx +438 -0
- package/src/__tests__/number-text-field.test.jsx +295 -102
- package/src/__tests__/radio-with-label.test.jsx +259 -0
- package/src/__tests__/settings-panel.test.js +66 -83
- package/src/__tests__/settings.test.jsx +515 -0
- package/src/__tests__/tabs.test.jsx +193 -0
- package/src/__tests__/two-choice.test.js +104 -18
- package/src/__tests__/with-stateful-model.test.jsx +145 -0
- package/src/alert-dialog.jsx +21 -19
- package/src/checkbox.jsx +42 -46
- package/src/choice-configuration/__tests__/feedback-menu.test.jsx +157 -4
- package/src/choice-configuration/__tests__/index.test.jsx +198 -56
- package/src/choice-configuration/feedback-menu.jsx +6 -6
- package/src/choice-configuration/index.jsx +201 -196
- package/src/feedback-config/__tests__/feedback-config.test.jsx +130 -60
- package/src/feedback-config/__tests__/feedback-selector.test.jsx +87 -40
- package/src/feedback-config/feedback-selector.jsx +52 -53
- package/src/feedback-config/group.jsx +21 -22
- package/src/feedback-config/index.jsx +27 -29
- package/src/form-section.jsx +26 -18
- package/src/help.jsx +20 -28
- package/src/input.jsx +1 -1
- package/src/inputs.jsx +34 -50
- package/src/langs.jsx +41 -46
- package/src/layout/__tests__/config.layout.test.jsx +55 -38
- package/src/layout/config-layout.jsx +38 -32
- package/src/layout/layout-contents.jsx +38 -39
- package/src/layout/settings-box.jsx +16 -19
- package/src/mui-box/index.jsx +35 -43
- package/src/number-text-field-custom.jsx +30 -36
- package/src/number-text-field.jsx +45 -29
- package/src/radio-with-label.jsx +25 -13
- package/src/settings/display-size.jsx +12 -11
- package/src/settings/panel.jsx +97 -91
- package/src/settings/settings-radio-label.jsx +25 -13
- package/src/settings/toggle.jsx +30 -29
- package/src/tabs/index.jsx +8 -8
- package/src/tags-input/__tests__/index.test.jsx +88 -37
- package/src/tags-input/index.jsx +35 -38
- package/src/two-choice.jsx +15 -19
- package/esm/index.css +0 -847
- package/esm/index.js +0 -213950
- package/esm/index.js.map +0 -1
- package/esm/package.json +0 -3
- package/src/__tests__/__snapshots__/langs.test.jsx.snap +0 -32
- package/src/__tests__/__snapshots__/settings-panel.test.js.snap +0 -115
- package/src/__tests__/__snapshots__/two-choice.test.js.snap +0 -171
- package/src/choice-configuration/__tests__/__snapshots__/feedback-menu.test.jsx.snap +0 -51
- package/src/choice-configuration/__tests__/__snapshots__/index.test.jsx.snap +0 -519
- package/src/feedback-config/__tests__/__snapshots__/feedback-config.test.jsx.snap +0 -27
- package/src/feedback-config/__tests__/__snapshots__/feedback-selector.test.jsx.snap +0 -38
- package/src/layout/__tests__/__snapshots__/config.layout.test.jsx.snap +0 -59
- package/src/tags-input/__tests__/__snapshots__/index.test.jsx.snap +0 -170
|
@@ -0,0 +1,227 @@
|
|
|
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 _checkbox = _interopRequireDefault(require("../checkbox"));
|
|
10
|
+
describe('Checkbox Component', function () {
|
|
11
|
+
var onChange = jest.fn();
|
|
12
|
+
beforeEach(function () {
|
|
13
|
+
onChange.mockClear();
|
|
14
|
+
});
|
|
15
|
+
describe('Rendering', function () {
|
|
16
|
+
it('should render checkbox with label', function () {
|
|
17
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
18
|
+
checked: false,
|
|
19
|
+
onChange: onChange,
|
|
20
|
+
label: "Accept terms"
|
|
21
|
+
}));
|
|
22
|
+
expect(_react2.screen.getByText('Accept terms')).toBeInTheDocument();
|
|
23
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
24
|
+
});
|
|
25
|
+
it('should render checkbox in checked state', function () {
|
|
26
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
27
|
+
checked: true,
|
|
28
|
+
onChange: onChange,
|
|
29
|
+
label: "Accept terms"
|
|
30
|
+
}));
|
|
31
|
+
expect(_react2.screen.getByRole('checkbox')).toBeChecked();
|
|
32
|
+
});
|
|
33
|
+
it('should render checkbox in unchecked state', function () {
|
|
34
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
35
|
+
checked: false,
|
|
36
|
+
onChange: onChange,
|
|
37
|
+
label: "Accept terms"
|
|
38
|
+
}));
|
|
39
|
+
expect(_react2.screen.getByRole('checkbox')).not.toBeChecked();
|
|
40
|
+
});
|
|
41
|
+
it('should render mini checkbox with reduced styling', function () {
|
|
42
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
43
|
+
checked: false,
|
|
44
|
+
onChange: onChange,
|
|
45
|
+
label: "Mini",
|
|
46
|
+
mini: true
|
|
47
|
+
}));
|
|
48
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
49
|
+
expect(_react2.screen.getByText('Mini')).toBeInTheDocument();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('User interaction', function () {
|
|
53
|
+
it('should call onChange when checkbox is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
54
|
+
var user, checkbox;
|
|
55
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
56
|
+
while (1) switch (_context.prev = _context.next) {
|
|
57
|
+
case 0:
|
|
58
|
+
user = _userEvent["default"].setup();
|
|
59
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
60
|
+
checked: false,
|
|
61
|
+
onChange: onChange,
|
|
62
|
+
label: "Accept"
|
|
63
|
+
}));
|
|
64
|
+
checkbox = _react2.screen.getByRole('checkbox');
|
|
65
|
+
_context.next = 1;
|
|
66
|
+
return user.click(checkbox);
|
|
67
|
+
case 1:
|
|
68
|
+
expect(onChange).toHaveBeenCalled();
|
|
69
|
+
case 2:
|
|
70
|
+
case "end":
|
|
71
|
+
return _context.stop();
|
|
72
|
+
}
|
|
73
|
+
}, _callee);
|
|
74
|
+
})));
|
|
75
|
+
it('should call onChange when label is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
76
|
+
var user, label;
|
|
77
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
78
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
79
|
+
case 0:
|
|
80
|
+
user = _userEvent["default"].setup();
|
|
81
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
82
|
+
checked: false,
|
|
83
|
+
onChange: onChange,
|
|
84
|
+
label: "Click label"
|
|
85
|
+
}));
|
|
86
|
+
label = _react2.screen.getByText('Click label');
|
|
87
|
+
_context2.next = 1;
|
|
88
|
+
return user.click(label);
|
|
89
|
+
case 1:
|
|
90
|
+
expect(onChange).toHaveBeenCalled();
|
|
91
|
+
case 2:
|
|
92
|
+
case "end":
|
|
93
|
+
return _context2.stop();
|
|
94
|
+
}
|
|
95
|
+
}, _callee2);
|
|
96
|
+
})));
|
|
97
|
+
});
|
|
98
|
+
describe('Props', function () {
|
|
99
|
+
it('should handle value prop', function () {
|
|
100
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
101
|
+
checked: true,
|
|
102
|
+
onChange: onChange,
|
|
103
|
+
label: "With value",
|
|
104
|
+
value: "option1"
|
|
105
|
+
}));
|
|
106
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
107
|
+
});
|
|
108
|
+
it('should display error styling when error is true', function () {
|
|
109
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
110
|
+
checked: false,
|
|
111
|
+
onChange: onChange,
|
|
112
|
+
label: "Error state",
|
|
113
|
+
error: true
|
|
114
|
+
}));
|
|
115
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
116
|
+
expect(_react2.screen.getByText('Error state')).toBeInTheDocument();
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('Default props', function () {
|
|
120
|
+
it('should have mini default to false', function () {
|
|
121
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
122
|
+
checked: true,
|
|
123
|
+
onChange: onChange,
|
|
124
|
+
label: "Test"
|
|
125
|
+
})),
|
|
126
|
+
container = _render.container;
|
|
127
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
128
|
+
});
|
|
129
|
+
it('should have error default to false', function () {
|
|
130
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
131
|
+
checked: true,
|
|
132
|
+
onChange: onChange,
|
|
133
|
+
label: "Test"
|
|
134
|
+
})),
|
|
135
|
+
container = _render2.container;
|
|
136
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
137
|
+
});
|
|
138
|
+
it('should have value default to empty string', function () {
|
|
139
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
140
|
+
checked: true,
|
|
141
|
+
onChange: onChange,
|
|
142
|
+
label: "Test"
|
|
143
|
+
}));
|
|
144
|
+
expect(_react2.screen.getByRole('checkbox')).toBeInTheDocument();
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('Accessibility', function () {
|
|
148
|
+
it('should have proper label association', function () {
|
|
149
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
150
|
+
checked: false,
|
|
151
|
+
onChange: onChange,
|
|
152
|
+
label: "Accessible label"
|
|
153
|
+
}));
|
|
154
|
+
expect(_react2.screen.getByLabelText('Accessible label')).toBeInTheDocument();
|
|
155
|
+
});
|
|
156
|
+
it('should be keyboard accessible', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
157
|
+
var user, checkbox;
|
|
158
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
159
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
160
|
+
case 0:
|
|
161
|
+
user = _userEvent["default"].setup();
|
|
162
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
163
|
+
checked: false,
|
|
164
|
+
onChange: onChange,
|
|
165
|
+
label: "Keyboard test"
|
|
166
|
+
}));
|
|
167
|
+
checkbox = _react2.screen.getByRole('checkbox');
|
|
168
|
+
checkbox.focus();
|
|
169
|
+
expect(checkbox).toHaveFocus();
|
|
170
|
+
_context3.next = 1;
|
|
171
|
+
return user.keyboard(' ');
|
|
172
|
+
case 1:
|
|
173
|
+
expect(onChange).toHaveBeenCalled();
|
|
174
|
+
case 2:
|
|
175
|
+
case "end":
|
|
176
|
+
return _context3.stop();
|
|
177
|
+
}
|
|
178
|
+
}, _callee3);
|
|
179
|
+
})));
|
|
180
|
+
});
|
|
181
|
+
describe('Multiple checkboxes', function () {
|
|
182
|
+
it('should render multiple independent checkboxes', function () {
|
|
183
|
+
var onChange1 = jest.fn();
|
|
184
|
+
var onChange2 = jest.fn();
|
|
185
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
186
|
+
checked: true,
|
|
187
|
+
onChange: onChange1,
|
|
188
|
+
label: "Option 1"
|
|
189
|
+
}), /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
190
|
+
checked: false,
|
|
191
|
+
onChange: onChange2,
|
|
192
|
+
label: "Option 2"
|
|
193
|
+
})));
|
|
194
|
+
expect(_react2.screen.getByLabelText('Option 1')).toBeChecked();
|
|
195
|
+
expect(_react2.screen.getByLabelText('Option 2')).not.toBeChecked();
|
|
196
|
+
});
|
|
197
|
+
it('should handle independent onChange callbacks', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
198
|
+
var user, onChange1, onChange2;
|
|
199
|
+
return _regenerator["default"].wrap(function (_context4) {
|
|
200
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
201
|
+
case 0:
|
|
202
|
+
user = _userEvent["default"].setup();
|
|
203
|
+
onChange1 = jest.fn();
|
|
204
|
+
onChange2 = jest.fn();
|
|
205
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
206
|
+
checked: true,
|
|
207
|
+
onChange: onChange1,
|
|
208
|
+
label: "Option 1"
|
|
209
|
+
}), /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
210
|
+
checked: false,
|
|
211
|
+
onChange: onChange2,
|
|
212
|
+
label: "Option 2"
|
|
213
|
+
})));
|
|
214
|
+
_context4.next = 1;
|
|
215
|
+
return user.click(_react2.screen.getByLabelText('Option 2'));
|
|
216
|
+
case 1:
|
|
217
|
+
expect(onChange2).toHaveBeenCalled();
|
|
218
|
+
expect(onChange1).not.toHaveBeenCalled();
|
|
219
|
+
case 2:
|
|
220
|
+
case "end":
|
|
221
|
+
return _context4.stop();
|
|
222
|
+
}
|
|
223
|
+
}, _callee4);
|
|
224
|
+
})));
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2NoZWNrYm94IiwiZGVzY3JpYmUiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsImJlZm9yZUVhY2giLCJtb2NrQ2xlYXIiLCJpdCIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJjaGVja2VkIiwibGFiZWwiLCJleHBlY3QiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsImdldEJ5Um9sZSIsInRvQmVDaGVja2VkIiwibm90IiwibWluaSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwidXNlciIsImNoZWNrYm94Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZCIsInN0b3AiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsInZhbHVlIiwiZXJyb3IiLCJfcmVuZGVyIiwiY29udGFpbmVyIiwiX3JlbmRlcjIiLCJnZXRCeUxhYmVsVGV4dCIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwiZm9jdXMiLCJ0b0hhdmVGb2N1cyIsImtleWJvYXJkIiwib25DaGFuZ2UxIiwib25DaGFuZ2UyIiwiRnJhZ21lbnQiLCJfY2FsbGVlNCIsIl9jb250ZXh0NCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vY2hlY2tib3gudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgdXNlckV2ZW50IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvdXNlci1ldmVudCc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnLi4vY2hlY2tib3gnO1xuXG5kZXNjcmliZSgnQ2hlY2tib3ggQ29tcG9uZW50JywgKCkgPT4ge1xuICBjb25zdCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZS5tb2NrQ2xlYXIoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1JlbmRlcmluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlbmRlciBjaGVja2JveCB3aXRoIGxhYmVsJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hlY2tib3ggXG4gICAgICAgICAgY2hlY2tlZD17ZmFsc2V9IFxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX0gXG4gICAgICAgICAgbGFiZWw9XCJBY2NlcHQgdGVybXNcIiBcbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQWNjZXB0IHRlcm1zJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGNoZWNrYm94IGluIGNoZWNrZWQgc3RhdGUnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaGVja2JveCBcbiAgICAgICAgICBjaGVja2VkPXt0cnVlfSBcbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9IFxuICAgICAgICAgIGxhYmVsPVwiQWNjZXB0IHRlcm1zXCIgXG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ2NoZWNrYm94JykpLnRvQmVDaGVja2VkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBjaGVja2JveCBpbiB1bmNoZWNrZWQgc3RhdGUnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaGVja2JveCBcbiAgICAgICAgICBjaGVja2VkPXtmYWxzZX0gXG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfSBcbiAgICAgICAgICBsYWJlbD1cIkFjY2VwdCB0ZXJtc1wiIFxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdjaGVja2JveCcpKS5ub3QudG9CZUNoZWNrZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIG1pbmkgY2hlY2tib3ggd2l0aCByZWR1Y2VkIHN0eWxpbmcnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaGVja2JveCBcbiAgICAgICAgICBjaGVja2VkPXtmYWxzZX0gXG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfSBcbiAgICAgICAgICBsYWJlbD1cIk1pbmlcIiBcbiAgICAgICAgICBtaW5pPXt0cnVlfVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlSb2xlKCdjaGVja2JveCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ01pbmknKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1VzZXIgaW50ZXJhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIG9uQ2hhbmdlIHdoZW4gY2hlY2tib3ggaXMgY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENoZWNrYm94IFxuICAgICAgICAgIGNoZWNrZWQ9e2ZhbHNlfSBcbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9IFxuICAgICAgICAgIGxhYmVsPVwiQWNjZXB0XCIgXG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgY2hlY2tib3ggPSBzY3JlZW4uZ2V0QnlSb2xlKCdjaGVja2JveCcpO1xuICAgICAgYXdhaXQgdXNlci5jbGljayhjaGVja2JveCk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjYWxsIG9uQ2hhbmdlIHdoZW4gbGFiZWwgaXMgY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENoZWNrYm94IFxuICAgICAgICAgIGNoZWNrZWQ9e2ZhbHNlfSBcbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9IFxuICAgICAgICAgIGxhYmVsPVwiQ2xpY2sgbGFiZWxcIiBcbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBsYWJlbCA9IHNjcmVlbi5nZXRCeVRleHQoJ0NsaWNrIGxhYmVsJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKGxhYmVsKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQcm9wcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB2YWx1ZSBwcm9wJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hlY2tib3ggXG4gICAgICAgICAgY2hlY2tlZD17dHJ1ZX0gXG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfSBcbiAgICAgICAgICBsYWJlbD1cIldpdGggdmFsdWVcIlxuICAgICAgICAgIHZhbHVlPVwib3B0aW9uMVwiXG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVJvbGUoJ2NoZWNrYm94JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRpc3BsYXkgZXJyb3Igc3R5bGluZyB3aGVuIGVycm9yIGlzIHRydWUnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxDaGVja2JveCBcbiAgICAgICAgICBjaGVja2VkPXtmYWxzZX0gXG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfSBcbiAgICAgICAgICBsYWJlbD1cIkVycm9yIHN0YXRlXCJcbiAgICAgICAgICBlcnJvcj17dHJ1ZX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdFcnJvciBzdGF0ZScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRGVmYXVsdCBwcm9wcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGhhdmUgbWluaSBkZWZhdWx0IHRvIGZhbHNlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPENoZWNrYm94IFxuICAgICAgICAgIGNoZWNrZWQ9e3RydWV9IFxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX0gXG4gICAgICAgICAgbGFiZWw9XCJUZXN0XCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSBlcnJvciBkZWZhdWx0IHRvIGZhbHNlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPENoZWNrYm94IFxuICAgICAgICAgIGNoZWNrZWQ9e3RydWV9IFxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX0gXG4gICAgICAgICAgbGFiZWw9XCJUZXN0XCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGF2ZSB2YWx1ZSBkZWZhdWx0IHRvIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENoZWNrYm94IFxuICAgICAgICAgIGNoZWNrZWQ9e3RydWV9IFxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX0gXG4gICAgICAgICAgbGFiZWw9XCJUZXN0XCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnY2hlY2tib3gnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FjY2Vzc2liaWxpdHknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBoYXZlIHByb3BlciBsYWJlbCBhc3NvY2lhdGlvbicsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPENoZWNrYm94IFxuICAgICAgICAgIGNoZWNrZWQ9e2ZhbHNlfSBcbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9IFxuICAgICAgICAgIGxhYmVsPVwiQWNjZXNzaWJsZSBsYWJlbFwiXG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnQWNjZXNzaWJsZSBsYWJlbCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBiZSBrZXlib2FyZCBhY2Nlc3NpYmxlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Q2hlY2tib3ggXG4gICAgICAgICAgY2hlY2tlZD17ZmFsc2V9IFxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX0gXG4gICAgICAgICAgbGFiZWw9XCJLZXlib2FyZCB0ZXN0XCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBjaGVja2JveCA9IHNjcmVlbi5nZXRCeVJvbGUoJ2NoZWNrYm94Jyk7XG4gICAgICBjaGVja2JveC5mb2N1cygpO1xuICAgICAgZXhwZWN0KGNoZWNrYm94KS50b0hhdmVGb2N1cygpO1xuXG4gICAgICBhd2FpdCB1c2VyLmtleWJvYXJkKCcgJyk7XG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ011bHRpcGxlIGNoZWNrYm94ZXMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgbXVsdGlwbGUgaW5kZXBlbmRlbnQgY2hlY2tib3hlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlMSA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlMiA9IGplc3QuZm4oKTtcblxuICAgICAgcmVuZGVyKFxuICAgICAgICA8PlxuICAgICAgICAgIDxDaGVja2JveCBcbiAgICAgICAgICAgIGNoZWNrZWQ9e3RydWV9IFxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlMX0gXG4gICAgICAgICAgICBsYWJlbD1cIk9wdGlvbiAxXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxDaGVja2JveCBcbiAgICAgICAgICAgIGNoZWNrZWQ9e2ZhbHNlfSBcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZTJ9IFxuICAgICAgICAgICAgbGFiZWw9XCJPcHRpb24gMlwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC8+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnT3B0aW9uIDEnKSkudG9CZUNoZWNrZWQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ09wdGlvbiAyJykpLm5vdC50b0JlQ2hlY2tlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgaW5kZXBlbmRlbnQgb25DaGFuZ2UgY2FsbGJhY2tzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgY29uc3Qgb25DaGFuZ2UxID0gamVzdC5mbigpO1xuICAgICAgY29uc3Qgb25DaGFuZ2UyID0gamVzdC5mbigpO1xuXG4gICAgICByZW5kZXIoXG4gICAgICAgIDw+XG4gICAgICAgICAgPENoZWNrYm94IFxuICAgICAgICAgICAgY2hlY2tlZD17dHJ1ZX0gXG4gICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2UxfSBcbiAgICAgICAgICAgIGxhYmVsPVwiT3B0aW9uIDFcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPENoZWNrYm94IFxuICAgICAgICAgICAgY2hlY2tlZD17ZmFsc2V9IFxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlMn0gXG4gICAgICAgICAgICBsYWJlbD1cIk9wdGlvbiAyXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8Lz4sXG4gICAgICApO1xuXG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKHNjcmVlbi5nZXRCeUxhYmVsVGV4dCgnT3B0aW9uIDInKSk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZTIpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIGV4cGVjdChvbkNoYW5nZTEpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUFJLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxZQUFN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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _choiceUtils = require("../choice-utils");
|
|
4
|
+
describe('firstAvailableIndex', function () {
|
|
5
|
+
var assert = function assert(values, index, expected) {
|
|
6
|
+
it("[".concat(values.join(','), "], ").concat(index, " ==> ").concat(expected), function () {
|
|
7
|
+
expect((0, _choiceUtils.firstAvailableIndex)(['0'], 0)).toEqual('1');
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
assert(['0'], 0, '1');
|
|
11
|
+
assert(['0', '1', '2'], 0, '3');
|
|
12
|
+
assert(['0', '1', '2'], 100, '100');
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hvaWNlVXRpbHMiLCJyZXF1aXJlIiwiZGVzY3JpYmUiLCJhc3NlcnQiLCJ2YWx1ZXMiLCJpbmRleCIsImV4cGVjdGVkIiwiaXQiLCJjb25jYXQiLCJqb2luIiwiZXhwZWN0IiwiZmlyc3RBdmFpbGFibGVJbmRleCIsInRvRXF1YWwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2Nob2ljZS11dGlscy50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0QXZhaWxhYmxlSW5kZXggfSBmcm9tICcuLi9jaG9pY2UtdXRpbHMnO1xuXG5kZXNjcmliZSgnZmlyc3RBdmFpbGFibGVJbmRleCcsICgpID0+IHtcbiAgY29uc3QgYXNzZXJ0ID0gKHZhbHVlcywgaW5kZXgsIGV4cGVjdGVkKSA9PiB7XG4gICAgaXQoYFske3ZhbHVlcy5qb2luKCcsJyl9XSwgJHtpbmRleH0gPT0+ICR7ZXhwZWN0ZWR9YCwgKCkgPT4ge1xuICAgICAgZXhwZWN0KGZpcnN0QXZhaWxhYmxlSW5kZXgoWycwJ10sIDApKS50b0VxdWFsKCcxJyk7XG4gICAgfSk7XG4gIH07XG4gIGFzc2VydChbJzAnXSwgMCwgJzEnKTtcbiAgYXNzZXJ0KFsnMCcsICcxJywgJzInXSwgMCwgJzMnKTtcbiAgYXNzZXJ0KFsnMCcsICcxJywgJzInXSwgMTAwLCAnMTAwJyk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFBQSxZQUFBLEdBQUFDLE9BQUE7QUFFQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLFlBQU07RUFDcEMsSUFBTUMsTUFBTSxHQUFHLFNBQVRBLE1BQU1BLENBQUlDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxRQUFRLEVBQUs7SUFDMUNDLEVBQUUsS0FBQUMsTUFBQSxDQUFLSixNQUFNLENBQUNLLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBQUQsTUFBQSxDQUFNSCxLQUFLLFdBQUFHLE1BQUEsQ0FBUUYsUUFBUSxHQUFJLFlBQU07TUFDMURJLE1BQU0sQ0FBQyxJQUFBQyxnQ0FBbUIsRUFBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDcEQsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEVCxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQ3JCQSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7RUFDL0JBLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQztBQUNyQyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _react2 = require("@testing-library/react");
|
|
6
|
+
var _formSection = _interopRequireDefault(require("../form-section"));
|
|
7
|
+
describe('FormSection Component', function () {
|
|
8
|
+
describe('Rendering', function () {
|
|
9
|
+
it('should render with label and children', function () {
|
|
10
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
11
|
+
label: "Settings"
|
|
12
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Child content")));
|
|
13
|
+
expect(_react2.screen.getByText('Settings')).toBeInTheDocument();
|
|
14
|
+
expect(_react2.screen.getByText('Child content')).toBeInTheDocument();
|
|
15
|
+
});
|
|
16
|
+
it('should render label as subtitle1 typography', function () {
|
|
17
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
18
|
+
label: "Configuration"
|
|
19
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
20
|
+
container = _render.container;
|
|
21
|
+
var typography = container.querySelector('[class*="MuiTypography"]');
|
|
22
|
+
expect(typography).toBeInTheDocument();
|
|
23
|
+
});
|
|
24
|
+
it('should render with custom className', function () {
|
|
25
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
26
|
+
label: "Custom",
|
|
27
|
+
className: "custom-class"
|
|
28
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
29
|
+
container = _render2.container;
|
|
30
|
+
expect(container.querySelector('.custom-class')).toBeInTheDocument();
|
|
31
|
+
});
|
|
32
|
+
it('should render multiple children', function () {
|
|
33
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
34
|
+
label: "Multiple Children"
|
|
35
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "First child"), /*#__PURE__*/_react["default"].createElement("div", null, "Second child"), /*#__PURE__*/_react["default"].createElement("div", null, "Third child")));
|
|
36
|
+
expect(_react2.screen.getByText('First child')).toBeInTheDocument();
|
|
37
|
+
expect(_react2.screen.getByText('Second child')).toBeInTheDocument();
|
|
38
|
+
expect(_react2.screen.getByText('Third child')).toBeInTheDocument();
|
|
39
|
+
});
|
|
40
|
+
it('should render with single child', function () {
|
|
41
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
42
|
+
label: "Single Child"
|
|
43
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
44
|
+
type: "text",
|
|
45
|
+
placeholder: "Input"
|
|
46
|
+
})));
|
|
47
|
+
expect(_react2.screen.getByPlaceholderText('Input')).toBeInTheDocument();
|
|
48
|
+
});
|
|
49
|
+
it('should render with complex child components', function () {
|
|
50
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
51
|
+
label: "Complex"
|
|
52
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", null, "Name:"), /*#__PURE__*/_react["default"].createElement("input", {
|
|
53
|
+
type: "text",
|
|
54
|
+
placeholder: "Enter name"
|
|
55
|
+
})), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("label", null, "Email:"), /*#__PURE__*/_react["default"].createElement("input", {
|
|
56
|
+
type: "email",
|
|
57
|
+
placeholder: "Enter email"
|
|
58
|
+
}))));
|
|
59
|
+
expect(_react2.screen.getByPlaceholderText('Enter name')).toBeInTheDocument();
|
|
60
|
+
expect(_react2.screen.getByPlaceholderText('Enter email')).toBeInTheDocument();
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe('Labels', function () {
|
|
64
|
+
it('should display different labels', function () {
|
|
65
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
66
|
+
label: "First Label"
|
|
67
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
68
|
+
rerender = _render3.rerender;
|
|
69
|
+
expect(_react2.screen.getByText('First Label')).toBeInTheDocument();
|
|
70
|
+
rerender(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
71
|
+
label: "Second Label"
|
|
72
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content")));
|
|
73
|
+
expect(_react2.screen.getByText('Second Label')).toBeInTheDocument();
|
|
74
|
+
expect(_react2.screen.queryByText('First Label')).not.toBeInTheDocument();
|
|
75
|
+
});
|
|
76
|
+
it('should handle empty label', function () {
|
|
77
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
78
|
+
label: ""
|
|
79
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
80
|
+
container = _render4.container;
|
|
81
|
+
expect(container.querySelector('[class*="MuiTypography"]')).toBeInTheDocument();
|
|
82
|
+
expect(_react2.screen.getByText('Content')).toBeInTheDocument();
|
|
83
|
+
});
|
|
84
|
+
it('should handle long labels', function () {
|
|
85
|
+
var longLabel = 'This is a very long label that should wrap properly within the form section';
|
|
86
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
87
|
+
label: longLabel
|
|
88
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content")));
|
|
89
|
+
expect(_react2.screen.getByText(longLabel)).toBeInTheDocument();
|
|
90
|
+
});
|
|
91
|
+
it('should handle special characters in labels', function () {
|
|
92
|
+
var specialLabel = 'Settings & Configuration < Advanced > Test @ #1';
|
|
93
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
94
|
+
label: specialLabel
|
|
95
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content")));
|
|
96
|
+
expect(_react2.screen.getByText(specialLabel)).toBeInTheDocument();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('Styling and Layout', function () {
|
|
100
|
+
it('should apply default spacing', function () {
|
|
101
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
102
|
+
label: "Spaced"
|
|
103
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
104
|
+
container = _render5.container;
|
|
105
|
+
var formSection = container.querySelector('[class*="MuiBox"], div');
|
|
106
|
+
expect(formSection).toBeInTheDocument();
|
|
107
|
+
});
|
|
108
|
+
it('should apply labelExtraStyle to the label', function () {
|
|
109
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
110
|
+
label: "Styled Label",
|
|
111
|
+
labelExtraStyle: {
|
|
112
|
+
color: 'red',
|
|
113
|
+
fontWeight: 'bold'
|
|
114
|
+
}
|
|
115
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
116
|
+
container = _render6.container;
|
|
117
|
+
var typography = container.querySelector('[class*="MuiTypography"]');
|
|
118
|
+
expect(typography).toHaveStyle('color: red');
|
|
119
|
+
expect(typography).toHaveStyle('fontWeight: bold');
|
|
120
|
+
});
|
|
121
|
+
it('should apply multiple labelExtraStyle properties', function () {
|
|
122
|
+
var extraStyle = {
|
|
123
|
+
fontSize: '18px',
|
|
124
|
+
margin: '10px',
|
|
125
|
+
padding: '5px'
|
|
126
|
+
};
|
|
127
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
128
|
+
label: "Multi-styled",
|
|
129
|
+
labelExtraStyle: extraStyle
|
|
130
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
131
|
+
container = _render7.container;
|
|
132
|
+
var typography = container.querySelector('[class*="MuiTypography"]');
|
|
133
|
+
expect(typography).toHaveStyle('fontSize: 18px');
|
|
134
|
+
expect(typography).toHaveStyle('margin: 10px');
|
|
135
|
+
expect(typography).toHaveStyle('padding: 5px');
|
|
136
|
+
});
|
|
137
|
+
it('should handle no labelExtraStyle', function () {
|
|
138
|
+
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
139
|
+
label: "No Extra Style"
|
|
140
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
141
|
+
container = _render8.container;
|
|
142
|
+
expect(container.querySelector('[class*="MuiTypography"]')).toBeInTheDocument();
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
describe('CSS classes', function () {
|
|
146
|
+
it('should support multiple custom classes', function () {
|
|
147
|
+
var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
148
|
+
label: "Test",
|
|
149
|
+
className: "class1 class2 class3"
|
|
150
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
151
|
+
container = _render9.container;
|
|
152
|
+
var element = container.querySelector('.class1.class2.class3');
|
|
153
|
+
expect(element).toBeInTheDocument();
|
|
154
|
+
});
|
|
155
|
+
it('should work without custom className', function () {
|
|
156
|
+
var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
157
|
+
label: "Test"
|
|
158
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
159
|
+
container = _render0.container;
|
|
160
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
describe('Content variations', function () {
|
|
164
|
+
it('should render form inputs as children', function () {
|
|
165
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
166
|
+
label: "Form Inputs"
|
|
167
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
168
|
+
type: "text",
|
|
169
|
+
placeholder: "Text input"
|
|
170
|
+
}), /*#__PURE__*/_react["default"].createElement("input", {
|
|
171
|
+
type: "number",
|
|
172
|
+
placeholder: "Number input"
|
|
173
|
+
}), /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
174
|
+
placeholder: "Text area"
|
|
175
|
+
})));
|
|
176
|
+
expect(_react2.screen.getByPlaceholderText('Text input')).toBeInTheDocument();
|
|
177
|
+
expect(_react2.screen.getByPlaceholderText('Number input')).toBeInTheDocument();
|
|
178
|
+
expect(_react2.screen.getByPlaceholderText('Text area')).toBeInTheDocument();
|
|
179
|
+
});
|
|
180
|
+
it('should render lists as children', function () {
|
|
181
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
182
|
+
label: "Options"
|
|
183
|
+
}, /*#__PURE__*/_react["default"].createElement("ul", null, /*#__PURE__*/_react["default"].createElement("li", null, "Option 1"), /*#__PURE__*/_react["default"].createElement("li", null, "Option 2"), /*#__PURE__*/_react["default"].createElement("li", null, "Option 3"))));
|
|
184
|
+
expect(_react2.screen.getByText('Option 1')).toBeInTheDocument();
|
|
185
|
+
expect(_react2.screen.getByText('Option 2')).toBeInTheDocument();
|
|
186
|
+
expect(_react2.screen.getByText('Option 3')).toBeInTheDocument();
|
|
187
|
+
});
|
|
188
|
+
it('should render buttons as children', function () {
|
|
189
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
190
|
+
label: "Actions"
|
|
191
|
+
}, /*#__PURE__*/_react["default"].createElement("button", null, "Save"), /*#__PURE__*/_react["default"].createElement("button", null, "Cancel")));
|
|
192
|
+
expect(_react2.screen.getByRole('button', {
|
|
193
|
+
name: 'Save'
|
|
194
|
+
})).toBeInTheDocument();
|
|
195
|
+
expect(_react2.screen.getByRole('button', {
|
|
196
|
+
name: 'Cancel'
|
|
197
|
+
})).toBeInTheDocument();
|
|
198
|
+
});
|
|
199
|
+
it('should render nested form sections', function () {
|
|
200
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
201
|
+
label: "Outer"
|
|
202
|
+
}, /*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
203
|
+
label: "Inner"
|
|
204
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Nested content"))));
|
|
205
|
+
expect(_react2.screen.getByText('Outer')).toBeInTheDocument();
|
|
206
|
+
expect(_react2.screen.getByText('Inner')).toBeInTheDocument();
|
|
207
|
+
expect(_react2.screen.getByText('Nested content')).toBeInTheDocument();
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
describe('Edge cases', function () {
|
|
211
|
+
it('should render with conditional children', function () {
|
|
212
|
+
var showContent = true;
|
|
213
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
214
|
+
label: "Conditional"
|
|
215
|
+
}, showContent && /*#__PURE__*/_react["default"].createElement("div", null, "Visible"), !showContent && /*#__PURE__*/_react["default"].createElement("div", null, "Hidden")));
|
|
216
|
+
expect(_react2.screen.getByText('Visible')).toBeInTheDocument();
|
|
217
|
+
expect(_react2.screen.queryByText('Hidden')).not.toBeInTheDocument();
|
|
218
|
+
});
|
|
219
|
+
it('should update when children change', function () {
|
|
220
|
+
var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
221
|
+
label: "Dynamic"
|
|
222
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Initial content"))),
|
|
223
|
+
rerender = _render1.rerender;
|
|
224
|
+
expect(_react2.screen.getByText('Initial content')).toBeInTheDocument();
|
|
225
|
+
rerender(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
226
|
+
label: "Dynamic"
|
|
227
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Updated content")));
|
|
228
|
+
expect(_react2.screen.queryByText('Initial content')).not.toBeInTheDocument();
|
|
229
|
+
expect(_react2.screen.getByText('Updated content')).toBeInTheDocument();
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
describe('Accessibility', function () {
|
|
233
|
+
it('should have proper heading hierarchy', function () {
|
|
234
|
+
var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
235
|
+
label: "Accessible Section"
|
|
236
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, "Content"))),
|
|
237
|
+
container = _render10.container;
|
|
238
|
+
var typography = container.querySelector('[class*="MuiTypography"]');
|
|
239
|
+
expect(typography).toBeInTheDocument();
|
|
240
|
+
});
|
|
241
|
+
it('should be properly semantically structured', function () {
|
|
242
|
+
var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_formSection["default"], {
|
|
243
|
+
label: "Semantic"
|
|
244
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
245
|
+
type: "text"
|
|
246
|
+
}))),
|
|
247
|
+
container = _render11.container;
|
|
248
|
+
expect(container.querySelector('div')).toBeInTheDocument();
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfZm9ybVNlY3Rpb24iLCJkZXNjcmliZSIsIml0IiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImxhYmVsIiwiZXhwZWN0Iiwic2NyZWVuIiwiZ2V0QnlUZXh0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJfcmVuZGVyIiwiY29udGFpbmVyIiwidHlwb2dyYXBoeSIsInF1ZXJ5U2VsZWN0b3IiLCJfcmVuZGVyMiIsImNsYXNzTmFtZSIsInR5cGUiLCJwbGFjZWhvbGRlciIsImdldEJ5UGxhY2Vob2xkZXJUZXh0IiwiX3JlbmRlcjMiLCJyZXJlbmRlciIsInF1ZXJ5QnlUZXh0Iiwibm90IiwiX3JlbmRlcjQiLCJsb25nTGFiZWwiLCJzcGVjaWFsTGFiZWwiLCJfcmVuZGVyNSIsImZvcm1TZWN0aW9uIiwiX3JlbmRlcjYiLCJsYWJlbEV4dHJhU3R5bGUiLCJjb2xvciIsImZvbnRXZWlnaHQiLCJ0b0hhdmVTdHlsZSIsImV4dHJhU3R5bGUiLCJmb250U2l6ZSIsIm1hcmdpbiIsInBhZGRpbmciLCJfcmVuZGVyNyIsIl9yZW5kZXI4IiwiX3JlbmRlcjkiLCJlbGVtZW50IiwiX3JlbmRlcjAiLCJmaXJzdENoaWxkIiwiZ2V0QnlSb2xlIiwibmFtZSIsInNob3dDb250ZW50IiwiX3JlbmRlcjEiLCJfcmVuZGVyMTAiLCJfcmVuZGVyMTEiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2Zvcm0tc2VjdGlvbi50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCBGb3JtU2VjdGlvbiBmcm9tICcuLi9mb3JtLXNlY3Rpb24nO1xuXG5kZXNjcmliZSgnRm9ybVNlY3Rpb24gQ29tcG9uZW50JywgKCkgPT4ge1xuICBkZXNjcmliZSgnUmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGggbGFiZWwgYW5kIGNoaWxkcmVuJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTZXR0aW5nc1wiPlxuICAgICAgICAgIDxkaXY+Q2hpbGQgY29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdTZXR0aW5ncycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0NoaWxkIGNvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGxhYmVsIGFzIHN1YnRpdGxlMSB0eXBvZ3JhcGh5JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQ29uZmlndXJhdGlvblwiPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR5cG9ncmFwaHkgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aVR5cG9ncmFwaHlcIl0nKTtcbiAgICAgIGV4cGVjdCh0eXBvZ3JhcGh5KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aCBjdXN0b20gY2xhc3NOYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQ3VzdG9tXCIgY2xhc3NOYW1lPVwiY3VzdG9tLWNsYXNzXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuY3VzdG9tLWNsYXNzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBtdWx0aXBsZSBjaGlsZHJlbicsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiTXVsdGlwbGUgQ2hpbGRyZW5cIj5cbiAgICAgICAgICA8ZGl2PkZpcnN0IGNoaWxkPC9kaXY+XG4gICAgICAgICAgPGRpdj5TZWNvbmQgY2hpbGQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlRoaXJkIGNoaWxkPC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0ZpcnN0IGNoaWxkJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnU2Vjb25kIGNoaWxkJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVGhpcmQgY2hpbGQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGggc2luZ2xlIGNoaWxkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTaW5nbGUgQ2hpbGRcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIklucHV0XCIgLz5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5UGxhY2Vob2xkZXJUZXh0KCdJbnB1dCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgd2l0aCBjb21wbGV4IGNoaWxkIGNvbXBvbmVudHMnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIkNvbXBsZXhcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsPk5hbWU6PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgbmFtZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbD5FbWFpbDo8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgZW1haWxcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ0VudGVyIG5hbWUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ0VudGVyIGVtYWlsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdMYWJlbHMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBkaXNwbGF5IGRpZmZlcmVudCBsYWJlbHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIkZpcnN0IExhYmVsXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0ZpcnN0IExhYmVsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIHJlcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTZWNvbmQgTGFiZWxcIj5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnU2Vjb25kIExhYmVsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdGaXJzdCBMYWJlbCcpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVtcHR5IGxhYmVsJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPVwiTXVpVHlwb2dyYXBoeVwiXScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0NvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGxvbmcgbGFiZWxzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbG9uZ0xhYmVsID0gJ1RoaXMgaXMgYSB2ZXJ5IGxvbmcgbGFiZWwgdGhhdCBzaG91bGQgd3JhcCBwcm9wZXJseSB3aXRoaW4gdGhlIGZvcm0gc2VjdGlvbic7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD17bG9uZ0xhYmVsfT5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dChsb25nTGFiZWwpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGxhYmVscycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNwZWNpYWxMYWJlbCA9ICdTZXR0aW5ncyAmIENvbmZpZ3VyYXRpb24gPCBBZHZhbmNlZCA+IFRlc3QgQCAjMSc7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD17c3BlY2lhbExhYmVsfT5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dChzcGVjaWFsTGFiZWwpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU3R5bGluZyBhbmQgTGF5b3V0JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYXBwbHkgZGVmYXVsdCBzcGFjaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiU3BhY2VkXCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZm9ybVNlY3Rpb24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aUJveFwiXSwgZGl2Jyk7XG4gICAgICBleHBlY3QoZm9ybVNlY3Rpb24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFwcGx5IGxhYmVsRXh0cmFTdHlsZSB0byB0aGUgbGFiZWwnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gXG4gICAgICAgICAgbGFiZWw9XCJTdHlsZWQgTGFiZWxcIiBcbiAgICAgICAgICBsYWJlbEV4dHJhU3R5bGU9e3sgY29sb3I6ICdyZWQnLCBmb250V2VpZ2h0OiAnYm9sZCcgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHR5cG9ncmFwaHkgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aVR5cG9ncmFwaHlcIl0nKTtcbiAgICAgIGV4cGVjdCh0eXBvZ3JhcGh5KS50b0hhdmVTdHlsZSgnY29sb3I6IHJlZCcpO1xuICAgICAgZXhwZWN0KHR5cG9ncmFwaHkpLnRvSGF2ZVN0eWxlKCdmb250V2VpZ2h0OiBib2xkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFwcGx5IG11bHRpcGxlIGxhYmVsRXh0cmFTdHlsZSBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZXh0cmFTdHlsZSA9IHtcbiAgICAgICAgZm9udFNpemU6ICcxOHB4JyxcbiAgICAgICAgbWFyZ2luOiAnMTBweCcsXG4gICAgICAgIHBhZGRpbmc6ICc1cHgnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIFxuICAgICAgICAgIGxhYmVsPVwiTXVsdGktc3R5bGVkXCIgXG4gICAgICAgICAgbGFiZWxFeHRyYVN0eWxlPXtleHRyYVN0eWxlfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdHlwb2dyYXBoeSA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPVwiTXVpVHlwb2dyYXBoeVwiXScpO1xuICAgICAgZXhwZWN0KHR5cG9ncmFwaHkpLnRvSGF2ZVN0eWxlKCdmb250U2l6ZTogMThweCcpO1xuICAgICAgZXhwZWN0KHR5cG9ncmFwaHkpLnRvSGF2ZVN0eWxlKCdtYXJnaW46IDEwcHgnKTtcbiAgICAgIGV4cGVjdCh0eXBvZ3JhcGh5KS50b0hhdmVTdHlsZSgncGFkZGluZzogNXB4Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBubyBsYWJlbEV4dHJhU3R5bGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJObyBFeHRyYSBTdHlsZVwiPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignW2NsYXNzKj1cIk11aVR5cG9ncmFwaHlcIl0nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0NTUyBjbGFzc2VzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBjdXN0b20gY2xhc3NlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIlRlc3RcIiBjbGFzc05hbWU9XCJjbGFzczEgY2xhc3MyIGNsYXNzM1wiPlxuICAgICAgICAgIDxkaXY+Q29udGVudDwvZGl2PlxuICAgICAgICA8L0Zvcm1TZWN0aW9uPixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLmNsYXNzMS5jbGFzczIuY2xhc3MzJyk7XG4gICAgICBleHBlY3QoZWxlbWVudCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgd29yayB3aXRob3V0IGN1c3RvbSBjbGFzc05hbWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJUZXN0XCI+XG4gICAgICAgICAgPGRpdj5Db250ZW50PC9kaXY+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQ29udGVudCB2YXJpYXRpb25zJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVuZGVyIGZvcm0gaW5wdXRzIGFzIGNoaWxkcmVuJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJGb3JtIElucHV0c1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiVGV4dCBpbnB1dFwiIC8+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBwbGFjZWhvbGRlcj1cIk51bWJlciBpbnB1dFwiIC8+XG4gICAgICAgICAgPHRleHRhcmVhIHBsYWNlaG9sZGVyPVwiVGV4dCBhcmVhXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5UGxhY2Vob2xkZXJUZXh0KCdUZXh0IGlucHV0JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5UGxhY2Vob2xkZXJUZXh0KCdOdW1iZXIgaW5wdXQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlQbGFjZWhvbGRlclRleHQoJ1RleHQgYXJlYScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgbGlzdHMgYXMgY2hpbGRyZW4nLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIk9wdGlvbnNcIj5cbiAgICAgICAgICA8dWw+XG4gICAgICAgICAgICA8bGk+T3B0aW9uIDE8L2xpPlxuICAgICAgICAgICAgPGxpPk9wdGlvbiAyPC9saT5cbiAgICAgICAgICAgIDxsaT5PcHRpb24gMzwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnT3B0aW9uIDEnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdPcHRpb24gMicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ09wdGlvbiAzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBidXR0b25zIGFzIGNoaWxkcmVuJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJBY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbj5TYXZlPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnU2F2ZScgfSkpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnQ2FuY2VsJyB9KSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIG5lc3RlZCBmb3JtIHNlY3Rpb25zJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJPdXRlclwiPlxuICAgICAgICAgIDxGb3JtU2VjdGlvbiBsYWJlbD1cIklubmVyXCI+XG4gICAgICAgICAgICA8ZGl2Pk5lc3RlZCBjb250ZW50PC9kaXY+XG4gICAgICAgICAgPC9Gb3JtU2VjdGlvbj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnT3V0ZXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdJbm5lcicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ05lc3RlZCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFZGdlIGNhc2VzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVuZGVyIHdpdGggY29uZGl0aW9uYWwgY2hpbGRyZW4nLCAoKSA9PiB7XG4gICAgICBjb25zdCBzaG93Q29udGVudCA9IHRydWU7XG5cbiAgICAgIHJlbmRlcihcbiAgICAgICAgPEZvcm1TZWN0aW9uIGxhYmVsPVwiQ29uZGl0aW9uYWxcIj5cbiAgICAgICAgICB7c2hvd0NvbnRlbnQgJiYgPGRpdj5WaXNpYmxlPC9kaXY+fVxuICAgICAgICAgIHshc2hvd0NvbnRlbnQgJiYgPGRpdj5IaWRkZW48L2Rpdj59XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1Zpc2libGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRleHQoJ0hpZGRlbicpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdXBkYXRlIHdoZW4gY2hpbGRyZW4gY2hhbmdlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJEeW5hbWljXCI+XG4gICAgICAgICAgPGRpdj5Jbml0aWFsIGNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSW5pdGlhbCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIHJlcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJEeW5hbWljXCI+XG4gICAgICAgICAgPGRpdj5VcGRhdGVkIGNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdJbml0aWFsIGNvbnRlbnQnKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVXBkYXRlZCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBY2Nlc3NpYmlsaXR5JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgaGF2ZSBwcm9wZXIgaGVhZGluZyBoaWVyYXJjaHknLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJBY2Nlc3NpYmxlIFNlY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj5cbiAgICAgICAgPC9Gb3JtU2VjdGlvbj4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCB0eXBvZ3JhcGh5ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ1tjbGFzcyo9XCJNdWlUeXBvZ3JhcGh5XCJdJyk7XG4gICAgICBleHBlY3QodHlwb2dyYXBoeSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYmUgcHJvcGVybHkgc2VtYW50aWNhbGx5IHN0cnVjdHVyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8Rm9ybVNlY3Rpb24gbGFiZWw9XCJTZW1hbnRpY1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIC8+XG4gICAgICAgIDwvRm9ybVNlY3Rpb24+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdkaXYnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUFHLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxZQUFNO0VBQ3RDQSxRQUFRLENBQUMsV0FBVyxFQUFFLFlBQU07SUFDMUJDLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxZQUFNO01BQ2hELElBQUFDLGNBQU0sZUFDSlAsTUFBQSxZQUFBUSxhQUFBLENBQUNKLFlBQUEsV0FBVztRQUFDSyxLQUFLLEVBQUM7TUFBVSxnQkFDM0JULE1BQUEsWUFBQVEsYUFBQSxjQUFLLGVBQWtCLENBQ1osQ0FDZixDQUFDO01BRURFLE1BQU0sQ0FBQ0MsY0FBTSxDQUFDQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztNQUN4REgsTUFBTSxDQUFDQyxjQUFNLENBQUNDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQztJQUVGUCxFQUFFLENBQUMsNkNBQTZDLEVBQUUsWUFBTTtNQUN0RCxJQUFB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
|