@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.
Files changed (145) hide show
  1. package/CHANGELOG.md +7 -78
  2. package/lib/__tests__/alert-dialog.test.js +262 -0
  3. package/lib/__tests__/checkbox.test.js +227 -0
  4. package/lib/__tests__/choice-utils.test.js +14 -0
  5. package/lib/__tests__/form-section.test.js +252 -0
  6. package/lib/__tests__/help.test.js +270 -0
  7. package/lib/__tests__/input.test.js +268 -0
  8. package/lib/__tests__/langs.test.js +541 -0
  9. package/lib/__tests__/number-text-field-custom.test.js +362 -0
  10. package/lib/__tests__/number-text-field.test.js +421 -0
  11. package/lib/__tests__/radio-with-label.test.js +233 -0
  12. package/lib/__tests__/settings-panel.test.js +184 -0
  13. package/lib/__tests__/settings.test.js +653 -0
  14. package/lib/__tests__/tabs.test.js +211 -0
  15. package/lib/__tests__/two-choice.test.js +124 -0
  16. package/lib/__tests__/with-stateful-model.test.js +221 -0
  17. package/lib/alert-dialog.js +36 -43
  18. package/lib/alert-dialog.js.map +1 -1
  19. package/lib/checkbox.js +57 -72
  20. package/lib/checkbox.js.map +1 -1
  21. package/lib/choice-configuration/__tests__/feedback-menu.test.js +287 -0
  22. package/lib/choice-configuration/__tests__/index.test.js +253 -0
  23. package/lib/choice-configuration/feedback-menu.js +30 -65
  24. package/lib/choice-configuration/feedback-menu.js.map +1 -1
  25. package/lib/choice-configuration/index.js +203 -263
  26. package/lib/choice-configuration/index.js.map +1 -1
  27. package/lib/choice-utils.js +7 -19
  28. package/lib/choice-utils.js.map +1 -1
  29. package/lib/feedback-config/__tests__/feedback-config.test.js +201 -0
  30. package/lib/feedback-config/__tests__/feedback-selector.test.js +177 -0
  31. package/lib/feedback-config/feedback-selector.js +80 -116
  32. package/lib/feedback-config/feedback-selector.js.map +1 -1
  33. package/lib/feedback-config/group.js +27 -41
  34. package/lib/feedback-config/group.js.map +1 -1
  35. package/lib/feedback-config/index.js +48 -91
  36. package/lib/feedback-config/index.js.map +1 -1
  37. package/lib/form-section.js +32 -34
  38. package/lib/form-section.js.map +1 -1
  39. package/lib/help.js +40 -81
  40. package/lib/help.js.map +1 -1
  41. package/lib/index.js +2 -32
  42. package/lib/index.js.map +1 -1
  43. package/lib/input.js +22 -55
  44. package/lib/input.js.map +1 -1
  45. package/lib/inputs.js +62 -96
  46. package/lib/inputs.js.map +1 -1
  47. package/lib/langs.js +59 -102
  48. package/lib/langs.js.map +1 -1
  49. package/lib/layout/__tests__/config.layout.test.js +70 -0
  50. package/lib/layout/__tests__/layout-content.test.js +6 -0
  51. package/lib/layout/config-layout.js +41 -71
  52. package/lib/layout/config-layout.js.map +1 -1
  53. package/lib/layout/index.js +1 -4
  54. package/lib/layout/index.js.map +1 -1
  55. package/lib/layout/layout-contents.js +73 -104
  56. package/lib/layout/layout-contents.js.map +1 -1
  57. package/lib/layout/settings-box.js +28 -57
  58. package/lib/layout/settings-box.js.map +1 -1
  59. package/lib/mui-box/index.js +42 -58
  60. package/lib/mui-box/index.js.map +1 -1
  61. package/lib/number-text-field-custom.js +80 -162
  62. package/lib/number-text-field-custom.js.map +1 -1
  63. package/lib/number-text-field.js +81 -115
  64. package/lib/number-text-field.js.map +1 -1
  65. package/lib/radio-with-label.js +31 -32
  66. package/lib/radio-with-label.js.map +1 -1
  67. package/lib/settings/display-size.js +17 -33
  68. package/lib/settings/display-size.js.map +1 -1
  69. package/lib/settings/index.js +15 -48
  70. package/lib/settings/index.js.map +1 -1
  71. package/lib/settings/panel.js +160 -230
  72. package/lib/settings/panel.js.map +1 -1
  73. package/lib/settings/settings-radio-label.js +29 -31
  74. package/lib/settings/settings-radio-label.js.map +1 -1
  75. package/lib/settings/toggle.js +36 -47
  76. package/lib/settings/toggle.js.map +1 -1
  77. package/lib/tabs/index.js +23 -58
  78. package/lib/tabs/index.js.map +1 -1
  79. package/lib/tags-input/__tests__/index.test.js +183 -0
  80. package/lib/tags-input/index.js +51 -100
  81. package/lib/tags-input/index.js.map +1 -1
  82. package/lib/two-choice.js +47 -91
  83. package/lib/two-choice.js.map +1 -1
  84. package/lib/with-stateful-model.js +9 -32
  85. package/lib/with-stateful-model.js.map +1 -1
  86. package/package.json +12 -20
  87. package/src/__tests__/alert-dialog.test.jsx +283 -0
  88. package/src/__tests__/checkbox.test.jsx +249 -0
  89. package/src/__tests__/form-section.test.jsx +334 -0
  90. package/src/__tests__/help.test.jsx +184 -0
  91. package/src/__tests__/input.test.jsx +192 -0
  92. package/src/__tests__/langs.test.jsx +435 -15
  93. package/src/__tests__/number-text-field-custom.test.jsx +438 -0
  94. package/src/__tests__/number-text-field.test.jsx +295 -102
  95. package/src/__tests__/radio-with-label.test.jsx +259 -0
  96. package/src/__tests__/settings-panel.test.js +66 -83
  97. package/src/__tests__/settings.test.jsx +515 -0
  98. package/src/__tests__/tabs.test.jsx +193 -0
  99. package/src/__tests__/two-choice.test.js +104 -18
  100. package/src/__tests__/with-stateful-model.test.jsx +145 -0
  101. package/src/alert-dialog.jsx +21 -19
  102. package/src/checkbox.jsx +42 -46
  103. package/src/choice-configuration/__tests__/feedback-menu.test.jsx +157 -4
  104. package/src/choice-configuration/__tests__/index.test.jsx +198 -56
  105. package/src/choice-configuration/feedback-menu.jsx +6 -6
  106. package/src/choice-configuration/index.jsx +201 -196
  107. package/src/feedback-config/__tests__/feedback-config.test.jsx +130 -60
  108. package/src/feedback-config/__tests__/feedback-selector.test.jsx +87 -40
  109. package/src/feedback-config/feedback-selector.jsx +52 -53
  110. package/src/feedback-config/group.jsx +21 -22
  111. package/src/feedback-config/index.jsx +27 -29
  112. package/src/form-section.jsx +26 -18
  113. package/src/help.jsx +20 -28
  114. package/src/input.jsx +1 -1
  115. package/src/inputs.jsx +34 -50
  116. package/src/langs.jsx +41 -46
  117. package/src/layout/__tests__/config.layout.test.jsx +55 -38
  118. package/src/layout/config-layout.jsx +38 -32
  119. package/src/layout/layout-contents.jsx +38 -39
  120. package/src/layout/settings-box.jsx +16 -19
  121. package/src/mui-box/index.jsx +35 -43
  122. package/src/number-text-field-custom.jsx +30 -36
  123. package/src/number-text-field.jsx +45 -29
  124. package/src/radio-with-label.jsx +25 -13
  125. package/src/settings/display-size.jsx +12 -11
  126. package/src/settings/panel.jsx +97 -91
  127. package/src/settings/settings-radio-label.jsx +25 -13
  128. package/src/settings/toggle.jsx +30 -29
  129. package/src/tabs/index.jsx +8 -8
  130. package/src/tags-input/__tests__/index.test.jsx +88 -37
  131. package/src/tags-input/index.jsx +35 -38
  132. package/src/two-choice.jsx +15 -19
  133. package/esm/index.css +0 -847
  134. package/esm/index.js +0 -213950
  135. package/esm/index.js.map +0 -1
  136. package/esm/package.json +0 -3
  137. package/src/__tests__/__snapshots__/langs.test.jsx.snap +0 -32
  138. package/src/__tests__/__snapshots__/settings-panel.test.js.snap +0 -115
  139. package/src/__tests__/__snapshots__/two-choice.test.js.snap +0 -171
  140. package/src/choice-configuration/__tests__/__snapshots__/feedback-menu.test.jsx.snap +0 -51
  141. package/src/choice-configuration/__tests__/__snapshots__/index.test.jsx.snap +0 -519
  142. package/src/feedback-config/__tests__/__snapshots__/feedback-config.test.jsx.snap +0 -27
  143. package/src/feedback-config/__tests__/__snapshots__/feedback-selector.test.jsx.snap +0 -38
  144. package/src/layout/__tests__/__snapshots__/config.layout.test.jsx.snap +0 -59
  145. 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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