@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,270 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
- var _react = _interopRequireDefault(require("react"));
9
- var _react2 = require("@testing-library/react");
10
- var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
11
- var _help = _interopRequireWildcard(require("../help"));
12
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
13
- describe('HelpButton', function () {
14
- it('renders help icon button', function () {
15
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpButton, null));
16
- var button = _react2.screen.getByRole('button');
17
- expect(button).toBeInTheDocument();
18
- });
19
- it('calls onClick when clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
20
- var user, onClick, button;
21
- return _regenerator["default"].wrap(function (_context) {
22
- while (1) switch (_context.prev = _context.next) {
23
- case 0:
24
- user = _userEvent["default"].setup();
25
- onClick = jest.fn();
26
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpButton, {
27
- onClick: onClick
28
- }));
29
- button = _react2.screen.getByRole('button');
30
- _context.next = 1;
31
- return user.click(button);
32
- case 1:
33
- expect(onClick).toHaveBeenCalledTimes(1);
34
- case 2:
35
- case "end":
36
- return _context.stop();
37
- }
38
- }, _callee);
39
- })));
40
- it('renders with large size', function () {
41
- var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpButton, null)),
42
- container = _render.container;
43
- var button = container.querySelector('button[class*="sizeLarge"]');
44
- expect(button || _react2.screen.getByRole('button')).toBeInTheDocument();
45
- });
46
- });
47
- describe('HelpDialog', function () {
48
- var defaultProps = {
49
- open: true,
50
- onClose: jest.fn(),
51
- title: 'Help Title',
52
- children: 'Help content here'
53
- };
54
- beforeEach(function () {
55
- jest.clearAllMocks();
56
- });
57
- it('renders when open is true', function () {
58
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, defaultProps));
59
- expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
60
- expect(_react2.screen.getByText('Help content here')).toBeInTheDocument();
61
- });
62
- it('does not render when open is false', function () {
63
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
64
- open: false
65
- })));
66
- expect(_react2.screen.queryByText('Help Title')).not.toBeInTheDocument();
67
- });
68
- it('displays title correctly', function () {
69
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
70
- title: "Custom Help"
71
- })));
72
- expect(_react2.screen.getByText('Custom Help')).toBeInTheDocument();
73
- });
74
- it('displays children content', function () {
75
- var content = 'This is helpful information';
76
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
77
- children: content
78
- })));
79
- expect(_react2.screen.getByText(content)).toBeInTheDocument();
80
- });
81
- it('calls onClose when OK button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
82
- var user, onClose, okButton;
83
- return _regenerator["default"].wrap(function (_context2) {
84
- while (1) switch (_context2.prev = _context2.next) {
85
- case 0:
86
- user = _userEvent["default"].setup();
87
- onClose = jest.fn();
88
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
89
- onClose: onClose
90
- })));
91
- okButton = _react2.screen.getByRole('button', {
92
- name: /OK/i
93
- });
94
- _context2.next = 1;
95
- return user.click(okButton);
96
- case 1:
97
- expect(onClose).toHaveBeenCalledTimes(1);
98
- case 2:
99
- case "end":
100
- return _context2.stop();
101
- }
102
- }, _callee2);
103
- })));
104
- it('calls onClose when dialog is closed via backdrop', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
105
- var user, onClose, dialog;
106
- return _regenerator["default"].wrap(function (_context3) {
107
- while (1) switch (_context3.prev = _context3.next) {
108
- case 0:
109
- user = _userEvent["default"].setup();
110
- onClose = jest.fn();
111
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, (0, _extends2["default"])({}, defaultProps, {
112
- onClose: onClose
113
- })));
114
-
115
- // Simulate backdrop click by calling onClose (MUI Dialog prop)
116
- dialog = _react2.screen.getByRole('dialog', {
117
- hidden: true
118
- });
119
- expect(dialog).toBeInTheDocument();
120
- case 1:
121
- case "end":
122
- return _context3.stop();
123
- }
124
- }, _callee3);
125
- })));
126
- it('renders OK button', function () {
127
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, defaultProps));
128
- var okButton = _react2.screen.getByRole('button', {
129
- name: /OK/i
130
- });
131
- expect(okButton).toBeInTheDocument();
132
- });
133
- it('handles multiline children content', function () {
134
- var content = ['Line 1', 'Line 2', 'Line 3'];
135
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help.HelpDialog, defaultProps, content.map(function (line, i) {
136
- return /*#__PURE__*/_react["default"].createElement("div", {
137
- key: i
138
- }, line);
139
- })));
140
- expect(_react2.screen.getByText('Line 1')).toBeInTheDocument();
141
- expect(_react2.screen.getByText('Line 2')).toBeInTheDocument();
142
- expect(_react2.screen.getByText('Line 3')).toBeInTheDocument();
143
- });
144
- });
145
- describe('Help Component', function () {
146
- var defaultProps = {
147
- title: 'Help Title',
148
- children: 'Help content'
149
- };
150
- beforeEach(function () {
151
- jest.clearAllMocks();
152
- });
153
- it('renders help button initially', function () {
154
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
155
- var button = _react2.screen.getByRole('button');
156
- expect(button).toBeInTheDocument();
157
- });
158
- it('opens dialog when help button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
159
- var user, button;
160
- return _regenerator["default"].wrap(function (_context4) {
161
- while (1) switch (_context4.prev = _context4.next) {
162
- case 0:
163
- user = _userEvent["default"].setup();
164
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
165
- button = _react2.screen.getByRole('button');
166
- _context4.next = 1;
167
- return user.click(button);
168
- case 1:
169
- expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
170
- expect(_react2.screen.getByText('Help content')).toBeInTheDocument();
171
- case 2:
172
- case "end":
173
- return _context4.stop();
174
- }
175
- }, _callee4);
176
- })));
177
- it('closes dialog when OK button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
178
- var user, helpButton, okButton;
179
- return _regenerator["default"].wrap(function (_context5) {
180
- while (1) switch (_context5.prev = _context5.next) {
181
- case 0:
182
- user = _userEvent["default"].setup();
183
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
184
- helpButton = _react2.screen.getByRole('button', {
185
- name: ''
186
- });
187
- _context5.next = 1;
188
- return user.click(helpButton);
189
- case 1:
190
- okButton = _react2.screen.getByRole('button', {
191
- name: /OK/i
192
- });
193
- _context5.next = 2;
194
- return user.click(okButton);
195
- case 2:
196
- _context5.next = 3;
197
- return (0, _react2.waitFor)(function () {
198
- expect(_react2.screen.queryByText('Help Title')).not.toBeInTheDocument();
199
- });
200
- case 3:
201
- case "end":
202
- return _context5.stop();
203
- }
204
- }, _callee5);
205
- })));
206
- it('displays title prop', function () {
207
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], {
208
- title: "Custom Title",
209
- children: "content"
210
- }));
211
- var button = _react2.screen.getByRole('button');
212
- expect(button).toBeInTheDocument();
213
- });
214
- it('displays children prop', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
215
- var user, button;
216
- return _regenerator["default"].wrap(function (_context6) {
217
- while (1) switch (_context6.prev = _context6.next) {
218
- case 0:
219
- user = _userEvent["default"].setup();
220
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], (0, _extends2["default"])({}, defaultProps, {
221
- children: "Custom help content"
222
- })));
223
- button = _react2.screen.getByRole('button');
224
- _context6.next = 1;
225
- return user.click(button);
226
- case 1:
227
- expect(_react2.screen.getByText('Custom help content')).toBeInTheDocument();
228
- case 2:
229
- case "end":
230
- return _context6.stop();
231
- }
232
- }, _callee6);
233
- })));
234
- it('can open and close dialog multiple times', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
235
- var user, helpButton, okButton;
236
- return _regenerator["default"].wrap(function (_context7) {
237
- while (1) switch (_context7.prev = _context7.next) {
238
- case 0:
239
- user = _userEvent["default"].setup();
240
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_help["default"], defaultProps));
241
- helpButton = _react2.screen.getByRole('button', {
242
- name: ''
243
- });
244
- _context7.next = 1;
245
- return user.click(helpButton);
246
- case 1:
247
- expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
248
- okButton = _react2.screen.getByRole('button', {
249
- name: /OK/i
250
- });
251
- _context7.next = 2;
252
- return user.click(okButton);
253
- case 2:
254
- _context7.next = 3;
255
- return (0, _react2.waitFor)(function () {
256
- expect(_react2.screen.queryByText('Help Title')).not.toBeInTheDocument();
257
- });
258
- case 3:
259
- _context7.next = 4;
260
- return user.click(helpButton);
261
- case 4:
262
- expect(_react2.screen.getByText('Help Title')).toBeInTheDocument();
263
- case 5:
264
- case "end":
265
- return _context7.stop();
266
- }
267
- }, _callee7);
268
- })));
269
- });
270
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2hlbHAiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZGVzY3JpYmUiLCJpdCIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJIZWxwQnV0dG9uIiwiYnV0dG9uIiwic2NyZWVuIiwiZ2V0QnlSb2xlIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInVzZXIiLCJvbkNsaWNrIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ1c2VyRXZlbnQiLCJzZXR1cCIsImplc3QiLCJmbiIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZFRpbWVzIiwic3RvcCIsIl9yZW5kZXIiLCJjb250YWluZXIiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdFByb3BzIiwib3BlbiIsIm9uQ2xvc2UiLCJ0aXRsZSIsImNoaWxkcmVuIiwiYmVmb3JlRWFjaCIsImNsZWFyQWxsTW9ja3MiLCJIZWxwRGlhbG9nIiwiZ2V0QnlUZXh0IiwiX2V4dGVuZHMyIiwicXVlcnlCeVRleHQiLCJub3QiLCJjb250ZW50IiwiX2NhbGxlZTIiLCJva0J1dHRvbiIsIl9jb250ZXh0MiIsIm5hbWUiLCJfY2FsbGVlMyIsImRpYWxvZyIsIl9jb250ZXh0MyIsImhpZGRlbiIsIm1hcCIsImxpbmUiLCJrZXkiLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsIl9jYWxsZWU1IiwiaGVscEJ1dHRvbiIsIl9jb250ZXh0NSIsIndhaXRGb3IiLCJfY2FsbGVlNiIsIl9jb250ZXh0NiIsIl9jYWxsZWU3IiwiX2NvbnRleHQ3Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9oZWxwLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiwgd2FpdEZvciB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHVzZXJFdmVudCBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQnO1xuaW1wb3J0IEhlbHAsIHsgSGVscEJ1dHRvbiwgSGVscERpYWxvZyB9IGZyb20gJy4uL2hlbHAnO1xuXG5kZXNjcmliZSgnSGVscEJ1dHRvbicsICgpID0+IHtcbiAgaXQoJ3JlbmRlcnMgaGVscCBpY29uIGJ1dHRvbicsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHBCdXR0b24gLz4pO1xuICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgIGV4cGVjdChidXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjYWxscyBvbkNsaWNrIHdoZW4gY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgY29uc3Qgb25DbGljayA9IGplc3QuZm4oKTtcbiAgICByZW5kZXIoPEhlbHBCdXR0b24gb25DbGljaz17b25DbGlja30gLz4pO1xuXG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuXG4gICAgZXhwZWN0KG9uQ2xpY2spLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgd2l0aCBsYXJnZSBzaXplJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEhlbHBCdXR0b24gLz4pO1xuICAgIGNvbnN0IGJ1dHRvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdidXR0b25bY2xhc3MqPVwic2l6ZUxhcmdlXCJdJyk7XG4gICAgZXhwZWN0KGJ1dHRvbiB8fCBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0hlbHBEaWFsb2cnLCAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBvcGVuOiB0cnVlLFxuICAgIG9uQ2xvc2U6IGplc3QuZm4oKSxcbiAgICB0aXRsZTogJ0hlbHAgVGl0bGUnLFxuICAgIGNoaWxkcmVuOiAnSGVscCBjb250ZW50IGhlcmUnLFxuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyB3aGVuIG9wZW4gaXMgdHJ1ZScsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdIZWxwIFRpdGxlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgY29udGVudCBoZXJlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCByZW5kZXIgd2hlbiBvcGVuIGlzIGZhbHNlJywgKCkgPT4ge1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSBvcGVuPXtmYWxzZX0gLz4pO1xuICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRleHQoJ0hlbHAgVGl0bGUnKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdkaXNwbGF5cyB0aXRsZSBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgcmVuZGVyKDxIZWxwRGlhbG9nIHsuLi5kZWZhdWx0UHJvcHN9IHRpdGxlPVwiQ3VzdG9tIEhlbHBcIiAvPik7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0N1c3RvbSBIZWxwJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdkaXNwbGF5cyBjaGlsZHJlbiBjb250ZW50JywgKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSAnVGhpcyBpcyBoZWxwZnVsIGluZm9ybWF0aW9uJztcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gY2hpbGRyZW49e2NvbnRlbnR9IC8+KTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dChjb250ZW50KSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGxzIG9uQ2xvc2Ugd2hlbiBPSyBidXR0b24gaXMgY2xpY2tlZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgY29uc3Qgb25DbG9zZSA9IGplc3QuZm4oKTtcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gb25DbG9zZT17b25DbG9zZX0gLz4pO1xuXG4gICAgY29uc3Qgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGF3YWl0IHVzZXIuY2xpY2sob2tCdXR0b24pO1xuXG4gICAgZXhwZWN0KG9uQ2xvc2UpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGxzIG9uQ2xvc2Ugd2hlbiBkaWFsb2cgaXMgY2xvc2VkIHZpYSBiYWNrZHJvcCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgY29uc3Qgb25DbG9zZSA9IGplc3QuZm4oKTtcbiAgICByZW5kZXIoPEhlbHBEaWFsb2cgey4uLmRlZmF1bHRQcm9wc30gb25DbG9zZT17b25DbG9zZX0gLz4pO1xuXG4gICAgLy8gU2ltdWxhdGUgYmFja2Ryb3AgY2xpY2sgYnkgY2FsbGluZyBvbkNsb3NlIChNVUkgRGlhbG9nIHByb3ApXG4gICAgY29uc3QgZGlhbG9nID0gc2NyZWVuLmdldEJ5Um9sZSgnZGlhbG9nJywgeyBoaWRkZW46IHRydWUgfSk7XG4gICAgZXhwZWN0KGRpYWxvZykudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgT0sgYnV0dG9uJywgKCkgPT4ge1xuICAgIHJlbmRlcig8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgY29uc3Qgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGV4cGVjdChva0J1dHRvbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgbXVsdGlsaW5lIGNoaWxkcmVuIGNvbnRlbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IFsnTGluZSAxJywgJ0xpbmUgMicsICdMaW5lIDMnXTtcbiAgICByZW5kZXIoXG4gICAgICA8SGVscERpYWxvZyB7Li4uZGVmYXVsdFByb3BzfT5cbiAgICAgICAge2NvbnRlbnQubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgPGRpdiBrZXk9e2l9PntsaW5lfTwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvSGVscERpYWxvZz4sXG4gICAgKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnTGluZSAxJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0xpbmUgMicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdMaW5lIDMnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0hlbHAgQ29tcG9uZW50JywgKCkgPT4ge1xuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgdGl0bGU6ICdIZWxwIFRpdGxlJyxcbiAgICBjaGlsZHJlbjogJ0hlbHAgY29udGVudCcsXG4gIH07XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIGhlbHAgYnV0dG9uIGluaXRpYWxseScsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHAgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgIGNvbnN0IGJ1dHRvbiA9IHNjcmVlbi5nZXRCeVJvbGUoJ2J1dHRvbicpO1xuICAgIGV4cGVjdChidXR0b24pLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdvcGVucyBkaWFsb2cgd2hlbiBoZWxwIGJ1dHRvbiBpcyBjbGlja2VkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICByZW5kZXIoPEhlbHAgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgYXdhaXQgdXNlci5jbGljayhidXR0b24pO1xuXG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSGVscCBjb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjbG9zZXMgZGlhbG9nIHdoZW4gT0sgYnV0dG9uIGlzIGNsaWNrZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIHJlbmRlcig8SGVscCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG5cbiAgICBjb25zdCBoZWxwQnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAnJyB9KTtcbiAgICBhd2FpdCB1c2VyLmNsaWNrKGhlbHBCdXR0b24pO1xuXG4gICAgY29uc3Qgb2tCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6IC9PSy9pIH0pO1xuICAgIGF3YWl0IHVzZXIuY2xpY2sob2tCdXR0b24pO1xuXG4gICAgYXdhaXQgd2FpdEZvcigoKSA9PiB7XG4gICAgICBleHBlY3Qoc2NyZWVuLnF1ZXJ5QnlUZXh0KCdIZWxwIFRpdGxlJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnZGlzcGxheXMgdGl0bGUgcHJvcCcsICgpID0+IHtcbiAgICByZW5kZXIoPEhlbHAgdGl0bGU9XCJDdXN0b20gVGl0bGVcIiBjaGlsZHJlbj1cImNvbnRlbnRcIiAvPik7XG4gICAgY29uc3QgYnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJyk7XG4gICAgZXhwZWN0KGJ1dHRvbikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2Rpc3BsYXlzIGNoaWxkcmVuIHByb3AnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgIHJlbmRlcig8SGVscCB7Li4uZGVmYXVsdFByb3BzfSBjaGlsZHJlbj1cIkN1c3RvbSBoZWxwIGNvbnRlbnRcIiAvPik7XG5cbiAgICBjb25zdCBidXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nKTtcbiAgICBhd2FpdCB1c2VyLmNsaWNrKGJ1dHRvbik7XG5cbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ3VzdG9tIGhlbHAgY29udGVudCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnY2FuIG9wZW4gYW5kIGNsb3NlIGRpYWxvZyBtdWx0aXBsZSB0aW1lcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgcmVuZGVyKDxIZWxwIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcblxuICAgIGNvbnN0IGhlbHBCdXR0b24gPSBzY3JlZW4uZ2V0QnlSb2xlKCdidXR0b24nLCB7IG5hbWU6ICcnIH0pO1xuXG4gICAgYXdhaXQgdXNlci5jbGljayhoZWxwQnV0dG9uKTtcbiAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnSGVscCBUaXRsZScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuXG4gICAgbGV0IG9rQnV0dG9uID0gc2NyZWVuLmdldEJ5Um9sZSgnYnV0dG9uJywgeyBuYW1lOiAvT0svaSB9KTtcbiAgICBhd2FpdCB1c2VyLmNsaWNrKG9rQnV0dG9uKTtcblxuICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgnSGVscCBUaXRsZScpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHVzZXIuY2xpY2soaGVscEJ1dHRvbik7XG4gICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ0hlbHAgVGl0bGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUF1RCxTQUFBSSx3QkFBQUMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUgsdUJBQUEsWUFBQUEsd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFB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
@@ -1,268 +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 _input = _interopRequireDefault(require("../input"));
10
- describe('Input Component', function () {
11
- var onChange = jest.fn();
12
- beforeEach(function () {
13
- onChange.mockClear();
14
- });
15
- describe('Rendering', function () {
16
- it('should render input without label', function () {
17
- var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
18
- type: "text",
19
- value: "test",
20
- onChange: onChange
21
- })),
22
- container = _render.container;
23
- var input = container.querySelector('input');
24
- expect(input).toBeInTheDocument();
25
- expect(input.value).toBe('test');
26
- });
27
- it('should render input with label', function () {
28
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
29
- type: "text",
30
- label: "Email",
31
- value: "test@example.com",
32
- onChange: onChange
33
- }));
34
- expect(_react2.screen.getByText('Email')).toBeInTheDocument();
35
- var input = _react2.screen.getByDisplayValue('test@example.com');
36
- expect(input).toBeInTheDocument();
37
- });
38
- it('should render input with different types', function () {
39
- var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
40
- type: "number",
41
- value: 123,
42
- onChange: onChange
43
- })),
44
- numberContainer = _render2.container;
45
- expect(numberContainer.querySelector('input[type="number"]')).toBeInTheDocument();
46
- var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
47
- type: "email",
48
- value: "test@example.com",
49
- onChange: onChange
50
- })),
51
- emailContainer = _render3.container;
52
- expect(emailContainer.querySelector('input[type="email"]')).toBeInTheDocument();
53
- var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
54
- type: "password",
55
- value: "secret",
56
- onChange: onChange
57
- })),
58
- passwordContainer = _render4.container;
59
- expect(passwordContainer.querySelector('input[type="password"]')).toBeInTheDocument();
60
- });
61
- });
62
- describe('Value handling', function () {
63
- it('should handle string values', function () {
64
- var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
65
- type: "text",
66
- value: "hello",
67
- onChange: onChange
68
- })),
69
- container = _render5.container;
70
- expect(container.querySelector('input').value).toBe('hello');
71
- });
72
- it('should handle number values', function () {
73
- var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
74
- type: "number",
75
- value: 42,
76
- onChange: onChange
77
- })),
78
- container = _render6.container;
79
- expect(container.querySelector('input').value).toBe('42');
80
- });
81
- it('should handle empty values', function () {
82
- var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
83
- type: "text",
84
- value: "",
85
- onChange: onChange
86
- })),
87
- container = _render7.container;
88
- expect(container.querySelector('input').value).toBe('');
89
- });
90
- it('should update when prop changes', function () {
91
- var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
92
- type: "text",
93
- value: "initial",
94
- onChange: onChange
95
- })),
96
- container = _render8.container,
97
- rerender = _render8.rerender;
98
- expect(container.querySelector('input').value).toBe('initial');
99
- rerender(/*#__PURE__*/_react["default"].createElement(_input["default"], {
100
- type: "text",
101
- value: "updated",
102
- onChange: onChange
103
- }));
104
- expect(container.querySelector('input').value).toBe('updated');
105
- });
106
- });
107
- describe('onChange behavior', function () {
108
- it('should call onChange on input change', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
109
- var user, _render9, container, input;
110
- return _regenerator["default"].wrap(function (_context) {
111
- while (1) switch (_context.prev = _context.next) {
112
- case 0:
113
- user = _userEvent["default"].setup();
114
- _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
115
- type: "text",
116
- value: "",
117
- onChange: onChange
118
- })), container = _render9.container;
119
- input = container.querySelector('input');
120
- _context.next = 1;
121
- return user.type(input, 'hello');
122
- case 1:
123
- expect(onChange).toHaveBeenCalled();
124
- case 2:
125
- case "end":
126
- return _context.stop();
127
- }
128
- }, _callee);
129
- })));
130
- it('should handle custom error function', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
131
- var user, customError, _render0, container, input;
132
- return _regenerator["default"].wrap(function (_context2) {
133
- while (1) switch (_context2.prev = _context2.next) {
134
- case 0:
135
- user = _userEvent["default"].setup();
136
- customError = jest.fn(function (value) {
137
- return value.length < 3;
138
- });
139
- _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
140
- type: "text",
141
- value: "",
142
- onChange: onChange,
143
- error: customError
144
- })), container = _render0.container;
145
- input = container.querySelector('input');
146
- _context2.next = 1;
147
- return user.type(input, 'ab');
148
- case 1:
149
- expect(customError).toHaveBeenCalled();
150
- case 2:
151
- case "end":
152
- return _context2.stop();
153
- }
154
- }, _callee2);
155
- })));
156
- });
157
- describe('Error state', function () {
158
- it('should display error state when validation fails', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
159
- var user, customError, _render1, container, input;
160
- return _regenerator["default"].wrap(function (_context3) {
161
- while (1) switch (_context3.prev = _context3.next) {
162
- case 0:
163
- user = _userEvent["default"].setup();
164
- customError = jest.fn(function () {
165
- return true;
166
- });
167
- _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
168
- type: "text",
169
- value: "",
170
- onChange: onChange,
171
- error: customError
172
- })), container = _render1.container;
173
- input = container.querySelector('input');
174
- _context3.next = 1;
175
- return user.type(input, 'test');
176
- case 1:
177
- expect(customError).toHaveBeenCalled();
178
- case 2:
179
- case "end":
180
- return _context3.stop();
181
- }
182
- }, _callee3);
183
- })));
184
- it('should clear error state when validation passes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
185
- var user, customError, _render10, container, input;
186
- return _regenerator["default"].wrap(function (_context4) {
187
- while (1) switch (_context4.prev = _context4.next) {
188
- case 0:
189
- user = _userEvent["default"].setup();
190
- customError = jest.fn(function (value) {
191
- return !value;
192
- });
193
- _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
194
- type: "text",
195
- value: "",
196
- onChange: onChange,
197
- error: customError
198
- })), container = _render10.container;
199
- input = container.querySelector('input');
200
- _context4.next = 1;
201
- return user.type(input, 'test');
202
- case 1:
203
- // After typing valid content, error should be false
204
- expect(customError).toHaveBeenCalled();
205
- case 2:
206
- case "end":
207
- return _context4.stop();
208
- }
209
- }, _callee4);
210
- })));
211
- });
212
- describe('Props spreading', function () {
213
- it('should handle disabled state', function () {
214
- var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
215
- type: "text",
216
- value: "",
217
- onChange: onChange,
218
- disabled: true
219
- })),
220
- container = _render11.container;
221
- var input = container.querySelector('input');
222
- expect(input).toBeDisabled();
223
- });
224
- it('should handle readonly state', function () {
225
- var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
226
- type: "text",
227
- value: "readonly",
228
- onChange: onChange,
229
- readOnly: true
230
- })),
231
- container = _render12.container;
232
- var input = container.querySelector('input');
233
- expect(input).toHaveAttribute('readonly');
234
- });
235
- });
236
- describe('Default props', function () {
237
- it('should use default type of text', function () {
238
- var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
239
- value: "",
240
- onChange: onChange
241
- })),
242
- container = _render13.container;
243
- var input = container.querySelector('input');
244
- expect(input.type).toBe('text');
245
- });
246
- it('should use default error function that validates number type', function () {
247
- var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
248
- type: "number",
249
- value: "",
250
- onChange: onChange
251
- })),
252
- container = _render14.container;
253
- var input = container.querySelector('input');
254
- expect(input).toBeInTheDocument();
255
- });
256
- it('should have noModelUpdateOnError default to false', function () {
257
- var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_input["default"], {
258
- type: "text",
259
- value: "",
260
- onChange: onChange
261
- })),
262
- container = _render15.container;
263
- var input = container.querySelector('input');
264
- expect(input).toBeInTheDocument();
265
- });
266
- });
267
- });
268
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdXNlckV2ZW50IiwiX2lucHV0IiwiZGVzY3JpYmUiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsImJlZm9yZUVhY2giLCJtb2NrQ2xlYXIiLCJpdCIsIl9yZW5kZXIiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsInZhbHVlIiwiY29udGFpbmVyIiwiaW5wdXQiLCJxdWVyeVNlbGVjdG9yIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJ0b0JlIiwibGFiZWwiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJnZXRCeURpc3BsYXlWYWx1ZSIsIl9yZW5kZXIyIiwibnVtYmVyQ29udGFpbmVyIiwiX3JlbmRlcjMiLCJlbWFpbENvbnRhaW5lciIsIl9yZW5kZXI0IiwicGFzc3dvcmRDb250YWluZXIiLCJfcmVuZGVyNSIsIl9yZW5kZXI2IiwiX3JlbmRlcjciLCJfcmVuZGVyOCIsInJlcmVuZGVyIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ1c2VyIiwiX3JlbmRlcjkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVzZXJFdmVudCIsInNldHVwIiwidG9IYXZlQmVlbkNhbGxlZCIsInN0b3AiLCJfY2FsbGVlMiIsImN1c3RvbUVycm9yIiwiX3JlbmRlcjAiLCJfY29udGV4dDIiLCJsZW5ndGgiLCJlcnJvciIsIl9jYWxsZWUzIiwiX3JlbmRlcjEiLCJfY29udGV4dDMiLCJfY2FsbGVlNCIsIl9yZW5kZXIxMCIsIl9jb250ZXh0NCIsIl9yZW5kZXIxMSIsImRpc2FibGVkIiwidG9CZURpc2FibGVkIiwiX3JlbmRlcjEyIiwicmVhZE9ubHkiLCJ0b0hhdmVBdHRyaWJ1dGUiLCJfcmVuZGVyMTMiLCJfcmVuZGVyMTQiLCJfcmVuZGVyMTUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2lucHV0LnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHVzZXJFdmVudCBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQnO1xuaW1wb3J0IElucHV0IGZyb20gJy4uL2lucHV0JztcblxuZGVzY3JpYmUoJ0lucHV0IENvbXBvbmVudCcsICgpID0+IHtcbiAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25DaGFuZ2UubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgaW5wdXQgd2l0aG91dCBsYWJlbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPElucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCJ0ZXN0XCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICBleHBlY3QoaW5wdXQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3QoaW5wdXQudmFsdWUpLnRvQmUoJ3Rlc3QnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGlucHV0IHdpdGggbGFiZWwnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoPElucHV0IHR5cGU9XCJ0ZXh0XCIgbGFiZWw9XCJFbWFpbFwiIHZhbHVlPVwidGVzdEBleGFtcGxlLmNvbVwiIG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4pO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnRW1haWwnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGNvbnN0IGlucHV0ID0gc2NyZWVuLmdldEJ5RGlzcGxheVZhbHVlKCd0ZXN0QGV4YW1wbGUuY29tJyk7XG4gICAgICBleHBlY3QoaW5wdXQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlbmRlciBpbnB1dCB3aXRoIGRpZmZlcmVudCB0eXBlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBudW1iZXJDb250YWluZXIgfSA9IHJlbmRlcig8SW5wdXQgdHlwZT1cIm51bWJlclwiIHZhbHVlPXsxMjN9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4pO1xuICAgICAgZXhwZWN0KG51bWJlckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBlbWFpbENvbnRhaW5lciB9ID0gcmVuZGVyKDxJbnB1dCB0eXBlPVwiZW1haWxcIiB2YWx1ZT1cInRlc3RAZXhhbXBsZS5jb21cIiBvbkNoYW5nZT17b25DaGFuZ2V9IC8+KTtcbiAgICAgIGV4cGVjdChlbWFpbENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwiZW1haWxcIl0nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXI6IHBhc3N3b3JkQ29udGFpbmVyIH0gPSByZW5kZXIoPElucHV0IHR5cGU9XCJwYXNzd29yZFwiIHZhbHVlPVwic2VjcmV0XCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG4gICAgICBleHBlY3QocGFzc3dvcmRDb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdWYWx1ZSBoYW5kbGluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBzdHJpbmcgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8SW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cImhlbGxvXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUpLnRvQmUoJ2hlbGxvJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBudW1iZXIgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8SW5wdXQgdHlwZT1cIm51bWJlclwiIHZhbHVlPXs0Mn0gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUpLnRvQmUoJzQyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBlbXB0eSB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUpLnRvQmUoJycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1cGRhdGUgd2hlbiBwcm9wIGNoYW5nZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciwgcmVyZW5kZXIgfSA9IHJlbmRlcig8SW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cImluaXRpYWxcIiBvbkNoYW5nZT17b25DaGFuZ2V9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSkudG9CZSgnaW5pdGlhbCcpO1xuXG4gICAgICByZXJlbmRlcig8SW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cInVwZGF0ZWRcIiBvbkNoYW5nZT17b25DaGFuZ2V9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSkudG9CZSgndXBkYXRlZCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnb25DaGFuZ2UgYmVoYXZpb3InLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIG9uQ2hhbmdlIG9uIGlucHV0IGNoYW5nZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPElucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCJcIiBvbkNoYW5nZT17b25DaGFuZ2V9IC8+KTtcblxuICAgICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgIGF3YWl0IHVzZXIudHlwZShpbnB1dCwgJ2hlbGxvJyk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgY3VzdG9tIGVycm9yIGZ1bmN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgY29uc3QgY3VzdG9tRXJyb3IgPSBqZXN0LmZuKCh2YWx1ZSkgPT4gdmFsdWUubGVuZ3RoIDwgMyk7XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPElucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCJcIiBvbkNoYW5nZT17b25DaGFuZ2V9IGVycm9yPXtjdXN0b21FcnJvcn0gLz4pO1xuXG4gICAgICBjb25zdCBpbnB1dCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgYXdhaXQgdXNlci50eXBlKGlucHV0LCAnYWInKTtcblxuICAgICAgZXhwZWN0KGN1c3RvbUVycm9yKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFcnJvciBzdGF0ZScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGRpc3BsYXkgZXJyb3Igc3RhdGUgd2hlbiB2YWxpZGF0aW9uIGZhaWxzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgY29uc3QgY3VzdG9tRXJyb3IgPSBqZXN0LmZuKCgpID0+IHRydWUpO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSBlcnJvcj17Y3VzdG9tRXJyb3J9IC8+KTtcblxuICAgICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgIGF3YWl0IHVzZXIudHlwZShpbnB1dCwgJ3Rlc3QnKTtcblxuICAgICAgZXhwZWN0KGN1c3RvbUVycm9yKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNsZWFyIGVycm9yIHN0YXRlIHdoZW4gdmFsaWRhdGlvbiBwYXNzZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICBjb25zdCBjdXN0b21FcnJvciA9IGplc3QuZm4oKHZhbHVlKSA9PiAhdmFsdWUpO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSBlcnJvcj17Y3VzdG9tRXJyb3J9IC8+KTtcblxuICAgICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgIGF3YWl0IHVzZXIudHlwZShpbnB1dCwgJ3Rlc3QnKTtcblxuICAgICAgLy8gQWZ0ZXIgdHlwaW5nIHZhbGlkIGNvbnRlbnQsIGVycm9yIHNob3VsZCBiZSBmYWxzZVxuICAgICAgZXhwZWN0KGN1c3RvbUVycm9yKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQcm9wcyBzcHJlYWRpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZGlzYWJsZWQgc3RhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSBkaXNhYmxlZCAvPik7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICBleHBlY3QoaW5wdXQpLnRvQmVEaXNhYmxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcmVhZG9ubHkgc3RhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwicmVhZG9ubHlcIiBvbkNoYW5nZT17b25DaGFuZ2V9IHJlYWRPbmx5IC8+KTtcblxuICAgICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgIGV4cGVjdChpbnB1dCkudG9IYXZlQXR0cmlidXRlKCdyZWFkb25seScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRGVmYXVsdCBwcm9wcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHVzZSBkZWZhdWx0IHR5cGUgb2YgdGV4dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPElucHV0IHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICBleHBlY3QoaW5wdXQudHlwZSkudG9CZSgndGV4dCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2UgZGVmYXVsdCBlcnJvciBmdW5jdGlvbiB0aGF0IHZhbGlkYXRlcyBudW1iZXIgdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPElucHV0IHR5cGU9XCJudW1iZXJcIiB2YWx1ZT1cIlwiIG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz4pO1xuXG4gICAgICBjb25zdCBpbnB1dCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgZXhwZWN0KGlucHV0KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYXZlIG5vTW9kZWxVcGRhdGVPbkVycm9yIGRlZmF1bHQgdG8gZmFsc2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwiXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSAvPik7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICBleHBlY3QoaW5wdXQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUFJLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxZQUFNO0VBQ2hDLElBQU1DLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FB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