@pie-lib/editable-html-tip-tap 1.1.0-next.6059 → 1.1.1-next.1

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 (152) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/lib/__tests__/EditableHtml.test.js +374 -0
  3. package/lib/__tests__/constants.test.js +28 -0
  4. package/lib/__tests__/extensions.test.js +214 -0
  5. package/lib/__tests__/index.test.js +246 -0
  6. package/lib/__tests__/size-utils.test.js +57 -0
  7. package/lib/__tests__/theme.test.js +17 -0
  8. package/lib/components/CharacterPicker.js +18 -0
  9. package/lib/components/CharacterPicker.js.map +1 -1
  10. package/lib/components/EditableHtml.js +22 -5
  11. package/lib/components/EditableHtml.js.map +1 -1
  12. package/lib/components/MenuBar.js +17 -0
  13. package/lib/components/MenuBar.js.map +1 -1
  14. package/lib/components/TiptapContainer.js +16 -0
  15. package/lib/components/TiptapContainer.js.map +1 -1
  16. package/lib/components/__tests__/AltDialog.test.js +201 -0
  17. package/lib/components/__tests__/CharacterPicker.test.js +313 -0
  18. package/lib/components/__tests__/CssIcon.test.js +58 -0
  19. package/lib/components/__tests__/DragInTheBlank.test.js +309 -0
  20. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +263 -0
  21. package/lib/components/__tests__/ImageToolbar.test.js +195 -0
  22. package/lib/components/__tests__/InlineDropdown.test.js +297 -0
  23. package/lib/components/__tests__/InsertImageHandler.test.js +162 -0
  24. package/lib/components/__tests__/MediaDialog.test.js +435 -0
  25. package/lib/components/__tests__/MediaToolbar.test.js +126 -0
  26. package/lib/components/__tests__/MediaWrapper.test.js +96 -0
  27. package/lib/components/__tests__/MenuBar.test.js +459 -0
  28. package/lib/components/__tests__/RespArea.test.js +171 -0
  29. package/lib/components/__tests__/TableIcons.test.js +153 -0
  30. package/lib/components/__tests__/TextAlign.test.js +216 -0
  31. package/lib/components/__tests__/TiptapContainer.test.js +196 -0
  32. package/lib/components/__tests__/characterUtils.test.js +189 -0
  33. package/lib/components/__tests__/choice.test.js +213 -0
  34. package/lib/components/__tests__/custom-popper.test.js +108 -0
  35. package/lib/components/__tests__/done-button.test.js +72 -0
  36. package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
  37. package/lib/components/characters/characterUtils.js +2 -0
  38. package/lib/components/characters/characterUtils.js.map +1 -1
  39. package/lib/components/characters/custom-popper.js +1 -0
  40. package/lib/components/characters/custom-popper.js.map +1 -1
  41. package/lib/components/common/done-button.js +1 -0
  42. package/lib/components/common/done-button.js.map +1 -1
  43. package/lib/components/common/toolbar-buttons.js +12 -0
  44. package/lib/components/common/toolbar-buttons.js.map +1 -1
  45. package/lib/components/icons/CssIcon.js +1 -0
  46. package/lib/components/icons/CssIcon.js.map +1 -1
  47. package/lib/components/icons/RespArea.js +10 -0
  48. package/lib/components/icons/RespArea.js.map +1 -1
  49. package/lib/components/icons/TableIcons.js +1 -0
  50. package/lib/components/icons/TableIcons.js.map +1 -1
  51. package/lib/components/icons/TextAlign.js +7 -0
  52. package/lib/components/icons/TextAlign.js.map +1 -1
  53. package/lib/components/image/AltDialog.js +5 -0
  54. package/lib/components/image/AltDialog.js.map +1 -1
  55. package/lib/components/image/ImageToolbar.js +13 -0
  56. package/lib/components/image/ImageToolbar.js.map +1 -1
  57. package/lib/components/image/InsertImageHandler.js +10 -0
  58. package/lib/components/image/InsertImageHandler.js.map +1 -1
  59. package/lib/components/media/MediaDialog.js +18 -0
  60. package/lib/components/media/MediaDialog.js.map +1 -1
  61. package/lib/components/media/MediaToolbar.js +2 -0
  62. package/lib/components/media/MediaToolbar.js.map +1 -1
  63. package/lib/components/media/MediaWrapper.js +11 -0
  64. package/lib/components/media/MediaWrapper.js.map +1 -1
  65. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +10 -0
  66. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -1
  67. package/lib/components/respArea/DragInTheBlank/choice.js +8 -0
  68. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -1
  69. package/lib/components/respArea/ExplicitConstructedResponse.js +8 -0
  70. package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -1
  71. package/lib/components/respArea/InlineDropdown.js +7 -0
  72. package/lib/components/respArea/InlineDropdown.js.map +1 -1
  73. package/lib/components/respArea/ToolbarIcon.js +10 -0
  74. package/lib/components/respArea/ToolbarIcon.js.map +1 -1
  75. package/lib/constants.js +1 -0
  76. package/lib/constants.js.map +1 -1
  77. package/lib/extensions/__tests__/component.test.js +314 -0
  78. package/lib/extensions/__tests__/css.test.js +218 -0
  79. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +185 -0
  80. package/lib/extensions/__tests__/extended-table.test.js +114 -0
  81. package/lib/extensions/__tests__/image.test.js +178 -0
  82. package/lib/extensions/__tests__/media.test.js +296 -0
  83. package/lib/extensions/__tests__/responseArea.test.js +332 -0
  84. package/lib/extensions/component.js +22 -2
  85. package/lib/extensions/css.js +11 -0
  86. package/lib/extensions/css.js.map +1 -1
  87. package/lib/extensions/custom-toolbar-wrapper.js +15 -0
  88. package/lib/extensions/custom-toolbar-wrapper.js.map +1 -1
  89. package/lib/extensions/extended-table.js +4 -0
  90. package/lib/extensions/extended-table.js.map +1 -1
  91. package/lib/extensions/image-component.js +314 -0
  92. package/lib/extensions/image-component.js.map +1 -0
  93. package/lib/extensions/image.js +13 -2
  94. package/lib/extensions/image.js.map +1 -1
  95. package/lib/extensions/index.js +12 -2
  96. package/lib/extensions/index.js.map +1 -1
  97. package/lib/extensions/math.js +16 -0
  98. package/lib/extensions/math.js.map +1 -1
  99. package/lib/extensions/media.js +15 -0
  100. package/lib/extensions/media.js.map +1 -1
  101. package/lib/extensions/responseArea.js +22 -0
  102. package/lib/extensions/responseArea.js.map +1 -1
  103. package/lib/index.js +7 -0
  104. package/lib/index.js.map +1 -1
  105. package/lib/styles/editorContainerStyles.js +1 -0
  106. package/lib/styles/editorContainerStyles.js.map +1 -1
  107. package/lib/theme.js +1 -0
  108. package/lib/theme.js.map +1 -1
  109. package/lib/utils/size.js +6 -0
  110. package/lib/utils/size.js.map +1 -1
  111. package/package.json +8 -8
  112. package/src/__tests__/EditableHtml.test.jsx +266 -0
  113. package/src/__tests__/constants.test.js +20 -0
  114. package/src/__tests__/extensions.test.js +208 -0
  115. package/src/__tests__/index.test.jsx +146 -0
  116. package/src/__tests__/size-utils.test.js +64 -0
  117. package/src/__tests__/theme.test.js +17 -0
  118. package/src/components/EditableHtml.jsx +8 -6
  119. package/src/components/__tests__/AltDialog.test.jsx +147 -0
  120. package/src/components/__tests__/CharacterPicker.test.jsx +195 -0
  121. package/src/components/__tests__/CssIcon.test.jsx +46 -0
  122. package/src/components/__tests__/DragInTheBlank.test.jsx +255 -0
  123. package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +161 -0
  124. package/src/components/__tests__/ImageToolbar.test.jsx +128 -0
  125. package/src/components/__tests__/InlineDropdown.test.jsx +187 -0
  126. package/src/components/__tests__/InsertImageHandler.test.js +154 -0
  127. package/src/components/__tests__/MediaDialog.test.jsx +293 -0
  128. package/src/components/__tests__/MediaToolbar.test.jsx +74 -0
  129. package/src/components/__tests__/MediaWrapper.test.jsx +81 -0
  130. package/src/components/__tests__/MenuBar.test.jsx +217 -0
  131. package/src/components/__tests__/RespArea.test.jsx +122 -0
  132. package/src/components/__tests__/TableIcons.test.jsx +149 -0
  133. package/src/components/__tests__/TextAlign.test.jsx +167 -0
  134. package/src/components/__tests__/TiptapContainer.test.jsx +138 -0
  135. package/src/components/__tests__/characterUtils.test.js +166 -0
  136. package/src/components/__tests__/choice.test.jsx +171 -0
  137. package/src/components/__tests__/custom-popper.test.jsx +82 -0
  138. package/src/components/__tests__/done-button.test.jsx +54 -0
  139. package/src/components/__tests__/toolbar-buttons.test.jsx +234 -0
  140. package/src/extensions/__tests__/css.test.js +196 -0
  141. package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +180 -0
  142. package/src/extensions/__tests__/extended-table.test.js +107 -0
  143. package/src/extensions/__tests__/image-component.test.jsx +249 -0
  144. package/src/extensions/__tests__/image.test.js +136 -0
  145. package/src/extensions/__tests__/media.test.js +270 -0
  146. package/src/extensions/__tests__/responseArea.test.js +310 -0
  147. package/src/extensions/{component.jsx → image-component.jsx} +11 -1
  148. package/src/extensions/image.js +1 -1
  149. package/src/extensions/index.js +5 -1
  150. package/LICENSE.md +0 -5
  151. package/NEXT.CHANGELOG.json +0 -1
  152. package/lib/extensions/component.js.map +0 -1
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.js");
4
+ require("core-js/modules/es.array.filter.js");
5
+ require("core-js/modules/es.array.for-each.js");
6
+ require("core-js/modules/es.object.define-properties.js");
7
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
8
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
9
+ require("core-js/modules/es.object.keys.js");
10
+ require("core-js/modules/es.object.to-string.js");
11
+ require("core-js/modules/web.dom-collections.for-each.js");
12
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
13
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
14
+ require("core-js/modules/es.object.define-property.js");
15
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+ var _react = _interopRequireDefault(require("react"));
18
+ var _react2 = require("@testing-library/react");
19
+ var _CharacterPicker = require("../CharacterPicker");
20
+ 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; }
21
+ 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; }
22
+ jest.mock('react-dom', function () {
23
+ return _objectSpread(_objectSpread({}, jest.requireActual('react-dom')), {}, {
24
+ createPortal: function createPortal(node) {
25
+ return node;
26
+ }
27
+ });
28
+ });
29
+ jest.mock('@pie-lib/math-toolbar', function () {
30
+ return {
31
+ PureToolbar: function PureToolbar(_ref) {
32
+ var onChange = _ref.onChange,
33
+ onDone = _ref.onDone,
34
+ additionalKeys = _ref.additionalKeys;
35
+ return /*#__PURE__*/_react["default"].createElement("div", {
36
+ "data-testid": "pure-toolbar"
37
+ }, /*#__PURE__*/_react["default"].createElement("button", {
38
+ onClick: function onClick() {
39
+ return onChange('á');
40
+ },
41
+ "data-testid": "char-button"
42
+ }, "\xE1"), /*#__PURE__*/_react["default"].createElement("button", {
43
+ onClick: onDone,
44
+ "data-testid": "done-button"
45
+ }, "Done"));
46
+ }
47
+ };
48
+ });
49
+ jest.mock('../characters/custom-popper', function () {
50
+ return {
51
+ __esModule: true,
52
+ "default": function _default(_ref2) {
53
+ var children = _ref2.children,
54
+ onClose = _ref2.onClose;
55
+ return /*#__PURE__*/_react["default"].createElement("div", {
56
+ "data-testid": "custom-popper"
57
+ }, children, /*#__PURE__*/_react["default"].createElement("button", {
58
+ onClick: onClose,
59
+ "data-testid": "close-popper"
60
+ }, "Close"));
61
+ }
62
+ };
63
+ });
64
+ describe('CharacterIcon', function () {
65
+ it('renders with letter', function () {
66
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
67
+ letter: "\xF1"
68
+ })),
69
+ getByText = _render.getByText;
70
+ expect(getByText('ñ')).toBeInTheDocument();
71
+ });
72
+ it('renders with correct styling', function () {
73
+ var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
74
+ letter: "\u20AC"
75
+ })),
76
+ container = _render2.container;
77
+ var div = container.firstChild;
78
+ expect(div).toHaveStyle({
79
+ fontSize: '24px',
80
+ lineHeight: '24px'
81
+ });
82
+ });
83
+ });
84
+ describe('CharacterPicker', function () {
85
+ var mockEditor = {
86
+ chain: jest.fn(function () {
87
+ return {
88
+ focus: jest.fn(function () {
89
+ return {
90
+ insertContent: jest.fn(function () {
91
+ return {
92
+ run: jest.fn()
93
+ };
94
+ })
95
+ };
96
+ })
97
+ };
98
+ }),
99
+ options: {
100
+ element: document.createElement('div')
101
+ },
102
+ view: {
103
+ coordsAtPos: jest.fn(function () {
104
+ return {
105
+ top: 100,
106
+ left: 50
107
+ };
108
+ }),
109
+ dom: document.createElement('div')
110
+ },
111
+ state: {
112
+ selection: {
113
+ from: 0
114
+ }
115
+ }
116
+ };
117
+ beforeEach(function () {
118
+ jest.clearAllMocks();
119
+ // Reset the element to avoid "Cannot redefine property" error
120
+ mockEditor.options.element = document.createElement('div');
121
+ Object.defineProperty(mockEditor.options.element, 'getBoundingClientRect', {
122
+ value: jest.fn(function () {
123
+ return {
124
+ top: 0,
125
+ left: 0,
126
+ height: 100
127
+ };
128
+ }),
129
+ configurable: true
130
+ });
131
+ });
132
+ it('returns null when opts has no characters', function () {
133
+ var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
134
+ editor: mockEditor,
135
+ opts: {},
136
+ onClose: jest.fn()
137
+ })),
138
+ container = _render3.container;
139
+ expect(container.firstChild).toBeNull();
140
+ });
141
+ it('returns null when opts is not provided', function () {
142
+ var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
143
+ editor: mockEditor,
144
+ opts: null,
145
+ onClose: jest.fn()
146
+ })),
147
+ container = _render4.container;
148
+ expect(container.firstChild).toBeNull();
149
+ });
150
+ it('renders character picker with spanish config', function () {
151
+ var opts = {
152
+ language: 'spanish',
153
+ characters: [['á', 'é', 'í']]
154
+ };
155
+ var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
156
+ editor: mockEditor,
157
+ opts: opts,
158
+ onClose: jest.fn()
159
+ })),
160
+ getByTestId = _render5.getByTestId;
161
+ expect(getByTestId('pure-toolbar')).toBeInTheDocument();
162
+ });
163
+ it('renders character picker with special config', function () {
164
+ var opts = {
165
+ language: 'special',
166
+ characters: [['€', '£']]
167
+ };
168
+ var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
169
+ editor: mockEditor,
170
+ opts: opts,
171
+ onClose: jest.fn()
172
+ })),
173
+ getByTestId = _render6.getByTestId;
174
+ expect(getByTestId('pure-toolbar')).toBeInTheDocument();
175
+ });
176
+ it('handles character insertion', function () {
177
+ var opts = {
178
+ characters: [['á', 'é']]
179
+ };
180
+ var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
181
+ editor: mockEditor,
182
+ opts: opts,
183
+ onClose: jest.fn()
184
+ })),
185
+ getByTestId = _render7.getByTestId;
186
+ _react2.fireEvent.click(getByTestId('char-button'));
187
+ expect(mockEditor.chain).toHaveBeenCalled();
188
+ });
189
+ it('calls onClose when done button is clicked', function () {
190
+ var onClose = jest.fn();
191
+ var opts = {
192
+ characters: [['á', 'é']]
193
+ };
194
+ var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
195
+ editor: mockEditor,
196
+ opts: opts,
197
+ onClose: onClose
198
+ })),
199
+ getByTestId = _render8.getByTestId;
200
+ _react2.fireEvent.click(getByTestId('done-button'));
201
+ expect(onClose).toHaveBeenCalled();
202
+ });
203
+ it('closes on outside click', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
204
+ var onClose, opts;
205
+ return _regenerator["default"].wrap(function (_context) {
206
+ while (1) switch (_context.prev = _context.next) {
207
+ case 0:
208
+ onClose = jest.fn();
209
+ opts = {
210
+ characters: [['á', 'é']]
211
+ };
212
+ (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
213
+ editor: mockEditor,
214
+ opts: opts,
215
+ onClose: onClose
216
+ }));
217
+ _context.next = 1;
218
+ return (0, _react2.waitFor)(function () {
219
+ _react2.fireEvent.mouseDown(document.body);
220
+ });
221
+ case 1:
222
+ expect(onClose).toHaveBeenCalled();
223
+ case 2:
224
+ case "end":
225
+ return _context.stop();
226
+ }
227
+ }, _callee);
228
+ })));
229
+ it('does not close when clicking inside picker', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
230
+ var onClose, opts, _render9, container;
231
+ return _regenerator["default"].wrap(function (_context2) {
232
+ while (1) switch (_context2.prev = _context2.next) {
233
+ case 0:
234
+ onClose = jest.fn();
235
+ opts = {
236
+ characters: [['á', 'é']]
237
+ };
238
+ _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
239
+ editor: mockEditor,
240
+ opts: opts,
241
+ onClose: onClose
242
+ })), container = _render9.container;
243
+ _context2.next = 1;
244
+ return (0, _react2.waitFor)(function () {
245
+ var picker = container.querySelector('.insert-character-dialog');
246
+ if (picker) {
247
+ _react2.fireEvent.mouseDown(picker);
248
+ }
249
+ });
250
+ case 1:
251
+ expect(onClose).not.toHaveBeenCalled();
252
+ case 2:
253
+ case "end":
254
+ return _context2.stop();
255
+ }
256
+ }, _callee2);
257
+ })));
258
+ it('renders with custom opts structure', function () {
259
+ var opts = {
260
+ characters: [[{
261
+ name: 'a',
262
+ write: 'á',
263
+ label: 'á'
264
+ }, {
265
+ name: 'e',
266
+ write: 'é',
267
+ label: 'é'
268
+ }]]
269
+ };
270
+ var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
271
+ editor: mockEditor,
272
+ opts: opts,
273
+ onClose: jest.fn()
274
+ })),
275
+ getByTestId = _render0.getByTestId;
276
+ expect(getByTestId('pure-toolbar')).toBeInTheDocument();
277
+ });
278
+ it('renders with hasPreview option', function () {
279
+ var opts = {
280
+ hasPreview: true,
281
+ characters: [[{
282
+ name: 'euro',
283
+ write: '€',
284
+ label: '€',
285
+ description: 'Euro sign',
286
+ unicode: 'U+20AC'
287
+ }]]
288
+ };
289
+ var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
290
+ editor: mockEditor,
291
+ opts: opts,
292
+ onClose: jest.fn()
293
+ })),
294
+ getByTestId = _render1.getByTestId;
295
+ expect(getByTestId('pure-toolbar')).toBeInTheDocument();
296
+ });
297
+ it('calculates position correctly', function () {
298
+ var opts = {
299
+ characters: [['á']]
300
+ };
301
+ var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
302
+ editor: mockEditor,
303
+ opts: opts,
304
+ onClose: jest.fn()
305
+ })),
306
+ container = _render10.container;
307
+ var dialog = container.querySelector('.insert-character-dialog');
308
+ expect(dialog).toHaveStyle({
309
+ position: 'absolute'
310
+ });
311
+ });
312
+ });
313
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfQ2hhcmFjdGVyUGlja2VyIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJqZXN0IiwibW9jayIsInJlcXVpcmVBY3R1YWwiLCJjcmVhdGVQb3J0YWwiLCJub2RlIiwiUHVyZVRvb2xiYXIiLCJfcmVmIiwib25DaGFuZ2UiLCJvbkRvbmUiLCJhZGRpdGlvbmFsS2V5cyIsImNyZWF0ZUVsZW1lbnQiLCJvbkNsaWNrIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfcmVmMiIsImNoaWxkcmVuIiwib25DbG9zZSIsImRlc2NyaWJlIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiQ2hhcmFjdGVySWNvbiIsImxldHRlciIsImdldEJ5VGV4dCIsImV4cGVjdCIsInRvQmVJblRoZURvY3VtZW50IiwiX3JlbmRlcjIiLCJjb250YWluZXIiLCJkaXYiLCJmaXJzdENoaWxkIiwidG9IYXZlU3R5bGUiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJtb2NrRWRpdG9yIiwiY2hhaW4iLCJmbiIsImZvY3VzIiwiaW5zZXJ0Q29udGVudCIsInJ1biIsIm9wdGlvbnMiLCJlbGVtZW50IiwiZG9jdW1lbnQiLCJ2aWV3IiwiY29vcmRzQXRQb3MiLCJ0b3AiLCJsZWZ0IiwiZG9tIiwic3RhdGUiLCJzZWxlY3Rpb24iLCJmcm9tIiwiYmVmb3JlRWFjaCIsImNsZWFyQWxsTW9ja3MiLCJ2YWx1ZSIsImhlaWdodCIsImNvbmZpZ3VyYWJsZSIsIl9yZW5kZXIzIiwiQ2hhcmFjdGVyUGlja2VyIiwiZWRpdG9yIiwib3B0cyIsInRvQmVOdWxsIiwiX3JlbmRlcjQiLCJsYW5ndWFnZSIsImNoYXJhY3RlcnMiLCJfcmVuZGVyNSIsImdldEJ5VGVzdElkIiwiX3JlbmRlcjYiLCJfcmVuZGVyNyIsImZpcmVFdmVudCIsImNsaWNrIiwidG9IYXZlQmVlbkNhbGxlZCIsIl9yZW5kZXI4IiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIndhaXRGb3IiLCJtb3VzZURvd24iLCJib2R5Iiwic3RvcCIsIl9jYWxsZWUyIiwiX3JlbmRlcjkiLCJfY29udGV4dDIiLCJwaWNrZXIiLCJxdWVyeVNlbGVjdG9yIiwibm90IiwibmFtZSIsIndyaXRlIiwibGFiZWwiLCJfcmVuZGVyMCIsImhhc1ByZXZpZXciLCJkZXNjcmlwdGlvbiIsInVuaWNvZGUiLCJfcmVuZGVyMSIsIl9yZW5kZXIxMCIsImRpYWxvZyIsInBvc2l0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvX190ZXN0c19fL0NoYXJhY3RlclBpY2tlci50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBmaXJlRXZlbnQsIHdhaXRGb3IgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IENoYXJhY3RlclBpY2tlciwgQ2hhcmFjdGVySWNvbiB9IGZyb20gJy4uL0NoYXJhY3RlclBpY2tlcic7XG5cbmplc3QubW9jaygncmVhY3QtZG9tJywgKCkgPT4gKHtcbiAgLi4uamVzdC5yZXF1aXJlQWN0dWFsKCdyZWFjdC1kb20nKSxcbiAgY3JlYXRlUG9ydGFsOiAobm9kZSkgPT4gbm9kZSxcbn0pKTtcblxuamVzdC5tb2NrKCdAcGllLWxpYi9tYXRoLXRvb2xiYXInLCAoKSA9PiAoe1xuICBQdXJlVG9vbGJhcjogKHsgb25DaGFuZ2UsIG9uRG9uZSwgYWRkaXRpb25hbEtleXMgfSkgPT4gKFxuICAgIDxkaXYgZGF0YS10ZXN0aWQ9XCJwdXJlLXRvb2xiYXJcIj5cbiAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gb25DaGFuZ2UoJ8OhJyl9IGRhdGEtdGVzdGlkPVwiY2hhci1idXR0b25cIj5cbiAgICAgICAgw6FcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtvbkRvbmV9IGRhdGEtdGVzdGlkPVwiZG9uZS1idXR0b25cIj5cbiAgICAgICAgRG9uZVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICksXG59KSk7XG5cbmplc3QubW9jaygnLi4vY2hhcmFjdGVycy9jdXN0b20tcG9wcGVyJywgKCkgPT4gKHtcbiAgX19lc01vZHVsZTogdHJ1ZSxcbiAgZGVmYXVsdDogKHsgY2hpbGRyZW4sIG9uQ2xvc2UgfSkgPT4gKFxuICAgIDxkaXYgZGF0YS10ZXN0aWQ9XCJjdXN0b20tcG9wcGVyXCI+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICA8YnV0dG9uIG9uQ2xpY2s9e29uQ2xvc2V9IGRhdGEtdGVzdGlkPVwiY2xvc2UtcG9wcGVyXCI+XG4gICAgICAgIENsb3NlXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgKSxcbn0pKTtcblxuZGVzY3JpYmUoJ0NoYXJhY3Rlckljb24nLCAoKSA9PiB7XG4gIGl0KCdyZW5kZXJzIHdpdGggbGV0dGVyJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgZ2V0QnlUZXh0IH0gPSByZW5kZXIoPENoYXJhY3Rlckljb24gbGV0dGVyPVwiw7FcIiAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGV4dCgnw7EnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgd2l0aCBjb3JyZWN0IHN0eWxpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hhcmFjdGVySWNvbiBsZXR0ZXI9XCLigqxcIiAvPik7XG4gICAgY29uc3QgZGl2ID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgZXhwZWN0KGRpdikudG9IYXZlU3R5bGUoeyBmb250U2l6ZTogJzI0cHgnLCBsaW5lSGVpZ2h0OiAnMjRweCcgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDaGFyYWN0ZXJQaWNrZXInLCAoKSA9PiB7XG4gIGNvbnN0IG1vY2tFZGl0b3IgPSB7XG4gICAgY2hhaW46IGplc3QuZm4oKCkgPT4gKHtcbiAgICAgIGZvY3VzOiBqZXN0LmZuKCgpID0+ICh7XG4gICAgICAgIGluc2VydENvbnRlbnQ6IGplc3QuZm4oKCkgPT4gKHsgcnVuOiBqZXN0LmZuKCkgfSkpLFxuICAgICAgfSkpLFxuICAgIH0pKSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBlbGVtZW50OiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSxcbiAgICB9LFxuICAgIHZpZXc6IHtcbiAgICAgIGNvb3Jkc0F0UG9zOiBqZXN0LmZuKCgpID0+ICh7IHRvcDogMTAwLCBsZWZ0OiA1MCB9KSksXG4gICAgICBkb206IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIHNlbGVjdGlvbjogeyBmcm9tOiAwIH0sXG4gICAgfSxcbiAgfTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbiAgICAvLyBSZXNldCB0aGUgZWxlbWVudCB0byBhdm9pZCBcIkNhbm5vdCByZWRlZmluZSBwcm9wZXJ0eVwiIGVycm9yXG4gICAgbW9ja0VkaXRvci5vcHRpb25zLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9ja0VkaXRvci5vcHRpb25zLmVsZW1lbnQsICdnZXRCb3VuZGluZ0NsaWVudFJlY3QnLCB7XG4gICAgICB2YWx1ZTogamVzdC5mbigoKSA9PiAoeyB0b3A6IDAsIGxlZnQ6IDAsIGhlaWdodDogMTAwIH0pKSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgbnVsbCB3aGVuIG9wdHMgaGFzIG5vIGNoYXJhY3RlcnMnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hhcmFjdGVyUGlja2VyIGVkaXRvcj17bW9ja0VkaXRvcn0gb3B0cz17e319IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZU51bGwoKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgbnVsbCB3aGVuIG9wdHMgaXMgbm90IHByb3ZpZGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e251bGx9IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZU51bGwoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgY2hhcmFjdGVyIHBpY2tlciB3aXRoIHNwYW5pc2ggY29uZmlnJywgKCkgPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICBsYW5ndWFnZTogJ3NwYW5pc2gnLFxuICAgICAgY2hhcmFjdGVyczogW1snw6EnLCAnw6knLCAnw60nXV0sXG4gICAgfTtcbiAgICBjb25zdCB7IGdldEJ5VGVzdElkIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGV4cGVjdChnZXRCeVRlc3RJZCgncHVyZS10b29sYmFyJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIGNoYXJhY3RlciBwaWNrZXIgd2l0aCBzcGVjaWFsIGNvbmZpZycsICgpID0+IHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgbGFuZ3VhZ2U6ICdzcGVjaWFsJyxcbiAgICAgIGNoYXJhY3RlcnM6IFtbJ+KCrCcsICfCoyddXSxcbiAgICB9O1xuICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlcig8Q2hhcmFjdGVyUGlja2VyIGVkaXRvcj17bW9ja0VkaXRvcn0gb3B0cz17b3B0c30gb25DbG9zZT17amVzdC5mbigpfSAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGVzdElkKCdwdXJlLXRvb2xiYXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgY2hhcmFjdGVyIGluc2VydGlvbicsICgpID0+IHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgY2hhcmFjdGVyczogW1snw6EnLCAnw6knXV0sXG4gICAgfTtcbiAgICBjb25zdCB7IGdldEJ5VGVzdElkIH0gPSByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e2plc3QuZm4oKX0gLz4pO1xuICAgIGZpcmVFdmVudC5jbGljayhnZXRCeVRlc3RJZCgnY2hhci1idXR0b24nKSk7XG4gICAgZXhwZWN0KG1vY2tFZGl0b3IuY2hhaW4pLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGxzIG9uQ2xvc2Ugd2hlbiBkb25lIGJ1dHRvbiBpcyBjbGlja2VkJywgKCkgPT4ge1xuICAgIGNvbnN0IG9uQ2xvc2UgPSBqZXN0LmZuKCk7XG4gICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgIGNoYXJhY3RlcnM6IFtbJ8OhJywgJ8OpJ11dLFxuICAgIH07XG4gICAgY29uc3QgeyBnZXRCeVRlc3RJZCB9ID0gcmVuZGVyKDxDaGFyYWN0ZXJQaWNrZXIgZWRpdG9yPXttb2NrRWRpdG9yfSBvcHRzPXtvcHRzfSBvbkNsb3NlPXtvbkNsb3NlfSAvPik7XG4gICAgZmlyZUV2ZW50LmNsaWNrKGdldEJ5VGVzdElkKCdkb25lLWJ1dHRvbicpKTtcbiAgICBleHBlY3Qob25DbG9zZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdCgnY2xvc2VzIG9uIG91dHNpZGUgY2xpY2snLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb25DbG9zZSA9IGplc3QuZm4oKTtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgY2hhcmFjdGVyczogW1snw6EnLCAnw6knXV0sXG4gICAgfTtcbiAgICByZW5kZXIoPENoYXJhY3RlclBpY2tlciBlZGl0b3I9e21vY2tFZGl0b3J9IG9wdHM9e29wdHN9IG9uQ2xvc2U9e29uQ2xvc2V9IC8+KTtcblxuICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgICAgZmlyZUV2ZW50Lm1vdXNlRG93bihkb2N1bWVudC5ib2R5KTtcbiAgICB9KTtcblxuICAgIGV4cGVjdChvbkNsb3NlKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCBjbG9zZSB3aGVuIGNsaWNraW5nIGluc2lkZSBwaWNrZXInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb25DbG9zZSA9IGplc3QuZm4oKTtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgY2hhcmFjdGVyczogW1snw6EnLCAnw6knXV0sXG4gICAgfTtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDaGFyYWN0ZXJQaWNrZXIgZWRpdG9yPXttb2NrRWRpdG9yfSBvcHRzPXtvcHRzfSBvbkNsb3NlPXtvbkNsb3NlfSAvPik7XG5cbiAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHtcbiAgICAgIGNvbnN0IHBpY2tlciA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuaW5zZXJ0LWNoYXJhY3Rlci1kaWFsb2cnKTtcbiAgICAgIGlmIChwaWNrZXIpIHtcbiAgICAgICAgZmlyZUV2ZW50Lm1vdXNlRG93bihwaWNrZXIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZXhwZWN0KG9uQ2xvc2UpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIHdpdGggY3VzdG9tIG9wdHMgc3RydWN0dXJlJywgKCkgPT4ge1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICBjaGFyYWN0ZXJzOiBbXG4gICAgICAgIFtcbiAgICAgICAgICB7IG5hbWU6ICdhJywgd3JpdGU6ICfDoScsIGxhYmVsOiAnw6EnIH0sXG4gICAgICAgICAgeyBuYW1lOiAnZScsIHdyaXRlOiAnw6knLCBsYWJlbDogJ8OpJyB9LFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlcig8Q2hhcmFjdGVyUGlja2VyIGVkaXRvcj17bW9ja0VkaXRvcn0gb3B0cz17b3B0c30gb25DbG9zZT17amVzdC5mbigpfSAvPik7XG4gICAgZXhwZWN0KGdldEJ5VGVzdElkKCdwdXJlLXRvb2xiYXInKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgd2l0aCBoYXNQcmV2aWV3IG9wdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBvcHRzID0ge1xuICAgICAgaGFzUHJldmlldzogdHJ1ZSxcbiAgICAgIGNoYXJhY3RlcnM6IFtcbiAgICAgICAgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdldXJvJyxcbiAgICAgICAgICAgIHdyaXRlOiAn4oKsJyxcbiAgICAgICAgICAgIGxhYmVsOiAn4oKsJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRXVybyBzaWduJyxcbiAgICAgICAgICAgIHVuaWNvZGU6ICdVKzIwQUMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICBdLFxuICAgIH07XG4gICAgY29uc3QgeyBnZXRCeVRlc3RJZCB9ID0gcmVuZGVyKDxDaGFyYWN0ZXJQaWNrZXIgZWRpdG9yPXttb2NrRWRpdG9yfSBvcHRzPXtvcHRzfSBvbkNsb3NlPXtqZXN0LmZuKCl9IC8+KTtcbiAgICBleHBlY3QoZ2V0QnlUZXN0SWQoJ3B1cmUtdG9vbGJhcicpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICBpdCgnY2FsY3VsYXRlcyBwb3NpdGlvbiBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgIGNoYXJhY3RlcnM6IFtbJ8OhJ11dLFxuICAgIH07XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q2hhcmFjdGVyUGlja2VyIGVkaXRvcj17bW9ja0VkaXRvcn0gb3B0cz17b3B0c30gb25DbG9zZT17amVzdC5mbigpfSAvPik7XG4gICAgY29uc3QgZGlhbG9nID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5pbnNlcnQtY2hhcmFjdGVyLWRpYWxvZycpO1xuICAgIGV4cGVjdChkaWFsb2cpLnRvSGF2ZVN0eWxlKHsgcG9zaXRpb246ICdhYnNvbHV0ZScgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBQW9FLFNBQUFHLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENB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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