@pie-lib/editable-html-tip-tap 2.1.20-beta.1 → 2.1.20-beta.10
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/lib/__tests__/EditableHtml.test.js +831 -0
- package/lib/__tests__/constants.test.js +21 -0
- package/lib/__tests__/div-to-paragraph-conversion.test.js +213 -0
- package/lib/__tests__/extensions.test.js +209 -0
- package/lib/__tests__/index.test.js +250 -0
- package/lib/__tests__/size-utils.test.js +57 -0
- package/lib/__tests__/spellcheck.test.js +142 -0
- package/lib/__tests__/theme.test.js +17 -0
- package/lib/components/__tests__/AltDialog.test.js +201 -0
- package/lib/components/__tests__/CharacterPicker.test.js +455 -0
- package/lib/components/__tests__/CssIcon.test.js +58 -0
- package/lib/components/__tests__/DragInTheBlank.test.js +295 -0
- package/lib/components/__tests__/ExplicitConstructedResponse.test.js +345 -0
- package/lib/components/__tests__/ImageToolbar.test.js +185 -0
- package/lib/components/__tests__/InlineDropdown.test.js +839 -0
- package/lib/components/__tests__/InsertImageHandler.test.js +171 -0
- package/lib/components/__tests__/MediaDialog.test.js +433 -0
- package/lib/components/__tests__/MediaToolbar.test.js +126 -0
- package/lib/components/__tests__/MediaWrapper.test.js +96 -0
- package/lib/components/__tests__/MenuBar.test.js +502 -0
- package/lib/components/__tests__/RespArea.test.js +171 -0
- package/lib/components/__tests__/TableIcons.test.js +153 -0
- package/lib/components/__tests__/TextAlign.test.js +209 -0
- package/lib/components/__tests__/TiptapContainer.test.js +196 -0
- package/lib/components/__tests__/characterUtils.test.js +178 -0
- package/lib/components/__tests__/choice.test.js +213 -0
- package/lib/components/__tests__/custom-popper.test.js +108 -0
- package/lib/components/__tests__/done-button.test.js +72 -0
- package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
- package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +90 -0
- package/lib/components/respArea/__tests__/MathTemplated.test.js +217 -0
- package/lib/extensions/__tests__/css.test.js +214 -0
- package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +175 -0
- package/lib/extensions/__tests__/divNode.test.js +108 -0
- package/lib/extensions/__tests__/ensure-empty-root-div.test.js +50 -0
- package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +60 -0
- package/lib/extensions/__tests__/extended-list-item.test.js +13 -0
- package/lib/extensions/__tests__/extended-table-cell.test.js +15 -0
- package/lib/extensions/__tests__/extended-table.test.js +200 -0
- package/lib/extensions/__tests__/image-component.test.js +432 -0
- package/lib/extensions/__tests__/image.test.js +313 -0
- package/lib/extensions/__tests__/math.test.js +1411 -0
- package/lib/extensions/__tests__/media-node-view.test.js +307 -0
- package/lib/extensions/__tests__/media.test.js +292 -0
- package/lib/extensions/__tests__/responseArea.test.js +736 -0
- package/lib/utils/__tests__/helper.test.js +107 -0
- package/lib/utils/__tests__/toolbar.test.js +38 -0
- package/package.json +3 -3
- package/src/__tests__/EditableHtml.test.jsx +588 -0
- package/src/__tests__/constants.test.js +19 -0
- package/src/__tests__/div-to-paragraph-conversion.test.jsx +125 -0
- package/src/__tests__/extensions.test.js +208 -0
- package/src/__tests__/index.test.jsx +154 -0
- package/src/__tests__/size-utils.test.js +64 -0
- package/src/__tests__/theme.test.js +17 -0
- package/src/components/__tests__/AltDialog.test.jsx +147 -0
- package/src/components/__tests__/CharacterPicker.test.jsx +270 -0
- package/src/components/__tests__/CssIcon.test.jsx +46 -0
- package/src/components/__tests__/DragInTheBlank.test.jsx +255 -0
- package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +209 -0
- package/src/components/__tests__/ImageToolbar.test.jsx +128 -0
- package/src/components/__tests__/InlineDropdown.test.jsx +557 -0
- package/src/components/__tests__/InsertImageHandler.test.js +161 -0
- package/src/components/__tests__/MediaDialog.test.jsx +293 -0
- package/src/components/__tests__/MediaToolbar.test.jsx +74 -0
- package/src/components/__tests__/MediaWrapper.test.jsx +81 -0
- package/src/components/__tests__/MenuBar.test.jsx +250 -0
- package/src/components/__tests__/RespArea.test.jsx +122 -0
- package/src/components/__tests__/TableIcons.test.jsx +149 -0
- package/src/components/__tests__/TextAlign.test.jsx +167 -0
- package/src/components/__tests__/TiptapContainer.test.jsx +138 -0
- package/src/components/__tests__/characterUtils.test.js +166 -0
- package/src/components/__tests__/choice.test.jsx +171 -0
- package/src/components/__tests__/custom-popper.test.jsx +82 -0
- package/src/components/__tests__/done-button.test.jsx +54 -0
- package/src/components/__tests__/toolbar-buttons.test.jsx +234 -0
- package/src/components/respArea/DragInTheBlank/__tests__/choice.test.jsx +72 -0
- package/src/components/respArea/__tests__/MathTemplated.test.jsx +210 -0
- package/src/extensions/__tests__/css.test.js +196 -0
- package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +180 -0
- package/src/extensions/__tests__/divNode.test.js +87 -0
- package/src/extensions/__tests__/ensure-empty-root-div.test.js +57 -0
- package/src/extensions/__tests__/ensure-list-item-content-is-div.test.js +44 -0
- package/src/extensions/__tests__/extended-list-item.test.js +13 -0
- package/src/extensions/__tests__/extended-table-cell.test.js +22 -0
- package/src/extensions/__tests__/extended-table.test.js +183 -0
- package/src/extensions/__tests__/image-component.test.jsx +346 -0
- package/src/extensions/__tests__/image.test.js +237 -0
- package/src/extensions/__tests__/math.test.js +900 -0
- package/src/extensions/__tests__/media-node-view.test.jsx +298 -0
- package/src/extensions/__tests__/media.test.js +271 -0
- package/src/extensions/__tests__/responseArea.test.js +655 -0
- package/src/utils/__tests__/helper.test.js +126 -0
- package/src/utils/__tests__/toolbar.test.js +43 -0
|
@@ -0,0 +1,455 @@
|
|
|
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _react2 = require("@testing-library/react");
|
|
9
|
+
var _CharacterPicker = require("../CharacterPicker");
|
|
10
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
|
+
jest.mock('react-dom', function () {
|
|
13
|
+
return _objectSpread(_objectSpread({}, jest.requireActual('react-dom')), {}, {
|
|
14
|
+
createPortal: function createPortal(node) {
|
|
15
|
+
return node;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
jest.mock('@pie-lib/math-toolbar', function () {
|
|
20
|
+
return {
|
|
21
|
+
PureToolbar: function PureToolbar(_ref) {
|
|
22
|
+
var onChange = _ref.onChange,
|
|
23
|
+
onDone = _ref.onDone,
|
|
24
|
+
additionalKeys = _ref.additionalKeys;
|
|
25
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
26
|
+
"data-testid": "pure-toolbar"
|
|
27
|
+
}, /*#__PURE__*/_react["default"].createElement("button", {
|
|
28
|
+
onClick: function onClick() {
|
|
29
|
+
return onChange('á');
|
|
30
|
+
},
|
|
31
|
+
"data-testid": "char-button"
|
|
32
|
+
}, "\xE1"), /*#__PURE__*/_react["default"].createElement("button", {
|
|
33
|
+
onClick: onDone,
|
|
34
|
+
"data-testid": "done-button"
|
|
35
|
+
}, "Done"));
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
jest.mock('../characters/custom-popper', function () {
|
|
40
|
+
return {
|
|
41
|
+
__esModule: true,
|
|
42
|
+
"default": function _default(_ref2) {
|
|
43
|
+
var children = _ref2.children,
|
|
44
|
+
onClose = _ref2.onClose;
|
|
45
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
46
|
+
"data-testid": "custom-popper"
|
|
47
|
+
}, children, /*#__PURE__*/_react["default"].createElement("button", {
|
|
48
|
+
onClick: onClose,
|
|
49
|
+
"data-testid": "close-popper"
|
|
50
|
+
}, "Close"));
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
describe('CharacterIcon', function () {
|
|
55
|
+
it('renders with letter', function () {
|
|
56
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
|
|
57
|
+
letter: "\xF1"
|
|
58
|
+
})),
|
|
59
|
+
getByText = _render.getByText;
|
|
60
|
+
expect(getByText('ñ')).toBeInTheDocument();
|
|
61
|
+
});
|
|
62
|
+
it('renders with correct styling', function () {
|
|
63
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
|
|
64
|
+
letter: "\u20AC"
|
|
65
|
+
})),
|
|
66
|
+
container = _render2.container;
|
|
67
|
+
var div = container.firstChild;
|
|
68
|
+
expect(div).toHaveStyle({
|
|
69
|
+
fontSize: '24px',
|
|
70
|
+
lineHeight: '24px'
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe('CharacterPicker', function () {
|
|
75
|
+
var mockEditor = {
|
|
76
|
+
chain: jest.fn(function () {
|
|
77
|
+
return {
|
|
78
|
+
focus: jest.fn(function () {
|
|
79
|
+
return {
|
|
80
|
+
insertContent: jest.fn(function () {
|
|
81
|
+
return {
|
|
82
|
+
run: jest.fn()
|
|
83
|
+
};
|
|
84
|
+
})
|
|
85
|
+
};
|
|
86
|
+
})
|
|
87
|
+
};
|
|
88
|
+
}),
|
|
89
|
+
options: {
|
|
90
|
+
element: document.createElement('div')
|
|
91
|
+
},
|
|
92
|
+
view: {
|
|
93
|
+
coordsAtPos: jest.fn(function () {
|
|
94
|
+
return {
|
|
95
|
+
top: 100,
|
|
96
|
+
left: 50
|
|
97
|
+
};
|
|
98
|
+
}),
|
|
99
|
+
dom: document.createElement('div')
|
|
100
|
+
},
|
|
101
|
+
state: {
|
|
102
|
+
selection: {
|
|
103
|
+
from: 0
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
beforeEach(function () {
|
|
108
|
+
jest.clearAllMocks();
|
|
109
|
+
// Reset the element to avoid "Cannot redefine property" error
|
|
110
|
+
mockEditor.options.element = document.createElement('div');
|
|
111
|
+
Object.defineProperty(mockEditor.options.element, 'getBoundingClientRect', {
|
|
112
|
+
value: jest.fn(function () {
|
|
113
|
+
return {
|
|
114
|
+
top: 0,
|
|
115
|
+
left: 0,
|
|
116
|
+
height: 100
|
|
117
|
+
};
|
|
118
|
+
}),
|
|
119
|
+
configurable: true
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
it('returns null when opts has no characters', function () {
|
|
123
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
124
|
+
editor: mockEditor,
|
|
125
|
+
opts: {},
|
|
126
|
+
onClose: jest.fn()
|
|
127
|
+
})),
|
|
128
|
+
container = _render3.container;
|
|
129
|
+
expect(container.firstChild).toBeNull();
|
|
130
|
+
});
|
|
131
|
+
it('returns null when opts is not provided', function () {
|
|
132
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
133
|
+
editor: mockEditor,
|
|
134
|
+
opts: null,
|
|
135
|
+
onClose: jest.fn()
|
|
136
|
+
})),
|
|
137
|
+
container = _render4.container;
|
|
138
|
+
expect(container.firstChild).toBeNull();
|
|
139
|
+
});
|
|
140
|
+
it('renders character picker with spanish config', function () {
|
|
141
|
+
var opts = {
|
|
142
|
+
language: 'spanish',
|
|
143
|
+
characters: [['á', 'é', 'í']]
|
|
144
|
+
};
|
|
145
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
146
|
+
editor: mockEditor,
|
|
147
|
+
opts: opts,
|
|
148
|
+
onClose: jest.fn()
|
|
149
|
+
})),
|
|
150
|
+
getByTestId = _render5.getByTestId;
|
|
151
|
+
expect(getByTestId('pure-toolbar')).toBeInTheDocument();
|
|
152
|
+
});
|
|
153
|
+
it('renders character picker with special config', function () {
|
|
154
|
+
var opts = {
|
|
155
|
+
language: 'special',
|
|
156
|
+
characters: [['€', '£']]
|
|
157
|
+
};
|
|
158
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
159
|
+
editor: mockEditor,
|
|
160
|
+
opts: opts,
|
|
161
|
+
onClose: jest.fn()
|
|
162
|
+
})),
|
|
163
|
+
getByTestId = _render6.getByTestId;
|
|
164
|
+
expect(getByTestId('pure-toolbar')).toBeInTheDocument();
|
|
165
|
+
});
|
|
166
|
+
it('handles character insertion', function () {
|
|
167
|
+
var opts = {
|
|
168
|
+
characters: [['á', 'é']]
|
|
169
|
+
};
|
|
170
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
171
|
+
editor: mockEditor,
|
|
172
|
+
opts: opts,
|
|
173
|
+
onClose: jest.fn()
|
|
174
|
+
})),
|
|
175
|
+
getByTestId = _render7.getByTestId;
|
|
176
|
+
_react2.fireEvent.click(getByTestId('char-button'));
|
|
177
|
+
expect(mockEditor.chain).toHaveBeenCalled();
|
|
178
|
+
});
|
|
179
|
+
it('calls onClose when done button is clicked', function () {
|
|
180
|
+
var onClose = jest.fn();
|
|
181
|
+
var opts = {
|
|
182
|
+
characters: [['á', 'é']]
|
|
183
|
+
};
|
|
184
|
+
var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
185
|
+
editor: mockEditor,
|
|
186
|
+
opts: opts,
|
|
187
|
+
onClose: onClose
|
|
188
|
+
})),
|
|
189
|
+
getByTestId = _render8.getByTestId;
|
|
190
|
+
_react2.fireEvent.click(getByTestId('done-button'));
|
|
191
|
+
expect(onClose).toHaveBeenCalled();
|
|
192
|
+
});
|
|
193
|
+
it('closes on outside click', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
194
|
+
var onClose, opts;
|
|
195
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
196
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
197
|
+
case 0:
|
|
198
|
+
onClose = jest.fn();
|
|
199
|
+
opts = {
|
|
200
|
+
characters: [['á', 'é']]
|
|
201
|
+
};
|
|
202
|
+
(0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
203
|
+
editor: mockEditor,
|
|
204
|
+
opts: opts,
|
|
205
|
+
onClose: onClose
|
|
206
|
+
}));
|
|
207
|
+
_context2.next = 1;
|
|
208
|
+
return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
209
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
210
|
+
while (1) switch (_context.prev = _context.next) {
|
|
211
|
+
case 0:
|
|
212
|
+
_context.next = 1;
|
|
213
|
+
return new Promise(function (r) {
|
|
214
|
+
return setTimeout(r, 0);
|
|
215
|
+
});
|
|
216
|
+
case 1:
|
|
217
|
+
case "end":
|
|
218
|
+
return _context.stop();
|
|
219
|
+
}
|
|
220
|
+
}, _callee);
|
|
221
|
+
})));
|
|
222
|
+
case 1:
|
|
223
|
+
_react2.fireEvent.click(document.body);
|
|
224
|
+
_context2.next = 2;
|
|
225
|
+
return (0, _react2.waitFor)(function () {
|
|
226
|
+
expect(onClose).toHaveBeenCalled();
|
|
227
|
+
});
|
|
228
|
+
case 2:
|
|
229
|
+
case "end":
|
|
230
|
+
return _context2.stop();
|
|
231
|
+
}
|
|
232
|
+
}, _callee2);
|
|
233
|
+
})));
|
|
234
|
+
it('does not re-run positioning when only onClose reference changes', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
235
|
+
var opts, getRect, _render9, rerender, callsAfterMount;
|
|
236
|
+
return _regenerator["default"].wrap(function (_context4) {
|
|
237
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
238
|
+
case 0:
|
|
239
|
+
opts = {
|
|
240
|
+
characters: [['á', 'é']]
|
|
241
|
+
};
|
|
242
|
+
getRect = mockEditor.options.element.getBoundingClientRect;
|
|
243
|
+
_render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
244
|
+
editor: mockEditor,
|
|
245
|
+
opts: opts,
|
|
246
|
+
onClose: jest.fn()
|
|
247
|
+
})), rerender = _render9.rerender;
|
|
248
|
+
_context4.next = 1;
|
|
249
|
+
return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
250
|
+
return _regenerator["default"].wrap(function (_context3) {
|
|
251
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
252
|
+
case 0:
|
|
253
|
+
_context3.next = 1;
|
|
254
|
+
return new Promise(function (r) {
|
|
255
|
+
return setTimeout(r, 0);
|
|
256
|
+
});
|
|
257
|
+
case 1:
|
|
258
|
+
case "end":
|
|
259
|
+
return _context3.stop();
|
|
260
|
+
}
|
|
261
|
+
}, _callee3);
|
|
262
|
+
})));
|
|
263
|
+
case 1:
|
|
264
|
+
callsAfterMount = getRect.mock.calls.length;
|
|
265
|
+
expect(callsAfterMount).toBeGreaterThan(0);
|
|
266
|
+
rerender(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
267
|
+
editor: mockEditor,
|
|
268
|
+
opts: opts,
|
|
269
|
+
onClose: jest.fn()
|
|
270
|
+
}));
|
|
271
|
+
expect(getRect.mock.calls.length).toBe(callsAfterMount);
|
|
272
|
+
case 2:
|
|
273
|
+
case "end":
|
|
274
|
+
return _context4.stop();
|
|
275
|
+
}
|
|
276
|
+
}, _callee4);
|
|
277
|
+
})));
|
|
278
|
+
it('outside click invokes the latest onClose after rerender', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
279
|
+
var opts, onCloseFirst, _render0, rerender, onCloseSecond;
|
|
280
|
+
return _regenerator["default"].wrap(function (_context6) {
|
|
281
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
282
|
+
case 0:
|
|
283
|
+
opts = {
|
|
284
|
+
characters: [['á', 'é']]
|
|
285
|
+
};
|
|
286
|
+
onCloseFirst = jest.fn();
|
|
287
|
+
_render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
288
|
+
editor: mockEditor,
|
|
289
|
+
opts: opts,
|
|
290
|
+
onClose: onCloseFirst
|
|
291
|
+
})), rerender = _render0.rerender;
|
|
292
|
+
_context6.next = 1;
|
|
293
|
+
return (0, _react2.act)(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
294
|
+
return _regenerator["default"].wrap(function (_context5) {
|
|
295
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
296
|
+
case 0:
|
|
297
|
+
_context5.next = 1;
|
|
298
|
+
return new Promise(function (r) {
|
|
299
|
+
return setTimeout(r, 0);
|
|
300
|
+
});
|
|
301
|
+
case 1:
|
|
302
|
+
case "end":
|
|
303
|
+
return _context5.stop();
|
|
304
|
+
}
|
|
305
|
+
}, _callee5);
|
|
306
|
+
})));
|
|
307
|
+
case 1:
|
|
308
|
+
onCloseSecond = jest.fn();
|
|
309
|
+
rerender(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
310
|
+
editor: mockEditor,
|
|
311
|
+
opts: opts,
|
|
312
|
+
onClose: onCloseSecond
|
|
313
|
+
}));
|
|
314
|
+
_react2.fireEvent.click(document.body);
|
|
315
|
+
_context6.next = 2;
|
|
316
|
+
return (0, _react2.waitFor)(function () {
|
|
317
|
+
expect(onCloseSecond).toHaveBeenCalled();
|
|
318
|
+
});
|
|
319
|
+
case 2:
|
|
320
|
+
expect(onCloseFirst).not.toHaveBeenCalled();
|
|
321
|
+
case 3:
|
|
322
|
+
case "end":
|
|
323
|
+
return _context6.stop();
|
|
324
|
+
}
|
|
325
|
+
}, _callee6);
|
|
326
|
+
})));
|
|
327
|
+
it('does not close when clicking inside picker', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
|
328
|
+
var onClose, opts, _render1, container;
|
|
329
|
+
return _regenerator["default"].wrap(function (_context7) {
|
|
330
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
331
|
+
case 0:
|
|
332
|
+
onClose = jest.fn();
|
|
333
|
+
opts = {
|
|
334
|
+
characters: [['á', 'é']]
|
|
335
|
+
};
|
|
336
|
+
_render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
337
|
+
editor: mockEditor,
|
|
338
|
+
opts: opts,
|
|
339
|
+
onClose: onClose
|
|
340
|
+
})), container = _render1.container;
|
|
341
|
+
_context7.next = 1;
|
|
342
|
+
return (0, _react2.waitFor)(function () {
|
|
343
|
+
var picker = container.querySelector('.insert-character-dialog');
|
|
344
|
+
if (picker) {
|
|
345
|
+
_react2.fireEvent.mouseDown(picker);
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
case 1:
|
|
349
|
+
expect(onClose).not.toHaveBeenCalled();
|
|
350
|
+
case 2:
|
|
351
|
+
case "end":
|
|
352
|
+
return _context7.stop();
|
|
353
|
+
}
|
|
354
|
+
}, _callee7);
|
|
355
|
+
})));
|
|
356
|
+
it('renders with custom opts structure', function () {
|
|
357
|
+
var opts = {
|
|
358
|
+
characters: [[{
|
|
359
|
+
name: 'a',
|
|
360
|
+
write: 'á',
|
|
361
|
+
label: 'á'
|
|
362
|
+
}, {
|
|
363
|
+
name: 'e',
|
|
364
|
+
write: 'é',
|
|
365
|
+
label: 'é'
|
|
366
|
+
}]]
|
|
367
|
+
};
|
|
368
|
+
var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
369
|
+
editor: mockEditor,
|
|
370
|
+
opts: opts,
|
|
371
|
+
onClose: jest.fn()
|
|
372
|
+
})),
|
|
373
|
+
getByTestId = _render10.getByTestId;
|
|
374
|
+
expect(getByTestId('pure-toolbar')).toBeInTheDocument();
|
|
375
|
+
});
|
|
376
|
+
it('renders with hasPreview option', function () {
|
|
377
|
+
var opts = {
|
|
378
|
+
hasPreview: true,
|
|
379
|
+
characters: [[{
|
|
380
|
+
name: 'euro',
|
|
381
|
+
write: '€',
|
|
382
|
+
label: '€',
|
|
383
|
+
description: 'Euro sign',
|
|
384
|
+
unicode: 'U+20AC'
|
|
385
|
+
}]]
|
|
386
|
+
};
|
|
387
|
+
var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
388
|
+
editor: mockEditor,
|
|
389
|
+
opts: opts,
|
|
390
|
+
onClose: jest.fn()
|
|
391
|
+
})),
|
|
392
|
+
getByTestId = _render11.getByTestId;
|
|
393
|
+
expect(getByTestId('pure-toolbar')).toBeInTheDocument();
|
|
394
|
+
});
|
|
395
|
+
it('calculates position correctly', function () {
|
|
396
|
+
var opts = {
|
|
397
|
+
characters: [['á']]
|
|
398
|
+
};
|
|
399
|
+
var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
400
|
+
editor: mockEditor,
|
|
401
|
+
opts: opts,
|
|
402
|
+
onClose: jest.fn()
|
|
403
|
+
})),
|
|
404
|
+
container = _render12.container;
|
|
405
|
+
var dialog = container.querySelector('.insert-character-dialog');
|
|
406
|
+
expect(dialog).toHaveStyle({
|
|
407
|
+
position: 'fixed'
|
|
408
|
+
});
|
|
409
|
+
});
|
|
410
|
+
it('renders above other editor overlays with a high z-index', function () {
|
|
411
|
+
var opts = {
|
|
412
|
+
characters: [['á']]
|
|
413
|
+
};
|
|
414
|
+
var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
415
|
+
editor: mockEditor,
|
|
416
|
+
opts: opts,
|
|
417
|
+
onClose: jest.fn()
|
|
418
|
+
})),
|
|
419
|
+
container = _render13.container;
|
|
420
|
+
var dialog = container.querySelector('.insert-character-dialog');
|
|
421
|
+
expect(dialog).toHaveStyle({
|
|
422
|
+
zIndex: '1000'
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
it('adds data-toolbar-for attribute with editor instanceId', function () {
|
|
426
|
+
var editorWithInstanceId = _objectSpread(_objectSpread({}, mockEditor), {}, {
|
|
427
|
+
instanceId: 'editor-123'
|
|
428
|
+
});
|
|
429
|
+
var opts = {
|
|
430
|
+
characters: [['á', 'é']]
|
|
431
|
+
};
|
|
432
|
+
var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
433
|
+
editor: editorWithInstanceId,
|
|
434
|
+
opts: opts,
|
|
435
|
+
onClose: jest.fn()
|
|
436
|
+
})),
|
|
437
|
+
container = _render14.container;
|
|
438
|
+
var dialog = container.querySelector('.insert-character-dialog');
|
|
439
|
+
expect(dialog).toHaveAttribute('data-toolbar-for', 'editor-123');
|
|
440
|
+
});
|
|
441
|
+
it('renders without instanceId gracefully', function () {
|
|
442
|
+
var opts = {
|
|
443
|
+
characters: [['á', 'é']]
|
|
444
|
+
};
|
|
445
|
+
var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
446
|
+
editor: mockEditor,
|
|
447
|
+
opts: opts,
|
|
448
|
+
onClose: jest.fn()
|
|
449
|
+
})),
|
|
450
|
+
container = _render15.container;
|
|
451
|
+
var dialog = container.querySelector('.insert-character-dialog');
|
|
452
|
+
expect(dialog).toBeInTheDocument();
|
|
453
|
+
});
|
|
454
|
+
});
|
|
455
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfQ2hhcmFjdGVyUGlja2VyIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJqZXN0IiwibW9jayIsInJlcXVpcmVBY3R1YWwiLCJjcmVhdGVQb3J0YWwiLCJub2RlIiwiUHVyZVRvb2xiYXIiLCJfcmVmIiwib25DaGFuZ2UiLCJvbkRvbmUiLCJhZGRpdGlvbmFsS2V5cyIsImNyZWF0ZUVsZW1lbnQiLCJvbkNsaWNrIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfcmVmMiIsImNoaWxkcmVuIiwib25DbG9zZSIsImRlc2NyaWJlIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiQ2hhcmFjdGVySWNvbiIsImxldHRlciIsImdldEJ5VGV4dCIsImV4cGVjdCIsInRvQmVJblRoZURvY3VtZW50IiwiX3JlbmRlcjIiLCJjb250YWluZXIiLCJkaXYiLCJmaXJzdENoaWxkIiwidG9IYXZlU3R5bGUiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJtb2NrRWRpdG9yIiwiY2hhaW4iLCJmbiIsImZvY3VzIiwiaW5zZXJ0Q29udGVudCIsInJ1biIsIm9wdGlvbnMiLCJlbGVtZW50IiwiZG9jdW1lbnQiLCJ2aWV3IiwiY29vcmRzQXRQb3MiLCJ0b3AiLCJsZWZ0IiwiZG9tIiwic3RhdGUiLCJzZWxlY3Rpb24iLCJmcm9tIiwiYmVmb3JlRWFjaCIsImNsZWFyQWxsTW9ja3MiLCJ2YWx1ZSIsImhlaWdodCIsImNvbmZpZ3VyYWJsZSIsIl9yZW5kZXIzIiwiQ2hhcmFjdGVyUGlja2VyIiwiZWRpdG9yIiwib3B0cyIsInRvQmVOdWxsIiwiX3JlbmRlcjQiLCJsYW5ndWFnZSIsImNoYXJhY3RlcnMiLCJfcmVuZGVyNSIsImdldEJ5VGVzdElkIiwiX3JlbmRlcjYiLCJfcmVuZGVyNyIsImZpcmVFdmVudCIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZCIsIl9yZW5kZXI4IiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUyIiwid3JhcCIsIl9jb250ZXh0MiIsInByZXYiLCJuZXh0IiwiYWN0IiwiX2NhbGxlZSIsIl9jb250ZXh0IiwiUHJvbWlzZSIsInNldFRpbWVvdXQiLCJzdG9wIiwiYm9keSIsIndhaXRGb3IiLCJfY2FsbGVlNCIsImdldFJlY3QiLCJfcmVuZGVyOSIsInJlcmVuZGVyIiwiY2FsbHNBZnRlck1vdW50IiwiX2NvbnRleHQ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJjYWxscyIsInRvQmVHcmVhdGVyVGhhbiIsInRvQmUiLCJfY2FsbGVlNiIsIm9uQ2xvc2VGaXJzdCIsIl9yZW5kZXIwIiwib25DbG9zZVNlY29uZCIsIl9jb250ZXh0NiIsIl9jYWxsZWU1IiwiX2NvbnRleHQ1Iiwibm90IiwiX2NhbGxlZTciLCJfcmVuZGVyMSIsIl9jb250ZXh0NyIsInBpY2tlciIsInF1ZXJ5U2VsZWN0b3IiLCJtb3VzZURvd24iLCJuYW1lIiwid3JpdGUiLCJsYWJlbCIsIl9yZW5kZXIxMCIsImhhc1ByZXZpZXciLCJkZXNjcmlwdGlvbiIsInVuaWNvZGUiLCJfcmVuZGVyMTEiLCJfcmVuZGVyMTIiLCJkaWFsb2ciLCJwb3NpdGlvbiIsIl9yZW5kZXIxMyIsInpJbmRleCIsImVkaXRvcldpdGhJbnN0YW5jZUlkIiwiaW5zdGFuY2VJZCIsIl9yZW5kZXIxNCIsInRvSGF2ZUF0dHJpYnV0ZSIsIl9yZW5kZXIxNSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL19fdGVzdHNfXy9DaGFyYWN0ZXJQaWNrZXIudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGFjdCwgZmlyZUV2ZW50LCByZW5kZXIsIHdhaXRGb3IgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IENoYXJhY3Rlckljb24sIENoYXJhY3RlclBpY2tlciB9IGZyb20gJy4uL0NoYXJhY3RlclBpY2tlcic7XG5cbmplc3QubW9jaygncmVhY3QtZG9tJywgKCkgPT4gKHtcbiAgLi4uamVzdC5yZXF1aXJlQWN0dWFsKCdyZWFjdC1kb20nKSxcbiAgY3JlYXRlUG9ydGFsOiAobm9kZSkgPT4gbm9kZSxcbn0pKTtcblxuamVzdC5tb2NrKCdAcGllLWxpYi9tYXRoLXRvb2xiYXInLCAoKSA9PiAoe1xuICBQdXJlVG9vbGJhcjogKHsgb25DaGFuZ2UsIG9uRG9uZSwgYWRkaXRpb25hbEtleXMgfSkgPT4gKFxuICAgIDxkaXYgZGF0YS10ZXN0aWQ9XCJwdXJlLXRvb2xiYXJcIj5cbiAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gb25DaGFuZ2UoJ8OhJyl9IGRhdGEtdGVzdGlkPVwiY2hhci1idXR0b25cIj5cbiAgICAgICAgw6FcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtvbkRvbmV9IGRhdGEtdGVzdGlkPVwiZG9uZS1idXR0b25cIj5cbiAgICAgICAgRG9uZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICksXG59KSk7XG5cbmplc3QubW9jaygnLi4vY2hhcmFjdGVycy9jdXN0b20tcG9wcGVyJywgKCkgPT4gKHtcbiAgX19lc01vZHVsZTogdHJ1ZSxcbiAgZGVmYXVsdDogKHsgY2hpbGRyZW4sIG9uQ2xvc2UgfSkgPT4gKFxuICAgIDxkaXYgZGF0YS10ZXN0aWQ9XCJjdXN0b20tcG9wcGVyXCI+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICA8YnV0dG9uIG9uQ2xpY2s9e29uQ2xvc2V9IGRhdGEtdGVzdGlkPVwiY2xvc2UtcG9wcGVyXCI+XG4gICAgICAgIENsb3NlXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgKSxcbn0pKTtcblxuZGVzY3JpYmUoJ0NoYXJhY3Rlckljb24nLCAoKSA9PiB7XG4gIGl0KCdyZW5kZXJzIHdpdGggbGV0dGVyJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPENoYXJhY3Rlckljb24gbGV0dGVyPVwiw7FcIiAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGV4dCgnw7EnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgd2l0aCBjb3JyZWN0IHN0eWxpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hhcmFjdGVySWNvbiBsZXR0ZXI9XCLigqxcIiAvPik7XG4gICAgY29uc3QgZGl2ID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgZXhwZWN0KGRpdikudG9IYXZlU3R5bGUoeyBmb250U2l6ZTogJzI0cHgnLCBsaW5lSGVpZ2h0OiAnMjRweCcgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDaGFyYWN0ZXJQaWNrZXInLCAoKSA9PiB7XG4gIGNvbnN0IG1vY2tFZGl0b3IgPSB7XG4gICAgY2hhaW46IGplc3QuZm4oKCkgPT4gKHtcbiAgICAgIGZvY3VzOiBqZXN0LmZuKCgpID0+ICh7XG4gICAgICAgIGluc2VydENvbnRlbnQ6IGplc3QuZm4oKCkgPT4gKHsgcnVuOiBqZXN0LmZuKCkgfSkpLFxuICAgICAgfSkpLFxuICAgIH0pKSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBlbGVtZW50OiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSxcbiAgICB9LFxuICAgIHZpZXc6IHtcbiAgICAgIGNvb3Jkc0F0UG9zOiBqZXN0LmZuKCgpID0+ICh7IHRvcDogMTAwLCBsZWZ0OiA1MCB9KSksXG4gICAgICBkb206IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIHNlbGVjdGlvbjogeyBmcm9tOiAwIH0sXG4gICAgfSxcbiAgfTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbiAgICAvLyBSZXNldCB0aGUgZWxlbWVudCB0byBhdm9pZCBcIkNhbm5vdCByZWRlZmluZSBwcm9wZXJ0eVwiIGVycm9yXG4gICAgbW9ja0VkaXRvci5vcHRpb25zLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9ja0VkaXRvci5vcHRpb25zLmVsZW1lbnQsICdnZXRCb3VuZGluZ0NsaWVudFJlY3QnLCB7XG4gICAgICB2YWx1ZTogamVzdC5mbigoKSA9PiAoeyB0b3A6IDAsIGxlZnQ6IDAsIGhlaWdodDogMTAwIH0pKSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgbnVsbCB3aGVuIG9wdHMgaGFzIG5vIGNoYXJhY3RlcnMnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hhcmFjdGVyUGlja2VyIGVkaXRvcj17bW9ja0VkaXRvcn0gb3B0cz17e319IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZU51bGwoKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgbnVsbCB3aGVuIG9wdHMgaXMgbm90IHByb3ZpZGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e251bGx9IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZU51bGwoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgY2hhcmFjdGVyIHBpY2tlciB3aXRoIHNwYW5pc2ggY29uZmlnJywgKCkgPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICBsYW5ndWFnZTogJ3NwYW5pc2gnLFxuICAgICAgY2hhcmFjdGVyczogW1snw6EnLCAnw6knLCAnw60nXV0sXG4gICAgfTtcbiAgICBjb25zdCB7IGdldEJ5VGVzdElkIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChnZXRCeVRlc3RJZCgncHVyZS10b29sYmFyJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIGNoYXJhY3RlciBwaWNrZXIgd2l0aCBzcGVjaWFsIGNvbmZpZycsICgpID0+IHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgbGFuZ3VhZ2U6ICdzcGVjaWFsJyxcbiAgICAgIGNoYXJhY3RlcnM6IFtbJ+KCrCcsICfCoyddXSxcbiAgICB9O1xuICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlcig8Q2hhcmFjdGVyUGlja2VyIGVkaXRvcj17bW9ja0VkaXRvcn0gb3B0cz17b3B0c30gb25DbG9zZT17amVzdC5mbigpfSAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGVzdElkKCdwdXJlLXRvb2xiYXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgY2hhcmFjdGVyIGluc2VydGlvbicsICgpID0+IHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgY2hhcmFjdGVyczogW1snw6EnLCAnw6knXV0sXG4gICAgfTtcbiAgICBjb25zdCB7IGdldEJ5VGVzdElkIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGZpcmVFdmVudC5jbGljayhnZXRCeVRlc3RJZCgnY2hhci1idXR0b24nKSk7XG4gICAgZXhwZWN0KG1vY2tFZGl0b3IuY2hhaW4pLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGxzIG9uQ2xvc2Ugd2hlbiBkb25lIGJ1dHRvbiBpcyBjbGlja2VkJywgKCkgPT4ge1xuICAgIGNvbnN0IG9uQ2xvc2UgPSBqZXN0LmZuKCk7XG4gICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgIGNoYXJhY3RlcnM6IFtbJ8OhJywgJ8OpJ11dLFxuICAgIH07XG4gICAgY29uc3QgeyBnZXRCeVRlc3RJZCB9ID0gcmVuZGVyKDxDaGFyYWN0ZXJQaWNrZXIgZWRpdG9yPXttb2NrRWRpdG9yfSBvcHRzPXtvcHRzfSBvbkNsb3NlPXtvbkNsb3NlfSAvPik7XG4gICAgZmlyZUV2ZW50LmNsaWNrKGdldEJ5VGVzdElkKCdkb25lLWJ1dHRvbicpKTtcbiAgICBleHBlY3Qob25DbG9zZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdCgnY2xvc2VzIG9uIG91dHNpZGUgY2xpY2snLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb25DbG9zZSA9IGplc3QuZm4oKTtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgY2hhcmFjdGVyczogW1snw6EnLCAnw6knXV0sXG4gICAgfTtcbiAgICByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e29uQ2xvc2V9IC8+KTtcblxuICAgIGF3YWl0IGFjdChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAwKSk7XG4gICAgfSk7XG4gICAgZmlyZUV2ZW50LmNsaWNrKGRvY3VtZW50LmJvZHkpO1xuXG4gICAgYXdhaXQgd2FpdEZvcigoKSA9PiB7XG4gICAgICBleHBlY3Qob25DbG9zZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnZG9lcyBub3QgcmUtcnVuIHBvc2l0aW9uaW5nIHdoZW4gb25seSBvbkNsb3NlIHJlZmVyZW5jZSBjaGFuZ2VzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICBjaGFyYWN0ZXJzOiBbWyfDoScsICfDqSddXSxcbiAgICB9O1xuICAgIGNvbnN0IGdldFJlY3QgPSBtb2NrRWRpdG9yLm9wdGlvbnMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Q7XG4gICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyKDxDaGFyYWN0ZXJQaWNrZXIgZWRpdG9yPXttb2NrRWRpdG9yfSBvcHRzPXtvcHRzfSBvbkNsb3NlPXtqZXN0LmZuKCl9IC8+KTtcblxuICAgIGF3YWl0IGFjdChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCAwKSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjYWxsc0FmdGVyTW91bnQgPSBnZXRSZWN0Lm1vY2suY2FsbHMubGVuZ3RoO1xuICAgIGV4cGVjdChjYWxsc0FmdGVyTW91bnQpLnRvQmVHcmVhdGVyVGhhbigwKTtcblxuICAgIHJlcmVuZGVyKDxDaGFyYWN0ZXJQaWNrZXIgZWRpdG9yPXttb2NrRWRpdG9yfSBvcHRzPXtvcHRzfSBvbkNsb3NlPXtqZXN0LmZuKCl9IC8+KTtcblxuICAgIGV4cGVjdChnZXRSZWN0Lm1vY2suY2FsbHMubGVuZ3RoKS50b0JlKGNhbGxzQWZ0ZXJNb3VudCk7XG4gIH0pO1xuXG4gIGl0KCdvdXRzaWRlIGNsaWNrIGludm9rZXMgdGhlIGxhdGVzdCBvbkNsb3NlIGFmdGVyIHJlcmVuZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICBjaGFyYWN0ZXJzOiBbWyfDoScsICfDqSddXSxcbiAgICB9O1xuICAgIGNvbnN0IG9uQ2xvc2VGaXJzdCA9IGplc3QuZm4oKTtcbiAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e29uQ2xvc2VGaXJzdH0gLz4pO1xuXG4gICAgYXdhaXQgYWN0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDApKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG9uQ2xvc2VTZWNvbmQgPSBqZXN0LmZuKCk7XG4gICAgcmVyZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e29uQ2xvc2VTZWNvbmR9IC8+KTtcblxuICAgIGZpcmVFdmVudC5jbGljayhkb2N1bWVudC5ib2R5KTtcblxuICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgICAgZXhwZWN0KG9uQ2xvc2VTZWNvbmQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgICBleHBlY3Qob25DbG9zZUZpcnN0KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdCgnZG9lcyBub3QgY2xvc2Ugd2hlbiBjbGlja2luZyBpbnNpZGUgcGlja2VyJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9uQ2xvc2UgPSBqZXN0LmZuKCk7XG4gICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgIGNoYXJhY3RlcnM6IFtbJ8OhJywgJ8OpJ11dLFxuICAgIH07XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hhcmFjdGVyUGlja2VyIGVkaXRvcj17bW9ja0VkaXRvcn0gb3B0cz17b3B0c30gb25DbG9zZT17b25DbG9zZX0gLz4pO1xuXG4gICAgYXdhaXQgd2FpdEZvcigoKSA9PiB7XG4gICAgICBjb25zdCBwaWNrZXIgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLmluc2VydC1jaGFyYWN0ZXItZGlhbG9nJyk7XG4gICAgICBpZiAocGlja2VyKSB7XG4gICAgICAgIGZpcmVFdmVudC5tb3VzZURvd24ocGlja2VyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGV4cGVjdChvbkNsb3NlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdCgncmVuZGVycyB3aXRoIGN1c3RvbSBvcHRzIHN0cnVjdHVyZScsICgpID0+IHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgY2hhcmFjdGVyczogW1xuICAgICAgICBbXG4gICAgICAgICAgeyBuYW1lOiAnYScsIHdyaXRlOiAnw6EnLCBsYWJlbDogJ8OhJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ2UnLCB3cml0ZTogJ8OpJywgbGFiZWw6ICfDqScgfSxcbiAgICAgICAgXSxcbiAgICAgIF0sXG4gICAgfTtcbiAgICBjb25zdCB7IGdldEJ5VGVzdElkIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChnZXRCeVRlc3RJZCgncHVyZS10b29sYmFyJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIHdpdGggaGFzUHJldmlldyBvcHRpb24nLCAoKSA9PiB7XG4gICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgIGhhc1ByZXZpZXc6IHRydWUsXG4gICAgICBjaGFyYWN0ZXJzOiBbXG4gICAgICAgIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZXVybycsXG4gICAgICAgICAgICB3cml0ZTogJ+KCrCcsXG4gICAgICAgICAgICBsYWJlbDogJ+KCrCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0V1cm8gc2lnbicsXG4gICAgICAgICAgICB1bmljb2RlOiAnVSsyMEFDJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlcig8Q2hhcmFjdGVyUGlja2VyIGVkaXRvcj17bW9ja0VkaXRvcn0gb3B0cz17b3B0c30gb25DbG9zZT17amVzdC5mbigpfSAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGVzdElkKCdwdXJlLXRvb2xiYXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGN1bGF0ZXMgcG9zaXRpb24gY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICBjaGFyYWN0ZXJzOiBbWyfDoSddXSxcbiAgICB9O1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGNvbnN0IGRpYWxvZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuaW5zZXJ0LWNoYXJhY3Rlci1kaWFsb2cnKTtcbiAgICBleHBlY3QoZGlhbG9nKS50b0hhdmVTdHlsZSh7IHBvc2l0aW9uOiAnZml4ZWQnIH0pO1xuICB9KTtcblxuICBpdCgncmVuZGVycyBhYm92ZSBvdGhlciBlZGl0b3Igb3ZlcmxheXMgd2l0aCBhIGhpZ2ggei1pbmRleCcsICgpID0+IHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgY2hhcmFjdGVyczogW1snw6EnXV0sXG4gICAgfTtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaGFyYWN0ZXJQaWNrZXIgZWRpdG9yPXttb2NrRWRpdG9yfSBvcHRzPXtvcHRzfSBvbkNsb3NlPXtqZXN0LmZuKCl9IC8+KTtcbiAgICBjb25zdCBkaWFsb2cgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLmluc2VydC1jaGFyYWN0ZXItZGlhbG9nJyk7XG4gICAgZXhwZWN0KGRpYWxvZykudG9IYXZlU3R5bGUoeyB6SW5kZXg6ICcxMDAwJyB9KTtcbiAgfSk7XG5cbiAgaXQoJ2FkZHMgZGF0YS10b29sYmFyLWZvciBhdHRyaWJ1dGUgd2l0aCBlZGl0b3IgaW5zdGFuY2VJZCcsICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3JXaXRoSW5zdGFuY2VJZCA9IHtcbiAgICAgIC4uLm1vY2tFZGl0b3IsXG4gICAgICBpbnN0YW5jZUlkOiAnZWRpdG9yLTEyMycsXG4gICAgfTtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgY2hhcmFjdGVyczogW1snw6EnLCAnw6knXV0sXG4gICAgfTtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaGFyYWN0ZXJQaWNrZXIgZWRpdG9yPXtlZGl0b3JXaXRoSW5zdGFuY2VJZH0gb3B0cz17b3B0c30gb25DbG9zZT17amVzdC5mbigpfSAvPik7XG4gICAgY29uc3QgZGlhbG9nID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5pbnNlcnQtY2hhcmFjdGVyLWRpYWxvZycpO1xuICAgIGV4cGVjdChkaWFsb2cpLnRvSGF2ZUF0dHJpYnV0ZSgnZGF0YS10b29sYmFyLWZvcicsICdlZGl0b3ItMTIzJyk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIHdpdGhvdXQgaW5zdGFuY2VJZCBncmFjZWZ1bGx5JywgKCkgPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICBjaGFyYWN0ZXJzOiBbWyfDoScsICfDqSddXSxcbiAgICB9O1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGNvbnN0IGRpYWxvZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuaW5zZXJ0LWNoYXJhY3Rlci1kaWFsb2cnKTtcbiAgICBleHBlY3QoZGlhbG9nKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdz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
|
|
@@ -0,0 +1,58 @@
|
|
|
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 _CssIcon = _interopRequireDefault(require("../icons/CssIcon"));
|
|
7
|
+
describe('CssIcon', function () {
|
|
8
|
+
it('renders without crashing', function () {
|
|
9
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
10
|
+
container = _render.container;
|
|
11
|
+
expect(container).toBeInTheDocument();
|
|
12
|
+
});
|
|
13
|
+
it('renders CSS text', function () {
|
|
14
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
15
|
+
getByText = _render2.getByText;
|
|
16
|
+
expect(getByText('CSS')).toBeInTheDocument();
|
|
17
|
+
});
|
|
18
|
+
it('applies correct font family', function () {
|
|
19
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
20
|
+
getByText = _render3.getByText;
|
|
21
|
+
var element = getByText('CSS');
|
|
22
|
+
// Font family is applied via styled component, just verify text renders
|
|
23
|
+
expect(element).toBeInTheDocument();
|
|
24
|
+
});
|
|
25
|
+
it('applies bold font weight', function () {
|
|
26
|
+
var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
27
|
+
getByText = _render4.getByText;
|
|
28
|
+
var element = getByText('CSS');
|
|
29
|
+
expect(element).toHaveStyle({
|
|
30
|
+
fontWeight: 'bold'
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
it('has correct line height', function () {
|
|
34
|
+
var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
35
|
+
getByText = _render5.getByText;
|
|
36
|
+
var element = getByText('CSS');
|
|
37
|
+
expect(element).toHaveStyle({
|
|
38
|
+
lineHeight: '14px'
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
it('has relative positioning', function () {
|
|
42
|
+
var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
43
|
+
getByText = _render6.getByText;
|
|
44
|
+
var element = getByText('CSS');
|
|
45
|
+
expect(element).toHaveStyle({
|
|
46
|
+
position: 'relative'
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
it('has nowrap white space', function () {
|
|
50
|
+
var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null)),
|
|
51
|
+
getByText = _render7.getByText;
|
|
52
|
+
var element = getByText('CSS');
|
|
53
|
+
expect(element).toHaveStyle({
|
|
54
|
+
whiteSpace: 'nowrap'
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfQ3NzSWNvbiIsImRlc2NyaWJlIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsInRvQmVJblRoZURvY3VtZW50IiwiX3JlbmRlcjIiLCJnZXRCeVRleHQiLCJfcmVuZGVyMyIsImVsZW1lbnQiLCJfcmVuZGVyNCIsInRvSGF2ZVN0eWxlIiwiZm9udFdlaWdodCIsIl9yZW5kZXI1IiwibGluZUhlaWdodCIsIl9yZW5kZXI2IiwicG9zaXRpb24iLCJfcmVuZGVyNyIsIndoaXRlU3BhY2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9fX3Rlc3RzX18vQ3NzSWNvbi50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgQ3NzSWNvbiBmcm9tICcuLi9pY29ucy9Dc3NJY29uJztcblxuZGVzY3JpYmUoJ0Nzc0ljb24nLCAoKSA9PiB7XG4gIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q3NzSWNvbiAvPik7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgQ1NTIHRleHQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8Q3NzSWNvbiAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGV4dCgnQ1NTJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdhcHBsaWVzIGNvcnJlY3QgZm9udCBmYW1pbHknLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8Q3NzSWNvbiAvPik7XG4gICAgY29uc3QgZWxlbWVudCA9IGdldEJ5VGV4dCgnQ1NTJyk7XG4gICAgLy8gRm9udCBmYW1pbHkgaXMgYXBwbGllZCB2aWEgc3R5bGVkIGNvbXBvbmVudCwganVzdCB2ZXJpZnkgdGV4dCByZW5kZXJzXG4gICAgZXhwZWN0KGVsZW1lbnQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdhcHBsaWVzIGJvbGQgZm9udCB3ZWlnaHQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8Q3NzSWNvbiAvPik7XG4gICAgY29uc3QgZWxlbWVudCA9IGdldEJ5VGV4dCgnQ1NTJyk7XG4gICAgZXhwZWN0KGVsZW1lbnQpLnRvSGF2ZVN0eWxlKHsgZm9udFdlaWdodDogJ2JvbGQnIH0pO1xuICB9KTtcblxuICBpdCgnaGFzIGNvcnJlY3QgbGluZSBoZWlnaHQnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBnZXRCeVRleHQgfSA9IHJlbmRlcig8Q3NzSWNvbiAvPik7XG4gICAgY29uc3QgZWxlbWVudCA9IGdldEJ5VGV4dCgnQ1NTJyk7XG4gICAgZXhwZWN0KGVsZW1lbnQpLnRvSGF2ZVN0eWxlKHsgbGluZUhlaWdodDogJzE0cHgnIH0pO1xuICB9KTtcblxuICBpdCgnaGFzIHJlbGF0aXZlIHBvc2l0aW9uaW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPENzc0ljb24gLz4pO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRCeVRleHQoJ0NTUycpO1xuICAgIGV4cGVjdChlbGVtZW50KS50b0hhdmVTdHlsZSh7IHBvc2l0aW9uOiAncmVsYXRpdmUnIH0pO1xuICB9KTtcblxuICBpdCgnaGFzIG5vd3JhcCB3aGl0ZSBzcGFjZScsICgpID0+IHtcbiAgICBjb25zdCB7IGdldEJ5VGV4dCB9ID0gcmVuZGVyKDxDc3NJY29uIC8+KTtcbiAgICBjb25zdCBlbGVtZW50ID0gZ2V0QnlUZXh0KCdDU1MnKTtcbiAgICBleHBlY3QoZWxlbWVudCkudG9IYXZlU3R5bGUoeyB3aGl0ZVNwYWNlOiAnbm93cmFwJyB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUFHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBTTtFQUN4QkMsRUFBRSxDQUFDLDBCQUEwQixFQUFFLFlBQU07SUFDbkMsSUFBQUMsT0FBQSxHQUFzQixJQUFBQyxjQUFNLGVBQUNSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxRQUFBLFdBQU8sTUFBRSxDQUFDLENBQUM7TUFBakNNLFNBQVMsR0FBQUgsT0FBQSxDQUFURyxTQUFTO0lBQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxDQUFDRSxpQkFBaUIsQ0FBQyxDQUFDO0VBQ3ZDLENBQUMsQ0FBQztFQUVGTixFQUFFLENBQUMsa0JBQWtCLEVBQUUsWUFBTTtJQUMzQixJQUFBTyxRQUFBLEdBQXNCLElBQUFMLGNBQU0sZUFBQ1IsTUFBQSxZQUFBUyxhQUFBLENBQUNMLFFBQUEsV0FBTyxNQUFFLENBQUMsQ0FBQztNQUFqQ1UsU0FBUyxHQUFBRCxRQUFBLENBQVRDLFNBQVM7SUFDakJILE1BQU0sQ0FBQ0csU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUNGLGlCQUFpQixDQUFDLENBQUM7RUFDOUMsQ0FBQyxDQUFDO0VBRUZOLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxZQUFNO0lBQ3RDLElBQUFTLFFBQUEsR0FBc0IsSUFBQVAsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsUUFBQSxXQUFPLE1BQUUsQ0FBQyxDQUFDO01BQWpDVSxTQUFTLEdBQUFDLFFBQUEsQ0FBVEQsU0FBUztJQUNqQixJQUFNRSxPQUFPLEdBQUdGLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDaEM7SUFDQUgsTUFBTSxDQUFDSyxPQUFPLENBQUMsQ0FBQ0osaUJBQWlCLENBQUMsQ0FBQztFQUNyQyxDQUFDLENBQUM7RUFFRk4sRUFBRSxDQUFDLDBCQUEwQixFQUFFLFlBQU07SUFDbkMsSUFBQVcsUUFBQSxHQUFzQixJQUFBVCxjQUFNLGVBQUNSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxRQUFBLFdBQU8sTUFBRSxDQUFDLENBQUM7TUFBakNVLFNBQVMsR0FBQUcsUUFBQSxDQUFUSCxTQUFTO0lBQ2pCLElBQU1FLE9BQU8sR0FBR0YsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNoQ0gsTUFBTSxDQUFDSyxPQUFPLENBQUMsQ0FBQ0UsV0FBVyxDQUFDO01BQUVDLFVBQVUsRUFBRTtJQUFPLENBQUMsQ0FBQztFQUNyRCxDQUFDLENBQUM7RUFFRmIsRUFBRSxDQUFDLHlCQUF5QixFQUFFLFlBQU07SUFDbEMsSUFBQWMsUUFBQSxHQUFzQixJQUFBWixjQUFNLGVBQUNSLE1BQUEsWUFBQVMsYUFBQSxDQUFDTCxRQUFBLFdBQU8sTUFBRSxDQUFDLENBQUM7TUFBakNVLFNBQVMsR0FBQU0sUUFBQSxDQUFUTixTQUFTO0lBQ2pCLElBQU1FLE9BQU8sR0FBR0YsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNoQ0gsTUFBTSxDQUFDSyxPQUFPLENBQUMsQ0FBQ0UsV0FBVyxDQUFDO01BQUVHLFVBQVUsRUFBRTtJQUFPLENBQUMsQ0FBQztFQUNyRCxDQUFDLENBQUM7RUFFRmYsRUFBRSxDQUFDLDBCQUEwQixFQUFFLFlBQU07SUFDbkMsSUFBQWdCLFFBQUEsR0FBc0IsSUFBQWQsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsUUFBQSxXQUFPLE1BQUUsQ0FBQyxDQUFDO01BQWpDVSxTQUFTLEdBQUFRLFFBQUEsQ0FBVFIsU0FBUztJQUNqQixJQUFNRSxPQUFPLEdBQUdGLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDaENILE1BQU0sQ0FBQ0ssT0FBTyxDQUFDLENBQUNFLFdBQVcsQ0FBQztNQUFFSyxRQUFRLEVBQUU7SUFBVyxDQUFDLENBQUM7RUFDdkQsQ0FBQyxDQUFDO0VBRUZqQixFQUFFLENBQUMsd0JBQXdCLEVBQUUsWUFBTTtJQUNqQyxJQUFBa0IsUUFBQSxHQUFzQixJQUFBaEIsY0FBTSxlQUFDUixNQUFBLFlBQUFTLGFBQUEsQ0FBQ0wsUUFBQSxXQUFPLE1BQUUsQ0FBQyxDQUFDO01BQWpDVSxTQUFTLEdBQUFVLFFBQUEsQ0FBVFYsU0FBUztJQUNqQixJQUFNRSxPQUFPLEdBQUdGLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDaENILE1BQU0sQ0FBQ0ssT0FBTyxDQUFDLENBQUNFLFdBQVcsQ0FBQztNQUFFTyxVQUFVLEVBQUU7SUFBUyxDQUFDLENBQUM7RUFDdkQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|