@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.
- package/CHANGELOG.md +80 -28
- package/LICENSE.md +5 -0
- package/lib/alert-dialog.js +1 -1
- package/lib/checkbox.js +1 -1
- package/lib/choice-configuration/feedback-menu.js +1 -1
- package/lib/choice-configuration/index.js +1 -1
- package/lib/choice-utils.js +1 -1
- package/lib/feedback-config/feedback-selector.js +1 -1
- package/lib/feedback-config/group.js +1 -1
- package/lib/feedback-config/index.js +1 -1
- package/lib/form-section.js +1 -1
- package/lib/help.js +1 -1
- package/lib/index.js +1 -1
- package/lib/input.js +1 -1
- package/lib/inputs.js +1 -1
- package/lib/langs.js +1 -1
- package/lib/layout/config-layout.js +1 -1
- package/lib/layout/index.js +1 -1
- package/lib/layout/layout-contents.js +1 -1
- package/lib/layout/settings-box.js +1 -1
- package/lib/mui-box/index.js +1 -1
- package/lib/number-text-field-custom.js +1 -1
- package/lib/number-text-field.js +2 -2
- package/lib/number-text-field.js.map +1 -1
- package/lib/radio-with-label.js +1 -1
- package/lib/settings/display-size.js +1 -1
- package/lib/settings/index.js +1 -1
- package/lib/settings/panel.js +1 -1
- package/lib/settings/settings-radio-label.js +1 -1
- package/lib/settings/toggle.js +1 -1
- package/lib/tabs/index.js +1 -1
- package/lib/tags-input/index.js +1 -1
- package/lib/two-choice.js +1 -1
- package/lib/with-stateful-model.js +1 -1
- package/package.json +5 -5
- package/src/number-text-field.jsx +1 -1
- package/lib/__tests__/alert-dialog.test.js +0 -262
- package/lib/__tests__/checkbox.test.js +0 -227
- package/lib/__tests__/choice-utils.test.js +0 -14
- package/lib/__tests__/form-section.test.js +0 -252
- package/lib/__tests__/help.test.js +0 -270
- package/lib/__tests__/input.test.js +0 -268
- package/lib/__tests__/langs.test.js +0 -541
- package/lib/__tests__/number-text-field-custom.test.js +0 -362
- package/lib/__tests__/number-text-field.test.js +0 -421
- package/lib/__tests__/radio-with-label.test.js +0 -233
- package/lib/__tests__/settings-panel.test.js +0 -184
- package/lib/__tests__/settings.test.js +0 -653
- package/lib/__tests__/tabs.test.js +0 -211
- package/lib/__tests__/two-choice.test.js +0 -124
- package/lib/__tests__/with-stateful-model.test.js +0 -221
- package/lib/choice-configuration/__tests__/feedback-menu.test.js +0 -287
- package/lib/choice-configuration/__tests__/index.test.js +0 -253
- package/lib/feedback-config/__tests__/feedback-config.test.js +0 -201
- package/lib/feedback-config/__tests__/feedback-selector.test.js +0 -177
- package/lib/layout/__tests__/config.layout.test.js +0 -70
- package/lib/layout/__tests__/layout-content.test.js +0 -6
- package/lib/tags-input/__tests__/index.test.js +0 -183
|
@@ -1,177 +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 = require("@testing-library/react");
|
|
7
|
-
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
8
|
-
var _react2 = _interopRequireDefault(require("react"));
|
|
9
|
-
var _feedbackSelector = require("../feedback-selector");
|
|
10
|
-
// Mock the editable-html component to avoid window dependencies in tests
|
|
11
|
-
jest.mock('@pie-lib/editable-html-tip-tap', function () {
|
|
12
|
-
return {
|
|
13
|
-
__esModule: true,
|
|
14
|
-
"default": function _default(_ref) {
|
|
15
|
-
var markup = _ref.markup,
|
|
16
|
-
_onChange = _ref.onChange;
|
|
17
|
-
return /*#__PURE__*/_react2["default"].createElement("textarea", {
|
|
18
|
-
"data-testid": "editable-html",
|
|
19
|
-
defaultValue: markup || '',
|
|
20
|
-
onChange: function onChange(e) {
|
|
21
|
-
return _onChange(e.target.value);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
});
|
|
27
|
-
describe('feedback-selector', function () {
|
|
28
|
-
var onChange;
|
|
29
|
-
var renderComponent = function renderComponent() {
|
|
30
|
-
var feedback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
31
|
-
type: 'default',
|
|
32
|
-
"default": 'hi'
|
|
33
|
-
};
|
|
34
|
-
return (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_feedbackSelector.FeedbackSelector, {
|
|
35
|
-
label: 'Feedback',
|
|
36
|
-
onChange: onChange,
|
|
37
|
-
feedback: feedback
|
|
38
|
-
}));
|
|
39
|
-
};
|
|
40
|
-
beforeEach(function () {
|
|
41
|
-
onChange = jest.fn();
|
|
42
|
-
});
|
|
43
|
-
describe('rendering', function () {
|
|
44
|
-
it('renders feedback type selector', function () {
|
|
45
|
-
renderComponent();
|
|
46
|
-
expect(_react.screen.getByText('Simple Feedback')).toBeInTheDocument();
|
|
47
|
-
expect(_react.screen.getByText('No Feedback')).toBeInTheDocument();
|
|
48
|
-
expect(_react.screen.getByText('Customized Feedback')).toBeInTheDocument();
|
|
49
|
-
});
|
|
50
|
-
it('shows default feedback text when type is default', function () {
|
|
51
|
-
renderComponent({
|
|
52
|
-
type: 'default',
|
|
53
|
-
"default": 'hi'
|
|
54
|
-
});
|
|
55
|
-
expect(_react.screen.getByText('hi')).toBeInTheDocument();
|
|
56
|
-
});
|
|
57
|
-
it('shows editable html when type is custom', function () {
|
|
58
|
-
renderComponent({
|
|
59
|
-
type: 'custom',
|
|
60
|
-
"default": 'hi',
|
|
61
|
-
custom: 'custom text'
|
|
62
|
-
});
|
|
63
|
-
expect(_react.screen.getByTestId('editable-html')).toBeInTheDocument();
|
|
64
|
-
expect(_react.screen.getByTestId('editable-html')).toHaveValue('custom text');
|
|
65
|
-
});
|
|
66
|
-
it('does not show default feedback when type is none', function () {
|
|
67
|
-
renderComponent({
|
|
68
|
-
type: 'none',
|
|
69
|
-
"default": 'hi'
|
|
70
|
-
});
|
|
71
|
-
expect(_react.screen.queryByText('hi')).not.toBeInTheDocument();
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
describe('user interactions', function () {
|
|
75
|
-
it('calls onChange when switching to default feedback', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
76
|
-
var user;
|
|
77
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
78
|
-
while (1) switch (_context.prev = _context.next) {
|
|
79
|
-
case 0:
|
|
80
|
-
user = _userEvent["default"].setup();
|
|
81
|
-
renderComponent({
|
|
82
|
-
type: 'custom',
|
|
83
|
-
"default": 'hi'
|
|
84
|
-
});
|
|
85
|
-
_context.next = 1;
|
|
86
|
-
return user.click(_react.screen.getByLabelText('Simple Feedback'));
|
|
87
|
-
case 1:
|
|
88
|
-
expect(onChange).toHaveBeenCalledWith({
|
|
89
|
-
type: 'default',
|
|
90
|
-
"default": 'hi'
|
|
91
|
-
});
|
|
92
|
-
case 2:
|
|
93
|
-
case "end":
|
|
94
|
-
return _context.stop();
|
|
95
|
-
}
|
|
96
|
-
}, _callee);
|
|
97
|
-
})));
|
|
98
|
-
it('calls onChange when switching to custom feedback', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
99
|
-
var user;
|
|
100
|
-
return _regenerator["default"].wrap(function (_context2) {
|
|
101
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
102
|
-
case 0:
|
|
103
|
-
user = _userEvent["default"].setup();
|
|
104
|
-
renderComponent({
|
|
105
|
-
type: 'default',
|
|
106
|
-
"default": 'hi'
|
|
107
|
-
});
|
|
108
|
-
_context2.next = 1;
|
|
109
|
-
return user.click(_react.screen.getByLabelText('Customized Feedback'));
|
|
110
|
-
case 1:
|
|
111
|
-
expect(onChange).toHaveBeenCalledWith({
|
|
112
|
-
type: 'custom',
|
|
113
|
-
"default": 'hi'
|
|
114
|
-
});
|
|
115
|
-
case 2:
|
|
116
|
-
case "end":
|
|
117
|
-
return _context2.stop();
|
|
118
|
-
}
|
|
119
|
-
}, _callee2);
|
|
120
|
-
})));
|
|
121
|
-
it('calls onChange when switching to no feedback', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
122
|
-
var user;
|
|
123
|
-
return _regenerator["default"].wrap(function (_context3) {
|
|
124
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
125
|
-
case 0:
|
|
126
|
-
user = _userEvent["default"].setup();
|
|
127
|
-
renderComponent({
|
|
128
|
-
type: 'default',
|
|
129
|
-
"default": 'hi'
|
|
130
|
-
});
|
|
131
|
-
_context3.next = 1;
|
|
132
|
-
return user.click(_react.screen.getByLabelText('No Feedback'));
|
|
133
|
-
case 1:
|
|
134
|
-
expect(onChange).toHaveBeenCalledWith({
|
|
135
|
-
type: 'none',
|
|
136
|
-
"default": 'hi'
|
|
137
|
-
});
|
|
138
|
-
case 2:
|
|
139
|
-
case "end":
|
|
140
|
-
return _context3.stop();
|
|
141
|
-
}
|
|
142
|
-
}, _callee3);
|
|
143
|
-
})));
|
|
144
|
-
it('calls onChange with custom text when editing custom feedback', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
145
|
-
var user, editor, lastCall;
|
|
146
|
-
return _regenerator["default"].wrap(function (_context4) {
|
|
147
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
148
|
-
case 0:
|
|
149
|
-
user = _userEvent["default"].setup();
|
|
150
|
-
renderComponent({
|
|
151
|
-
type: 'custom',
|
|
152
|
-
"default": 'hi',
|
|
153
|
-
custom: ''
|
|
154
|
-
});
|
|
155
|
-
editor = _react.screen.getByTestId('editable-html');
|
|
156
|
-
_context4.next = 1;
|
|
157
|
-
return user.clear(editor);
|
|
158
|
-
case 1:
|
|
159
|
-
_context4.next = 2;
|
|
160
|
-
return user.type(editor, 'text');
|
|
161
|
-
case 2:
|
|
162
|
-
// user.type triggers onChange for each character, so check that onChange was called
|
|
163
|
-
// and that the last call has 'text' in custom field
|
|
164
|
-
expect(onChange).toHaveBeenCalled();
|
|
165
|
-
lastCall = onChange.mock.calls[onChange.mock.calls.length - 1][0];
|
|
166
|
-
expect(lastCall.type).toBe('custom');
|
|
167
|
-
expect(lastCall.custom).toBe('text');
|
|
168
|
-
expect(lastCall["default"]).toBe('hi');
|
|
169
|
-
case 3:
|
|
170
|
-
case "end":
|
|
171
|
-
return _context4.stop();
|
|
172
|
-
}
|
|
173
|
-
}, _callee4);
|
|
174
|
-
})));
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZXJFdmVudCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3QyIiwiX2ZlZWRiYWNrU2VsZWN0b3IiLCJqZXN0IiwibW9jayIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX3JlZiIsIm1hcmt1cCIsIm9uQ2hhbmdlIiwiY3JlYXRlRWxlbWVudCIsImRlZmF1bHRWYWx1ZSIsImUiLCJ0YXJnZXQiLCJ2YWx1ZSIsImRlc2NyaWJlIiwicmVuZGVyQ29tcG9uZW50IiwiZmVlZGJhY2siLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0eXBlIiwicmVuZGVyIiwiRmVlZGJhY2tTZWxlY3RvciIsImxhYmVsIiwiYmVmb3JlRWFjaCIsImZuIiwiaXQiLCJleHBlY3QiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsImN1c3RvbSIsImdldEJ5VGVzdElkIiwidG9IYXZlVmFsdWUiLCJxdWVyeUJ5VGV4dCIsIm5vdCIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwidXNlciIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwidXNlckV2ZW50Iiwic2V0dXAiLCJjbGljayIsImdldEJ5TGFiZWxUZXh0IiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJzdG9wIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJfY2FsbGVlMyIsIl9jb250ZXh0MyIsIl9jYWxsZWU0IiwiZWRpdG9yIiwibGFzdENhbGwiLCJfY29udGV4dDQiLCJjbGVhciIsInRvSGF2ZUJlZW5DYWxsZWQiLCJjYWxscyIsInRvQmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmVlZGJhY2stY29uZmlnL19fdGVzdHNfXy9mZWVkYmFjay1zZWxlY3Rvci50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHNjcmVlbiB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHVzZXJFdmVudCBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZlZWRiYWNrU2VsZWN0b3IgfSBmcm9tICcuLi9mZWVkYmFjay1zZWxlY3Rvcic7XG5cbi8vIE1vY2sgdGhlIGVkaXRhYmxlLWh0bWwgY29tcG9uZW50IHRvIGF2b2lkIHdpbmRvdyBkZXBlbmRlbmNpZXMgaW4gdGVzdHNcbmplc3QubW9jaygnQHBpZS1saWIvZWRpdGFibGUtaHRtbC10aXAtdGFwJywgKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIF9fZXNNb2R1bGU6IHRydWUsXG4gICAgZGVmYXVsdDogKHsgbWFya3VwLCBvbkNoYW5nZSB9KSA9PiAoXG4gICAgICA8dGV4dGFyZWEgZGF0YS10ZXN0aWQ9XCJlZGl0YWJsZS1odG1sXCIgZGVmYXVsdFZhbHVlPXttYXJrdXAgfHwgJyd9IG9uQ2hhbmdlPXsoZSkgPT4gb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfSAvPlxuICAgICksXG4gIH07XG59KTtcblxuZGVzY3JpYmUoJ2ZlZWRiYWNrLXNlbGVjdG9yJywgKCkgPT4ge1xuICBsZXQgb25DaGFuZ2U7XG5cbiAgY29uc3QgcmVuZGVyQ29tcG9uZW50ID0gKGZlZWRiYWNrID0geyB0eXBlOiAnZGVmYXVsdCcsIGRlZmF1bHQ6ICdoaScgfSkgPT4ge1xuICAgIHJldHVybiByZW5kZXIoPEZlZWRiYWNrU2VsZWN0b3IgbGFiZWw9eydGZWVkYmFjayd9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gZmVlZGJhY2s9e2ZlZWRiYWNrfSAvPik7XG4gIH07XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgZmVlZGJhY2sgdHlwZSBzZWxlY3RvcicsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1NpbXBsZSBGZWVkYmFjaycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ05vIEZlZWRiYWNrJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnQ3VzdG9taXplZCBGZWVkYmFjaycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3dzIGRlZmF1bHQgZmVlZGJhY2sgdGV4dCB3aGVuIHR5cGUgaXMgZGVmYXVsdCcsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCh7IHR5cGU6ICdkZWZhdWx0JywgZGVmYXVsdDogJ2hpJyB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdoaScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3dzIGVkaXRhYmxlIGh0bWwgd2hlbiB0eXBlIGlzIGN1c3RvbScsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCh7IHR5cGU6ICdjdXN0b20nLCBkZWZhdWx0OiAnaGknLCBjdXN0b206ICdjdXN0b20gdGV4dCcgfSk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdlZGl0YWJsZS1odG1sJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdlZGl0YWJsZS1odG1sJykpLnRvSGF2ZVZhbHVlKCdjdXN0b20gdGV4dCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHNob3cgZGVmYXVsdCBmZWVkYmFjayB3aGVuIHR5cGUgaXMgbm9uZScsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCh7IHR5cGU6ICdub25lJywgZGVmYXVsdDogJ2hpJyB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRleHQoJ2hpJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXNlciBpbnRlcmFjdGlvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIHdoZW4gc3dpdGNoaW5nIHRvIGRlZmF1bHQgZmVlZGJhY2snLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyB0eXBlOiAnY3VzdG9tJywgZGVmYXVsdDogJ2hpJyB9KTtcblxuICAgICAgYXdhaXQgdXNlci5jbGljayhzY3JlZW4uZ2V0QnlMYWJlbFRleHQoJ1NpbXBsZSBGZWVkYmFjaycpKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IHR5cGU6ICdkZWZhdWx0JywgZGVmYXVsdDogJ2hpJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aGVuIHN3aXRjaGluZyB0byBjdXN0b20gZmVlZGJhY2snLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyB0eXBlOiAnZGVmYXVsdCcsIGRlZmF1bHQ6ICdoaScgfSk7XG5cbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdDdXN0b21pemVkIEZlZWRiYWNrJykpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHsgdHlwZTogJ2N1c3RvbScsIGRlZmF1bHQ6ICdoaScgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2hlbiBzd2l0Y2hpbmcgdG8gbm8gZmVlZGJhY2snLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyB0eXBlOiAnZGVmYXVsdCcsIGRlZmF1bHQ6ICdoaScgfSk7XG5cbiAgICAgIGF3YWl0IHVzZXIuY2xpY2soc2NyZWVuLmdldEJ5TGFiZWxUZXh0KCdObyBGZWVkYmFjaycpKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IHR5cGU6ICdub25lJywgZGVmYXVsdDogJ2hpJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aXRoIGN1c3RvbSB0ZXh0IHdoZW4gZWRpdGluZyBjdXN0b20gZmVlZGJhY2snLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyB0eXBlOiAnY3VzdG9tJywgZGVmYXVsdDogJ2hpJywgY3VzdG9tOiAnJyB9KTtcblxuICAgICAgY29uc3QgZWRpdG9yID0gc2NyZWVuLmdldEJ5VGVzdElkKCdlZGl0YWJsZS1odG1sJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsZWFyKGVkaXRvcik7XG4gICAgICBhd2FpdCB1c2VyLnR5cGUoZWRpdG9yLCAndGV4dCcpO1xuXG4gICAgICAvLyB1c2VyLnR5cGUgdHJpZ2dlcnMgb25DaGFuZ2UgZm9yIGVhY2ggY2hhcmFjdGVyLCBzbyBjaGVjayB0aGF0IG9uQ2hhbmdlIHdhcyBjYWxsZWRcbiAgICAgIC8vIGFuZCB0aGF0IHRoZSBsYXN0IGNhbGwgaGFzICd0ZXh0JyBpbiBjdXN0b20gZmllbGRcbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgY29uc3QgbGFzdENhbGwgPSBvbkNoYW5nZS5tb2NrLmNhbGxzW29uQ2hhbmdlLm1vY2suY2FsbHMubGVuZ3RoIC0gMV1bMF07XG4gICAgICBleHBlY3QobGFzdENhbGwudHlwZSkudG9CZSgnY3VzdG9tJyk7XG4gICAgICBleHBlY3QobGFzdENhbGwuY3VzdG9tKS50b0JlKCd0ZXh0Jyk7XG4gICAgICBleHBlY3QobGFzdENhbGwuZGVmYXVsdCkudG9CZSgnaGknKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBSixPQUFBO0FBRUE7QUFDQUssSUFBSSxDQUFDQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsWUFBTTtFQUNoRCxPQUFPO0lBQ0xDLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFdBQVMsU0FBVEMsUUFBT0EsQ0FBQUMsSUFBQTtNQUFBLElBQUtDLE1BQU0sR0FBQUQsSUFBQSxDQUFOQyxNQUFNO1FBQUVDLFNBQVEsR0FBQUYsSUFBQSxDQUFSRSxRQUFRO01BQUEsb0JBQzFCUixPQUFBLFlBQUFTLGFBQUE7UUFBVSxlQUFZLGVBQWU7UUFBQ0MsWUFBWSxFQUFFSCxNQUFNLElBQUksRUFBRztRQUFDQyxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBR0csQ0FBQztVQUFBLE9BQUtILFNBQVEsQ0FBQ0csQ0FBQyxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQztRQUFBO01BQUMsQ0FBRSxDQUFDO0lBQUE7RUFFbkgsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsWUFBTTtFQUNsQyxJQUFJTixRQUFRO0VBRVosSUFBTU8sZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFBLEVBQXNEO0lBQUEsSUFBbERDLFFBQVEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUc7TUFBRUcsSUFBSSxFQUFFLFNBQVM7TUFBRSxXQUFTO0lBQUssQ0FBQztJQUNwRSxPQUFPLElBQUFDLGFBQU0sZUFBQ3JCLE9BQUEsWUFBQVMsYUFBQSxDQUFDUixpQkFB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
|
|
@@ -1,70 +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 _configLayout = _interopRequireDefault(require("../config-layout"));
|
|
9
|
-
describe('ConfigLayout', function () {
|
|
10
|
-
var settingsPanel = /*#__PURE__*/_react["default"].createElement("div", {
|
|
11
|
-
"data-testid": "settings-panel"
|
|
12
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
13
|
-
key: 0
|
|
14
|
-
}, "Foo"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
15
|
-
key: 1
|
|
16
|
-
}, "Bar"));
|
|
17
|
-
var children = /*#__PURE__*/_react["default"].createElement("div", {
|
|
18
|
-
"data-testid": "main-content"
|
|
19
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, "Foo"), /*#__PURE__*/_react["default"].createElement("div", null, "Bar"));
|
|
20
|
-
describe('rendering', function () {
|
|
21
|
-
it('renders correctly with settings panel', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
22
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
23
|
-
while (1) switch (_context.prev = _context.next) {
|
|
24
|
-
case 0:
|
|
25
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_configLayout["default"], {
|
|
26
|
-
settings: settingsPanel
|
|
27
|
-
}, children));
|
|
28
|
-
|
|
29
|
-
// Main content should render immediately
|
|
30
|
-
expect(_react2.screen.getByTestId('main-content')).toBeInTheDocument();
|
|
31
|
-
|
|
32
|
-
// Settings panel may render after layout calculation
|
|
33
|
-
// In test environment, react-measure may not provide dimensions,
|
|
34
|
-
// so we check if it exists but don't require it
|
|
35
|
-
_context.next = 1;
|
|
36
|
-
return (0, _react2.waitFor)(function () {
|
|
37
|
-
expect(_react2.screen.getByText('Foo')).toBeInTheDocument();
|
|
38
|
-
});
|
|
39
|
-
case 1:
|
|
40
|
-
case "end":
|
|
41
|
-
return _context.stop();
|
|
42
|
-
}
|
|
43
|
-
}, _callee);
|
|
44
|
-
})));
|
|
45
|
-
it('renders main content when provided', function () {
|
|
46
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_configLayout["default"], {
|
|
47
|
-
settings: settingsPanel
|
|
48
|
-
}, children));
|
|
49
|
-
expect(_react2.screen.getByTestId('main-content')).toBeInTheDocument();
|
|
50
|
-
expect(_react2.screen.getByText('Foo')).toBeInTheDocument();
|
|
51
|
-
// Only check that Bar appears at least once (in main content)
|
|
52
|
-
expect(_react2.screen.getAllByText('Bar').length).toBeGreaterThanOrEqual(1);
|
|
53
|
-
});
|
|
54
|
-
it('renders settings panel content', function () {
|
|
55
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_configLayout["default"], {
|
|
56
|
-
settings: settingsPanel
|
|
57
|
-
}, children));
|
|
58
|
-
|
|
59
|
-
// Settings panel might not render in test environment due to react-measure
|
|
60
|
-
// Just verify the component renders without crashing
|
|
61
|
-
expect(_react2.screen.getByTestId('main-content')).toBeInTheDocument();
|
|
62
|
-
});
|
|
63
|
-
it('renders without settings panel when not provided', function () {
|
|
64
|
-
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_configLayout["default"], null, children));
|
|
65
|
-
expect(_react2.screen.queryByTestId('settings-panel')).not.toBeInTheDocument();
|
|
66
|
-
expect(_react2.screen.getByTestId('main-content')).toBeInTheDocument();
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfY29uZmlnTGF5b3V0IiwiZGVzY3JpYmUiLCJzZXR0aW5nc1BhbmVsIiwiY3JlYXRlRWxlbWVudCIsImtleSIsImNoaWxkcmVuIiwiaXQiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwicmVuZGVyIiwic2V0dGluZ3MiLCJleHBlY3QiLCJzY3JlZW4iLCJnZXRCeVRlc3RJZCIsInRvQmVJblRoZURvY3VtZW50Iiwid2FpdEZvciIsImdldEJ5VGV4dCIsInN0b3AiLCJnZXRBbGxCeVRleHQiLCJsZW5ndGgiLCJ0b0JlR3JlYXRlclRoYW5PckVxdWFsIiwicXVlcnlCeVRlc3RJZCIsIm5vdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXlvdXQvX190ZXN0c19fL2NvbmZpZy5sYXlvdXQudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuLCB3YWl0Rm9yIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgQ29uZmlnTGF5b3V0IGZyb20gJy4uL2NvbmZpZy1sYXlvdXQnO1xuXG5kZXNjcmliZSgnQ29uZmlnTGF5b3V0JywgKCkgPT4ge1xuICBjb25zdCBzZXR0aW5nc1BhbmVsID0gKFxuICAgIDxkaXYgZGF0YS10ZXN0aWQ9XCJzZXR0aW5ncy1wYW5lbFwiPlxuICAgICAgPGRpdiBrZXk9ezB9PkZvbzwvZGl2PlxuICAgICAgPGRpdiBrZXk9ezF9PkJhcjwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xuXG4gIGNvbnN0IGNoaWxkcmVuID0gKFxuICAgIDxkaXYgZGF0YS10ZXN0aWQ9XCJtYWluLWNvbnRlbnRcIj5cbiAgICAgIDxkaXY+Rm9vPC9kaXY+XG4gICAgICA8ZGl2PkJhcjwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdpdGggc2V0dGluZ3MgcGFuZWwnLCBhc3luYyAoKSA9PiB7XG4gICAgICByZW5kZXIoPENvbmZpZ0xheW91dCBzZXR0aW5ncz17c2V0dGluZ3NQYW5lbH0+e2NoaWxkcmVufTwvQ29uZmlnTGF5b3V0Pik7XG5cbiAgICAgIC8vIE1haW4gY29udGVudCBzaG91bGQgcmVuZGVyIGltbWVkaWF0ZWx5XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdtYWluLWNvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcblxuICAgICAgLy8gU2V0dGluZ3MgcGFuZWwgbWF5IHJlbmRlciBhZnRlciBsYXlvdXQgY2FsY3VsYXRpb25cbiAgICAgIC8vIEluIHRlc3QgZW52aXJvbm1lbnQsIHJlYWN0LW1lYXN1cmUgbWF5IG5vdCBwcm92aWRlIGRpbWVuc2lvbnMsXG4gICAgICAvLyBzbyB3ZSBjaGVjayBpZiBpdCBleGlzdHMgYnV0IGRvbid0IHJlcXVpcmUgaXRcbiAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnRm9vJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIG1haW4gY29udGVudCB3aGVuIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxDb25maWdMYXlvdXQgc2V0dGluZ3M9e3NldHRpbmdzUGFuZWx9PntjaGlsZHJlbn08L0NvbmZpZ0xheW91dD4pO1xuXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdtYWluLWNvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdGb28nKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIC8vIE9ubHkgY2hlY2sgdGhhdCBCYXIgYXBwZWFycyBhdCBsZWFzdCBvbmNlIChpbiBtYWluIGNvbnRlbnQpXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEFsbEJ5VGV4dCgnQmFyJykubGVuZ3RoKS50b0JlR3JlYXRlclRoYW5PckVxdWFsKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgc2V0dGluZ3MgcGFuZWwgY29udGVudCcsICgpID0+IHtcbiAgICAgIHJlbmRlcig8Q29uZmlnTGF5b3V0IHNldHRpbmdzPXtzZXR0aW5nc1BhbmVsfT57Y2hpbGRyZW59PC9Db25maWdMYXlvdXQ+KTtcblxuICAgICAgLy8gU2V0dGluZ3MgcGFuZWwgbWlnaHQgbm90IHJlbmRlciBpbiB0ZXN0IGVudmlyb25tZW50IGR1ZSB0byByZWFjdC1tZWFzdXJlXG4gICAgICAvLyBKdXN0IHZlcmlmeSB0aGUgY29tcG9uZW50IHJlbmRlcnMgd2l0aG91dCBjcmFzaGluZ1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnbWFpbi1jb250ZW50JykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRob3V0IHNldHRpbmdzIHBhbmVsIHdoZW4gbm90IHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxDb25maWdMYXlvdXQ+e2NoaWxkcmVufTwvQ29uZmlnTGF5b3V0Pik7XG5cbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRlc3RJZCgnc2V0dGluZ3MtcGFuZWwnKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdtYWluLWNvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxhQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFFQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxZQUFNO0VBQzdCLElBQU1DLGFBQWEsZ0JBQ2pCTixNQUFBLFlBQUFPLGFBQUE7SUFBSyxlQUFZO0VBQWdCLGdCQUMvQlAsTUFBQSxZQUFBTyxhQUFBO0lBQUtDLEdBQUcsRUFBRTtFQUFFLEdBQUMsS0FBUSxDQUFDLGVBQ3RCUixNQUFBLFlBQUFPLGFBQUE7SUFBS0MsR0FBRyxFQUFFO0VBQUUsR0FBQyxLQUFRLENBQ2xCLENBQ047RUFFRCxJQUFNQyxRQUFRLGdCQUNaVCxNQUFBLFlBQUFPLGFBQUE7SUFBSyxlQUFZO0VBQWMsZ0JBQzdCUCxNQUFBLFlBQUFPLGFBQUEsY0FBSyxLQUFRLENBQUMsZUFDZFAsTUFBQSxZQUFBTyxhQUFBLGNBQUssS0FBUSxDQUNWLENBQ047RUFFREYsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0lBQzFCSyxFQUFFLENBQUMsdUNBQXVDLG1CQUFBQyxrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQUUsU0FBQUMsUUFBQTtNQUFBLE9BQUFGLFlBQUEsWUFBQUcsSUFBQSxXQUFBQyxRQUFBO1FBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7VUFBQTtZQUMxQyxJQUFBQyxjQUFNLGVBQUNuQixNQUFBLFlBQUFPLGFBQUEsQ0FBQ0gsYUFBQSxXQUFZO2NBQUNnQixRQUFRLEVBQUVkO1lBQWMsR0FBRUcsUUFBdUIsQ0FBQyxDQUFDOztZQUV4RTtZQUNBWSxNQUFNLENBQUNDLGNBQU0sQ0FBQ0MsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7O1lBRTlEO1lBQ0E7WUFDQTtZQUFBUixRQUFBLENBQUFFLElBQUE7WUFBQSxPQUNNLElBQUFPLGVBQU8sRUFBQyxZQUFNO2NBQ2xCSixNQUFNLENBQUNDLGNBQU0sQ0FBQ0ksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUNGLGlCQUFpQixDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDO1VBQUE7VUFBQTtZQUFBLE9BQUFSLFFBQUEsQ0FBQVcsSUFBQTtRQUFBO01BQUEsR0FBQWIsT0FBQTtJQUFBLENBQ0gsR0FBQztJQUVGSixFQUFFLENBQUMsb0NBQW9DLEVBQUUsWUFBTTtNQUM3QyxJQUFBUyxjQUFNLGVBQUNuQixNQUFBLFlBQUFPLGFBQUEsQ0FBQ0gsYUFBQSxXQUFZO1FBQUNnQixRQUFRLEVBQUVkO01BQWMsR0FBRUcsUUFBdUIsQ0FBQyxDQUFDO01BRXhFWSxNQUFNLENBQUNDLGNBQU0sQ0FBQ0MsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7TUFDOURILE1BQU0sQ0FBQ0MsY0FBTSxDQUFDSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQ0YsaUJBQWlCLENBQUMsQ0FBQztNQUNuRDtNQUNBSCxNQUFNLENBQUNDLGNBQU0sQ0FBQ00sWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQ0Msc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQztJQUVGcEIsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLFlBQU07TUFDekMsSUFBQVMsY0FBTSxlQUFDbkIsTUFBQSxZQUFBTyxhQUFBLENBQUNILGFBQUEsV0FBWTtRQUFDZ0IsUUFBUSxFQUFFZDtNQUFjLEdBQUVHLFFBQXVCLENBQUMsQ0FBQzs7TUFFeEU7TUFDQTtNQUNBWSxNQUFNLENBQUNDLGNBQU0sQ0FBQ0MsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0lBRUZkLEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxZQUFNO01BQzNELElBQUFTLGNBQU0sZUFBQ25CLE1BQUEsWUFBQU8sYUFBQSxDQUFDSCxhQUFBLFdBQVksUUFBRUssUUFBdUIsQ0FBQyxDQUFDO01BRS9DWSxNQUFNLENBQUNDLGNBQU0sQ0FBQ1MsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDUixpQkFBaUIsQ0FBQyxDQUFDO01BQ3RFSCxNQUFNLENBQUNDLGNBQU0sQ0FBQ0MsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
describe('layout-content', function () {
|
|
4
|
-
it.todo('add tests!');
|
|
5
|
-
});
|
|
6
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwidG9kbyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXlvdXQvX190ZXN0c19fL2xheW91dC1jb250ZW50LnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImRlc2NyaWJlKCdsYXlvdXQtY29udGVudCcsICgpID0+IHtcbiAgaXQudG9kbygnYWRkIHRlc3RzIScpO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUFBLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFNO0VBQy9CQyxFQUFFLENBQUNDLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDdkIsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,183 +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 _index = require("../index");
|
|
7
|
-
var _testUtils = require("@pie-lib/test-utils");
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
describe('TagsInput', function () {
|
|
10
|
-
describe('rendering', function () {
|
|
11
|
-
it('renders existing tags as chips', function () {
|
|
12
|
-
(0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index.TagsInput, {
|
|
13
|
-
tags: ['foo', 'bar'],
|
|
14
|
-
onChange: jest.fn()
|
|
15
|
-
}));
|
|
16
|
-
expect(_testUtils.screen.getByText('foo')).toBeInTheDocument();
|
|
17
|
-
expect(_testUtils.screen.getByText('bar')).toBeInTheDocument();
|
|
18
|
-
});
|
|
19
|
-
it('renders input field', function () {
|
|
20
|
-
(0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index.TagsInput, {
|
|
21
|
-
tags: ['foo'],
|
|
22
|
-
onChange: jest.fn()
|
|
23
|
-
}));
|
|
24
|
-
var input = _testUtils.screen.getByRole('textbox');
|
|
25
|
-
expect(input).toBeInTheDocument();
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
describe('user interactions', function () {
|
|
29
|
-
var onChange;
|
|
30
|
-
var renderComponent = function renderComponent() {
|
|
31
|
-
var tags = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['foo'];
|
|
32
|
-
onChange = jest.fn();
|
|
33
|
-
return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index.TagsInput, {
|
|
34
|
-
onChange: onChange,
|
|
35
|
-
tags: tags
|
|
36
|
-
}));
|
|
37
|
-
};
|
|
38
|
-
describe('focus behavior', function () {
|
|
39
|
-
it('allows user to focus the input', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
40
|
-
var user, input;
|
|
41
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
42
|
-
while (1) switch (_context.prev = _context.next) {
|
|
43
|
-
case 0:
|
|
44
|
-
user = _testUtils.userEvent.setup();
|
|
45
|
-
renderComponent();
|
|
46
|
-
input = _testUtils.screen.getByRole('textbox');
|
|
47
|
-
_context.next = 1;
|
|
48
|
-
return user.click(input);
|
|
49
|
-
case 1:
|
|
50
|
-
expect(input).toHaveFocus();
|
|
51
|
-
case 2:
|
|
52
|
-
case "end":
|
|
53
|
-
return _context.stop();
|
|
54
|
-
}
|
|
55
|
-
}, _callee);
|
|
56
|
-
})));
|
|
57
|
-
it('allows user to blur the input', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
58
|
-
var user, input;
|
|
59
|
-
return _regenerator["default"].wrap(function (_context2) {
|
|
60
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
61
|
-
case 0:
|
|
62
|
-
user = _testUtils.userEvent.setup();
|
|
63
|
-
renderComponent();
|
|
64
|
-
input = _testUtils.screen.getByRole('textbox');
|
|
65
|
-
_context2.next = 1;
|
|
66
|
-
return user.click(input);
|
|
67
|
-
case 1:
|
|
68
|
-
expect(input).toHaveFocus();
|
|
69
|
-
_context2.next = 2;
|
|
70
|
-
return user.tab();
|
|
71
|
-
case 2:
|
|
72
|
-
expect(input).not.toHaveFocus();
|
|
73
|
-
case 3:
|
|
74
|
-
case "end":
|
|
75
|
-
return _context2.stop();
|
|
76
|
-
}
|
|
77
|
-
}, _callee2);
|
|
78
|
-
})));
|
|
79
|
-
});
|
|
80
|
-
describe('typing in input', function () {
|
|
81
|
-
it('updates input value when user types', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
82
|
-
var user, input;
|
|
83
|
-
return _regenerator["default"].wrap(function (_context3) {
|
|
84
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
85
|
-
case 0:
|
|
86
|
-
user = _testUtils.userEvent.setup();
|
|
87
|
-
renderComponent();
|
|
88
|
-
input = _testUtils.screen.getByRole('textbox');
|
|
89
|
-
_context3.next = 1;
|
|
90
|
-
return user.type(input, 'boo');
|
|
91
|
-
case 1:
|
|
92
|
-
expect(input).toHaveValue('boo');
|
|
93
|
-
case 2:
|
|
94
|
-
case "end":
|
|
95
|
-
return _context3.stop();
|
|
96
|
-
}
|
|
97
|
-
}, _callee3);
|
|
98
|
-
})));
|
|
99
|
-
});
|
|
100
|
-
describe('adding tags', function () {
|
|
101
|
-
it('adds new tag when user presses Enter', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
102
|
-
var user, input;
|
|
103
|
-
return _regenerator["default"].wrap(function (_context4) {
|
|
104
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
105
|
-
case 0:
|
|
106
|
-
user = _testUtils.userEvent.setup();
|
|
107
|
-
renderComponent();
|
|
108
|
-
input = _testUtils.screen.getByRole('textbox');
|
|
109
|
-
_context4.next = 1;
|
|
110
|
-
return user.type(input, 'banana');
|
|
111
|
-
case 1:
|
|
112
|
-
(0, _testUtils.pressKey)(input, _testUtils.Keys.ENTER);
|
|
113
|
-
expect(onChange).toHaveBeenCalledWith(['foo', 'banana']);
|
|
114
|
-
case 2:
|
|
115
|
-
case "end":
|
|
116
|
-
return _context4.stop();
|
|
117
|
-
}
|
|
118
|
-
}, _callee4);
|
|
119
|
-
})));
|
|
120
|
-
it('does not add duplicate tags', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
121
|
-
var user, input;
|
|
122
|
-
return _regenerator["default"].wrap(function (_context5) {
|
|
123
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
124
|
-
case 0:
|
|
125
|
-
user = _testUtils.userEvent.setup();
|
|
126
|
-
renderComponent();
|
|
127
|
-
input = _testUtils.screen.getByRole('textbox');
|
|
128
|
-
_context5.next = 1;
|
|
129
|
-
return user.type(input, 'foo');
|
|
130
|
-
case 1:
|
|
131
|
-
(0, _testUtils.pressKey)(input, _testUtils.Keys.ENTER);
|
|
132
|
-
expect(onChange).not.toHaveBeenCalled();
|
|
133
|
-
case 2:
|
|
134
|
-
case "end":
|
|
135
|
-
return _context5.stop();
|
|
136
|
-
}
|
|
137
|
-
}, _callee5);
|
|
138
|
-
})));
|
|
139
|
-
it('clears input after adding tag', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
140
|
-
var user, input;
|
|
141
|
-
return _regenerator["default"].wrap(function (_context6) {
|
|
142
|
-
while (1) switch (_context6.prev = _context6.next) {
|
|
143
|
-
case 0:
|
|
144
|
-
user = _testUtils.userEvent.setup();
|
|
145
|
-
renderComponent();
|
|
146
|
-
input = _testUtils.screen.getByRole('textbox');
|
|
147
|
-
_context6.next = 1;
|
|
148
|
-
return user.type(input, 'banana');
|
|
149
|
-
case 1:
|
|
150
|
-
(0, _testUtils.pressKey)(input, _testUtils.Keys.ENTER);
|
|
151
|
-
expect(input).toHaveValue('');
|
|
152
|
-
case 2:
|
|
153
|
-
case "end":
|
|
154
|
-
return _context6.stop();
|
|
155
|
-
}
|
|
156
|
-
}, _callee6);
|
|
157
|
-
})));
|
|
158
|
-
});
|
|
159
|
-
describe('deleting tags', function () {
|
|
160
|
-
it('removes tag when user clicks delete button', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
|
161
|
-
var user, deleteButtons;
|
|
162
|
-
return _regenerator["default"].wrap(function (_context7) {
|
|
163
|
-
while (1) switch (_context7.prev = _context7.next) {
|
|
164
|
-
case 0:
|
|
165
|
-
user = _testUtils.userEvent.setup();
|
|
166
|
-
renderComponent(['foo', 'bar']);
|
|
167
|
-
|
|
168
|
-
// Find the delete button for 'foo' tag
|
|
169
|
-
deleteButtons = _testUtils.screen.getAllByTestId('CancelIcon');
|
|
170
|
-
_context7.next = 1;
|
|
171
|
-
return user.click(deleteButtons[0]);
|
|
172
|
-
case 1:
|
|
173
|
-
expect(onChange).toHaveBeenCalledWith(['bar']);
|
|
174
|
-
case 2:
|
|
175
|
-
case "end":
|
|
176
|
-
return _context7.stop();
|
|
177
|
-
}
|
|
178
|
-
}, _callee7);
|
|
179
|
-
})));
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJyZXF1aXJlIiwiX3Rlc3RVdGlscyIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJkZXNjcmliZSIsIml0IiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIlRhZ3NJbnB1dCIsInRhZ3MiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsImV4cGVjdCIsInNjcmVlbiIsImdldEJ5VGV4dCIsInRvQmVJblRoZURvY3VtZW50IiwiaW5wdXQiLCJnZXRCeVJvbGUiLCJyZW5kZXJDb21wb25lbnQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInVzZXIiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVzZXJFdmVudCIsInNldHVwIiwiY2xpY2siLCJ0b0hhdmVGb2N1cyIsInN0b3AiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsInRhYiIsIm5vdCIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwidHlwZSIsInRvSGF2ZVZhbHVlIiwiX2NhbGxlZTQiLCJfY29udGV4dDQiLCJwcmVzc0tleSIsIktleXMiLCJFTlRFUiIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiX2NhbGxlZTUiLCJfY29udGV4dDUiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwiX2NhbGxlZTYiLCJfY29udGV4dDYiLCJfY2FsbGVlNyIsImRlbGV0ZUJ1dHRvbnMiLCJfY29udGV4dDciLCJnZXRBbGxCeVRlc3RJZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWdzLWlucHV0L19fdGVzdHNfXy9pbmRleC50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWdzSW5wdXQgfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyBLZXlzLCBwcmVzc0tleSwgcmVuZGVyLCBzY3JlZW4sIHVzZXJFdmVudCB9IGZyb20gJ0BwaWUtbGliL3Rlc3QtdXRpbHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZGVzY3JpYmUoJ1RhZ3NJbnB1dCcsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3JlbmRlcmluZycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyBleGlzdGluZyB0YWdzIGFzIGNoaXBzJywgKCkgPT4ge1xuICAgICAgcmVuZGVyKDxUYWdzSW5wdXQgdGFncz17Wydmb28nLCAnYmFyJ119IG9uQ2hhbmdlPXtqZXN0LmZuKCl9IC8+KTtcblxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ2ZvbycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ2JhcicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgaW5wdXQgZmllbGQnLCAoKSA9PiB7XG4gICAgICByZW5kZXIoPFRhZ3NJbnB1dCB0YWdzPXtbJ2ZvbyddfSBvbkNoYW5nZT17amVzdC5mbigpfSAvPik7XG5cbiAgICAgIGNvbnN0IGlucHV0ID0gc2NyZWVuLmdldEJ5Um9sZSgndGV4dGJveCcpO1xuICAgICAgZXhwZWN0KGlucHV0KS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXNlciBpbnRlcmFjdGlvbnMnLCAoKSA9PiB7XG4gICAgbGV0IG9uQ2hhbmdlO1xuICAgIGNvbnN0IHJlbmRlckNvbXBvbmVudCA9ICh0YWdzID0gWydmb28nXSkgPT4ge1xuICAgICAgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgICByZXR1cm4gcmVuZGVyKDxUYWdzSW5wdXQgb25DaGFuZ2U9e29uQ2hhbmdlfSB0YWdzPXt0YWdzfSAvPik7XG4gICAgfTtcblxuICAgIGRlc2NyaWJlKCdmb2N1cyBiZWhhdmlvcicsICgpID0+IHtcbiAgICAgIGl0KCdhbGxvd3MgdXNlciB0byBmb2N1cyB0aGUgaW5wdXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgICAgcmVuZGVyQ29tcG9uZW50KCk7XG5cbiAgICAgICAgY29uc3QgaW5wdXQgPSBzY3JlZW4uZ2V0QnlSb2xlKCd0ZXh0Ym94Jyk7XG4gICAgICAgIGF3YWl0IHVzZXIuY2xpY2soaW5wdXQpO1xuXG4gICAgICAgIGV4cGVjdChpbnB1dCkudG9IYXZlRm9jdXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYWxsb3dzIHVzZXIgdG8gYmx1ciB0aGUgaW5wdXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgICAgcmVuZGVyQ29tcG9uZW50KCk7XG5cbiAgICAgICAgY29uc3QgaW5wdXQgPSBzY3JlZW4uZ2V0QnlSb2xlKCd0ZXh0Ym94Jyk7XG4gICAgICAgIGF3YWl0IHVzZXIuY2xpY2soaW5wdXQpO1xuICAgICAgICBleHBlY3QoaW5wdXQpLnRvSGF2ZUZvY3VzKCk7XG5cbiAgICAgICAgYXdhaXQgdXNlci50YWIoKTtcbiAgICAgICAgZXhwZWN0KGlucHV0KS5ub3QudG9IYXZlRm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3R5cGluZyBpbiBpbnB1dCcsICgpID0+IHtcbiAgICAgIGl0KCd1cGRhdGVzIGlucHV0IHZhbHVlIHdoZW4gdXNlciB0eXBlcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgICByZW5kZXJDb21wb25lbnQoKTtcblxuICAgICAgICBjb25zdCBpbnB1dCA9IHNjcmVlbi5nZXRCeVJvbGUoJ3RleHRib3gnKTtcbiAgICAgICAgYXdhaXQgdXNlci50eXBlKGlucHV0LCAnYm9vJyk7XG5cbiAgICAgICAgZXhwZWN0KGlucHV0KS50b0hhdmVWYWx1ZSgnYm9vJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdhZGRpbmcgdGFncycsICgpID0+IHtcbiAgICAgIGl0KCdhZGRzIG5ldyB0YWcgd2hlbiB1c2VyIHByZXNzZXMgRW50ZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgICAgcmVuZGVyQ29tcG9uZW50KCk7XG5cbiAgICAgICAgY29uc3QgaW5wdXQgPSBzY3JlZW4uZ2V0QnlSb2xlKCd0ZXh0Ym94Jyk7XG4gICAgICAgIGF3YWl0IHVzZXIudHlwZShpbnB1dCwgJ2JhbmFuYScpO1xuICAgICAgICBwcmVzc0tleShpbnB1dCwgS2V5cy5FTlRFUik7XG5cbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChbJ2ZvbycsICdiYW5hbmEnXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2RvZXMgbm90IGFkZCBkdXBsaWNhdGUgdGFncycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgICByZW5kZXJDb21wb25lbnQoKTtcblxuICAgICAgICBjb25zdCBpbnB1dCA9IHNjcmVlbi5nZXRCeVJvbGUoJ3RleHRib3gnKTtcbiAgICAgICAgYXdhaXQgdXNlci50eXBlKGlucHV0LCAnZm9vJyk7XG4gICAgICAgIHByZXNzS2V5KGlucHV0LCBLZXlzLkVOVEVSKTtcblxuICAgICAgICBleHBlY3Qob25DaGFuZ2UpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NsZWFycyBpbnB1dCBhZnRlciBhZGRpbmcgdGFnJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICAgIHJlbmRlckNvbXBvbmVudCgpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gc2NyZWVuLmdldEJ5Um9sZSgndGV4dGJveCcpO1xuICAgICAgICBhd2FpdCB1c2VyLnR5cGUoaW5wdXQsICdiYW5hbmEnKTtcbiAgICAgICAgcHJlc3NLZXkoaW5wdXQsIEtleXMuRU5URVIpO1xuXG4gICAgICAgIGV4cGVjdChpbnB1dCkudG9IYXZlVmFsdWUoJycpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZGVsZXRpbmcgdGFncycsICgpID0+IHtcbiAgICAgIGl0KCdyZW1vdmVzIHRhZyB3aGVuIHVzZXIgY2xpY2tzIGRlbGV0ZSBidXR0b24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgICAgcmVuZGVyQ29tcG9uZW50KFsnZm9vJywgJ2JhciddKTtcblxuICAgICAgICAvLyBGaW5kIHRoZSBkZWxldGUgYnV0dG9uIGZvciAnZm9vJyB0YWdcbiAgICAgICAgY29uc3QgZGVsZXRlQnV0dG9ucyA9IHNjcmVlbi5nZXRBbGxCeVRlc3RJZCgnQ2FuY2VsSWNvbicpO1xuICAgICAgICBhd2FpdCB1c2VyLmNsaWNrKGRlbGV0ZUJ1dHRvbnNbMF0pO1xuXG4gICAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoWydiYXInXSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFFQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0VBQzFCQSxRQUFRLENBQUMsV0FBVyxFQUFFLFlBQU07SUFDMUJDLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxZQUFNO01BQ3pDLElBQUFDLGlCQUFNLGVBQUNKLE1BQUEsWUFBQUssYUFBQSxDQUFDUixNQUFBLENBQUFTLFNBQVM7UUFBQ0MsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBRTtRQUFDQyxRQUFRLEVBQUVDLElBQUksQ0FB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
|