@pie-lib/editable-html-tip-tap 2.2.0-beta.6 → 2.2.0-beta.8

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 (96) hide show
  1. package/lib/extensions/math.js.map +1 -1
  2. package/package.json +3 -3
  3. package/src/extensions/__tests__/math.test.js +2 -6
  4. package/src/extensions/math.js +1 -5
  5. package/lib/__tests__/EditableHtml.test.js +0 -831
  6. package/lib/__tests__/EditableHtml.test.js.map +0 -1
  7. package/lib/__tests__/constants.test.js +0 -21
  8. package/lib/__tests__/constants.test.js.map +0 -1
  9. package/lib/__tests__/div-to-paragraph-conversion.test.js +0 -213
  10. package/lib/__tests__/div-to-paragraph-conversion.test.js.map +0 -1
  11. package/lib/__tests__/extensions.test.js +0 -209
  12. package/lib/__tests__/extensions.test.js.map +0 -1
  13. package/lib/__tests__/index.test.js +0 -250
  14. package/lib/__tests__/index.test.js.map +0 -1
  15. package/lib/__tests__/size-utils.test.js +0 -57
  16. package/lib/__tests__/size-utils.test.js.map +0 -1
  17. package/lib/__tests__/theme.test.js +0 -17
  18. package/lib/__tests__/theme.test.js.map +0 -1
  19. package/lib/components/__tests__/AltDialog.test.js +0 -201
  20. package/lib/components/__tests__/AltDialog.test.js.map +0 -1
  21. package/lib/components/__tests__/CharacterPicker.test.js +0 -455
  22. package/lib/components/__tests__/CharacterPicker.test.js.map +0 -1
  23. package/lib/components/__tests__/CssIcon.test.js +0 -58
  24. package/lib/components/__tests__/CssIcon.test.js.map +0 -1
  25. package/lib/components/__tests__/DragInTheBlank.test.js +0 -295
  26. package/lib/components/__tests__/DragInTheBlank.test.js.map +0 -1
  27. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +0 -345
  28. package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +0 -1
  29. package/lib/components/__tests__/ImageToolbar.test.js +0 -185
  30. package/lib/components/__tests__/ImageToolbar.test.js.map +0 -1
  31. package/lib/components/__tests__/InlineDropdown.test.js +0 -839
  32. package/lib/components/__tests__/InlineDropdown.test.js.map +0 -1
  33. package/lib/components/__tests__/InsertImageHandler.test.js +0 -171
  34. package/lib/components/__tests__/InsertImageHandler.test.js.map +0 -1
  35. package/lib/components/__tests__/MediaDialog.test.js +0 -433
  36. package/lib/components/__tests__/MediaDialog.test.js.map +0 -1
  37. package/lib/components/__tests__/MediaToolbar.test.js +0 -126
  38. package/lib/components/__tests__/MediaToolbar.test.js.map +0 -1
  39. package/lib/components/__tests__/MediaWrapper.test.js +0 -96
  40. package/lib/components/__tests__/MediaWrapper.test.js.map +0 -1
  41. package/lib/components/__tests__/MenuBar.test.js +0 -502
  42. package/lib/components/__tests__/MenuBar.test.js.map +0 -1
  43. package/lib/components/__tests__/RespArea.test.js +0 -171
  44. package/lib/components/__tests__/RespArea.test.js.map +0 -1
  45. package/lib/components/__tests__/TableIcons.test.js +0 -153
  46. package/lib/components/__tests__/TableIcons.test.js.map +0 -1
  47. package/lib/components/__tests__/TextAlign.test.js +0 -209
  48. package/lib/components/__tests__/TextAlign.test.js.map +0 -1
  49. package/lib/components/__tests__/TiptapContainer.test.js +0 -196
  50. package/lib/components/__tests__/TiptapContainer.test.js.map +0 -1
  51. package/lib/components/__tests__/characterUtils.test.js +0 -178
  52. package/lib/components/__tests__/characterUtils.test.js.map +0 -1
  53. package/lib/components/__tests__/choice.test.js +0 -213
  54. package/lib/components/__tests__/choice.test.js.map +0 -1
  55. package/lib/components/__tests__/custom-popper.test.js +0 -108
  56. package/lib/components/__tests__/custom-popper.test.js.map +0 -1
  57. package/lib/components/__tests__/done-button.test.js +0 -72
  58. package/lib/components/__tests__/done-button.test.js.map +0 -1
  59. package/lib/components/__tests__/toolbar-buttons.test.js +0 -277
  60. package/lib/components/__tests__/toolbar-buttons.test.js.map +0 -1
  61. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +0 -90
  62. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +0 -1
  63. package/lib/components/respArea/__tests__/MathTemplated.test.js +0 -217
  64. package/lib/components/respArea/__tests__/MathTemplated.test.js.map +0 -1
  65. package/lib/extensions/__tests__/css.test.js +0 -214
  66. package/lib/extensions/__tests__/css.test.js.map +0 -1
  67. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +0 -175
  68. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +0 -1
  69. package/lib/extensions/__tests__/divNode.test.js +0 -108
  70. package/lib/extensions/__tests__/divNode.test.js.map +0 -1
  71. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +0 -50
  72. package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +0 -1
  73. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +0 -60
  74. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +0 -1
  75. package/lib/extensions/__tests__/extended-list-item.test.js +0 -13
  76. package/lib/extensions/__tests__/extended-list-item.test.js.map +0 -1
  77. package/lib/extensions/__tests__/extended-table-cell.test.js +0 -15
  78. package/lib/extensions/__tests__/extended-table-cell.test.js.map +0 -1
  79. package/lib/extensions/__tests__/extended-table.test.js +0 -200
  80. package/lib/extensions/__tests__/extended-table.test.js.map +0 -1
  81. package/lib/extensions/__tests__/image-component.test.js +0 -432
  82. package/lib/extensions/__tests__/image-component.test.js.map +0 -1
  83. package/lib/extensions/__tests__/image.test.js +0 -313
  84. package/lib/extensions/__tests__/image.test.js.map +0 -1
  85. package/lib/extensions/__tests__/math.test.js +0 -1411
  86. package/lib/extensions/__tests__/math.test.js.map +0 -1
  87. package/lib/extensions/__tests__/media-node-view.test.js +0 -307
  88. package/lib/extensions/__tests__/media-node-view.test.js.map +0 -1
  89. package/lib/extensions/__tests__/media.test.js +0 -292
  90. package/lib/extensions/__tests__/media.test.js.map +0 -1
  91. package/lib/extensions/__tests__/responseArea.test.js +0 -736
  92. package/lib/extensions/__tests__/responseArea.test.js.map +0 -1
  93. package/lib/utils/__tests__/helper.test.js +0 -107
  94. package/lib/utils/__tests__/helper.test.js.map +0 -1
  95. package/lib/utils/__tests__/toolbar.test.js +0 -38
  96. package/lib/utils/__tests__/toolbar.test.js.map +0 -1
