@pie-lib/editable-html-tip-tap 2.1.11 → 2.2.0-beta

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 (99) hide show
  1. package/CHANGELOG.md +0 -84
  2. package/lib/__tests__/EditableHtml.test.js +831 -0
  3. package/lib/__tests__/EditableHtml.test.js.map +1 -0
  4. package/lib/__tests__/constants.test.js +21 -0
  5. package/lib/__tests__/constants.test.js.map +1 -0
  6. package/lib/__tests__/div-to-paragraph-conversion.test.js +213 -0
  7. package/lib/__tests__/div-to-paragraph-conversion.test.js.map +1 -0
  8. package/lib/__tests__/extensions.test.js +209 -0
  9. package/lib/__tests__/extensions.test.js.map +1 -0
  10. package/lib/__tests__/index.test.js +250 -0
  11. package/lib/__tests__/index.test.js.map +1 -0
  12. package/lib/__tests__/size-utils.test.js +57 -0
  13. package/lib/__tests__/size-utils.test.js.map +1 -0
  14. package/lib/__tests__/theme.test.js +17 -0
  15. package/lib/__tests__/theme.test.js.map +1 -0
  16. package/lib/components/__tests__/AltDialog.test.js +201 -0
  17. package/lib/components/__tests__/AltDialog.test.js.map +1 -0
  18. package/lib/components/__tests__/CharacterPicker.test.js +455 -0
  19. package/lib/components/__tests__/CharacterPicker.test.js.map +1 -0
  20. package/lib/components/__tests__/CssIcon.test.js +58 -0
  21. package/lib/components/__tests__/CssIcon.test.js.map +1 -0
  22. package/lib/components/__tests__/DragInTheBlank.test.js +295 -0
  23. package/lib/components/__tests__/DragInTheBlank.test.js.map +1 -0
  24. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +345 -0
  25. package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +1 -0
  26. package/lib/components/__tests__/ImageToolbar.test.js +185 -0
  27. package/lib/components/__tests__/ImageToolbar.test.js.map +1 -0
  28. package/lib/components/__tests__/InlineDropdown.test.js +839 -0
  29. package/lib/components/__tests__/InlineDropdown.test.js.map +1 -0
  30. package/lib/components/__tests__/InsertImageHandler.test.js +171 -0
  31. package/lib/components/__tests__/InsertImageHandler.test.js.map +1 -0
  32. package/lib/components/__tests__/MediaDialog.test.js +433 -0
  33. package/lib/components/__tests__/MediaDialog.test.js.map +1 -0
  34. package/lib/components/__tests__/MediaToolbar.test.js +126 -0
  35. package/lib/components/__tests__/MediaToolbar.test.js.map +1 -0
  36. package/lib/components/__tests__/MediaWrapper.test.js +96 -0
  37. package/lib/components/__tests__/MediaWrapper.test.js.map +1 -0
  38. package/lib/components/__tests__/MenuBar.test.js +502 -0
  39. package/lib/components/__tests__/MenuBar.test.js.map +1 -0
  40. package/lib/components/__tests__/RespArea.test.js +171 -0
  41. package/lib/components/__tests__/RespArea.test.js.map +1 -0
  42. package/lib/components/__tests__/TableIcons.test.js +153 -0
  43. package/lib/components/__tests__/TableIcons.test.js.map +1 -0
  44. package/lib/components/__tests__/TextAlign.test.js +209 -0
  45. package/lib/components/__tests__/TextAlign.test.js.map +1 -0
  46. package/lib/components/__tests__/TiptapContainer.test.js +196 -0
  47. package/lib/components/__tests__/TiptapContainer.test.js.map +1 -0
  48. package/lib/components/__tests__/characterUtils.test.js +178 -0
  49. package/lib/components/__tests__/characterUtils.test.js.map +1 -0
  50. package/lib/components/__tests__/choice.test.js +213 -0
  51. package/lib/components/__tests__/choice.test.js.map +1 -0
  52. package/lib/components/__tests__/custom-popper.test.js +108 -0
  53. package/lib/components/__tests__/custom-popper.test.js.map +1 -0
  54. package/lib/components/__tests__/done-button.test.js +72 -0
  55. package/lib/components/__tests__/done-button.test.js.map +1 -0
  56. package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
  57. package/lib/components/__tests__/toolbar-buttons.test.js.map +1 -0
  58. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +90 -0
  59. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +1 -0
  60. package/lib/components/respArea/MathTemplated.js +2 -2
  61. package/lib/components/respArea/MathTemplated.js.map +1 -1
  62. package/lib/components/respArea/__tests__/MathTemplated.test.js +217 -0
  63. package/lib/components/respArea/__tests__/MathTemplated.test.js.map +1 -0
  64. package/lib/extensions/__tests__/css.test.js +214 -0
  65. package/lib/extensions/__tests__/css.test.js.map +1 -0
  66. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +175 -0
  67. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +1 -0
  68. package/lib/extensions/__tests__/divNode.test.js +108 -0
  69. package/lib/extensions/__tests__/divNode.test.js.map +1 -0
  70. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +50 -0
  71. package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +1 -0
  72. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +60 -0
  73. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +1 -0
  74. package/lib/extensions/__tests__/extended-list-item.test.js +13 -0
  75. package/lib/extensions/__tests__/extended-list-item.test.js.map +1 -0
  76. package/lib/extensions/__tests__/extended-table-cell.test.js +15 -0
  77. package/lib/extensions/__tests__/extended-table-cell.test.js.map +1 -0
  78. package/lib/extensions/__tests__/extended-table.test.js +200 -0
  79. package/lib/extensions/__tests__/extended-table.test.js.map +1 -0
  80. package/lib/extensions/__tests__/image-component.test.js +432 -0
  81. package/lib/extensions/__tests__/image-component.test.js.map +1 -0
  82. package/lib/extensions/__tests__/image.test.js +313 -0
  83. package/lib/extensions/__tests__/image.test.js.map +1 -0
  84. package/lib/extensions/__tests__/math.test.js +1399 -0
  85. package/lib/extensions/__tests__/math.test.js.map +1 -0
  86. package/lib/extensions/__tests__/media-node-view.test.js +307 -0
  87. package/lib/extensions/__tests__/media-node-view.test.js.map +1 -0
  88. package/lib/extensions/__tests__/media.test.js +292 -0
  89. package/lib/extensions/__tests__/media.test.js.map +1 -0
  90. package/lib/extensions/__tests__/responseArea.test.js +736 -0
  91. package/lib/extensions/__tests__/responseArea.test.js.map +1 -0
  92. package/lib/utils/__tests__/helper.test.js +107 -0
  93. package/lib/utils/__tests__/helper.test.js.map +1 -0
  94. package/lib/utils/__tests__/toolbar.test.js +38 -0
  95. package/lib/utils/__tests__/toolbar.test.js.map +1 -0
  96. package/package.json +7 -7
  97. package/src/components/respArea/MathTemplated.jsx +1 -1
  98. package/src/components/respArea/__tests__/MathTemplated.test.jsx +1 -1
  99. package/LICENSE.md +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.test.js","names":["_extensions","require","describe","it","expect","ALL_PLUGINS","toContain","DEFAULT_PLUGINS","not","result","buildExtensions","Array","isArray","toBe","activeExtensions","toEqual","every","item","undefined","opts","image","jest","fn","math","responseArea","type","extraCSSRules","color","html","languageCharacters","label","value","languageCharsCount","filter","length","toBeGreaterThan","indexOf","toBeLessThan"],"sources":["../../src/__tests__/extensions.test.js"],"sourcesContent":["import { ALL_PLUGINS, buildExtensions, DEFAULT_PLUGINS } from '../extensions';\n\ndescribe('Extensions', () => {\n describe('ALL_PLUGINS', () => {\n it('contains all expected plugins', () => {\n expect(ALL_PLUGINS).toContain('bold');\n expect(ALL_PLUGINS).toContain('italic');\n expect(ALL_PLUGINS).toContain('underline');\n expect(ALL_PLUGINS).toContain('strikethrough');\n expect(ALL_PLUGINS).toContain('bulleted-list');\n expect(ALL_PLUGINS).toContain('numbered-list');\n expect(ALL_PLUGINS).toContain('image');\n expect(ALL_PLUGINS).toContain('math');\n expect(ALL_PLUGINS).toContain('languageCharacters');\n expect(ALL_PLUGINS).toContain('text-align');\n expect(ALL_PLUGINS).toContain('table');\n expect(ALL_PLUGINS).toContain('video');\n expect(ALL_PLUGINS).toContain('audio');\n expect(ALL_PLUGINS).toContain('responseArea');\n expect(ALL_PLUGINS).toContain('superscript');\n expect(ALL_PLUGINS).toContain('subscript');\n expect(ALL_PLUGINS).toContain('h3');\n expect(ALL_PLUGINS).toContain('blockquote');\n expect(ALL_PLUGINS).toContain('undo');\n expect(ALL_PLUGINS).toContain('redo');\n });\n });\n\n describe('DEFAULT_PLUGINS', () => {\n it('excludes responseArea, h3, and blockquote', () => {\n expect(DEFAULT_PLUGINS).not.toContain('responseArea');\n expect(DEFAULT_PLUGINS).not.toContain('h3');\n expect(DEFAULT_PLUGINS).not.toContain('blockquote');\n });\n\n it('contains basic formatting plugins', () => {\n expect(DEFAULT_PLUGINS).toContain('bold');\n expect(DEFAULT_PLUGINS).toContain('italic');\n expect(DEFAULT_PLUGINS).toContain('underline');\n });\n });\n\n describe('buildExtensions', () => {\n it('returns an array when called with default parameters', () => {\n const result = buildExtensions(DEFAULT_PLUGINS, [], {});\n expect(Array.isArray(result)).toBe(true);\n });\n\n it('includes only active extensions', () => {\n const activeExtensions = ['bold', 'italic'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).toEqual(['bold', 'italic']);\n });\n\n it('filters out undefined values', () => {\n const result = buildExtensions(['bold', 'italic'], [], {});\n expect(result.every((item) => item !== undefined)).toBe(true);\n });\n\n it('excludes image plugin when opts.image.onDelete is not provided', () => {\n const activeExtensions = ['image'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).not.toContain('image');\n });\n\n it('includes image plugin when opts.image.delete is provided', () => {\n const activeExtensions = ['image'];\n const opts = { image: { delete: jest.fn() } };\n const result = buildExtensions(activeExtensions, [], opts);\n expect(result).toContain('image');\n });\n\n it('excludes math plugin when opts.math is not provided', () => {\n const activeExtensions = ['math'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).not.toContain('math');\n });\n\n it('includes math plugin when opts.math is provided', () => {\n const activeExtensions = ['math'];\n const opts = { math: {} };\n const result = buildExtensions(activeExtensions, [], opts);\n expect(result).toContain('math');\n });\n\n it('excludes responseArea plugin when opts.responseArea.type is not provided', () => {\n const activeExtensions = ['responseArea'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).not.toContain('responseArea');\n });\n\n it('includes responseArea plugin when opts.responseArea.type is provided', () => {\n const activeExtensions = ['responseArea'];\n const opts = { responseArea: { type: 'explicit-constructed-response' } };\n const result = buildExtensions(activeExtensions, [], opts);\n expect(result).toContain('responseArea');\n });\n\n it('excludes css plugin when opts.extraCSSRules is empty', () => {\n const activeExtensions = ['css'];\n const result = buildExtensions(activeExtensions, [], { extraCSSRules: {} });\n expect(result).not.toContain('css');\n });\n\n it('includes css plugin when opts.extraCSSRules has values', () => {\n const activeExtensions = ['css'];\n const opts = { extraCSSRules: { color: 'red' } };\n const result = buildExtensions(activeExtensions, [], opts);\n expect(result).toContain('css');\n });\n\n it('excludes html plugin when opts.html is not provided', () => {\n const activeExtensions = ['html'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).not.toContain('html');\n });\n\n it('includes html plugin when opts.html is provided', () => {\n const activeExtensions = ['html'];\n const opts = { html: true };\n const result = buildExtensions(activeExtensions, [], opts);\n expect(result).toContain('html');\n });\n\n it('handles languageCharacters plugins array', () => {\n const activeExtensions = ['languageCharacters'];\n const opts = {\n languageCharacters: [\n { label: 'Greek', value: 'greek' },\n { label: 'Cyrillic', value: 'cyrillic' },\n ],\n };\n const result = buildExtensions(activeExtensions, [], opts);\n // Should include languageCharacters for each item in the array\n const languageCharsCount = result.filter((item) => item === 'languageCharacters').length;\n expect(languageCharsCount).toBe(2);\n });\n\n it('uses DEFAULT_PLUGINS when activeExtensions is not provided', () => {\n const result = buildExtensions(null, [], {});\n expect(Array.isArray(result)).toBe(true);\n expect(result.length).toBeGreaterThan(0);\n });\n\n it('includes list plugins', () => {\n const activeExtensions = ['bulleted-list', 'numbered-list'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).toContain('bulleted-list');\n expect(result).toContain('numbered-list');\n });\n\n it('includes undo and redo plugins', () => {\n const activeExtensions = ['undo', 'redo'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).toContain('undo');\n expect(result).toContain('redo');\n });\n\n it('includes text formatting plugins', () => {\n const activeExtensions = ['superscript', 'subscript', 'strikethrough', 'underline'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).toContain('superscript');\n expect(result).toContain('subscript');\n expect(result).toContain('strikethrough');\n expect(result).toContain('underline');\n });\n\n it('includes media plugins', () => {\n const activeExtensions = ['video', 'audio'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).toContain('video');\n expect(result).toContain('audio');\n });\n\n it('includes table plugin', () => {\n const activeExtensions = ['table'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).toContain('table');\n });\n\n it('includes text-align plugin', () => {\n const activeExtensions = ['text-align'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).toContain('text-align');\n });\n\n it('includes blockquote and h3 plugins when in active list', () => {\n const activeExtensions = ['blockquote', 'h3'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).toContain('blockquote');\n expect(result).toContain('h3');\n });\n\n it('filters out inactive extensions', () => {\n const activeExtensions = ['bold'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result).not.toContain('italic');\n expect(result).not.toContain('underline');\n });\n\n it('maintains order of extensions', () => {\n const activeExtensions = ['table', 'bold', 'italic'];\n const result = buildExtensions(activeExtensions, [], {});\n expect(result.indexOf('table')).toBeLessThan(result.indexOf('bold'));\n expect(result.indexOf('bold')).toBeLessThan(result.indexOf('italic'));\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ var _index = _interopRequireWildcard(require("../index"));
5
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
6
+ // Mock TipTap and dependencies
7
+ jest.mock('@tiptap/react', function () {
8
+ return {
9
+ EditorContent: function EditorContent() {
10
+ return /*#__PURE__*/React.createElement("div", {
11
+ "data-testid": "editor-content"
12
+ });
13
+ },
14
+ useEditor: jest.fn(function () {
15
+ return {
16
+ getHTML: jest.fn(function () {
17
+ return '<p>test content</p>';
18
+ }),
19
+ setEditable: jest.fn(),
20
+ commands: {
21
+ setContent: jest.fn()
22
+ },
23
+ isActive: jest.fn(function () {
24
+ return false;
25
+ }),
26
+ isFocused: false
27
+ };
28
+ }),
29
+ useEditorState: jest.fn(function () {
30
+ return {
31
+ isFocused: false
32
+ };
33
+ })
34
+ };
35
+ });
36
+ jest.mock('@tiptap/starter-kit', function () {
37
+ return {
38
+ __esModule: true,
39
+ "default": {
40
+ configure: jest.fn(function () {
41
+ return {};
42
+ })
43
+ }
44
+ };
45
+ });
46
+ jest.mock('@tiptap/extension-text-style', function () {
47
+ return {
48
+ TextStyleKit: {}
49
+ };
50
+ });
51
+ jest.mock('@tiptap/extension-character-count', function () {
52
+ return {
53
+ CharacterCount: {
54
+ configure: jest.fn(function () {
55
+ return {};
56
+ })
57
+ }
58
+ };
59
+ });
60
+ jest.mock('@tiptap/extension-superscript', function () {
61
+ return {
62
+ __esModule: true,
63
+ "default": {}
64
+ };
65
+ });
66
+ jest.mock('@tiptap/extension-subscript', function () {
67
+ return {
68
+ __esModule: true,
69
+ "default": {}
70
+ };
71
+ });
72
+ jest.mock('@tiptap/extension-text-align', function () {
73
+ return {
74
+ __esModule: true,
75
+ "default": {
76
+ configure: jest.fn(function () {
77
+ return {};
78
+ })
79
+ }
80
+ };
81
+ });
82
+ jest.mock('@tiptap/extension-image', function () {
83
+ return {
84
+ __esModule: true,
85
+ "default": {}
86
+ };
87
+ });
88
+ jest.mock('@tiptap/extension-table', function () {
89
+ return {
90
+ __esModule: true,
91
+ "default": {}
92
+ };
93
+ });
94
+ jest.mock('@tiptap/extension-table-row', function () {
95
+ return {
96
+ TableRow: {}
97
+ };
98
+ });
99
+ jest.mock('../extensions/extended-table-cell', function () {
100
+ return {
101
+ ExtendedTableCell: {},
102
+ ExtendedTableHeader: {}
103
+ };
104
+ });
105
+ jest.mock('../extensions/extended-table', function () {
106
+ return {
107
+ __esModule: true,
108
+ "default": {}
109
+ };
110
+ });
111
+ jest.mock('../extensions/ensure-empty-root-div', function () {
112
+ return {
113
+ EnsureEmptyRootIsDiv: {}
114
+ };
115
+ });
116
+ jest.mock('../extensions/extended-list-item', function () {
117
+ return {
118
+ ExtendedListItem: {}
119
+ };
120
+ });
121
+ jest.mock('../extensions/ensure-list-item-content-is-div', function () {
122
+ return {
123
+ EnsureListItemContentIsDiv: {}
124
+ };
125
+ });
126
+ jest.mock('../extensions/responseArea', function () {
127
+ return {
128
+ ExplicitConstructedResponseNode: {
129
+ configure: jest.fn(function () {
130
+ return {};
131
+ })
132
+ },
133
+ DragInTheBlankNode: {
134
+ configure: jest.fn(function () {
135
+ return {};
136
+ })
137
+ },
138
+ InlineDropdownNode: {
139
+ configure: jest.fn(function () {
140
+ return {};
141
+ })
142
+ },
143
+ ResponseAreaExtension: {
144
+ configure: jest.fn(function () {
145
+ return {};
146
+ })
147
+ }
148
+ };
149
+ });
150
+ jest.mock('../extensions/math', function () {
151
+ return {
152
+ MathNode: {
153
+ configure: jest.fn(function () {
154
+ return {};
155
+ })
156
+ }
157
+ };
158
+ });
159
+ jest.mock('../extensions/image', function () {
160
+ return {
161
+ ImageUploadNode: {
162
+ configure: jest.fn(function () {
163
+ return {};
164
+ })
165
+ }
166
+ };
167
+ });
168
+ jest.mock('../extensions/media', function () {
169
+ return {
170
+ Media: {
171
+ configure: jest.fn(function () {
172
+ return {};
173
+ })
174
+ }
175
+ };
176
+ });
177
+ jest.mock('../extensions/css', function () {
178
+ return {
179
+ CSSMark: {
180
+ configure: jest.fn(function () {
181
+ return {};
182
+ })
183
+ }
184
+ };
185
+ });
186
+ jest.mock('../components/TiptapContainer', function () {
187
+ return {
188
+ __esModule: true,
189
+ "default": function _default(_ref) {
190
+ var children = _ref.children;
191
+ return /*#__PURE__*/React.createElement("div", {
192
+ "data-testid": "editor-container"
193
+ }, children);
194
+ }
195
+ };
196
+ });
197
+ jest.mock('../extensions', function () {
198
+ return {
199
+ buildExtensions: jest.fn(function () {
200
+ return [];
201
+ }),
202
+ ALL_PLUGINS: ['bold', 'html', 'extraCSSRules', 'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'text-align', 'blockquote', 'h3', 'table', 'video', 'audio', 'responseArea', 'redo', 'undo', 'superscript', 'subscript'],
203
+ DEFAULT_PLUGINS: ['bold', 'html', 'extraCSSRules', 'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'text-align', 'table', 'video', 'audio', 'redo', 'undo', 'superscript', 'subscript']
204
+ };
205
+ });
206
+ describe('editable-html-tip-tap module', function () {
207
+ describe('exports', function () {
208
+ it('exports StyledEditor as default', function () {
209
+ expect(_index["default"]).toBeDefined();
210
+ });
211
+ it('exports EditableHtml as named export', function () {
212
+ expect(_index.EditableHtml).toBeDefined();
213
+ });
214
+ it('exports ALL_PLUGINS as named export', function () {
215
+ expect(_index.ALL_PLUGINS).toBeDefined();
216
+ expect(Array.isArray(_index.ALL_PLUGINS)).toBe(true);
217
+ });
218
+ it('exports DEFAULT_PLUGINS as named export', function () {
219
+ expect(_index.DEFAULT_PLUGINS).toBeDefined();
220
+ expect(Array.isArray(_index.DEFAULT_PLUGINS)).toBe(true);
221
+ });
222
+ it('StyledEditor and EditableHtml refer to the same component', function () {
223
+ expect(_index["default"]).toBe(_index.EditableHtml);
224
+ });
225
+ });
226
+ describe('ALL_PLUGINS', function () {
227
+ it('contains expected plugins', function () {
228
+ expect(_index.ALL_PLUGINS).toContain('bold');
229
+ expect(_index.ALL_PLUGINS).toContain('italic');
230
+ expect(_index.ALL_PLUGINS).toContain('underline');
231
+ expect(_index.ALL_PLUGINS).toContain('math');
232
+ expect(_index.ALL_PLUGINS).toContain('table');
233
+ expect(_index.ALL_PLUGINS).toContain('responseArea');
234
+ });
235
+ });
236
+ describe('DEFAULT_PLUGINS', function () {
237
+ it('is a subset of ALL_PLUGINS', function () {
238
+ var allPluginsSet = new Set(_index.ALL_PLUGINS);
239
+ _index.DEFAULT_PLUGINS.forEach(function (plugin) {
240
+ expect(allPluginsSet.has(plugin)).toBe(true);
241
+ });
242
+ });
243
+ it('contains basic formatting plugins', function () {
244
+ expect(_index.DEFAULT_PLUGINS).toContain('bold');
245
+ expect(_index.DEFAULT_PLUGINS).toContain('italic');
246
+ expect(_index.DEFAULT_PLUGINS).toContain('underline');
247
+ });
248
+ });
249
+ });
250
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","names":["_index","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","jest","mock","EditorContent","React","createElement","useEditor","fn","getHTML","setEditable","commands","setContent","isActive","isFocused","useEditorState","configure","TextStyleKit","CharacterCount","TableRow","ExtendedTableCell","ExtendedTableHeader","EnsureEmptyRootIsDiv","ExtendedListItem","EnsureListItemContentIsDiv","ExplicitConstructedResponseNode","DragInTheBlankNode","InlineDropdownNode","ResponseAreaExtension","MathNode","ImageUploadNode","Media","CSSMark","default","_ref","children","buildExtensions","ALL_PLUGINS","DEFAULT_PLUGINS","describe","it","expect","StyledEditor","toBeDefined","EditableHtml","Array","isArray","toBe","toContain","allPluginsSet","Set","forEach","plugin"],"sources":["../../src/__tests__/index.test.jsx"],"sourcesContent":["import StyledEditor, { ALL_PLUGINS, DEFAULT_PLUGINS, EditableHtml } from '../index';\n\n// Mock TipTap and dependencies\njest.mock('@tiptap/react', () => ({\n EditorContent: () => <div data-testid=\"editor-content\" />,\n useEditor: jest.fn(() => ({\n getHTML: jest.fn(() => '<p>test content</p>'),\n setEditable: jest.fn(),\n commands: { setContent: jest.fn() },\n isActive: jest.fn(() => false),\n isFocused: false,\n })),\n useEditorState: jest.fn(() => ({ isFocused: false })),\n}));\n\njest.mock('@tiptap/starter-kit', () => ({\n __esModule: true,\n default: { configure: jest.fn(() => ({})) },\n}));\njest.mock('@tiptap/extension-text-style', () => ({ TextStyleKit: {} }));\njest.mock('@tiptap/extension-character-count', () => ({\n CharacterCount: { configure: jest.fn(() => ({})) },\n}));\njest.mock('@tiptap/extension-superscript', () => ({ __esModule: true, default: {} }));\njest.mock('@tiptap/extension-subscript', () => ({ __esModule: true, default: {} }));\njest.mock('@tiptap/extension-text-align', () => ({\n __esModule: true,\n default: { configure: jest.fn(() => ({})) },\n}));\njest.mock('@tiptap/extension-image', () => ({ __esModule: true, default: {} }));\njest.mock('@tiptap/extension-table', () => ({ __esModule: true, default: {} }));\njest.mock('@tiptap/extension-table-row', () => ({ TableRow: {} }));\njest.mock('../extensions/extended-table-cell', () => ({\n ExtendedTableCell: {},\n ExtendedTableHeader: {},\n}));\njest.mock('../extensions/extended-table', () => ({ __esModule: true, default: {} }));\njest.mock('../extensions/ensure-empty-root-div', () => ({ EnsureEmptyRootIsDiv: {} }));\njest.mock('../extensions/extended-list-item', () => ({ ExtendedListItem: {} }));\njest.mock('../extensions/ensure-list-item-content-is-div', () => ({ EnsureListItemContentIsDiv: {} }));\njest.mock('../extensions/responseArea', () => ({\n ExplicitConstructedResponseNode: { configure: jest.fn(() => ({})) },\n DragInTheBlankNode: { configure: jest.fn(() => ({})) },\n InlineDropdownNode: { configure: jest.fn(() => ({})) },\n ResponseAreaExtension: { configure: jest.fn(() => ({})) },\n}));\njest.mock('../extensions/math', () => ({ MathNode: { configure: jest.fn(() => ({})) } }));\njest.mock('../extensions/image', () => ({ ImageUploadNode: { configure: jest.fn(() => ({})) } }));\njest.mock('../extensions/media', () => ({ Media: { configure: jest.fn(() => ({})) } }));\njest.mock('../extensions/css', () => ({ CSSMark: { configure: jest.fn(() => ({})) } }));\njest.mock('../components/TiptapContainer', () => ({\n __esModule: true,\n default: ({ children }) => <div data-testid=\"editor-container\">{children}</div>,\n}));\njest.mock('../extensions', () => ({\n buildExtensions: jest.fn(() => []),\n ALL_PLUGINS: [\n 'bold',\n 'html',\n 'extraCSSRules',\n 'italic',\n 'underline',\n 'strikethrough',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'text-align',\n 'blockquote',\n 'h3',\n 'table',\n 'video',\n 'audio',\n 'responseArea',\n 'redo',\n 'undo',\n 'superscript',\n 'subscript',\n ],\n DEFAULT_PLUGINS: [\n 'bold',\n 'html',\n 'extraCSSRules',\n 'italic',\n 'underline',\n 'strikethrough',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'text-align',\n 'table',\n 'video',\n 'audio',\n 'redo',\n 'undo',\n 'superscript',\n 'subscript',\n ],\n}));\n\ndescribe('editable-html-tip-tap module', () => {\n describe('exports', () => {\n it('exports StyledEditor as default', () => {\n expect(StyledEditor).toBeDefined();\n });\n\n it('exports EditableHtml as named export', () => {\n expect(EditableHtml).toBeDefined();\n });\n\n it('exports ALL_PLUGINS as named export', () => {\n expect(ALL_PLUGINS).toBeDefined();\n expect(Array.isArray(ALL_PLUGINS)).toBe(true);\n });\n\n it('exports DEFAULT_PLUGINS as named export', () => {\n expect(DEFAULT_PLUGINS).toBeDefined();\n expect(Array.isArray(DEFAULT_PLUGINS)).toBe(true);\n });\n\n it('StyledEditor and EditableHtml refer to the same component', () => {\n expect(StyledEditor).toBe(EditableHtml);\n });\n });\n\n describe('ALL_PLUGINS', () => {\n it('contains expected plugins', () => {\n expect(ALL_PLUGINS).toContain('bold');\n expect(ALL_PLUGINS).toContain('italic');\n expect(ALL_PLUGINS).toContain('underline');\n expect(ALL_PLUGINS).toContain('math');\n expect(ALL_PLUGINS).toContain('table');\n expect(ALL_PLUGINS).toContain('responseArea');\n });\n });\n\n describe('DEFAULT_PLUGINS', () => {\n it('is a subset of ALL_PLUGINS', () => {\n const allPluginsSet = new Set(ALL_PLUGINS);\n DEFAULT_PLUGINS.forEach((plugin) => {\n expect(allPluginsSet.has(plugin)).toBe(true);\n });\n });\n\n it('contains basic formatting plugins', () => {\n expect(DEFAULT_PLUGINS).toContain('bold');\n expect(DEFAULT_PLUGINS).toContain('italic');\n expect(DEFAULT_PLUGINS).toContain('underline');\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ var _size = require("../utils/size");
4
+ describe('Size Utilities', function () {
5
+ describe('valueToSize', function () {
6
+ it('returns undefined for falsy values', function () {
7
+ expect((0, _size.valueToSize)(null)).toBeUndefined();
8
+ expect((0, _size.valueToSize)(undefined)).toBeUndefined();
9
+ expect((0, _size.valueToSize)('')).toBeUndefined();
10
+ expect((0, _size.valueToSize)(0)).toBeUndefined();
11
+ });
12
+ it('converts number to px string', function () {
13
+ expect((0, _size.valueToSize)(100)).toBe('100px');
14
+ expect((0, _size.valueToSize)(50)).toBe('50px');
15
+ expect((0, _size.valueToSize)(0)).toBeUndefined();
16
+ });
17
+ it('returns undefined for percentage strings', function () {
18
+ expect((0, _size.valueToSize)('100%')).toBeUndefined();
19
+ expect((0, _size.valueToSize)('50%')).toBeUndefined();
20
+ expect((0, _size.valueToSize)('0%')).toBeUndefined();
21
+ });
22
+ it('preserves valid CSS unit strings', function () {
23
+ expect((0, _size.valueToSize)('100px')).toBe('100px');
24
+ expect((0, _size.valueToSize)('10vh')).toBe('10vh');
25
+ expect((0, _size.valueToSize)('50vw')).toBe('50vw');
26
+ expect((0, _size.valueToSize)('9ch')).toBe('9ch');
27
+ expect((0, _size.valueToSize)('2em')).toBe('2em');
28
+ });
29
+ it('preserves calc() expressions', function () {
30
+ expect((0, _size.valueToSize)('calc(10em + 42px)')).toBe('calc(10em + 42px)');
31
+ expect((0, _size.valueToSize)('calc(100% - 20px)')).toBe('calc(100% - 20px)');
32
+ expect((0, _size.valueToSize)('calc(50vh + 10px)')).toBe('calc(50vh + 10px)');
33
+ });
34
+ it('converts numeric strings to px', function () {
35
+ expect((0, _size.valueToSize)('100')).toBe('100px');
36
+ expect((0, _size.valueToSize)('50')).toBe('50px');
37
+ expect((0, _size.valueToSize)('250')).toBe('250px');
38
+ });
39
+ it('handles invalid numeric strings', function () {
40
+ var result = (0, _size.valueToSize)('invalid');
41
+ expect(isNaN(result)).toBe(true);
42
+ });
43
+ it('handles edge cases with whitespace', function () {
44
+ var result = (0, _size.valueToSize)(' ');
45
+ expect(isNaN(result)).toBe(true);
46
+ });
47
+ it('handles negative numbers', function () {
48
+ expect((0, _size.valueToSize)(-100)).toBe('-100px');
49
+ expect((0, _size.valueToSize)('-50')).toBe('-50px');
50
+ });
51
+ it('handles decimal numbers', function () {
52
+ expect((0, _size.valueToSize)(100.5)).toBe('100.5px');
53
+ expect((0, _size.valueToSize)('100.5')).toBe('100px'); // parseInt truncates
54
+ });
55
+ });
56
+ });
57
+ //# sourceMappingURL=size-utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"size-utils.test.js","names":["_size","require","describe","it","expect","valueToSize","toBeUndefined","undefined","toBe","result","isNaN"],"sources":["../../src/__tests__/size-utils.test.js"],"sourcesContent":["import { valueToSize } from '../utils/size';\n\ndescribe('Size Utilities', () => {\n describe('valueToSize', () => {\n it('returns undefined for falsy values', () => {\n expect(valueToSize(null)).toBeUndefined();\n expect(valueToSize(undefined)).toBeUndefined();\n expect(valueToSize('')).toBeUndefined();\n expect(valueToSize(0)).toBeUndefined();\n });\n\n it('converts number to px string', () => {\n expect(valueToSize(100)).toBe('100px');\n expect(valueToSize(50)).toBe('50px');\n expect(valueToSize(0)).toBeUndefined();\n });\n\n it('returns undefined for percentage strings', () => {\n expect(valueToSize('100%')).toBeUndefined();\n expect(valueToSize('50%')).toBeUndefined();\n expect(valueToSize('0%')).toBeUndefined();\n });\n\n it('preserves valid CSS unit strings', () => {\n expect(valueToSize('100px')).toBe('100px');\n expect(valueToSize('10vh')).toBe('10vh');\n expect(valueToSize('50vw')).toBe('50vw');\n expect(valueToSize('9ch')).toBe('9ch');\n expect(valueToSize('2em')).toBe('2em');\n });\n\n it('preserves calc() expressions', () => {\n expect(valueToSize('calc(10em + 42px)')).toBe('calc(10em + 42px)');\n expect(valueToSize('calc(100% - 20px)')).toBe('calc(100% - 20px)');\n expect(valueToSize('calc(50vh + 10px)')).toBe('calc(50vh + 10px)');\n });\n\n it('converts numeric strings to px', () => {\n expect(valueToSize('100')).toBe('100px');\n expect(valueToSize('50')).toBe('50px');\n expect(valueToSize('250')).toBe('250px');\n });\n\n it('handles invalid numeric strings', () => {\n const result = valueToSize('invalid');\n expect(isNaN(result)).toBe(true);\n });\n\n it('handles edge cases with whitespace', () => {\n const result = valueToSize(' ');\n expect(isNaN(result)).toBe(true);\n });\n\n it('handles negative numbers', () => {\n expect(valueToSize(-100)).toBe('-100px');\n expect(valueToSize('-50')).toBe('-50px');\n });\n\n it('handles decimal numbers', () => {\n expect(valueToSize(100.5)).toBe('100.5px');\n expect(valueToSize('100.5')).toBe('100px'); // parseInt truncates\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _theme = require("../theme");
4
+ describe('Theme', function () {
5
+ describe('primary color', function () {
6
+ it('is defined', function () {
7
+ expect(_theme.primary).toBeDefined();
8
+ });
9
+ it('has the correct hex value', function () {
10
+ expect(_theme.primary).toBe('#304ffe');
11
+ });
12
+ it('is a valid hex color', function () {
13
+ expect(_theme.primary).toMatch(/^#[0-9A-Fa-f]{6}$/);
14
+ });
15
+ });
16
+ });
17
+ //# sourceMappingURL=theme.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.test.js","names":["_theme","require","describe","it","expect","primary","toBeDefined","toBe","toMatch"],"sources":["../../src/__tests__/theme.test.js"],"sourcesContent":["import { primary } from '../theme';\n\ndescribe('Theme', () => {\n describe('primary color', () => {\n it('is defined', () => {\n expect(primary).toBeDefined();\n });\n\n it('has the correct hex value', () => {\n expect(primary).toBe('#304ffe');\n });\n\n it('is a valid hex color', () => {\n expect(primary).toMatch(/^#[0-9A-Fa-f]{6}$/);\n });\n });\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEAC,QAAQ,CAAC,OAAO,EAAE,YAAM;EACtBA,QAAQ,CAAC,eAAe,EAAE,YAAM;IAC9BC,EAAE,CAAC,YAAY,EAAE,YAAM;MACrBC,MAAM,CAACC,cAAO,CAAC,CAACC,WAAW,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEFH,EAAE,CAAC,2BAA2B,EAAE,YAAM;MACpCC,MAAM,CAACC,cAAO,CAAC,CAACE,IAAI,CAAC,SAAS,CAAC;IACjC,CAAC,CAAC;IAEFJ,EAAE,CAAC,sBAAsB,EAAE,YAAM;MAC/BC,MAAM,CAACC,cAAO,CAAC,CAACG,OAAO,CAAC,mBAAmB,CAAC;IAC9C,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _react2 = require("@testing-library/react");
7
+ var _AltDialog = require("../image/AltDialog");
8
+ jest.mock('@mui/material/Dialog', function () {
9
+ return {
10
+ __esModule: true,
11
+ "default": function _default(_ref) {
12
+ var children = _ref.children,
13
+ open = _ref.open,
14
+ id = _ref.id;
15
+ return open && /*#__PURE__*/_react["default"].createElement("div", {
16
+ id: id
17
+ }, children);
18
+ }
19
+ };
20
+ });
21
+ jest.mock('@mui/material/DialogContent', function () {
22
+ return {
23
+ __esModule: true,
24
+ "default": function _default(_ref2) {
25
+ var children = _ref2.children;
26
+ return /*#__PURE__*/_react["default"].createElement("div", null, children);
27
+ }
28
+ };
29
+ });
30
+ jest.mock('@mui/material/DialogActions', function () {
31
+ return {
32
+ __esModule: true,
33
+ "default": function _default(_ref3) {
34
+ var children = _ref3.children;
35
+ return /*#__PURE__*/_react["default"].createElement("div", null, children);
36
+ }
37
+ };
38
+ });
39
+ jest.mock('@mui/material/Button', function () {
40
+ return {
41
+ __esModule: true,
42
+ "default": function _default(_ref4) {
43
+ var children = _ref4.children,
44
+ onClick = _ref4.onClick;
45
+ return /*#__PURE__*/_react["default"].createElement("button", {
46
+ onClick: onClick
47
+ }, children);
48
+ }
49
+ };
50
+ });
51
+ jest.mock('@mui/material/TextField', function () {
52
+ return {
53
+ __esModule: true,
54
+ "default": function _default(_ref5) {
55
+ var value = _ref5.value,
56
+ onChange = _ref5.onChange,
57
+ placeholder = _ref5.placeholder,
58
+ helperText = _ref5.helperText,
59
+ FormHelperTextProps = _ref5.FormHelperTextProps,
60
+ multiline = _ref5.multiline;
61
+ return /*#__PURE__*/_react["default"].createElement("div", {
62
+ className: "MuiTextField-root"
63
+ }, /*#__PURE__*/_react["default"].createElement("textarea", {
64
+ value: value || '',
65
+ onChange: onChange,
66
+ placeholder: placeholder,
67
+ "data-multiline": multiline
68
+ }), helperText && /*#__PURE__*/_react["default"].createElement("div", {
69
+ style: FormHelperTextProps === null || FormHelperTextProps === void 0 ? void 0 : FormHelperTextProps.style
70
+ }, helperText));
71
+ }
72
+ };
73
+ });
74
+ jest.mock('@mui/icons-material/ArrowBackIos', function () {
75
+ return {
76
+ __esModule: true,
77
+ "default": function _default() {
78
+ return /*#__PURE__*/_react["default"].createElement("svg", {
79
+ "data-testid": "arrow-back-icon"
80
+ });
81
+ }
82
+ };
83
+ });
84
+ describe('AltDialog', function () {
85
+ var defaultProps = {
86
+ onDone: jest.fn(),
87
+ alt: 'Initial alt text'
88
+ };
89
+ beforeEach(function () {
90
+ jest.clearAllMocks();
91
+ document.body.innerHTML = '';
92
+ });
93
+ it('renders without crashing', function () {
94
+ var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
95
+ container = _render.container;
96
+ expect(container).toBeInTheDocument();
97
+ });
98
+ it('renders with initial alt text', function () {
99
+ var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
100
+ container = _render2.container;
101
+ var textarea = container.querySelector('textarea');
102
+ expect(textarea.value).toBe('Initial alt text');
103
+ });
104
+ it('renders placeholder text', function () {
105
+ var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, (0, _extends2["default"])({}, defaultProps, {
106
+ alt: ""
107
+ }))),
108
+ getByPlaceholderText = _render3.getByPlaceholderText;
109
+ expect(getByPlaceholderText('Enter an Alt Text description of this image')).toBeInTheDocument();
110
+ });
111
+ it('renders helper text', function () {
112
+ var _render4 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
113
+ getByText = _render4.getByText;
114
+ expect(getByText('Users with visual limitations rely on Alt Text, since screen readers cannot otherwise describe the contents of an image.')).toBeInTheDocument();
115
+ });
116
+ it('renders Done button', function () {
117
+ var _render5 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
118
+ getByText = _render5.getByText;
119
+ expect(getByText('Done')).toBeInTheDocument();
120
+ });
121
+ it('renders ArrowBackIos icon', function () {
122
+ var _render6 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
123
+ getByTestId = _render6.getByTestId;
124
+ expect(getByTestId('arrow-back-icon')).toBeInTheDocument();
125
+ });
126
+ it('updates value on text field change', function () {
127
+ var _render7 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
128
+ container = _render7.container;
129
+ var textarea = container.querySelector('textarea');
130
+ _react2.fireEvent.change(textarea, {
131
+ target: {
132
+ value: 'New alt text'
133
+ }
134
+ });
135
+ expect(textarea.value).toBe('New alt text');
136
+ });
137
+ it('calls onDone with value when Done button is clicked', function () {
138
+ var onDone = jest.fn();
139
+ // Mock document.querySelectorAll to avoid DOM manipulation issues
140
+ var mockQuerySelectorAll = jest.spyOn(document, 'querySelectorAll').mockReturnValue([]);
141
+ var _render8 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, (0, _extends2["default"])({}, defaultProps, {
142
+ onDone: onDone
143
+ }))),
144
+ getByText = _render8.getByText,
145
+ container = _render8.container;
146
+ var textarea = container.querySelector('textarea');
147
+ _react2.fireEvent.change(textarea, {
148
+ target: {
149
+ value: 'Updated alt text'
150
+ }
151
+ });
152
+ _react2.fireEvent.click(getByText('Done'));
153
+ expect(onDone).toHaveBeenCalledWith('Updated alt text');
154
+ mockQuerySelectorAll.mockRestore();
155
+ });
156
+ it('closes dialog when Done button is clicked', function () {
157
+ // Mock document.querySelectorAll to avoid DOM manipulation issues
158
+ var mockQuerySelectorAll = jest.spyOn(document, 'querySelectorAll').mockReturnValue([]);
159
+ var _render9 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
160
+ getByText = _render9.getByText,
161
+ container = _render9.container;
162
+ var dialog = container.querySelector('#text-dialog');
163
+ expect(dialog).toBeInTheDocument();
164
+ _react2.fireEvent.click(getByText('Done'));
165
+ mockQuerySelectorAll.mockRestore();
166
+ });
167
+ it('dialog is open', function () {
168
+ var _render0 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
169
+ container = _render0.container;
170
+ var dialog = container.querySelector('[id="text-dialog"]');
171
+ expect(dialog).toBeInTheDocument();
172
+ });
173
+ it('has correct dialog props', function () {
174
+ var _render1 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
175
+ container = _render1.container;
176
+ var dialog = container.querySelector('[id="text-dialog"]');
177
+ expect(dialog).toBeInTheDocument();
178
+ });
179
+ it('text field is multiline', function () {
180
+ var _render10 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, defaultProps)),
181
+ container = _render10.container;
182
+ var textarea = container.querySelector('textarea');
183
+ expect(textarea.getAttribute('data-multiline')).toBe('true');
184
+ });
185
+ it('renders without alt text', function () {
186
+ var _render11 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, (0, _extends2["default"])({}, defaultProps, {
187
+ alt: undefined
188
+ }))),
189
+ getByPlaceholderText = _render11.getByPlaceholderText;
190
+ expect(getByPlaceholderText('Enter an Alt Text description of this image')).toBeInTheDocument();
191
+ });
192
+ it('handles empty alt text', function () {
193
+ var _render12 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_AltDialog.AltDialog, (0, _extends2["default"])({}, defaultProps, {
194
+ alt: ""
195
+ }))),
196
+ container = _render12.container;
197
+ var textarea = container.querySelector('textarea');
198
+ expect(textarea.value).toBe('');
199
+ });
200
+ });
201
+ //# sourceMappingURL=AltDialog.test.js.map