@pie-lib/editable-html-tip-tap 2.1.10 → 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 (114) hide show
  1. package/CHANGELOG.md +0 -75
  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/EditableHtml.js +4 -2
  17. package/lib/components/EditableHtml.js.map +1 -1
  18. package/lib/components/__tests__/AltDialog.test.js +201 -0
  19. package/lib/components/__tests__/AltDialog.test.js.map +1 -0
  20. package/lib/components/__tests__/CharacterPicker.test.js +455 -0
  21. package/lib/components/__tests__/CharacterPicker.test.js.map +1 -0
  22. package/lib/components/__tests__/CssIcon.test.js +58 -0
  23. package/lib/components/__tests__/CssIcon.test.js.map +1 -0
  24. package/lib/components/__tests__/DragInTheBlank.test.js +295 -0
  25. package/lib/components/__tests__/DragInTheBlank.test.js.map +1 -0
  26. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +345 -0
  27. package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +1 -0
  28. package/lib/components/__tests__/ImageToolbar.test.js +185 -0
  29. package/lib/components/__tests__/ImageToolbar.test.js.map +1 -0
  30. package/lib/components/__tests__/InlineDropdown.test.js +839 -0
  31. package/lib/components/__tests__/InlineDropdown.test.js.map +1 -0
  32. package/lib/components/__tests__/InsertImageHandler.test.js +171 -0
  33. package/lib/components/__tests__/InsertImageHandler.test.js.map +1 -0
  34. package/lib/components/__tests__/MediaDialog.test.js +433 -0
  35. package/lib/components/__tests__/MediaDialog.test.js.map +1 -0
  36. package/lib/components/__tests__/MediaToolbar.test.js +126 -0
  37. package/lib/components/__tests__/MediaToolbar.test.js.map +1 -0
  38. package/lib/components/__tests__/MediaWrapper.test.js +96 -0
  39. package/lib/components/__tests__/MediaWrapper.test.js.map +1 -0
  40. package/lib/components/__tests__/MenuBar.test.js +502 -0
  41. package/lib/components/__tests__/MenuBar.test.js.map +1 -0
  42. package/lib/components/__tests__/RespArea.test.js +171 -0
  43. package/lib/components/__tests__/RespArea.test.js.map +1 -0
  44. package/lib/components/__tests__/TableIcons.test.js +153 -0
  45. package/lib/components/__tests__/TableIcons.test.js.map +1 -0
  46. package/lib/components/__tests__/TextAlign.test.js +209 -0
  47. package/lib/components/__tests__/TextAlign.test.js.map +1 -0
  48. package/lib/components/__tests__/TiptapContainer.test.js +196 -0
  49. package/lib/components/__tests__/TiptapContainer.test.js.map +1 -0
  50. package/lib/components/__tests__/characterUtils.test.js +178 -0
  51. package/lib/components/__tests__/characterUtils.test.js.map +1 -0
  52. package/lib/components/__tests__/choice.test.js +213 -0
  53. package/lib/components/__tests__/choice.test.js.map +1 -0
  54. package/lib/components/__tests__/custom-popper.test.js +108 -0
  55. package/lib/components/__tests__/custom-popper.test.js.map +1 -0
  56. package/lib/components/__tests__/done-button.test.js +72 -0
  57. package/lib/components/__tests__/done-button.test.js.map +1 -0
  58. package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
  59. package/lib/components/__tests__/toolbar-buttons.test.js.map +1 -0
  60. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +90 -0
  61. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +1 -0
  62. package/lib/components/respArea/DragInTheBlank/choice.js +3 -0
  63. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -1
  64. package/lib/components/respArea/MathTemplated.js +2 -2
  65. package/lib/components/respArea/MathTemplated.js.map +1 -1
  66. package/lib/components/respArea/__tests__/MathTemplated.test.js +217 -0
  67. package/lib/components/respArea/__tests__/MathTemplated.test.js.map +1 -0
  68. package/lib/extensions/__tests__/css.test.js +214 -0
  69. package/lib/extensions/__tests__/css.test.js.map +1 -0
  70. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +175 -0
  71. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +1 -0
  72. package/lib/extensions/__tests__/divNode.test.js +108 -0
  73. package/lib/extensions/__tests__/divNode.test.js.map +1 -0
  74. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +50 -0
  75. package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +1 -0
  76. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +60 -0
  77. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +1 -0
  78. package/lib/extensions/__tests__/extended-list-item.test.js +13 -0
  79. package/lib/extensions/__tests__/extended-list-item.test.js.map +1 -0
  80. package/lib/extensions/__tests__/extended-table-cell.test.js +15 -0
  81. package/lib/extensions/__tests__/extended-table-cell.test.js.map +1 -0
  82. package/lib/extensions/__tests__/extended-table.test.js +200 -0
  83. package/lib/extensions/__tests__/extended-table.test.js.map +1 -0
  84. package/lib/extensions/__tests__/image-component.test.js +432 -0
  85. package/lib/extensions/__tests__/image-component.test.js.map +1 -0
  86. package/lib/extensions/__tests__/image.test.js +313 -0
  87. package/lib/extensions/__tests__/image.test.js.map +1 -0
  88. package/lib/extensions/__tests__/math.test.js +1399 -0
  89. package/lib/extensions/__tests__/math.test.js.map +1 -0
  90. package/lib/extensions/__tests__/media-node-view.test.js +307 -0
  91. package/lib/extensions/__tests__/media-node-view.test.js.map +1 -0
  92. package/lib/extensions/__tests__/media.test.js +292 -0
  93. package/lib/extensions/__tests__/media.test.js.map +1 -0
  94. package/lib/extensions/__tests__/responseArea.test.js +736 -0
  95. package/lib/extensions/__tests__/responseArea.test.js.map +1 -0
  96. package/lib/extensions/image-component.js +9 -6
  97. package/lib/extensions/image-component.js.map +1 -1
  98. package/lib/extensions/responseArea.js +7 -1
  99. package/lib/extensions/responseArea.js.map +1 -1
  100. package/lib/utils/__tests__/helper.test.js +107 -0
  101. package/lib/utils/__tests__/helper.test.js.map +1 -0
  102. package/lib/utils/__tests__/toolbar.test.js +38 -0
  103. package/lib/utils/__tests__/toolbar.test.js.map +1 -0
  104. package/package.json +7 -7
  105. package/src/components/EditableHtml.jsx +5 -3
  106. package/src/components/respArea/DragInTheBlank/__tests__/choice.test.jsx +72 -0
  107. package/src/components/respArea/DragInTheBlank/choice.jsx +3 -0
  108. package/src/components/respArea/MathTemplated.jsx +1 -1
  109. package/src/components/respArea/__tests__/MathTemplated.test.jsx +1 -1
  110. package/src/extensions/__tests__/image-component.test.jsx +1 -0
  111. package/src/extensions/__tests__/responseArea.test.js +57 -3
  112. package/src/extensions/image-component.jsx +8 -6
  113. package/src/extensions/responseArea.js +7 -1
  114. 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":[]}