@@ -1,831 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _react2 = require("@testing-library/react");
11
- var _react3 = require("@tiptap/react");
12
- var _EditableHtml = require("../components/EditableHtml");
13
- var _responseArea = require("../extensions/responseArea");
14
- var _excluded = ["editor"];
15
- 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; }
16
- 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; }
17
- // Mock TipTap dependencies
18
- jest.mock('@tiptap/react', function () {
19
- return {
20
- EditorContent: function EditorContent(_ref) {
21
- var editor = _ref.editor,
22
- props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
23
- return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
24
- "data-testid": "editor-content"
25
- }, props));
26
- },
27
- useEditor: jest.fn(function (config) {
28
- var mockEditor = {
29
- getHTML: jest.fn(function () {
30
- return '<p>test content</p>';
31
- }),
32
- setEditable: jest.fn(),
33
- commands: {
34
- setContent: jest.fn()
35
- },
36
- isActive: jest.fn(function () {
37
- return false;
38
- }),
39
- isFocused: false
40
- };
41
- return mockEditor;
42
- }),
43
- useEditorState: jest.fn(function () {
44
- return {
45
- isFocused: false
46
- };
47
- })
48
- };
49
- });
50
- jest.mock('@tiptap/starter-kit', function () {
51
- return {
52
- __esModule: true,
53
- "default": {
54
- configure: jest.fn(function () {
55
- return {};
56
- })
57
- }
58
- };
59
- });
60
- jest.mock('@tiptap/extension-text-style', function () {
61
- return {
62
- TextStyleKit: {}
63
- };
64
- });
65
- jest.mock('@tiptap/extension-character-count', function () {
66
- return {
67
- CharacterCount: {
68
- configure: jest.fn(function () {
69
- return {};
70
- })
71
- }
72
- };
73
- });
74
- jest.mock('@tiptap/extension-superscript', function () {
75
- return {
76
- __esModule: true,
77
- "default": {}
78
- };
79
- });
80
- jest.mock('@tiptap/extension-subscript', function () {
81
- return {
82
- __esModule: true,
83
- "default": {}
84
- };
85
- });
86
- jest.mock('@tiptap/extension-text-align', function () {
87
- return {
88
- __esModule: true,
89
- "default": {
90
- configure: jest.fn(function () {
91
- return {};
92
- })
93
- }
94
- };
95
- });
96
- jest.mock('@tiptap/extension-image', function () {
97
- return {
98
- __esModule: true,
99
- "default": {}
100
- };
101
- });
102
- jest.mock('@tiptap/extension-table', function () {
103
- return {
104
- __esModule: true,
105
- "default": {}
106
- };
107
- });
108
- jest.mock('@tiptap/extension-table-row', function () {
109
- return {
110
- TableRow: {}
111
- };
112
- });
113
- jest.mock('../extensions/extended-table-cell', function () {
114
- return {
115
- ExtendedTableCell: {},
116
- ExtendedTableHeader: {}
117
- };
118
- });
119
- jest.mock('../extensions/extended-table', function () {
120
- return {
121
- __esModule: true,
122
- "default": {}
123
- };
124
- });
125
- jest.mock('../extensions/ensure-empty-root-div', function () {
126
- return {
127
- EnsureEmptyRootIsDiv: {}
128
- };
129
- });
130
- jest.mock('../extensions/extended-list-item', function () {
131
- return {
132
- ExtendedListItem: {}
133
- };
134
- });
135
- jest.mock('../extensions/ensure-list-item-content-is-div', function () {
136
- return {
137
- EnsureListItemContentIsDiv: {}
138
- };
139
- });
140
- jest.mock('../extensions/responseArea', function () {
141
- return {
142
- ExplicitConstructedResponseNode: {
143
- configure: jest.fn(function () {
144
- return {};
145
- })
146
- },
147
- DragInTheBlankNode: {
148
- configure: jest.fn(function () {
149
- return {};
150
- })
151
- },
152
- InlineDropdownNode: {
153
- configure: jest.fn(function () {
154
- return {};
155
- })
156
- },
157
- MathTemplatedNode: {
158
- configure: jest.fn(function () {
159
- return {};
160
- })
161
- },
162
- ResponseAreaExtension: {
163
- configure: jest.fn(function () {
164
- return {};
165
- })
166
- }
167
- };
168
- });
169
- jest.mock('../extensions/math', function () {
170
- return {
171
- MathNode: {
172
- configure: jest.fn(function () {
173
- return {};
174
- })
175
- }
176
- };
177
- });
178
- jest.mock('../extensions/image', function () {
179
- return {
180
- ImageUploadNode: {
181
- configure: jest.fn(function () {
182
- return {};
183
- })
184
- }
185
- };
186
- });
187
- jest.mock('../extensions/media', function () {
188
- return {
189
- Media: {
190
- configure: jest.fn(function () {
191
- return {};
192
- })
193
- }
194
- };
195
- });
196
- jest.mock('../extensions/css', function () {
197
- return {
198
- CSSMark: {
199
- configure: jest.fn(function () {
200
- return {};
201
- })
202
- }
203
- };
204
- });
205
- jest.mock('../components/TiptapContainer', function () {
206
- return {
207
- __esModule: true,
208
- "default": function _default(_ref2) {
209
- var children = _ref2.children;
210
- return /*#__PURE__*/_react["default"].createElement("div", {
211
- "data-testid": "editor-container"
212
- }, children);
213
- }
214
- };
215
- });
216
- jest.mock('../extensions', function () {
217
- return _objectSpread(_objectSpread({}, jest.requireActual('../extensions')), {}, {
218
- buildExtensions: jest.fn(function () {
219
- return [];
220
- })
221
- });
222
- });
223
- describe('EditableHtml', function () {
224
- var defaultProps = {
225
- markup: '<p>Hello World</p>',
226
- onChange: jest.fn(),
227
- onDone: jest.fn(),
228
- disabled: false
229
- };
230
- beforeEach(function () {
231
- jest.clearAllMocks();
232
- });
233
- it('renders without crashing', function () {
234
- var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, defaultProps)),
235
- container = _render.container;
236
- expect(container).toBeInTheDocument();
237
- });
238
- it('renders editor container', function () {
239
- var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, defaultProps)),
240
- getByTestId = _render2.getByTestId;
241
- expect(getByTestId('editor-container')).toBeInTheDocument();
242
- });
243
- it('renders editor content when editor is initialized', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
244
- var _render3, getByTestId;
245
- return _regenerator["default"].wrap(function (_context) {
246
- while (1) switch (_context.prev = _context.next) {
247
- case 0:
248
- _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, defaultProps)), getByTestId = _render3.getByTestId;
249
- _context.next = 1;
250
- return (0, _react2.waitFor)(function () {
251
- expect(getByTestId('editor-content')).toBeInTheDocument();
252
- });
253
- case 1:
254
- case "end":
255
- return _context.stop();
256
- }
257
- }, _callee);
258
- })));
259
- it('accepts custom toolbar options', function () {
260
- var toolbarOpts = {
261
- position: 'top',
262
- alignment: 'center',
263
- alwaysVisible: true,
264
- showDone: false,
265
- doneOn: 'change'
266
- };
267
- var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
268
- toolbarOpts: toolbarOpts
269
- }))),
270
- container = _render4.container;
271
- expect(container).toBeInTheDocument();
272
- });
273
- it('accepts custom active plugins', function () {
274
- var activePlugins = ['bold', 'italic', 'underline'];
275
- var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
276
- activePlugins: activePlugins
277
- }))),
278
- container = _render5.container;
279
- expect(container).toBeInTheDocument();
280
- });
281
- it('accepts plugin props', function () {
282
- var pluginProps = {
283
- showParagraphs: {
284
- disabled: false
285
- },
286
- separateParagraphs: {
287
- disabled: false
288
- }
289
- };
290
- var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
291
- pluginProps: pluginProps
292
- }))),
293
- container = _render6.container;
294
- expect(container).toBeInTheDocument();
295
- });
296
- it('accepts response area props', function () {
297
- var responseAreaProps = {
298
- type: 'explicit-constructed-response',
299
- options: {}
300
- };
301
- var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
302
- responseAreaProps: responseAreaProps
303
- }))),
304
- container = _render7.container;
305
- expect(container).toBeInTheDocument();
306
- });
307
- it('passes blur done behavior to inline dropdown toolbar close', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
308
- var onChange, onDone, html, configureCall, inlineDropdownOptions, editor;
309
- return _regenerator["default"].wrap(function (_context2) {
310
- while (1) switch (_context2.prev = _context2.next) {
311
- case 0:
312
- onChange = jest.fn();
313
- onDone = jest.fn();
314
- html = '<p>from inline dropdown close</p>';
315
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
316
- markup: "<p>Hello World</p>",
317
- onChange: onChange,
318
- onDone: onDone,
319
- toolbarOpts: {
320
- doneOn: 'blur'
321
- },
322
- responseAreaProps: {
323
- type: 'inline-dropdown'
324
- }
325
- })));
326
- _context2.next = 1;
327
- return (0, _react2.waitFor)(function () {
328
- expect(_responseArea.InlineDropdownNode.configure).toHaveBeenCalled();
329
- });
330
- case 1:
331
- configureCall = _responseArea.InlineDropdownNode.configure.mock.calls[_responseArea.InlineDropdownNode.configure.mock.calls.length - 1];
332
- inlineDropdownOptions = configureCall[0];
333
- editor = {
334
- getHTML: jest.fn(function () {
335
- return html;
336
- })
337
- };
338
- inlineDropdownOptions.onInlineDropdownToolbarClose(editor);
339
- expect(editor.getHTML).toHaveBeenCalledTimes(1);
340
- expect(onChange).toHaveBeenCalledWith(html);
341
- expect(onDone).toHaveBeenCalledWith(html);
342
- case 2:
343
- case "end":
344
- return _context2.stop();
345
- }
346
- }, _callee2);
347
- })));
348
- it('accepts size props', function () {
349
- var sizeProps = {
350
- width: 500,
351
- height: 300,
352
- minHeight: 200,
353
- maxHeight: 400,
354
- minWidth: 300,
355
- maxWidth: 600
356
- };
357
- var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, sizeProps))),
358
- container = _render8.container;
359
- expect(container).toBeInTheDocument();
360
- });
361
- it('accepts character limit', function () {
362
- var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
363
- charactersLimit: 500
364
- }))),
365
- container = _render9.container;
366
- expect(container).toBeInTheDocument();
367
- });
368
- it('accepts image support props', function () {
369
- var imageSupport = {
370
- add: jest.fn(),
371
- "delete": jest.fn()
372
- };
373
- var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
374
- imageSupport: imageSupport
375
- }))),
376
- container = _render0.container;
377
- expect(container).toBeInTheDocument();
378
- });
379
- it('accepts max image dimensions', function () {
380
- var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
381
- maxImageWidth: 800,
382
- maxImageHeight: 600
383
- }))),
384
- container = _render1.container;
385
- expect(container).toBeInTheDocument();
386
- });
387
- it('accepts language characters props', function () {
388
- var languageCharactersProps = [{
389
- label: 'Greek',
390
- value: 'greek'
391
- }, {
392
- label: 'Cyrillic',
393
- value: 'cyrillic'
394
- }];
395
- var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
396
- languageCharactersProps: languageCharactersProps
397
- }))),
398
- container = _render10.container;
399
- expect(container).toBeInTheDocument();
400
- });
401
- it('accepts extra CSS rules', function () {
402
- var extraCSSRules = {
403
- '.custom-class': {
404
- color: 'red'
405
- }
406
- };
407
- var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
408
- extraCSSRules: extraCSSRules
409
- }))),
410
- container = _render11.container;
411
- expect(container).toBeInTheDocument();
412
- });
413
- it('accepts upload sound support', function () {
414
- var uploadSoundSupport = {
415
- add: jest.fn(),
416
- "delete": jest.fn()
417
- };
418
- var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
419
- uploadSoundSupport: uploadSoundSupport
420
- }))),
421
- container = _render12.container;
422
- expect(container).toBeInTheDocument();
423
- });
424
- it('accepts onKeyDown handler', function () {
425
- var onKeyDown = jest.fn();
426
- var _render13 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
427
- onKeyDown: onKeyDown
428
- }))),
429
- container = _render13.container;
430
- expect(container).toBeInTheDocument();
431
- });
432
- it('accepts disableImageAlignmentButtons prop', function () {
433
- var _render14 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
434
- disableImageAlignmentButtons: true
435
- }))),
436
- container = _render14.container;
437
- expect(container).toBeInTheDocument();
438
- });
439
- it('calls editorRef callback when editor is initialized', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
440
- var editorRef;
441
- return _regenerator["default"].wrap(function (_context3) {
442
- while (1) switch (_context3.prev = _context3.next) {
443
- case 0:
444
- editorRef = jest.fn();
445
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
446
- editorRef: editorRef
447
- })));
448
- _context3.next = 1;
449
- return (0, _react2.waitFor)(function () {
450
- expect(editorRef).toHaveBeenCalled();
451
- });
452
- case 1:
453
- case "end":
454
- return _context3.stop();
455
- }
456
- }, _callee3);
457
- })));
458
- it('calls editorRef with the editor instance', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
459
- var editorRef;
460
- return _regenerator["default"].wrap(function (_context4) {
461
- while (1) switch (_context4.prev = _context4.next) {
462
- case 0:
463
- editorRef = jest.fn();
464
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
465
- editorRef: editorRef
466
- })));
467
- _context4.next = 1;
468
- return (0, _react2.waitFor)(function () {
469
- expect(editorRef).toHaveBeenCalled();
470
- // Verify it was called with an object that has editor-like properties
471
- var callArg = editorRef.mock.calls[0][0];
472
- expect(callArg).toHaveProperty('getHTML');
473
- expect(callArg).toHaveProperty('commands');
474
- });
475
- case 1:
476
- case "end":
477
- return _context4.stop();
478
- }
479
- }, _callee4);
480
- })));
481
- it('handles editorRef being undefined', function () {
482
- var _render15 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
483
- editorRef: undefined
484
- }))),
485
- container = _render15.container;
486
- expect(container).toBeInTheDocument();
487
- });
488
- it('applies flex display to StyledEditorContent', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
489
- var _render16, getByTestId;
490
- return _regenerator["default"].wrap(function (_context5) {
491
- while (1) switch (_context5.prev = _context5.next) {
492
- case 0:
493
- _render16 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, defaultProps)), getByTestId = _render16.getByTestId;
494
- _context5.next = 1;
495
- return (0, _react2.waitFor)(function () {
496
- var editorContent = getByTestId('editor-content');
497
- expect(editorContent).toBeInTheDocument();
498
- });
499
- case 1:
500
- case "end":
501
- return _context5.stop();
502
- }
503
- }, _callee5);
504
- })));
505
- it('does not run blur onChange/onDone while an image insert flow is active', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
506
- var onChange, onDone, editorConfig, blurEditor;
507
- return _regenerator["default"].wrap(function (_context6) {
508
- while (1) switch (_context6.prev = _context6.next) {
509
- case 0:
510
- jest.useFakeTimers();
511
- onChange = jest.fn();
512
- onDone = jest.fn();
513
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
514
- markup: "<p>Hello World</p>",
515
- onChange: onChange,
516
- onDone: onDone,
517
- toolbarOpts: _objectSpread(_objectSpread({}, defaultProps.toolbarOpts), {}, {
518
- doneOn: 'blur'
519
- })
520
- })));
521
- _context6.next = 1;
522
- return (0, _react2.waitFor)(function () {
523
- expect(_react3.useEditor).toHaveBeenCalled();
524
- });
525
- case 1:
526
- editorConfig = _react3.useEditor.mock.calls[_react3.useEditor.mock.calls.length - 1][0];
527
- blurEditor = {
528
- getHTML: jest.fn(function () {
529
- return '<p>changed</p>';
530
- }),
531
- schema: {},
532
- _insertingImage: true,
533
- _toolbarOpened: false,
534
- isActive: jest.fn(function () {
535
- return false;
536
- })
537
- };
538
- editorConfig.onBlur({
539
- editor: blurEditor
540
- });
541
- jest.advanceTimersByTime(200);
542
- expect(onChange).not.toHaveBeenCalled();
543
- expect(onDone).not.toHaveBeenCalled();
544
- jest.useRealTimers();
545
- case 2:
546
- case "end":
547
- return _context6.stop();
548
- }
549
- }, _callee6);
550
- })));
551
- it('does not run blur onChange/onDone when editor has no schema', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
552
- var onChange, onDone, editorConfig, getHTML, blurEditor;
553
- return _regenerator["default"].wrap(function (_context7) {
554
- while (1) switch (_context7.prev = _context7.next) {
555
- case 0:
556
- jest.useFakeTimers();
557
- onChange = jest.fn();
558
- onDone = jest.fn();
559
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
560
- markup: "<p>Hello World</p>",
561
- onChange: onChange,
562
- onDone: onDone,
563
- toolbarOpts: {
564
- doneOn: 'blur'
565
- }
566
- })));
567
- _context7.next = 1;
568
- return (0, _react2.waitFor)(function () {
569
- expect(_react3.useEditor).toHaveBeenCalled();
570
- });
571
- case 1:
572
- editorConfig = _react3.useEditor.mock.calls[_react3.useEditor.mock.calls.length - 1][0];
573
- getHTML = jest.fn(function () {
574
- return '<p>changed</p>';
575
- });
576
- blurEditor = {
577
- getHTML: getHTML,
578
- schema: undefined,
579
- _insertingImage: false,
580
- _toolbarOpened: false,
581
- isActive: jest.fn(function () {
582
- return false;
583
- })
584
- };
585
- editorConfig.onBlur({
586
- editor: blurEditor
587
- });
588
- jest.advanceTimersByTime(200);
589
- expect(getHTML).not.toHaveBeenCalled();
590
- expect(onChange).not.toHaveBeenCalled();
591
- expect(onDone).not.toHaveBeenCalled();
592
- jest.useRealTimers();
593
- case 2:
594
- case "end":
595
- return _context7.stop();
596
- }
597
- }, _callee7);
598
- })));
599
- it('calls getHTML once on blur and passes the same html to onChange and onDone', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee8() {
600
- var onChange, onDone, html, editorConfig, getHTML, blurEditor;
601
- return _regenerator["default"].wrap(function (_context8) {
602
- while (1) switch (_context8.prev = _context8.next) {
603
- case 0:
604
- jest.useFakeTimers();
605
- onChange = jest.fn();
606
- onDone = jest.fn();
607
- html = '<p>from editor</p>';
608
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
609
- markup: "<p>Hello World</p>",
610
- onChange: onChange,
611
- onDone: onDone,
612
- toolbarOpts: {
613
- doneOn: 'blur'
614
- }
615
- })));
616
- _context8.next = 1;
617
- return (0, _react2.waitFor)(function () {
618
- expect(_react3.useEditor).toHaveBeenCalled();
619
- });
620
- case 1:
621
- editorConfig = _react3.useEditor.mock.calls[_react3.useEditor.mock.calls.length - 1][0];
622
- getHTML = jest.fn(function () {
623
- return html;
624
- });
625
- blurEditor = {
626
- getHTML: getHTML,
627
- schema: {},
628
- _insertingImage: false,
629
- _toolbarOpened: false,
630
- isActive: jest.fn(function () {
631
- return false;
632
- })
633
- };
634
- editorConfig.onBlur({
635
- editor: blurEditor
636
- });
637
- jest.advanceTimersByTime(200);
638
- expect(getHTML).toHaveBeenCalledTimes(1);
639
- expect(onChange).toHaveBeenCalledWith(html);
640
- expect(onDone).toHaveBeenCalledWith(html);
641
- jest.useRealTimers();
642
- case 2:
643
- case "end":
644
- return _context8.stop();
645
- }
646
- }, _callee8);
647
- })));
648
- describe('onUpdate callback', function () {
649
- it('calls onChange when transaction.isDone is true', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee9() {
650
- var onChange, markup, editorConfig, mockEditor, mockTransaction;
651
- return _regenerator["default"].wrap(function (_context9) {
652
- while (1) switch (_context9.prev = _context9.next) {
653
- case 0:
654
- onChange = jest.fn();
655
- markup = '<p>Initial content</p>';
656
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
657
- markup: markup,
658
- onChange: onChange
659
- })));
660
- _context9.next = 1;
661
- return (0, _react2.waitFor)(function () {
662
- expect(_react3.useEditor).toHaveBeenCalled();
663
- });
664
- case 1:
665
- editorConfig = _react3.useEditor.mock.calls[_react3.useEditor.mock.calls.length - 1][0];
666
- mockEditor = {
667
- getHTML: jest.fn(function () {
668
- return '<p>Updated content</p>';
669
- })
670
- };
671
- mockTransaction = {
672
- isDone: true
673
- };
674
- editorConfig.onUpdate({
675
- editor: mockEditor,
676
- transaction: mockTransaction
677
- });
678
- expect(onChange).toHaveBeenCalledWith('<p>Updated content</p>');
679
- case 2:
680
- case "end":
681
- return _context9.stop();
682
- }
683
- }, _callee9);
684
- })));
685
- it('does not call onChange when transaction.isDone is false even if markup differs from editor HTML', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0() {
686
- var onChange, markup, editorConfig, mockEditor, mockTransaction;
687
- return _regenerator["default"].wrap(function (_context0) {
688
- while (1) switch (_context0.prev = _context0.next) {
689
- case 0:
690
- onChange = jest.fn();
691
- markup = '<p>Initial content</p>';
692
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
693
- markup: markup,
694
- onChange: onChange
695
- })));
696
- _context0.next = 1;
697
- return (0, _react2.waitFor)(function () {
698
- expect(_react3.useEditor).toHaveBeenCalled();
699
- });
700
- case 1:
701
- editorConfig = _react3.useEditor.mock.calls[_react3.useEditor.mock.calls.length - 1][0];
702
- mockEditor = {
703
- getHTML: jest.fn(function () {
704
- return '<p>Different content</p>';
705
- })
706
- };
707
- mockTransaction = {
708
- isDone: false
709
- };
710
- editorConfig.onUpdate({
711
- editor: mockEditor,
712
- transaction: mockTransaction
713
- });
714
- expect(onChange).not.toHaveBeenCalled();
715
- case 2:
716
- case "end":
717
- return _context0.stop();
718
- }
719
- }, _callee0);
720
- })));
721
- it('does not call onChange when transaction.isDone is false and markup matches editor HTML', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee1() {
722
- var onChange, markup, editorConfig, mockEditor, mockTransaction;
723
- return _regenerator["default"].wrap(function (_context1) {
724
- while (1) switch (_context1.prev = _context1.next) {
725
- case 0:
726
- onChange = jest.fn();
727
- markup = '<p>Same content</p>';
728
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
729
- markup: markup,
730
- onChange: onChange
731
- })));
732
- _context1.next = 1;
733
- return (0, _react2.waitFor)(function () {
734
- expect(_react3.useEditor).toHaveBeenCalled();
735
- });
736
- case 1:
737
- editorConfig = _react3.useEditor.mock.calls[_react3.useEditor.mock.calls.length - 1][0];
738
- mockEditor = {
739
- getHTML: jest.fn(function () {
740
- return '<p>Same content</p>';
741
- })
742
- };
743
- mockTransaction = {
744
- isDone: false
745
- };
746
- editorConfig.onUpdate({
747
- editor: mockEditor,
748
- transaction: mockTransaction
749
- });
750
- expect(onChange).not.toHaveBeenCalled();
751
- case 2:
752
- case "end":
753
- return _context1.stop();
754
- }
755
- }, _callee1);
756
- })));
757
- it('calls onChange when transaction.isDone is true even if markup matches', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee10() {
758
- var onChange, markup, editorConfig, mockEditor, mockTransaction;
759
- return _regenerator["default"].wrap(function (_context10) {
760
- while (1) switch (_context10.prev = _context10.next) {
761
- case 0:
762
- onChange = jest.fn();
763
- markup = '<p>Same content</p>';
764
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
765
- markup: markup,
766
- onChange: onChange
767
- })));
768
- _context10.next = 1;
769
- return (0, _react2.waitFor)(function () {
770
- expect(_react3.useEditor).toHaveBeenCalled();
771
- });
772
- case 1:
773
- editorConfig = _react3.useEditor.mock.calls[_react3.useEditor.mock.calls.length - 1][0];
774
- mockEditor = {
775
- getHTML: jest.fn(function () {
776
- return '<p>Same content</p>';
777
- })
778
- };
779
- mockTransaction = {
780
- isDone: true
781
- };
782
- editorConfig.onUpdate({
783
- editor: mockEditor,
784
- transaction: mockTransaction
785
- });
786
- expect(onChange).toHaveBeenCalledWith('<p>Same content</p>');
787
- case 2:
788
- case "end":
789
- return _context10.stop();
790
- }
791
- }, _callee10);
792
- })));
793
- it('does not call onChange when onChange is not provided', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee11() {
794
- var markup, editorConfig, mockEditor, mockTransaction;
795
- return _regenerator["default"].wrap(function (_context11) {
796
- while (1) switch (_context11.prev = _context11.next) {
797
- case 0:
798
- markup = '<p>Content</p>';
799
- (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_EditableHtml.EditableHtml, (0, _extends2["default"])({}, defaultProps, {
800
- markup: markup,
801
- onChange: undefined
802
- })));
803
- _context11.next = 1;
804
- return (0, _react2.waitFor)(function () {
805
- expect(_react3.useEditor).toHaveBeenCalled();
806
- });
807
- case 1:
808
- editorConfig = _react3.useEditor.mock.calls[_react3.useEditor.mock.calls.length - 1][0];
809
- mockEditor = {
810
- getHTML: jest.fn(function () {
811
- return '<p>Updated content</p>';
812
- })
813
- };
814
- mockTransaction = {
815
- isDone: true
816
- }; // Should not throw error when onChange is undefined
817
- expect(function () {
818
- editorConfig.onUpdate({
819
- editor: mockEditor,
820
- transaction: mockTransaction
821
- });
822
- }).not.toThrow();
823
- case 2:
824
- case "end":
825
- return _context11.stop();
826
- }
827
- }, _callee11);
828
- })));
829
- });
830
- });
831
- //# sourceMappingURL=EditableHtml.test.js.map