@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,292 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
5
- var _media = require("../media");
6
- jest.mock('@tiptap/core', function () {
7
- return {
8
- Node: {
9
- create: jest.fn(function (config) {
10
- return config;
11
- })
12
- },
13
- mergeAttributes: jest.fn(function () {
14
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
15
- args[_key] = arguments[_key];
16
- }
17
- return Object.assign.apply(Object, [{}].concat(args));
18
- })
19
- };
20
- });
21
- jest.mock('@tiptap/react', function () {
22
- return {
23
- NodeViewWrapper: function NodeViewWrapper(_ref) {
24
- var children = _ref.children;
25
- return /*#__PURE__*/React.createElement("div", {
26
- "data-testid": "node-view-wrapper"
27
- }, children);
28
- },
29
- ReactNodeViewRenderer: jest.fn(function (component) {
30
- return component;
31
- })
32
- };
33
- });
34
- jest.mock('react-dom', function () {
35
- return {
36
- render: jest.fn()
37
- };
38
- });
39
- jest.mock('../../components/media/MediaDialog', function () {
40
- return {
41
- __esModule: true,
42
- "default": jest.fn(function () {
43
- return /*#__PURE__*/React.createElement("div", {
44
- "data-testid": "media-dialog"
45
- });
46
- })
47
- };
48
- });
49
- jest.mock('../../components/media/MediaToolbar', function () {
50
- return {
51
- __esModule: true,
52
- "default": jest.fn(function () {
53
- return /*#__PURE__*/React.createElement("div", {
54
- "data-testid": "media-toolbar"
55
- });
56
- })
57
- };
58
- });
59
- describe('Media', function () {
60
- describe('configuration', function () {
61
- it('has correct name', function () {
62
- expect(_media.Media.name).toBe('media');
63
- });
64
- it('is inline', function () {
65
- expect(_media.Media.inline).toBe(true);
66
- });
67
- it('is in inline group', function () {
68
- expect(_media.Media.group).toBe('inline');
69
- });
70
- it('is atomic', function () {
71
- expect(_media.Media.atom).toBe(true);
72
- });
73
- });
74
- describe('addAttributes', function () {
75
- it('returns all media attributes with defaults', function () {
76
- var attributes = _media.Media.addAttributes();
77
- expect(attributes).toHaveProperty('type');
78
- expect(attributes).toHaveProperty('src');
79
- expect(attributes).toHaveProperty('width');
80
- expect(attributes).toHaveProperty('height');
81
- expect(attributes).toHaveProperty('title');
82
- expect(attributes).toHaveProperty('starts');
83
- expect(attributes).toHaveProperty('ends');
84
- expect(attributes).toHaveProperty('editing');
85
- expect(attributes).toHaveProperty('tag');
86
- expect(attributes).toHaveProperty('url');
87
- expect(attributes.type["default"]).toBe('video');
88
- expect(attributes.src["default"]).toBeNull();
89
- expect(attributes.tag["default"]).toBe('iframe');
90
- expect(attributes.editing["default"]).toBe(false);
91
- });
92
- });
93
- describe('parseHTML', function () {
94
- it('returns parsing rules for iframe and audio', function () {
95
- var rules = _media.Media.parseHTML();
96
- expect(Array.isArray(rules)).toBe(true);
97
- expect(rules).toHaveLength(2);
98
- expect(rules[0].tag).toBe('iframe[data-type="video"]');
99
- expect(rules[1].tag).toBe('audio');
100
- });
101
- it('parses video iframe attributes', function () {
102
- var rules = _media.Media.parseHTML();
103
- var mockEl = {
104
- getAttribute: jest.fn(function (attr) {
105
- var attrs = {
106
- src: 'https://video.com/embed',
107
- width: '640',
108
- height: '480'
109
- };
110
- return attrs[attr] || null;
111
- }),
112
- dataset: {
113
- title: 'Test Video',
114
- starts: '10',
115
- ends: '60',
116
- url: 'https://video.com/watch'
117
- }
118
- };
119
- var result = rules[0].getAttrs(mockEl);
120
- expect(result.type).toBe('video');
121
- expect(result.tag).toBe('iframe');
122
- expect(result.src).toBe('https://video.com/embed');
123
- expect(result.width).toBe('640');
124
- expect(result.height).toBe('480');
125
- expect(result.title).toBe('Test Video');
126
- });
127
- it('parses audio element attributes', function () {
128
- var rules = _media.Media.parseHTML();
129
- var mockEl = {
130
- querySelector: jest.fn(function () {
131
- return {
132
- getAttribute: jest.fn(function () {
133
- return 'https://audio.com/file.mp3';
134
- })
135
- };
136
- })
137
- };
138
- var result = rules[1].getAttrs(mockEl);
139
- expect(result.type).toBe('audio');
140
- expect(result.tag).toBe('audio');
141
- expect(result.src).toBe('https://audio.com/file.mp3');
142
- });
143
- });
144
- describe('renderHTML', function () {
145
- it('renders audio element for audio type', function () {
146
- var HTMLAttributes = {
147
- tag: 'audio',
148
- src: 'test.mp3'
149
- };
150
- var result = _media.Media.renderHTML({
151
- HTMLAttributes: HTMLAttributes
152
- });
153
- expect(result[0]).toBe('audio');
154
- expect(result[1]).toEqual({
155
- controls: 'controls',
156
- controlsList: 'nodownload'
157
- });
158
- expect(result[2][0]).toBe('source');
159
- expect(result[2][1]).toEqual({
160
- src: 'test.mp3',
161
- type: 'audio/mp3'
162
- });
163
- });
164
- it('renders iframe for video type', function () {
165
- var HTMLAttributes = {
166
- tag: 'iframe',
167
- src: 'https://video.com/embed',
168
- width: '640',
169
- height: '480'
170
- };
171
- var result = _media.Media.renderHTML({
172
- HTMLAttributes: HTMLAttributes
173
- });
174
- expect(result[0]).toBe('iframe');
175
- expect(result[1]).toHaveProperty('data-type', 'video');
176
- expect(result[1]).toHaveProperty('frameborder', '0');
177
- expect(result[1]).toHaveProperty('src', 'https://video.com/embed');
178
- expect(result[1]).toHaveProperty('width', '640');
179
- expect(result[1]).toHaveProperty('height', '480');
180
- });
181
- it('renders iframe without dimensions if not provided', function () {
182
- var HTMLAttributes = {
183
- tag: 'iframe',
184
- src: 'https://video.com/embed'
185
- };
186
- var result = _media.Media.renderHTML({
187
- HTMLAttributes: HTMLAttributes
188
- });
189
- expect(result[1]).not.toHaveProperty('width');
190
- expect(result[1]).not.toHaveProperty('height');
191
- });
192
- });
193
- describe('addCommands', function () {
194
- it('returns insertMedia and updateMedia commands', function () {
195
- var commands = _media.Media.addCommands();
196
- expect(commands).toHaveProperty('insertMedia');
197
- expect(commands).toHaveProperty('updateMedia');
198
- expect((0, _typeof2["default"])(commands.insertMedia)).toBe('function');
199
- expect((0, _typeof2["default"])(commands.updateMedia)).toBe('function');
200
- });
201
- it('insertMedia inserts content with attributes', function () {
202
- var context = {
203
- name: 'media'
204
- };
205
- var commands = _media.Media.addCommands.call(context);
206
- var mockCommands = {
207
- insertContent: jest.fn(function () {
208
- return true;
209
- })
210
- };
211
- var attrs = {
212
- type: 'video',
213
- src: 'test.mp4'
214
- };
215
- var result = commands.insertMedia(attrs)({
216
- commands: mockCommands
217
- });
218
- expect(mockCommands.insertContent).toHaveBeenCalledWith({
219
- type: 'media',
220
- attrs: attrs
221
- });
222
- expect(result).toBe(true);
223
- });
224
- it('updateMedia updates attributes', function () {
225
- var context = {
226
- name: 'media'
227
- };
228
- var commands = _media.Media.addCommands.call(context);
229
- var mockCommands = {
230
- updateAttributes: jest.fn(function () {
231
- return true;
232
- })
233
- };
234
- var attrs = {
235
- width: '800'
236
- };
237
- var result = commands.updateMedia(attrs)({
238
- commands: mockCommands
239
- });
240
- expect(mockCommands.updateAttributes).toHaveBeenCalledWith('media', attrs);
241
- expect(result).toBe(true);
242
- });
243
- });
244
- describe('addNodeView', function () {
245
- it('returns ReactNodeViewRenderer result', function () {
246
- var result = _media.Media.addNodeView();
247
- expect(result).toBeDefined();
248
- });
249
- });
250
- });
251
- describe('insertDialog', function () {
252
- beforeEach(function () {
253
- document.body.innerHTML = '';
254
- document.body.style.overflow = 'auto';
255
- });
256
- it('creates dialog element', function () {
257
- var mockCallback = jest.fn();
258
- var props = {
259
- type: 'video',
260
- callback: mockCallback,
261
- options: {}
262
- };
263
- (0, _media.insertDialog)(props);
264
- var dialog = document.querySelector('.insert-media-dialog');
265
- expect(dialog).toBeTruthy();
266
- });
267
- it('sets body overflow to hidden', function () {
268
- var mockCallback = jest.fn();
269
- var props = {
270
- type: 'video',
271
- callback: mockCallback,
272
- options: {}
273
- };
274
- (0, _media.insertDialog)(props);
275
- expect(document.body.style.overflow).toBe('hidden');
276
- });
277
- it('removes previous dialogs', function () {
278
- var existingDialog = document.createElement('div');
279
- existingDialog.className = 'insert-media-dialog';
280
- document.body.appendChild(existingDialog);
281
- var mockCallback = jest.fn();
282
- var props = {
283
- type: 'video',
284
- callback: mockCallback,
285
- options: {}
286
- };
287
- (0, _media.insertDialog)(props);
288
- var dialogs = document.querySelectorAll('.insert-media-dialog');
289
- expect(dialogs).toHaveLength(1);
290
- });
291
- });
292
- //# sourceMappingURL=media.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media.test.js","names":["_media","require","jest","mock","Node","create","fn","config","mergeAttributes","_len","arguments","length","args","Array","_key","Object","assign","apply","concat","NodeViewWrapper","_ref","children","React","createElement","ReactNodeViewRenderer","component","render","__esModule","describe","it","expect","Media","name","toBe","inline","group","atom","attributes","addAttributes","toHaveProperty","type","src","toBeNull","tag","editing","rules","parseHTML","isArray","toHaveLength","mockEl","getAttribute","attr","attrs","width","height","dataset","title","starts","ends","url","result","getAttrs","querySelector","HTMLAttributes","renderHTML","toEqual","controls","controlsList","not","commands","addCommands","_typeof2","insertMedia","updateMedia","context","call","mockCommands","insertContent","toHaveBeenCalledWith","updateAttributes","addNodeView","toBeDefined","beforeEach","document","body","innerHTML","style","overflow","mockCallback","props","callback","options","insertDialog","dialog","toBeTruthy","existingDialog","className","appendChild","dialogs","querySelectorAll"],"sources":["../../../src/extensions/__tests__/media.test.js"],"sourcesContent":["import { insertDialog, Media } from '../media';\n\njest.mock('@tiptap/core', () => ({\n Node: { create: jest.fn((config) => config) },\n mergeAttributes: jest.fn((...args) => Object.assign({}, ...args)),\n}));\n\njest.mock('@tiptap/react', () => ({\n NodeViewWrapper: ({ children }) => <div data-testid=\"node-view-wrapper\">{children}</div>,\n ReactNodeViewRenderer: jest.fn((component) => component),\n}));\n\njest.mock('react-dom', () => ({\n render: jest.fn(),\n}));\n\njest.mock('../../components/media/MediaDialog', () => ({\n __esModule: true,\n default: jest.fn(() => <div data-testid=\"media-dialog\" />),\n}));\n\njest.mock('../../components/media/MediaToolbar', () => ({\n __esModule: true,\n default: jest.fn(() => <div data-testid=\"media-toolbar\" />),\n}));\n\ndescribe('Media', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(Media.name).toBe('media');\n });\n\n it('is inline', () => {\n expect(Media.inline).toBe(true);\n });\n\n it('is in inline group', () => {\n expect(Media.group).toBe('inline');\n });\n\n it('is atomic', () => {\n expect(Media.atom).toBe(true);\n });\n });\n\n describe('addAttributes', () => {\n it('returns all media attributes with defaults', () => {\n const attributes = Media.addAttributes();\n\n expect(attributes).toHaveProperty('type');\n expect(attributes).toHaveProperty('src');\n expect(attributes).toHaveProperty('width');\n expect(attributes).toHaveProperty('height');\n expect(attributes).toHaveProperty('title');\n expect(attributes).toHaveProperty('starts');\n expect(attributes).toHaveProperty('ends');\n expect(attributes).toHaveProperty('editing');\n expect(attributes).toHaveProperty('tag');\n expect(attributes).toHaveProperty('url');\n\n expect(attributes.type.default).toBe('video');\n expect(attributes.src.default).toBeNull();\n expect(attributes.tag.default).toBe('iframe');\n expect(attributes.editing.default).toBe(false);\n });\n });\n\n describe('parseHTML', () => {\n it('returns parsing rules for iframe and audio', () => {\n const rules = Media.parseHTML();\n\n expect(Array.isArray(rules)).toBe(true);\n expect(rules).toHaveLength(2);\n expect(rules[0].tag).toBe('iframe[data-type=\"video\"]');\n expect(rules[1].tag).toBe('audio');\n });\n\n it('parses video iframe attributes', () => {\n const rules = Media.parseHTML();\n const mockEl = {\n getAttribute: jest.fn((attr) => {\n const attrs = {\n src: 'https://video.com/embed',\n width: '640',\n height: '480',\n };\n return attrs[attr] || null;\n }),\n dataset: {\n title: 'Test Video',\n starts: '10',\n ends: '60',\n url: 'https://video.com/watch',\n },\n };\n\n const result = rules[0].getAttrs(mockEl);\n\n expect(result.type).toBe('video');\n expect(result.tag).toBe('iframe');\n expect(result.src).toBe('https://video.com/embed');\n expect(result.width).toBe('640');\n expect(result.height).toBe('480');\n expect(result.title).toBe('Test Video');\n });\n\n it('parses audio element attributes', () => {\n const rules = Media.parseHTML();\n const mockEl = {\n querySelector: jest.fn(() => ({\n getAttribute: jest.fn(() => 'https://audio.com/file.mp3'),\n })),\n };\n\n const result = rules[1].getAttrs(mockEl);\n\n expect(result.type).toBe('audio');\n expect(result.tag).toBe('audio');\n expect(result.src).toBe('https://audio.com/file.mp3');\n });\n });\n\n describe('renderHTML', () => {\n it('renders audio element for audio type', () => {\n const HTMLAttributes = {\n tag: 'audio',\n src: 'test.mp3',\n };\n\n const result = Media.renderHTML({ HTMLAttributes });\n\n expect(result[0]).toBe('audio');\n expect(result[1]).toEqual({ controls: 'controls', controlsList: 'nodownload' });\n expect(result[2][0]).toBe('source');\n expect(result[2][1]).toEqual({ src: 'test.mp3', type: 'audio/mp3' });\n });\n\n it('renders iframe for video type', () => {\n const HTMLAttributes = {\n tag: 'iframe',\n src: 'https://video.com/embed',\n width: '640',\n height: '480',\n };\n\n const result = Media.renderHTML({ HTMLAttributes });\n\n expect(result[0]).toBe('iframe');\n expect(result[1]).toHaveProperty('data-type', 'video');\n expect(result[1]).toHaveProperty('frameborder', '0');\n expect(result[1]).toHaveProperty('src', 'https://video.com/embed');\n expect(result[1]).toHaveProperty('width', '640');\n expect(result[1]).toHaveProperty('height', '480');\n });\n\n it('renders iframe without dimensions if not provided', () => {\n const HTMLAttributes = {\n tag: 'iframe',\n src: 'https://video.com/embed',\n };\n\n const result = Media.renderHTML({ HTMLAttributes });\n\n expect(result[1]).not.toHaveProperty('width');\n expect(result[1]).not.toHaveProperty('height');\n });\n });\n\n describe('addCommands', () => {\n it('returns insertMedia and updateMedia commands', () => {\n const commands = Media.addCommands();\n\n expect(commands).toHaveProperty('insertMedia');\n expect(commands).toHaveProperty('updateMedia');\n expect(typeof commands.insertMedia).toBe('function');\n expect(typeof commands.updateMedia).toBe('function');\n });\n\n it('insertMedia inserts content with attributes', () => {\n const context = { name: 'media' };\n const commands = Media.addCommands.call(context);\n const mockCommands = {\n insertContent: jest.fn(() => true),\n };\n const attrs = { type: 'video', src: 'test.mp4' };\n\n const result = commands.insertMedia(attrs)({ commands: mockCommands });\n\n expect(mockCommands.insertContent).toHaveBeenCalledWith({\n type: 'media',\n attrs,\n });\n expect(result).toBe(true);\n });\n\n it('updateMedia updates attributes', () => {\n const context = { name: 'media' };\n const commands = Media.addCommands.call(context);\n const mockCommands = {\n updateAttributes: jest.fn(() => true),\n };\n const attrs = { width: '800' };\n\n const result = commands.updateMedia(attrs)({ commands: mockCommands });\n\n expect(mockCommands.updateAttributes).toHaveBeenCalledWith('media', attrs);\n expect(result).toBe(true);\n });\n });\n\n describe('addNodeView', () => {\n it('returns ReactNodeViewRenderer result', () => {\n const result = Media.addNodeView();\n\n expect(result).toBeDefined();\n });\n });\n});\n\ndescribe('insertDialog', () => {\n beforeEach(() => {\n document.body.innerHTML = '';\n document.body.style.overflow = 'auto';\n });\n\n it('creates dialog element', () => {\n const mockCallback = jest.fn();\n const props = {\n type: 'video',\n callback: mockCallback,\n options: {},\n };\n\n insertDialog(props);\n\n const dialog = document.querySelector('.insert-media-dialog');\n expect(dialog).toBeTruthy();\n });\n\n it('sets body overflow to hidden', () => {\n const mockCallback = jest.fn();\n const props = {\n type: 'video',\n callback: mockCallback,\n options: {},\n };\n\n insertDialog(props);\n\n expect(document.body.style.overflow).toBe('hidden');\n });\n\n it('removes previous dialogs', () => {\n const existingDialog = document.createElement('div');\n existingDialog.className = 'insert-media-dialog';\n document.body.appendChild(existingDialog);\n\n const mockCallback = jest.fn();\n const props = {\n type: 'video',\n callback: mockCallback,\n options: {},\n };\n\n insertDialog(props);\n\n const dialogs = document.querySelectorAll('.insert-media-dialog');\n expect(dialogs).toHaveLength(1);\n });\n});\n\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEAC,IAAI,CAACC,IAAI,CAAC,cAAc,EAAE;EAAA,OAAO;IAC/BC,IAAI,EAAE;MAAEC,MAAM,EAAEH,IAAI,CAACI,EAAE,CAAC,UAACC,MAAM;QAAA,OAAKA,MAAM;MAAA;IAAE,CAAC;IAC7CC,eAAe,EAAEN,IAAI,CAACI,EAAE,CAAC;MAAA,SAAAG,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAIC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;QAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;MAAA;MAAA,OAAKC,MAAM,CAACC,MAAM,CAAAC,KAAA,CAAbF,MAAM,GAAQ,CAAC,CAAC,EAAAG,MAAA,CAAKN,IAAI,EAAC;IAAA;EAClE,CAAC;AAAA,CAAC,CAAC;AAEHV,IAAI,CAACC,IAAI,CAAC,eAAe,EAAE;EAAA,OAAO;IAChCgB,eAAe,EAAE,SAAjBA,eAAeA,CAAAC,IAAA;MAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAAA,oBAAOC,KAAA,CAAAC,aAAA;QAAK,eAAY;MAAmB,GAAEF,QAAc,CAAC;IAAA;IACxFG,qBAAqB,EAAEtB,IAAI,CAACI,EAAE,CAAC,UAACmB,SAAS;MAAA,OAAKA,SAAS;IAAA;EACzD,CAAC;AAAA,CAAC,CAAC;AAEHvB,IAAI,CAACC,IAAI,CAAC,WAAW,EAAE;EAAA,OAAO;IAC5BuB,MAAM,EAAExB,IAAI,CAACI,EAAE,CAAC;EAClB,CAAC;AAAA,CAAC,CAAC;AAEHJ,IAAI,CAACC,IAAI,CAAC,oCAAoC,EAAE;EAAA,OAAO;IACrDwB,UAAU,EAAE,IAAI;IAChB,WAASzB,IAAI,CAACI,EAAE,CAAC;MAAA,oBAAMgB,KAAA,CAAAC,aAAA;QAAK,eAAY;MAAc,CAAE,CAAC;IAAA;EAC3D,CAAC;AAAA,CAAC,CAAC;AAEHrB,IAAI,CAACC,IAAI,CAAC,qCAAqC,EAAE;EAAA,OAAO;IACtDwB,UAAU,EAAE,IAAI;IAChB,WAASzB,IAAI,CAACI,EAAE,CAAC;MAAA,oBAAMgB,KAAA,CAAAC,aAAA;QAAK,eAAY;MAAe,CAAE,CAAC;IAAA;EAC5D,CAAC;AAAA,CAAC,CAAC;AAEHK,QAAQ,CAAC,OAAO,EAAE,YAAM;EACtBA,QAAQ,CAAC,eAAe,EAAE,YAAM;IAC9BC,EAAE,CAAC,kBAAkB,EAAE,YAAM;MAC3BC,MAAM,CAACC,YAAK,CAACC,IAAI,CAAC,CAACC,IAAI,CAAC,OAAO,CAAC;IAClC,CAAC,CAAC;IAEFJ,EAAE,CAAC,WAAW,EAAE,YAAM;MACpBC,MAAM,CAACC,YAAK,CAACG,MAAM,CAAC,CAACD,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC,CAAC;IAEFJ,EAAE,CAAC,oBAAoB,EAAE,YAAM;MAC7BC,MAAM,CAACC,YAAK,CAACI,KAAK,CAAC,CAACF,IAAI,CAAC,QAAQ,CAAC;IACpC,CAAC,CAAC;IAEFJ,EAAE,CAAC,WAAW,EAAE,YAAM;MACpBC,MAAM,CAACC,YAAK,CAACK,IAAI,CAAC,CAACH,IAAI,CAAC,IAAI,CAAC;IAC/B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFL,QAAQ,CAAC,eAAe,EAAE,YAAM;IAC9BC,EAAE,CAAC,4CAA4C,EAAE,YAAM;MACrD,IAAMQ,UAAU,GAAGN,YAAK,CAACO,aAAa,CAAC,CAAC;MAExCR,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,MAAM,CAAC;MACzCT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,KAAK,CAAC;MACxCT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,OAAO,CAAC;MAC1CT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,QAAQ,CAAC;MAC3CT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,OAAO,CAAC;MAC1CT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,QAAQ,CAAC;MAC3CT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,MAAM,CAAC;MACzCT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,SAAS,CAAC;MAC5CT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,KAAK,CAAC;MACxCT,MAAM,CAACO,UAAU,CAAC,CAACE,cAAc,CAAC,KAAK,CAAC;MAExCT,MAAM,CAACO,UAAU,CAACG,IAAI,WAAQ,CAAC,CAACP,IAAI,CAAC,OAAO,CAAC;MAC7CH,MAAM,CAACO,UAAU,CAACI,GAAG,WAAQ,CAAC,CAACC,QAAQ,CAAC,CAAC;MACzCZ,MAAM,CAACO,UAAU,CAACM,GAAG,WAAQ,CAAC,CAACV,IAAI,CAAC,QAAQ,CAAC;MAC7CH,MAAM,CAACO,UAAU,CAACO,OAAO,WAAQ,CAAC,CAACX,IAAI,CAAC,KAAK,CAAC;IAChD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFL,QAAQ,CAAC,WAAW,EAAE,YAAM;IAC1BC,EAAE,CAAC,4CAA4C,EAAE,YAAM;MACrD,IAAMgB,KAAK,GAAGd,YAAK,CAACe,SAAS,CAAC,CAAC;MAE/BhB,MAAM,CAACjB,KAAK,CAACkC,OAAO,CAACF,KAAK,CAAC,CAAC,CAACZ,IAAI,CAAC,IAAI,CAAC;MACvCH,MAAM,CAACe,KAAK,CAAC,CAACG,YAAY,CAAC,CAAC,CAAC;MAC7BlB,MAAM,CAACe,KAAK,CAAC,CAAC,CAAC,CAACF,GAAG,CAAC,CAACV,IAAI,CAAC,2BAA2B,CAAC;MACtDH,MAAM,CAACe,KAAK,CAAC,CAAC,CAAC,CAACF,GAAG,CAAC,CAACV,IAAI,CAAC,OAAO,CAAC;IACpC,CAAC,CAAC;IAEFJ,EAAE,CAAC,gCAAgC,EAAE,YAAM;MACzC,IAAMgB,KAAK,GAAGd,YAAK,CAACe,SAAS,CAAC,CAAC;MAC/B,IAAMG,MAAM,GAAG;QACbC,YAAY,EAAEhD,IAAI,CAACI,EAAE,CAAC,UAAC6C,IAAI,EAAK;UAC9B,IAAMC,KAAK,GAAG;YACZX,GAAG,EAAE,yBAAyB;YAC9BY,KAAK,EAAE,KAAK;YACZC,MAAM,EAAE;UACV,CAAC;UACD,OAAOF,KAAK,CAACD,IAAI,CAAC,IAAI,IAAI;QAC5B,CAAC,CAAC;QACFI,OAAO,EAAE;UACPC,KAAK,EAAE,YAAY;UACnBC,MAAM,EAAE,IAAI;UACZC,IAAI,EAAE,IAAI;UACVC,GAAG,EAAE;QACP;MACF,CAAC;MAED,IAAMC,MAAM,GAAGf,KAAK,CAAC,CAAC,CAAC,CAACgB,QAAQ,CAACZ,MAAM,CAAC;MAExCnB,MAAM,CAAC8B,MAAM,CAACpB,IAAI,CAAC,CAACP,IAAI,CAAC,OAAO,CAAC;MACjCH,MAAM,CAAC8B,MAAM,CAACjB,GAAG,CAAC,CAACV,IAAI,CAAC,QAAQ,CAAC;MACjCH,MAAM,CAAC8B,MAAM,CAACnB,GAAG,CAAC,CAACR,IAAI,CAAC,yBAAyB,CAAC;MAClDH,MAAM,CAAC8B,MAAM,CAACP,KAAK,CAAC,CAACpB,IAAI,CAAC,KAAK,CAAC;MAChCH,MAAM,CAAC8B,MAAM,CAACN,MAAM,CAAC,CAACrB,IAAI,CAAC,KAAK,CAAC;MACjCH,MAAM,CAAC8B,MAAM,CAACJ,KAAK,CAAC,CAACvB,IAAI,CAAC,YAAY,CAAC;IACzC,CAAC,CAAC;IAEFJ,EAAE,CAAC,iCAAiC,EAAE,YAAM;MAC1C,IAAMgB,KAAK,GAAGd,YAAK,CAACe,SAAS,CAAC,CAAC;MAC/B,IAAMG,MAAM,GAAG;QACba,aAAa,EAAE5D,IAAI,CAACI,EAAE,CAAC;UAAA,OAAO;YAC5B4C,YAAY,EAAEhD,IAAI,CAACI,EAAE,CAAC;cAAA,OAAM,4BAA4B;YAAA;UAC1D,CAAC;QAAA,CAAC;MACJ,CAAC;MAED,IAAMsD,MAAM,GAAGf,KAAK,CAAC,CAAC,CAAC,CAACgB,QAAQ,CAACZ,MAAM,CAAC;MAExCnB,MAAM,CAAC8B,MAAM,CAACpB,IAAI,CAAC,CAACP,IAAI,CAAC,OAAO,CAAC;MACjCH,MAAM,CAAC8B,MAAM,CAACjB,GAAG,CAAC,CAACV,IAAI,CAAC,OAAO,CAAC;MAChCH,MAAM,CAAC8B,MAAM,CAACnB,GAAG,CAAC,CAACR,IAAI,CAAC,4BAA4B,CAAC;IACvD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFL,QAAQ,CAAC,YAAY,EAAE,YAAM;IAC3BC,EAAE,CAAC,sCAAsC,EAAE,YAAM;MAC/C,IAAMkC,cAAc,GAAG;QACrBpB,GAAG,EAAE,OAAO;QACZF,GAAG,EAAE;MACP,CAAC;MAED,IAAMmB,MAAM,GAAG7B,YAAK,CAACiC,UAAU,CAAC;QAAED,cAAc,EAAdA;MAAe,CAAC,CAAC;MAEnDjC,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC3B,IAAI,CAAC,OAAO,CAAC;MAC/BH,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAACK,OAAO,CAAC;QAAEC,QAAQ,EAAE,UAAU;QAAEC,YAAY,EAAE;MAAa,CAAC,CAAC;MAC/ErC,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC3B,IAAI,CAAC,QAAQ,CAAC;MACnCH,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACK,OAAO,CAAC;QAAExB,GAAG,EAAE,UAAU;QAAED,IAAI,EAAE;MAAY,CAAC,CAAC;IACtE,CAAC,CAAC;IAEFX,EAAE,CAAC,+BAA+B,EAAE,YAAM;MACxC,IAAMkC,cAAc,GAAG;QACrBpB,GAAG,EAAE,QAAQ;QACbF,GAAG,EAAE,yBAAyB;QAC9BY,KAAK,EAAE,KAAK;QACZC,MAAM,EAAE;MACV,CAAC;MAED,IAAMM,MAAM,GAAG7B,YAAK,CAACiC,UAAU,CAAC;QAAED,cAAc,EAAdA;MAAe,CAAC,CAAC;MAEnDjC,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC3B,IAAI,CAAC,QAAQ,CAAC;MAChCH,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAACrB,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC;MACtDT,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAACrB,cAAc,CAAC,aAAa,EAAE,GAAG,CAAC;MACpDT,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAACrB,cAAc,CAAC,KAAK,EAAE,yBAAyB,CAAC;MAClET,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAACrB,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;MAChDT,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAACrB,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC;IACnD,CAAC,CAAC;IAEFV,EAAE,CAAC,mDAAmD,EAAE,YAAM;MAC5D,IAAMkC,cAAc,GAAG;QACrBpB,GAAG,EAAE,QAAQ;QACbF,GAAG,EAAE;MACP,CAAC;MAED,IAAMmB,MAAM,GAAG7B,YAAK,CAACiC,UAAU,CAAC;QAAED,cAAc,EAAdA;MAAe,CAAC,CAAC;MAEnDjC,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAACQ,GAAG,CAAC7B,cAAc,CAAC,OAAO,CAAC;MAC7CT,MAAM,CAAC8B,MAAM,CAAC,CAAC,CAAC,CAAC,CAACQ,GAAG,CAAC7B,cAAc,CAAC,QAAQ,CAAC;IAChD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFX,QAAQ,CAAC,aAAa,EAAE,YAAM;IAC5BC,EAAE,CAAC,8CAA8C,EAAE,YAAM;MACvD,IAAMwC,QAAQ,GAAGtC,YAAK,CAACuC,WAAW,CAAC,CAAC;MAEpCxC,MAAM,CAACuC,QAAQ,CAAC,CAAC9B,cAAc,CAAC,aAAa,CAAC;MAC9CT,MAAM,CAACuC,QAAQ,CAAC,CAAC9B,cAAc,CAAC,aAAa,CAAC;MAC9CT,MAAM,KAAAyC,QAAA,aAAQF,QAAQ,CAACG,WAAW,EAAC,CAACvC,IAAI,CAAC,UAAU,CAAC;MACpDH,MAAM,KAAAyC,QAAA,aAAQF,QAAQ,CAACI,WAAW,EAAC,CAACxC,IAAI,CAAC,UAAU,CAAC;IACtD,CAAC,CAAC;IAEFJ,EAAE,CAAC,6CAA6C,EAAE,YAAM;MACtD,IAAM6C,OAAO,GAAG;QAAE1C,IAAI,EAAE;MAAQ,CAAC;MACjC,IAAMqC,QAAQ,GAAGtC,YAAK,CAACuC,WAAW,CAACK,IAAI,CAACD,OAAO,CAAC;MAChD,IAAME,YAAY,GAAG;QACnBC,aAAa,EAAE3E,IAAI,CAACI,EAAE,CAAC;UAAA,OAAM,IAAI;QAAA;MACnC,CAAC;MACD,IAAM8C,KAAK,GAAG;QAAEZ,IAAI,EAAE,OAAO;QAAEC,GAAG,EAAE;MAAW,CAAC;MAEhD,IAAMmB,MAAM,GAAGS,QAAQ,CAACG,WAAW,CAACpB,KAAK,CAAC,CAAC;QAAEiB,QAAQ,EAAEO;MAAa,CAAC,CAAC;MAEtE9C,MAAM,CAAC8C,YAAY,CAACC,aAAa,CAAC,CAACC,oBAAoB,CAAC;QACtDtC,IAAI,EAAE,OAAO;QACbY,KAAK,EAALA;MACF,CAAC,CAAC;MACFtB,MAAM,CAAC8B,MAAM,CAAC,CAAC3B,IAAI,CAAC,IAAI,CAAC;IAC3B,CAAC,CAAC;IAEFJ,EAAE,CAAC,gCAAgC,EAAE,YAAM;MACzC,IAAM6C,OAAO,GAAG;QAAE1C,IAAI,EAAE;MAAQ,CAAC;MACjC,IAAMqC,QAAQ,GAAGtC,YAAK,CAACuC,WAAW,CAACK,IAAI,CAACD,OAAO,CAAC;MAChD,IAAME,YAAY,GAAG;QACnBG,gBAAgB,EAAE7E,IAAI,CAACI,EAAE,CAAC;UAAA,OAAM,IAAI;QAAA;MACtC,CAAC;MACD,IAAM8C,KAAK,GAAG;QAAEC,KAAK,EAAE;MAAM,CAAC;MAE9B,IAAMO,MAAM,GAAGS,QAAQ,CAACI,WAAW,CAACrB,KAAK,CAAC,CAAC;QAAEiB,QAAQ,EAAEO;MAAa,CAAC,CAAC;MAEtE9C,MAAM,CAAC8C,YAAY,CAACG,gBAAgB,CAAC,CAACD,oBAAoB,CAAC,OAAO,EAAE1B,KAAK,CAAC;MAC1EtB,MAAM,CAAC8B,MAAM,CAAC,CAAC3B,IAAI,CAAC,IAAI,CAAC;IAC3B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFL,QAAQ,CAAC,aAAa,EAAE,YAAM;IAC5BC,EAAE,CAAC,sCAAsC,EAAE,YAAM;MAC/C,IAAM+B,MAAM,GAAG7B,YAAK,CAACiD,WAAW,CAAC,CAAC;MAElClD,MAAM,CAAC8B,MAAM,CAAC,CAACqB,WAAW,CAAC,CAAC;IAC9B,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFrD,QAAQ,CAAC,cAAc,EAAE,YAAM;EAC7BsD,UAAU,CAAC,YAAM;IACfC,QAAQ,CAACC,IAAI,CAACC,SAAS,GAAG,EAAE;IAC5BF,QAAQ,CAACC,IAAI,CAACE,KAAK,CAACC,QAAQ,GAAG,MAAM;EACvC,CAAC,CAAC;EAEF1D,EAAE,CAAC,wBAAwB,EAAE,YAAM;IACjC,IAAM2D,YAAY,GAAGtF,IAAI,CAACI,EAAE,CAAC,CAAC;IAC9B,IAAMmF,KAAK,GAAG;MACZjD,IAAI,EAAE,OAAO;MACbkD,QAAQ,EAAEF,YAAY;MACtBG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAAC,mBAAY,EAACH,KAAK,CAAC;IAEnB,IAAMI,MAAM,GAAGV,QAAQ,CAACrB,aAAa,CAAC,sBAAsB,CAAC;IAC7DhC,MAAM,CAAC+D,MAAM,CAAC,CAACC,UAAU,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEFjE,EAAE,CAAC,8BAA8B,EAAE,YAAM;IACvC,IAAM2D,YAAY,GAAGtF,IAAI,CAACI,EAAE,CAAC,CAAC;IAC9B,IAAMmF,KAAK,GAAG;MACZjD,IAAI,EAAE,OAAO;MACbkD,QAAQ,EAAEF,YAAY;MACtBG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAAC,mBAAY,EAACH,KAAK,CAAC;IAEnB3D,MAAM,CAACqD,QAAQ,CAACC,IAAI,CAACE,KAAK,CAACC,QAAQ,CAAC,CAACtD,IAAI,CAAC,QAAQ,CAAC;EACrD,CAAC,CAAC;EAEFJ,EAAE,CAAC,0BAA0B,EAAE,YAAM;IACnC,IAAMkE,cAAc,GAAGZ,QAAQ,CAAC5D,aAAa,CAAC,KAAK,CAAC;IACpDwE,cAAc,CAACC,SAAS,GAAG,qBAAqB;IAChDb,QAAQ,CAACC,IAAI,CAACa,WAAW,CAACF,cAAc,CAAC;IAEzC,IAAMP,YAAY,GAAGtF,IAAI,CAACI,EAAE,CAAC,CAAC;IAC9B,IAAMmF,KAAK,GAAG;MACZjD,IAAI,EAAE,OAAO;MACbkD,QAAQ,EAAEF,YAAY;MACtBG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAAC,mBAAY,EAACH,KAAK,CAAC;IAEnB,IAAMS,OAAO,GAAGf,QAAQ,CAACgB,gBAAgB,CAAC,sBAAsB,CAAC;IACjErE,MAAM,CAACoE,OAAO,CAAC,CAAClD,YAAY,CAAC,CAAC,CAAC;EACjC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}