@@ -356,10 +356,12 @@ var StyledEditorContent = (0, _styles.styled)(_react2.EditorContent, {
356
356
  margin: '0'
357
357
  },
358
358
  // Out of flow so the caret stays at the start of the block; in-flow ::before pushes the caret after the hint text.
359
- '& p.is-editor-empty, & div.is-editor-empty': {
359
+ // :only-child ensures the placeholder is hidden whenever the editor has other content (images, upload nodes, etc.)
360
+ // and covers the type+backspace edge case where Tiptap only adds is-empty (not is-editor-empty).
361
+ '& p[data-placeholder].is-empty:only-child, & div[data-placeholder].is-empty:only-child': {
360
362
  position: 'relative'
361
363
  },
362
- '& p.is-editor-empty::before, & div.is-editor-empty::before': {
364
+ '& p[data-placeholder].is-empty:only-child::before, & div[data-placeholder].is-empty:only-child::before': {
363
365
  content: 'attr(data-placeholder)',
364
366
  position: 'absolute',
365
367
  left: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"EditableHtml.js","names":["_react","_interopRequireWildcard","require","_debounce","_interopRequireDefault","_react2","_styles","_starterKit","_extensionTextStyle","_extensionCharacterCount","_extensionSuperscript","_extensionSubscript","_extensionTextAlign","_extensionImage","_extensionPlaceholder","_helper","_extendedTable","_extendedTableCell","_divNode","_ensureEmptyRootDiv","_ensureListItemContentIsDiv","_extensionTableRow","_responseArea","_math","_image","_media","_css","_extendedListItem","_headingParagraph","_TiptapContainer","_size","_extensions","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","DEFAULT_ACTIVE_PLUGINS","cssVariables","EditableHtml","exports","props","_props$pluginProps","_ref","pluginProps","showParagraphs","separateParagraphs","_useState","useState","_useState2","_slicedToArray2","pendingImages","setPendingImages","_useState3","_useState4","scheduled","setScheduled","toolbarOpts","removePendingImage","useCallback","imagePos","prev","next","img","pos","toolbarOptsToUse","commitEditorContent","editor","html","getHTML","markup","_props$onChange","onChange","_props$onDone","onDone","responseAreaPropsToUse","useMemo","responseAreaProps","onInlineDropdownToolbarClose","activePluginsToUse","_ref3","_ref2","customPlugins","otherPluginProps","_objectWithoutProperties2","filteredActivePlugins","activePlugins","pluginName","nameToUse","PLUGINS_MAP","pluginInfo","disabled","buildExtensions","math","textAlign","extraCSSRules","image","imageSupport","toolbar","table","responseArea","type","languageCharacters","languageCharactersProps","keyPadCharacterRef","setKeypadInteraction","media","extensions","TextAlign","configure","types","alignments","TextStyleKit","CharacterCount","limit","charactersLimit","StarterKit","trailingNode","node","notAfter","ExtendedListItem","DivNode","HeadingParagraph","EnsureEmptyRootIsDiv","EnsureListItemContentIsDiv","Placeholder","placeholder","showOnlyWhenEditable","showOnlyCurrent","includeChildren","ExtendedTable","TableRow","ExtendedTableHeader","ExtendedTableCell","ResponseAreaExtension","ExplicitConstructedResponseNode","DragInTheBlankNode","InlineDropdownNode","MathTemplatedNode","MathNode","SubScript","SuperScript","Image","ImageUploadNode","imageHandling","disableImageAlignmentButtons","_props$onDone2","onDelete","src","attrs","insertImageRequested","imageInfo","getHandler","_imageInfo","addedImage","onFinish","result","_cb","cb","callback","handler","focusHandler","debounce","detach","window","removeEventListener","_insertingImage","addEventListener","add","concat","_toConsumableArray2","maxImageWidth","maxImageHeight","Media","uploadSoundSupport","CSSMark","useEditor","immediatelyRender","editorProps","handleKeyDown","view","event","onKeyDown","editable","content","normalizeInitialMarkup","onUpdate","_ref4","transaction","isDone","_props$onChange2","onBlur","_ref5","otherToolbarOpened","_toolbarOpened","isActive","schema","useEffect","editorRef","setEditable","nextMarkup","commands","setContent","emitUpdate","entries","_ref6","_ref7","key","value","document","documentElement","style","setProperty","editorState","useEditorState","selector","ctx","_ctx$editor","isFocused","sizeStyle","minWidth","width","maxWidth","minHeight","height","maxHeight","valueToSize","createElement","_extends2","StyledEditorContent","showParagraph","separateParagraph","styled","EditorContent","shouldForwardProp","prop","includes","_ref8","display","outline","flex","padding","margin","left","top","color","pointerEvents","whiteSpace","fontSize","marginBottom","_default"],"sources":["../../src/components/EditableHtml.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport debounce from 'lodash-es/debounce';\nimport { EditorContent, useEditor, useEditorState } from '@tiptap/react';\nimport { styled } from '@mui/material/styles';\nimport StarterKit from '@tiptap/starter-kit';\nimport { TextStyleKit } from '@tiptap/extension-text-style';\nimport { CharacterCount } from '@tiptap/extension-character-count';\nimport SuperScript from '@tiptap/extension-superscript';\nimport SubScript from '@tiptap/extension-subscript';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Image from '@tiptap/extension-image';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { normalizeInitialMarkup } from '../utils/helper';\n\nimport ExtendedTable from '../extensions/extended-table';\nimport { ExtendedTableCell, ExtendedTableHeader } from '../extensions/extended-table-cell';\nimport { DivNode } from '../extensions/div-node';\nimport { EnsureEmptyRootIsDiv } from '../extensions/ensure-empty-root-div';\nimport { EnsureListItemContentIsDiv } from '../extensions/ensure-list-item-content-is-div';\nimport { TableRow } from '@tiptap/extension-table-row';\nimport {\n DragInTheBlankNode,\n ExplicitConstructedResponseNode,\n InlineDropdownNode,\n MathTemplatedNode,\n ResponseAreaExtension,\n} from '../extensions/responseArea';\nimport { MathNode } from '../extensions/math';\nimport { ImageUploadNode } from '../extensions/image';\nimport { Media } from '../extensions/media';\nimport { CSSMark } from '../extensions/css';\nimport { ExtendedListItem } from '../extensions/extended-list-item';\nimport { HeadingParagraph } from '../extensions/heading-paragraph';\n\nimport EditorContainer from './TiptapContainer';\nimport { valueToSize } from '../utils/size';\nimport { buildExtensions, PLUGINS_MAP } from '../extensions';\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur',\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {},\n};\n\nconst DEFAULT_ACTIVE_PLUGINS = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'code',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'text-align',\n 'table',\n 'video',\n 'audio',\n 'responseArea',\n 'superscript',\n 'subscript',\n 'css',\n 'h3',\n 'undo',\n 'redo',\n];\n\nconst cssVariables = {\n '--white': '#fff',\n '--black': '#2e2b29',\n '--black-contrast': '#110f0e',\n '--gray-1': 'rgba(61, 37, 20, .05)',\n '--gray-2': 'rgba(61, 37, 20, .08)',\n '--gray-3': 'rgba(61, 37, 20, .12)',\n '--gray-4': 'rgba(53, 38, 28, .3)',\n '--gray-5': 'rgba(28, 25, 23, .6)',\n '--green': '#22c55e',\n '--purple': '#6a00f5',\n '--purple-contrast': '#5800cc',\n '--purple-light': 'rgba(88, 5, 255, .05)',\n '--yellow-contrast': '#facc15',\n '--yellow': 'rgba(250, 204, 21, .4)',\n '--yellow-light': '#fffae5',\n '--red': '#ff5c33',\n '--red-light': '#ffebe5',\n '--shadow': `0px 12px 33px 0px rgba(0, 0, 0, .06),\n 0px 3.618px 9.949px 0px rgba(0, 0, 0, .04)`,\n};\n\nexport const EditableHtml = (props) => {\n const { showParagraphs, separateParagraphs } = props.pluginProps || {};\n const [pendingImages, setPendingImages] = useState([]);\n const [scheduled, setScheduled] = useState(false);\n const { toolbarOpts } = props;\n\n const removePendingImage = useCallback(\n (imagePos) => {\n setPendingImages((prev) => {\n const next = prev.filter((img) => img.pos !== imagePos);\n if (next.length === 0) {\n setScheduled(false);\n }\n return next;\n });\n },\n [setPendingImages],\n );\n\n const toolbarOptsToUse = {\n ...defaultToolbarOpts,\n ...toolbarOpts,\n };\n\n const commitEditorContent = useCallback(\n (editor) => {\n const html = editor.getHTML();\n\n if (props.markup !== html) {\n props.onChange?.(html);\n }\n\n if (toolbarOptsToUse.doneOn === 'blur') {\n props.onDone?.(html);\n }\n },\n [props.markup, props.onChange, props.onDone, toolbarOptsToUse.doneOn],\n );\n\n const responseAreaPropsToUse = useMemo(\n () => ({\n ...defaultResponseAreaProps,\n ...props.responseAreaProps,\n onInlineDropdownToolbarClose: commitEditorContent,\n }),\n [props.responseAreaProps, commitEditorContent],\n );\n\n const activePluginsToUse = useMemo(() => {\n let { customPlugins, ...otherPluginProps } = props.pluginProps || {};\n\n customPlugins = customPlugins || [];\n\n const filteredActivePlugins = (props.activePlugins || DEFAULT_ACTIVE_PLUGINS)?.filter((pluginName) => {\n const nameToUse = PLUGINS_MAP[pluginName] || pluginName;\n const pluginInfo = otherPluginProps[nameToUse] || {};\n\n return !pluginInfo || !pluginInfo.disabled;\n });\n\n return buildExtensions(filteredActivePlugins, customPlugins, {\n math: {},\n textAlign: props.textAlign,\n html: {},\n extraCSSRules: props.extraCSSRules || {},\n image: {\n ...props.imageSupport,\n },\n toolbar: {},\n table: {},\n responseArea: {\n type: responseAreaPropsToUse.type,\n },\n languageCharacters: props.languageCharactersProps,\n keyPadCharacterRef: {},\n setKeypadInteraction: {},\n media: {},\n });\n }, [props, responseAreaPropsToUse.type]);\n\n const extensions = [\n TextAlign.configure({\n types: ['heading', 'paragraph', 'div', 'headingParagraph', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'td', 'th'],\n alignments: ['left', 'right', 'center', 'justify'],\n }),\n TextStyleKit,\n CharacterCount.configure({\n limit: props.charactersLimit || 1000000,\n }),\n StarterKit.configure({\n trailingNode: {\n node: 'paragraph',\n notAfter: ['paragraph', 'div'],\n },\n }),\n ExtendedListItem,\n DivNode,\n HeadingParagraph,\n EnsureEmptyRootIsDiv,\n EnsureListItemContentIsDiv,\n Placeholder.configure({\n placeholder: props.placeholder,\n // show placeholder even when editor is focused\n showOnlyWhenEditable: true,\n showOnlyCurrent: false, // show on all empty nodes, not only the current one\n includeChildren: true,\n }),\n ExtendedTable,\n TableRow,\n ExtendedTableHeader,\n ExtendedTableCell,\n ResponseAreaExtension.configure(responseAreaPropsToUse),\n ExplicitConstructedResponseNode.configure(responseAreaPropsToUse),\n DragInTheBlankNode.configure(responseAreaPropsToUse),\n InlineDropdownNode.configure(responseAreaPropsToUse),\n MathTemplatedNode.configure(responseAreaPropsToUse),\n MathNode.configure({\n toolbarOpts: toolbarOptsToUse,\n math: props.pluginProps?.math || {},\n }),\n SubScript,\n SuperScript,\n Image,\n ImageUploadNode.configure({\n toolbarOpts: toolbarOptsToUse,\n imageHandling: {\n disableImageAlignmentButtons: props.disableImageAlignmentButtons,\n onDone: (editor) => props.onDone?.(editor.getHTML()),\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((node) => {\n const { src } = node.attrs;\n\n props.imageSupport.delete(src, (e) => {\n removePendingImage(node.pos);\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n ((editor, imageInfo, getHandler) => {\n const [addedImage, pos] = imageInfo;\n\n const onFinish = (result) => {\n let cb;\n\n if (scheduled && result) {\n // finish editing only on success\n cb = props.onChange;\n }\n\n removePendingImage(pos);\n cb?.(editor.getHTML());\n };\n\n const callback = () => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(onFinish);\n\n // If the user closes the file picker without choosing a file, the window regains\n // focus while _insertingImage is still true — drop the stale pending entry.\n const focusHandler = debounce(() => {\n const detach = () => window.removeEventListener('focus', focusHandler);\n\n if (!editor._insertingImage) {\n detach();\n return;\n }\n\n removePendingImage(pos);\n editor._insertingImage = false;\n detach();\n }, 500);\n\n window.addEventListener('focus', focusHandler);\n\n props.imageSupport.add(handler);\n };\n\n editor._insertingImage = true;\n setPendingImages((prev) => [...prev, addedImage]);\n callback();\n }),\n maxImageWidth: props.maxImageWidth,\n maxImageHeight: props.maxImageHeight,\n },\n limit: 3,\n }),\n Media.configure({\n uploadSoundSupport: props.uploadSoundSupport,\n }),\n CSSMark.configure({\n extraCSSRules: props.extraCSSRules,\n }),\n ];\n\n const editor = useEditor(\n {\n extensions,\n immediatelyRender: false,\n editorProps: {\n handleKeyDown(view, event) {\n if (props.onKeyDown) {\n return props.onKeyDown(event);\n }\n\n // Return false to let default behavior continue\n return false;\n },\n },\n editable: !props.disabled,\n content: normalizeInitialMarkup(props.markup),\n onUpdate: ({ editor, transaction }) => {\n if (transaction.isDone) {\n props.onChange?.(editor.getHTML());\n }\n },\n onBlur: ({ editor }) => {\n const otherToolbarOpened =\n editor._insertingImage ||\n editor._toolbarOpened ||\n editor.isActive('inline_dropdown') ||\n editor.isActive('explicit_constructed_response');\n\n if (otherToolbarOpened || !editor.schema) {\n return;\n }\n\n commitEditorContent(editor);\n },\n },\n [props.charactersLimit],\n );\n\n useEffect(() => {\n if (props.editorRef) {\n props.editorRef(editor);\n }\n }, [props.editorRef, editor]);\n\n useEffect(() => {\n editor?.setEditable(!props.disabled);\n }, [props.disabled, editor]);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n const nextMarkup = normalizeInitialMarkup(props.markup);\n\n if (nextMarkup !== editor.getHTML()) {\n editor.commands.setContent(nextMarkup, { emitUpdate: false });\n }\n }, [props.markup, editor]);\n\n useEffect(() => {\n Object.entries(cssVariables).forEach(([key, value]) => {\n document.documentElement.style.setProperty(key, value);\n });\n }, []);\n\n const editorState = useEditorState({\n editor,\n selector: (ctx) => ({\n isFocused: ctx.editor?.isFocused,\n }),\n });\n\n const sizeStyle = useMemo(() => {\n const { minWidth, width, maxWidth, minHeight, height, maxHeight } = props;\n\n return {\n width: valueToSize(width),\n minWidth: valueToSize(minWidth),\n maxWidth: valueToSize(maxWidth),\n height: valueToSize(height),\n minHeight: valueToSize(minHeight),\n maxHeight: valueToSize(maxHeight),\n };\n }, [props]);\n\n return (\n <EditorContainer\n {...{\n ...props,\n activePlugins: activePluginsToUse,\n toolbarOpts: toolbarOptsToUse,\n }}\n editorState={editorState}\n editor={editor}\n >\n {editor && (\n <StyledEditorContent\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight,\n }}\n showParagraph={showParagraphs && !showParagraphs.disabled}\n separateParagraph={separateParagraphs && !separateParagraphs.disabled}\n editor={editor}\n />\n )}\n </EditorContainer>\n );\n};\n\nconst StyledEditorContent = styled(EditorContent, {\n shouldForwardProp: (prop) => !['showParagraph', 'separateParagraph'].includes(prop),\n})(({ showParagraph, separateParagraph }) => ({\n display: 'flex',\n outline: 'none !important',\n '& .ProseMirror': {\n flex: 1,\n padding: '5px',\n maxHeight: '500px',\n outline: 'none !important',\n position: 'initial',\n\n // reset default margins for all block paragraphs/divs in the editor\n '& > p, & > div': {\n margin: '0',\n },\n\n // Out of flow so the caret stays at the start of the block; in-flow ::before pushes the caret after the hint text.\n '& p.is-editor-empty, & div.is-editor-empty': {\n position: 'relative',\n },\n '& p.is-editor-empty::before, & div.is-editor-empty::before': {\n content: 'attr(data-placeholder)',\n position: 'absolute',\n left: 0,\n top: 0,\n color: '#9CA3AF',\n pointerEvents: 'none',\n whiteSpace: 'pre-wrap',\n },\n\n ...(showParagraph && {\n '& > p:has(+ p)::after, & > div:has(+ div)::after': {\n display: 'block',\n content: '\"¶\"',\n fontSize: '1em',\n color: '#146EB3',\n },\n }),\n ...(separateParagraph && {\n '& > p:has(+ p)': {\n marginBottom: '1em',\n },\n }),\n },\n}));\n\nexport default EditableHtml;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"EditableHtml.js","names":["_react","_interopRequireWildcard","require","_debounce","_interopRequireDefault","_react2","_styles","_starterKit","_extensionTextStyle","_extensionCharacterCount","_extensionSuperscript","_extensionSubscript","_extensionTextAlign","_extensionImage","_extensionPlaceholder","_helper","_extendedTable","_extendedTableCell","_divNode","_ensureEmptyRootDiv","_ensureListItemContentIsDiv","_extensionTableRow","_responseArea","_math","_image","_media","_css","_extendedListItem","_headingParagraph","_TiptapContainer","_size","_extensions","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defaultToolbarOpts","position","alignment","alwaysVisible","showDone","doneOn","defaultResponseAreaProps","options","respAreaToolbar","onHandleAreaChange","DEFAULT_ACTIVE_PLUGINS","cssVariables","EditableHtml","exports","props","_props$pluginProps","_ref","pluginProps","showParagraphs","separateParagraphs","_useState","useState","_useState2","_slicedToArray2","pendingImages","setPendingImages","_useState3","_useState4","scheduled","setScheduled","toolbarOpts","removePendingImage","useCallback","imagePos","prev","next","img","pos","toolbarOptsToUse","commitEditorContent","editor","html","getHTML","markup","_props$onChange","onChange","_props$onDone","onDone","responseAreaPropsToUse","useMemo","responseAreaProps","onInlineDropdownToolbarClose","activePluginsToUse","_ref3","_ref2","customPlugins","otherPluginProps","_objectWithoutProperties2","filteredActivePlugins","activePlugins","pluginName","nameToUse","PLUGINS_MAP","pluginInfo","disabled","buildExtensions","math","textAlign","extraCSSRules","image","imageSupport","toolbar","table","responseArea","type","languageCharacters","languageCharactersProps","keyPadCharacterRef","setKeypadInteraction","media","extensions","TextAlign","configure","types","alignments","TextStyleKit","CharacterCount","limit","charactersLimit","StarterKit","trailingNode","node","notAfter","ExtendedListItem","DivNode","HeadingParagraph","EnsureEmptyRootIsDiv","EnsureListItemContentIsDiv","Placeholder","placeholder","showOnlyWhenEditable","showOnlyCurrent","includeChildren","ExtendedTable","TableRow","ExtendedTableHeader","ExtendedTableCell","ResponseAreaExtension","ExplicitConstructedResponseNode","DragInTheBlankNode","InlineDropdownNode","MathTemplatedNode","MathNode","SubScript","SuperScript","Image","ImageUploadNode","imageHandling","disableImageAlignmentButtons","_props$onDone2","onDelete","src","attrs","insertImageRequested","imageInfo","getHandler","_imageInfo","addedImage","onFinish","result","_cb","cb","callback","handler","focusHandler","debounce","detach","window","removeEventListener","_insertingImage","addEventListener","add","concat","_toConsumableArray2","maxImageWidth","maxImageHeight","Media","uploadSoundSupport","CSSMark","useEditor","immediatelyRender","editorProps","handleKeyDown","view","event","onKeyDown","editable","content","normalizeInitialMarkup","onUpdate","_ref4","transaction","isDone","_props$onChange2","onBlur","_ref5","otherToolbarOpened","_toolbarOpened","isActive","schema","useEffect","editorRef","setEditable","nextMarkup","commands","setContent","emitUpdate","entries","_ref6","_ref7","key","value","document","documentElement","style","setProperty","editorState","useEditorState","selector","ctx","_ctx$editor","isFocused","sizeStyle","minWidth","width","maxWidth","minHeight","height","maxHeight","valueToSize","createElement","_extends2","StyledEditorContent","showParagraph","separateParagraph","styled","EditorContent","shouldForwardProp","prop","includes","_ref8","display","outline","flex","padding","margin","left","top","color","pointerEvents","whiteSpace","fontSize","marginBottom","_default"],"sources":["../../src/components/EditableHtml.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport debounce from 'lodash-es/debounce';\nimport { EditorContent, useEditor, useEditorState } from '@tiptap/react';\nimport { styled } from '@mui/material/styles';\nimport StarterKit from '@tiptap/starter-kit';\nimport { TextStyleKit } from '@tiptap/extension-text-style';\nimport { CharacterCount } from '@tiptap/extension-character-count';\nimport SuperScript from '@tiptap/extension-superscript';\nimport SubScript from '@tiptap/extension-subscript';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Image from '@tiptap/extension-image';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { normalizeInitialMarkup } from '../utils/helper';\n\nimport ExtendedTable from '../extensions/extended-table';\nimport { ExtendedTableCell, ExtendedTableHeader } from '../extensions/extended-table-cell';\nimport { DivNode } from '../extensions/div-node';\nimport { EnsureEmptyRootIsDiv } from '../extensions/ensure-empty-root-div';\nimport { EnsureListItemContentIsDiv } from '../extensions/ensure-list-item-content-is-div';\nimport { TableRow } from '@tiptap/extension-table-row';\nimport {\n DragInTheBlankNode,\n ExplicitConstructedResponseNode,\n InlineDropdownNode,\n MathTemplatedNode,\n ResponseAreaExtension,\n} from '../extensions/responseArea';\nimport { MathNode } from '../extensions/math';\nimport { ImageUploadNode } from '../extensions/image';\nimport { Media } from '../extensions/media';\nimport { CSSMark } from '../extensions/css';\nimport { ExtendedListItem } from '../extensions/extended-list-item';\nimport { HeadingParagraph } from '../extensions/heading-paragraph';\n\nimport EditorContainer from './TiptapContainer';\nimport { valueToSize } from '../utils/size';\nimport { buildExtensions, PLUGINS_MAP } from '../extensions';\n\nconst defaultToolbarOpts = {\n position: 'bottom',\n alignment: 'left',\n alwaysVisible: false,\n showDone: true,\n doneOn: 'blur',\n};\n\nconst defaultResponseAreaProps = {\n options: {},\n respAreaToolbar: () => {},\n onHandleAreaChange: () => {},\n};\n\nconst DEFAULT_ACTIVE_PLUGINS = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'code',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'text-align',\n 'table',\n 'video',\n 'audio',\n 'responseArea',\n 'superscript',\n 'subscript',\n 'css',\n 'h3',\n 'undo',\n 'redo',\n];\n\nconst cssVariables = {\n '--white': '#fff',\n '--black': '#2e2b29',\n '--black-contrast': '#110f0e',\n '--gray-1': 'rgba(61, 37, 20, .05)',\n '--gray-2': 'rgba(61, 37, 20, .08)',\n '--gray-3': 'rgba(61, 37, 20, .12)',\n '--gray-4': 'rgba(53, 38, 28, .3)',\n '--gray-5': 'rgba(28, 25, 23, .6)',\n '--green': '#22c55e',\n '--purple': '#6a00f5',\n '--purple-contrast': '#5800cc',\n '--purple-light': 'rgba(88, 5, 255, .05)',\n '--yellow-contrast': '#facc15',\n '--yellow': 'rgba(250, 204, 21, .4)',\n '--yellow-light': '#fffae5',\n '--red': '#ff5c33',\n '--red-light': '#ffebe5',\n '--shadow': `0px 12px 33px 0px rgba(0, 0, 0, .06),\n 0px 3.618px 9.949px 0px rgba(0, 0, 0, .04)`,\n};\n\nexport const EditableHtml = (props) => {\n const { showParagraphs, separateParagraphs } = props.pluginProps || {};\n const [pendingImages, setPendingImages] = useState([]);\n const [scheduled, setScheduled] = useState(false);\n const { toolbarOpts } = props;\n\n const removePendingImage = useCallback(\n (imagePos) => {\n setPendingImages((prev) => {\n const next = prev.filter((img) => img.pos !== imagePos);\n if (next.length === 0) {\n setScheduled(false);\n }\n return next;\n });\n },\n [setPendingImages],\n );\n\n const toolbarOptsToUse = {\n ...defaultToolbarOpts,\n ...toolbarOpts,\n };\n\n const commitEditorContent = useCallback(\n (editor) => {\n const html = editor.getHTML();\n\n if (props.markup !== html) {\n props.onChange?.(html);\n }\n\n if (toolbarOptsToUse.doneOn === 'blur') {\n props.onDone?.(html);\n }\n },\n [props.markup, props.onChange, props.onDone, toolbarOptsToUse.doneOn],\n );\n\n const responseAreaPropsToUse = useMemo(\n () => ({\n ...defaultResponseAreaProps,\n ...props.responseAreaProps,\n onInlineDropdownToolbarClose: commitEditorContent,\n }),\n [props.responseAreaProps, commitEditorContent],\n );\n\n const activePluginsToUse = useMemo(() => {\n let { customPlugins, ...otherPluginProps } = props.pluginProps || {};\n\n customPlugins = customPlugins || [];\n\n const filteredActivePlugins = (props.activePlugins || DEFAULT_ACTIVE_PLUGINS)?.filter((pluginName) => {\n const nameToUse = PLUGINS_MAP[pluginName] || pluginName;\n const pluginInfo = otherPluginProps[nameToUse] || {};\n\n return !pluginInfo || !pluginInfo.disabled;\n });\n\n return buildExtensions(filteredActivePlugins, customPlugins, {\n math: {},\n textAlign: props.textAlign,\n html: {},\n extraCSSRules: props.extraCSSRules || {},\n image: {\n ...props.imageSupport,\n },\n toolbar: {},\n table: {},\n responseArea: {\n type: responseAreaPropsToUse.type,\n },\n languageCharacters: props.languageCharactersProps,\n keyPadCharacterRef: {},\n setKeypadInteraction: {},\n media: {},\n });\n }, [props, responseAreaPropsToUse.type]);\n\n const extensions = [\n TextAlign.configure({\n types: ['heading', 'paragraph', 'div', 'headingParagraph', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'td', 'th'],\n alignments: ['left', 'right', 'center', 'justify'],\n }),\n TextStyleKit,\n CharacterCount.configure({\n limit: props.charactersLimit || 1000000,\n }),\n StarterKit.configure({\n trailingNode: {\n node: 'paragraph',\n notAfter: ['paragraph', 'div'],\n },\n }),\n ExtendedListItem,\n DivNode,\n HeadingParagraph,\n EnsureEmptyRootIsDiv,\n EnsureListItemContentIsDiv,\n Placeholder.configure({\n placeholder: props.placeholder,\n // show placeholder even when editor is focused\n showOnlyWhenEditable: true,\n showOnlyCurrent: false, // show on all empty nodes, not only the current one\n includeChildren: true,\n }),\n ExtendedTable,\n TableRow,\n ExtendedTableHeader,\n ExtendedTableCell,\n ResponseAreaExtension.configure(responseAreaPropsToUse),\n ExplicitConstructedResponseNode.configure(responseAreaPropsToUse),\n DragInTheBlankNode.configure(responseAreaPropsToUse),\n InlineDropdownNode.configure(responseAreaPropsToUse),\n MathTemplatedNode.configure(responseAreaPropsToUse),\n MathNode.configure({\n toolbarOpts: toolbarOptsToUse,\n math: props.pluginProps?.math || {},\n }),\n SubScript,\n SuperScript,\n Image,\n ImageUploadNode.configure({\n toolbarOpts: toolbarOptsToUse,\n imageHandling: {\n disableImageAlignmentButtons: props.disableImageAlignmentButtons,\n onDone: (editor) => props.onDone?.(editor.getHTML()),\n onDelete:\n props.imageSupport &&\n props.imageSupport.delete &&\n ((node) => {\n const { src } = node.attrs;\n\n props.imageSupport.delete(src, (e) => {\n removePendingImage(node.pos);\n });\n }),\n insertImageRequested:\n props.imageSupport &&\n ((editor, imageInfo, getHandler) => {\n const [addedImage, pos] = imageInfo;\n\n const onFinish = (result) => {\n let cb;\n\n if (scheduled && result) {\n // finish editing only on success\n cb = props.onChange;\n }\n\n removePendingImage(pos);\n cb?.(editor.getHTML());\n };\n\n const callback = () => {\n /**\n * The handler is the object through which the outer context\n * communicates file upload events like: fileChosen, cancel, progress\n */\n const handler = getHandler(onFinish);\n\n // If the user closes the file picker without choosing a file, the window regains\n // focus while _insertingImage is still true — drop the stale pending entry.\n const focusHandler = debounce(() => {\n const detach = () => window.removeEventListener('focus', focusHandler);\n\n if (!editor._insertingImage) {\n detach();\n return;\n }\n\n removePendingImage(pos);\n editor._insertingImage = false;\n detach();\n }, 500);\n\n window.addEventListener('focus', focusHandler);\n\n props.imageSupport.add(handler);\n };\n\n editor._insertingImage = true;\n setPendingImages((prev) => [...prev, addedImage]);\n callback();\n }),\n maxImageWidth: props.maxImageWidth,\n maxImageHeight: props.maxImageHeight,\n },\n limit: 3,\n }),\n Media.configure({\n uploadSoundSupport: props.uploadSoundSupport,\n }),\n CSSMark.configure({\n extraCSSRules: props.extraCSSRules,\n }),\n ];\n\n const editor = useEditor(\n {\n extensions,\n immediatelyRender: false,\n editorProps: {\n handleKeyDown(view, event) {\n if (props.onKeyDown) {\n return props.onKeyDown(event);\n }\n\n // Return false to let default behavior continue\n return false;\n },\n },\n editable: !props.disabled,\n content: normalizeInitialMarkup(props.markup),\n onUpdate: ({ editor, transaction }) => {\n if (transaction.isDone) {\n props.onChange?.(editor.getHTML());\n }\n },\n onBlur: ({ editor }) => {\n const otherToolbarOpened =\n editor._insertingImage ||\n editor._toolbarOpened ||\n editor.isActive('inline_dropdown') ||\n editor.isActive('explicit_constructed_response');\n\n if (otherToolbarOpened || !editor.schema) {\n return;\n }\n\n commitEditorContent(editor);\n },\n },\n [props.charactersLimit],\n );\n\n useEffect(() => {\n if (props.editorRef) {\n props.editorRef(editor);\n }\n }, [props.editorRef, editor]);\n\n useEffect(() => {\n editor?.setEditable(!props.disabled);\n }, [props.disabled, editor]);\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n const nextMarkup = normalizeInitialMarkup(props.markup);\n\n if (nextMarkup !== editor.getHTML()) {\n editor.commands.setContent(nextMarkup, { emitUpdate: false });\n }\n }, [props.markup, editor]);\n\n useEffect(() => {\n Object.entries(cssVariables).forEach(([key, value]) => {\n document.documentElement.style.setProperty(key, value);\n });\n }, []);\n\n const editorState = useEditorState({\n editor,\n selector: (ctx) => ({\n isFocused: ctx.editor?.isFocused,\n }),\n });\n\n const sizeStyle = useMemo(() => {\n const { minWidth, width, maxWidth, minHeight, height, maxHeight } = props;\n\n return {\n width: valueToSize(width),\n minWidth: valueToSize(minWidth),\n maxWidth: valueToSize(maxWidth),\n height: valueToSize(height),\n minHeight: valueToSize(minHeight),\n maxHeight: valueToSize(maxHeight),\n };\n }, [props]);\n\n return (\n <EditorContainer\n {...{\n ...props,\n activePlugins: activePluginsToUse,\n toolbarOpts: toolbarOptsToUse,\n }}\n editorState={editorState}\n editor={editor}\n >\n {editor && (\n <StyledEditorContent\n style={{\n minHeight: sizeStyle.minHeight,\n height: sizeStyle.height,\n maxHeight: sizeStyle.maxHeight,\n }}\n showParagraph={showParagraphs && !showParagraphs.disabled}\n separateParagraph={separateParagraphs && !separateParagraphs.disabled}\n editor={editor}\n />\n )}\n </EditorContainer>\n );\n};\n\nconst StyledEditorContent = styled(EditorContent, {\n shouldForwardProp: (prop) => !['showParagraph', 'separateParagraph'].includes(prop),\n})(({ showParagraph, separateParagraph }) => ({\n display: 'flex',\n outline: 'none !important',\n '& .ProseMirror': {\n flex: 1,\n padding: '5px',\n maxHeight: '500px',\n outline: 'none !important',\n position: 'initial',\n\n // reset default margins for all block paragraphs/divs in the editor\n '& > p, & > div': {\n margin: '0',\n },\n\n // Out of flow so the caret stays at the start of the block; in-flow ::before pushes the caret after the hint text.\n // :only-child ensures the placeholder is hidden whenever the editor has other content (images, upload nodes, etc.)\n // and covers the type+backspace edge case where Tiptap only adds is-empty (not is-editor-empty).\n '& p[data-placeholder].is-empty:only-child, & div[data-placeholder].is-empty:only-child': {\n position: 'relative',\n },\n '& p[data-placeholder].is-empty:only-child::before, & div[data-placeholder].is-empty:only-child::before': {\n content: 'attr(data-placeholder)',\n position: 'absolute',\n left: 0,\n top: 0,\n color: '#9CA3AF',\n pointerEvents: 'none',\n whiteSpace: 'pre-wrap',\n },\n\n ...(showParagraph && {\n '& > p:has(+ p)::after, & > div:has(+ div)::after': {\n display: 'block',\n content: '\"¶\"',\n fontSize: '1em',\n color: '#146EB3',\n },\n }),\n ...(separateParagraph && {\n '& > p:has(+ p)': {\n marginBottom: '1em',\n },\n }),\n },\n}));\n\nexport default EditableHtml;\n"],"mappings":"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","ignoreList":[]}