@pie-lib/editable-html-tip-tap 2.1.20-beta.6 → 2.1.20-beta.7

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 (94) hide show
  1. package/lib/__tests__/EditableHtml.test.js +831 -0
  2. package/lib/__tests__/constants.test.js +21 -0
  3. package/lib/__tests__/div-to-paragraph-conversion.test.js +213 -0
  4. package/lib/__tests__/extensions.test.js +209 -0
  5. package/lib/__tests__/index.test.js +250 -0
  6. package/lib/__tests__/size-utils.test.js +57 -0
  7. package/lib/__tests__/spellcheck.test.js +142 -0
  8. package/lib/__tests__/theme.test.js +17 -0
  9. package/lib/components/__tests__/AltDialog.test.js +201 -0
  10. package/lib/components/__tests__/CharacterPicker.test.js +455 -0
  11. package/lib/components/__tests__/CssIcon.test.js +58 -0
  12. package/lib/components/__tests__/DragInTheBlank.test.js +295 -0
  13. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +345 -0
  14. package/lib/components/__tests__/ImageToolbar.test.js +185 -0
  15. package/lib/components/__tests__/InlineDropdown.test.js +839 -0
  16. package/lib/components/__tests__/InsertImageHandler.test.js +171 -0
  17. package/lib/components/__tests__/MediaDialog.test.js +433 -0
  18. package/lib/components/__tests__/MediaToolbar.test.js +126 -0
  19. package/lib/components/__tests__/MediaWrapper.test.js +96 -0
  20. package/lib/components/__tests__/MenuBar.test.js +502 -0
  21. package/lib/components/__tests__/RespArea.test.js +171 -0
  22. package/lib/components/__tests__/TableIcons.test.js +153 -0
  23. package/lib/components/__tests__/TextAlign.test.js +209 -0
  24. package/lib/components/__tests__/TiptapContainer.test.js +196 -0
  25. package/lib/components/__tests__/characterUtils.test.js +178 -0
  26. package/lib/components/__tests__/choice.test.js +213 -0
  27. package/lib/components/__tests__/custom-popper.test.js +108 -0
  28. package/lib/components/__tests__/done-button.test.js +72 -0
  29. package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
  30. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +90 -0
  31. package/lib/components/respArea/__tests__/MathTemplated.test.js +217 -0
  32. package/lib/extensions/__tests__/css.test.js +214 -0
  33. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +175 -0
  34. package/lib/extensions/__tests__/divNode.test.js +108 -0
  35. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +50 -0
  36. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +60 -0
  37. package/lib/extensions/__tests__/extended-list-item.test.js +13 -0
  38. package/lib/extensions/__tests__/extended-table-cell.test.js +15 -0
  39. package/lib/extensions/__tests__/extended-table.test.js +200 -0
  40. package/lib/extensions/__tests__/image-component.test.js +432 -0
  41. package/lib/extensions/__tests__/image.test.js +313 -0
  42. package/lib/extensions/__tests__/math.test.js +1411 -0
  43. package/lib/extensions/__tests__/media-node-view.test.js +307 -0
  44. package/lib/extensions/__tests__/media.test.js +292 -0
  45. package/lib/extensions/__tests__/responseArea.test.js +736 -0
  46. package/lib/utils/__tests__/helper.test.js +107 -0
  47. package/lib/utils/__tests__/toolbar.test.js +38 -0
  48. package/package.json +3 -3
  49. package/src/__tests__/EditableHtml.test.jsx +588 -0
  50. package/src/__tests__/constants.test.js +19 -0
  51. package/src/__tests__/div-to-paragraph-conversion.test.jsx +125 -0
  52. package/src/__tests__/extensions.test.js +208 -0
  53. package/src/__tests__/index.test.jsx +154 -0
  54. package/src/__tests__/size-utils.test.js +64 -0
  55. package/src/__tests__/theme.test.js +17 -0
  56. package/src/components/__tests__/AltDialog.test.jsx +147 -0
  57. package/src/components/__tests__/CharacterPicker.test.jsx +270 -0
  58. package/src/components/__tests__/CssIcon.test.jsx +46 -0
  59. package/src/components/__tests__/DragInTheBlank.test.jsx +255 -0
  60. package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +209 -0
  61. package/src/components/__tests__/ImageToolbar.test.jsx +128 -0
  62. package/src/components/__tests__/InlineDropdown.test.jsx +557 -0
  63. package/src/components/__tests__/InsertImageHandler.test.js +161 -0
  64. package/src/components/__tests__/MediaDialog.test.jsx +293 -0
  65. package/src/components/__tests__/MediaToolbar.test.jsx +74 -0
  66. package/src/components/__tests__/MediaWrapper.test.jsx +81 -0
  67. package/src/components/__tests__/MenuBar.test.jsx +250 -0
  68. package/src/components/__tests__/RespArea.test.jsx +122 -0
  69. package/src/components/__tests__/TableIcons.test.jsx +149 -0
  70. package/src/components/__tests__/TextAlign.test.jsx +167 -0
  71. package/src/components/__tests__/TiptapContainer.test.jsx +138 -0
  72. package/src/components/__tests__/characterUtils.test.js +166 -0
  73. package/src/components/__tests__/choice.test.jsx +171 -0
  74. package/src/components/__tests__/custom-popper.test.jsx +82 -0
  75. package/src/components/__tests__/done-button.test.jsx +54 -0
  76. package/src/components/__tests__/toolbar-buttons.test.jsx +234 -0
  77. package/src/components/respArea/DragInTheBlank/__tests__/choice.test.jsx +72 -0
  78. package/src/components/respArea/__tests__/MathTemplated.test.jsx +210 -0
  79. package/src/extensions/__tests__/css.test.js +196 -0
  80. package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +180 -0
  81. package/src/extensions/__tests__/divNode.test.js +87 -0
  82. package/src/extensions/__tests__/ensure-empty-root-div.test.js +57 -0
  83. package/src/extensions/__tests__/ensure-list-item-content-is-div.test.js +44 -0
  84. package/src/extensions/__tests__/extended-list-item.test.js +13 -0
  85. package/src/extensions/__tests__/extended-table-cell.test.js +22 -0
  86. package/src/extensions/__tests__/extended-table.test.js +183 -0
  87. package/src/extensions/__tests__/image-component.test.jsx +346 -0
  88. package/src/extensions/__tests__/image.test.js +237 -0
  89. package/src/extensions/__tests__/math.test.js +900 -0
  90. package/src/extensions/__tests__/media-node-view.test.jsx +298 -0
  91. package/src/extensions/__tests__/media.test.js +271 -0
  92. package/src/extensions/__tests__/responseArea.test.js +655 -0
  93. package/src/utils/__tests__/helper.test.js +126 -0
  94. 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