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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/lib/__tests__/EditableHtml.test.js +374 -0
  3. package/lib/__tests__/constants.test.js +28 -0
  4. package/lib/__tests__/extensions.test.js +214 -0
  5. package/lib/__tests__/index.test.js +246 -0
  6. package/lib/__tests__/size-utils.test.js +57 -0
  7. package/lib/__tests__/theme.test.js +17 -0
  8. package/lib/components/CharacterPicker.js +18 -0
  9. package/lib/components/CharacterPicker.js.map +1 -1
  10. package/lib/components/EditableHtml.js +22 -5
  11. package/lib/components/EditableHtml.js.map +1 -1
  12. package/lib/components/MenuBar.js +17 -0
  13. package/lib/components/MenuBar.js.map +1 -1
  14. package/lib/components/TiptapContainer.js +16 -0
  15. package/lib/components/TiptapContainer.js.map +1 -1
  16. package/lib/components/__tests__/AltDialog.test.js +201 -0
  17. package/lib/components/__tests__/CharacterPicker.test.js +313 -0
  18. package/lib/components/__tests__/CssIcon.test.js +58 -0
  19. package/lib/components/__tests__/DragInTheBlank.test.js +309 -0
  20. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +263 -0
  21. package/lib/components/__tests__/ImageToolbar.test.js +195 -0
  22. package/lib/components/__tests__/InlineDropdown.test.js +297 -0
  23. package/lib/components/__tests__/InsertImageHandler.test.js +162 -0
  24. package/lib/components/__tests__/MediaDialog.test.js +435 -0
  25. package/lib/components/__tests__/MediaToolbar.test.js +126 -0
  26. package/lib/components/__tests__/MediaWrapper.test.js +96 -0
  27. package/lib/components/__tests__/MenuBar.test.js +459 -0
  28. package/lib/components/__tests__/RespArea.test.js +171 -0
  29. package/lib/components/__tests__/TableIcons.test.js +153 -0
  30. package/lib/components/__tests__/TextAlign.test.js +216 -0
  31. package/lib/components/__tests__/TiptapContainer.test.js +196 -0
  32. package/lib/components/__tests__/characterUtils.test.js +189 -0
  33. package/lib/components/__tests__/choice.test.js +213 -0
  34. package/lib/components/__tests__/custom-popper.test.js +108 -0
  35. package/lib/components/__tests__/done-button.test.js +72 -0
  36. package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
  37. package/lib/components/characters/characterUtils.js +2 -0
  38. package/lib/components/characters/characterUtils.js.map +1 -1
  39. package/lib/components/characters/custom-popper.js +1 -0
  40. package/lib/components/characters/custom-popper.js.map +1 -1
  41. package/lib/components/common/done-button.js +1 -0
  42. package/lib/components/common/done-button.js.map +1 -1
  43. package/lib/components/common/toolbar-buttons.js +12 -0
  44. package/lib/components/common/toolbar-buttons.js.map +1 -1
  45. package/lib/components/icons/CssIcon.js +1 -0
  46. package/lib/components/icons/CssIcon.js.map +1 -1
  47. package/lib/components/icons/RespArea.js +10 -0
  48. package/lib/components/icons/RespArea.js.map +1 -1
  49. package/lib/components/icons/TableIcons.js +1 -0
  50. package/lib/components/icons/TableIcons.js.map +1 -1
  51. package/lib/components/icons/TextAlign.js +7 -0
  52. package/lib/components/icons/TextAlign.js.map +1 -1
  53. package/lib/components/image/AltDialog.js +5 -0
  54. package/lib/components/image/AltDialog.js.map +1 -1
  55. package/lib/components/image/ImageToolbar.js +13 -0
  56. package/lib/components/image/ImageToolbar.js.map +1 -1
  57. package/lib/components/image/InsertImageHandler.js +10 -0
  58. package/lib/components/image/InsertImageHandler.js.map +1 -1
  59. package/lib/components/media/MediaDialog.js +18 -0
  60. package/lib/components/media/MediaDialog.js.map +1 -1
  61. package/lib/components/media/MediaToolbar.js +2 -0
  62. package/lib/components/media/MediaToolbar.js.map +1 -1
  63. package/lib/components/media/MediaWrapper.js +11 -0
  64. package/lib/components/media/MediaWrapper.js.map +1 -1
  65. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +10 -0
  66. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -1
  67. package/lib/components/respArea/DragInTheBlank/choice.js +8 -0
  68. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -1
  69. package/lib/components/respArea/ExplicitConstructedResponse.js +8 -0
  70. package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -1
  71. package/lib/components/respArea/InlineDropdown.js +7 -0
  72. package/lib/components/respArea/InlineDropdown.js.map +1 -1
  73. package/lib/components/respArea/ToolbarIcon.js +10 -0
  74. package/lib/components/respArea/ToolbarIcon.js.map +1 -1
  75. package/lib/constants.js +1 -0
  76. package/lib/constants.js.map +1 -1
  77. package/lib/extensions/__tests__/component.test.js +314 -0
  78. package/lib/extensions/__tests__/css.test.js +218 -0
  79. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +185 -0
  80. package/lib/extensions/__tests__/extended-table.test.js +114 -0
  81. package/lib/extensions/__tests__/image.test.js +178 -0
  82. package/lib/extensions/__tests__/media.test.js +296 -0
  83. package/lib/extensions/__tests__/responseArea.test.js +332 -0
  84. package/lib/extensions/component.js +22 -2
  85. package/lib/extensions/css.js +11 -0
  86. package/lib/extensions/css.js.map +1 -1
  87. package/lib/extensions/custom-toolbar-wrapper.js +15 -0
  88. package/lib/extensions/custom-toolbar-wrapper.js.map +1 -1
  89. package/lib/extensions/extended-table.js +4 -0
  90. package/lib/extensions/extended-table.js.map +1 -1
  91. package/lib/extensions/image-component.js +314 -0
  92. package/lib/extensions/image-component.js.map +1 -0
  93. package/lib/extensions/image.js +13 -2
  94. package/lib/extensions/image.js.map +1 -1
  95. package/lib/extensions/index.js +12 -2
  96. package/lib/extensions/index.js.map +1 -1
  97. package/lib/extensions/math.js +16 -0
  98. package/lib/extensions/math.js.map +1 -1
  99. package/lib/extensions/media.js +15 -0
  100. package/lib/extensions/media.js.map +1 -1
  101. package/lib/extensions/responseArea.js +22 -0
  102. package/lib/extensions/responseArea.js.map +1 -1
  103. package/lib/index.js +7 -0
  104. package/lib/index.js.map +1 -1
  105. package/lib/styles/editorContainerStyles.js +1 -0
  106. package/lib/styles/editorContainerStyles.js.map +1 -1
  107. package/lib/theme.js +1 -0
  108. package/lib/theme.js.map +1 -1
  109. package/lib/utils/size.js +6 -0
  110. package/lib/utils/size.js.map +1 -1
  111. package/package.json +8 -8
  112. package/src/__tests__/EditableHtml.test.jsx +266 -0
  113. package/src/__tests__/constants.test.js +20 -0
  114. package/src/__tests__/extensions.test.js +208 -0
  115. package/src/__tests__/index.test.jsx +146 -0
  116. package/src/__tests__/size-utils.test.js +64 -0
  117. package/src/__tests__/theme.test.js +17 -0
  118. package/src/components/EditableHtml.jsx +8 -6
  119. package/src/components/__tests__/AltDialog.test.jsx +147 -0
  120. package/src/components/__tests__/CharacterPicker.test.jsx +195 -0
  121. package/src/components/__tests__/CssIcon.test.jsx +46 -0
  122. package/src/components/__tests__/DragInTheBlank.test.jsx +255 -0
  123. package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +161 -0
  124. package/src/components/__tests__/ImageToolbar.test.jsx +128 -0
  125. package/src/components/__tests__/InlineDropdown.test.jsx +187 -0
  126. package/src/components/__tests__/InsertImageHandler.test.js +154 -0
  127. package/src/components/__tests__/MediaDialog.test.jsx +293 -0
  128. package/src/components/__tests__/MediaToolbar.test.jsx +74 -0
  129. package/src/components/__tests__/MediaWrapper.test.jsx +81 -0
  130. package/src/components/__tests__/MenuBar.test.jsx +217 -0
  131. package/src/components/__tests__/RespArea.test.jsx +122 -0
  132. package/src/components/__tests__/TableIcons.test.jsx +149 -0
  133. package/src/components/__tests__/TextAlign.test.jsx +167 -0
  134. package/src/components/__tests__/TiptapContainer.test.jsx +138 -0
  135. package/src/components/__tests__/characterUtils.test.js +166 -0
  136. package/src/components/__tests__/choice.test.jsx +171 -0
  137. package/src/components/__tests__/custom-popper.test.jsx +82 -0
  138. package/src/components/__tests__/done-button.test.jsx +54 -0
  139. package/src/components/__tests__/toolbar-buttons.test.jsx +234 -0
  140. package/src/extensions/__tests__/css.test.js +196 -0
  141. package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +180 -0
  142. package/src/extensions/__tests__/extended-table.test.js +107 -0
  143. package/src/extensions/__tests__/image-component.test.jsx +249 -0
  144. package/src/extensions/__tests__/image.test.js +136 -0
  145. package/src/extensions/__tests__/media.test.js +270 -0
  146. package/src/extensions/__tests__/responseArea.test.js +310 -0
  147. package/src/extensions/{component.jsx → image-component.jsx} +11 -1
  148. package/src/extensions/image.js +1 -1
  149. package/src/extensions/index.js +5 -1
  150. package/LICENSE.md +0 -5
  151. package/NEXT.CHANGELOG.json +0 -1
  152. package/lib/extensions/component.js.map +0 -1
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
5
+ require("core-js/modules/es.array.is-array.js");
6
+ require("core-js/modules/es.function.name.js");
7
+ var _responseArea = require("../responseArea");
8
+ jest.mock('@tiptap/core', function () {
9
+ return {
10
+ Extension: {
11
+ create: jest.fn(function (config) {
12
+ return config;
13
+ })
14
+ },
15
+ Node: {
16
+ create: jest.fn(function (config) {
17
+ return config;
18
+ })
19
+ }
20
+ };
21
+ });
22
+ jest.mock('@tiptap/react', function () {
23
+ return {
24
+ Node: {
25
+ create: jest.fn(function (config) {
26
+ return config;
27
+ })
28
+ },
29
+ ReactNodeViewRenderer: jest.fn(function (component) {
30
+ return component;
31
+ })
32
+ };
33
+ });
34
+ jest.mock('prosemirror-state', function () {
35
+ return {
36
+ Plugin: jest.fn(function (config) {
37
+ return config;
38
+ }),
39
+ PluginKey: jest.fn(function (key) {
40
+ this.key = key;
41
+ }),
42
+ TextSelection: {
43
+ near: jest.fn(function (pos, dir) {
44
+ return {
45
+ type: 'text',
46
+ pos: pos,
47
+ dir: dir
48
+ };
49
+ }),
50
+ create: jest.fn(function (doc, pos) {
51
+ return {
52
+ type: 'text',
53
+ pos: pos
54
+ };
55
+ })
56
+ },
57
+ NodeSelection: {
58
+ create: jest.fn(function (doc, pos) {
59
+ return {
60
+ type: 'node',
61
+ pos: pos
62
+ };
63
+ })
64
+ }
65
+ };
66
+ });
67
+ jest.mock('../../components/respArea/ExplicitConstructedResponse', function () {
68
+ return {
69
+ __esModule: true,
70
+ "default": jest.fn(function () {
71
+ return /*#__PURE__*/React.createElement("div", {
72
+ "data-testid": "explicit-constructed-response"
73
+ });
74
+ })
75
+ };
76
+ });
77
+ jest.mock('../../components/respArea/DragInTheBlank/DragInTheBlank', function () {
78
+ return {
79
+ __esModule: true,
80
+ "default": jest.fn(function () {
81
+ return /*#__PURE__*/React.createElement("div", {
82
+ "data-testid": "drag-in-the-blank"
83
+ });
84
+ })
85
+ };
86
+ });
87
+ jest.mock('../../components/respArea/InlineDropdown', function () {
88
+ return {
89
+ __esModule: true,
90
+ "default": jest.fn(function () {
91
+ return /*#__PURE__*/React.createElement("div", {
92
+ "data-testid": "inline-dropdown"
93
+ });
94
+ })
95
+ };
96
+ });
97
+ describe('ResponseAreaExtension', function () {
98
+ describe('configuration', function () {
99
+ it('has correct name', function () {
100
+ expect(_responseArea.ResponseAreaExtension.name).toBe('responseArea');
101
+ });
102
+ });
103
+ describe('addOptions', function () {
104
+ it('returns default options', function () {
105
+ var options = _responseArea.ResponseAreaExtension.addOptions();
106
+ expect(options).toHaveProperty('maxResponseAreas', null);
107
+ expect(options).toHaveProperty('error', null);
108
+ expect(options).toHaveProperty('options', null);
109
+ expect(options).toHaveProperty('respAreaToolbar', null);
110
+ expect(options).toHaveProperty('onHandleAreaChange', null);
111
+ });
112
+ });
113
+ describe('addProseMirrorPlugins', function () {
114
+ it('returns empty array when no type specified', function () {
115
+ var context = {
116
+ options: {}
117
+ };
118
+ var plugins = _responseArea.ResponseAreaExtension.addProseMirrorPlugins.call(context);
119
+ expect(Array.isArray(plugins)).toBe(true);
120
+ expect(plugins).toHaveLength(0);
121
+ });
122
+ it('returns plugin array when type is specified', function () {
123
+ var context = {
124
+ options: {
125
+ type: 'explicit-constructed-response',
126
+ maxResponseAreas: 5
127
+ }
128
+ };
129
+ var plugins = _responseArea.ResponseAreaExtension.addProseMirrorPlugins.call(context);
130
+ expect(Array.isArray(plugins)).toBe(true);
131
+ expect(plugins).toHaveLength(1);
132
+ expect(plugins[0]).toHaveProperty('key');
133
+ expect(plugins[0]).toHaveProperty('view');
134
+ });
135
+ });
136
+ describe('addCommands', function () {
137
+ it('returns insertResponseArea command', function () {
138
+ var commands = _responseArea.ResponseAreaExtension.addCommands();
139
+ expect(commands).toHaveProperty('insertResponseArea');
140
+ expect((0, _typeof2["default"])(commands.insertResponseArea)).toBe('function');
141
+ });
142
+ });
143
+ });
144
+ describe('ExplicitConstructedResponseNode', function () {
145
+ describe('configuration', function () {
146
+ it('has correct name', function () {
147
+ expect(_responseArea.ExplicitConstructedResponseNode.name).toBe('explicit_constructed_response');
148
+ });
149
+ it('is inline', function () {
150
+ expect(_responseArea.ExplicitConstructedResponseNode.inline).toBe(true);
151
+ });
152
+ it('is in inline group', function () {
153
+ expect(_responseArea.ExplicitConstructedResponseNode.group).toBe('inline');
154
+ });
155
+ it('is atomic', function () {
156
+ expect(_responseArea.ExplicitConstructedResponseNode.atom).toBe(true);
157
+ });
158
+ });
159
+ describe('addAttributes', function () {
160
+ it('returns required attributes', function () {
161
+ var attributes = _responseArea.ExplicitConstructedResponseNode.addAttributes();
162
+ expect(attributes).toHaveProperty('index');
163
+ expect(attributes).toHaveProperty('value');
164
+ expect(attributes).toHaveProperty('updated');
165
+ expect(attributes.index).toEqual({
166
+ "default": null
167
+ });
168
+ expect(attributes.value).toEqual({
169
+ "default": ''
170
+ });
171
+ expect(attributes.updated).toEqual({
172
+ "default": ''
173
+ });
174
+ });
175
+ });
176
+ describe('parseHTML', function () {
177
+ it('returns parsing rules', function () {
178
+ var rules = _responseArea.ExplicitConstructedResponseNode.parseHTML();
179
+ expect(Array.isArray(rules)).toBe(true);
180
+ expect(rules).toHaveLength(1);
181
+ expect(rules[0]).toHaveProperty('tag');
182
+ });
183
+ });
184
+ describe('renderHTML', function () {
185
+ it('renders span with attributes', function () {
186
+ var result = _responseArea.ExplicitConstructedResponseNode.renderHTML({
187
+ HTMLAttributes: {
188
+ index: '1',
189
+ id: '1',
190
+ value: 'test'
191
+ }
192
+ });
193
+ expect(result[0]).toBe('span');
194
+ expect(result[1]).toHaveProperty('data-type', 'explicit_constructed_response');
195
+ });
196
+ });
197
+ describe('addNodeView', function () {
198
+ it('returns ReactNodeViewRenderer result', function () {
199
+ var result = _responseArea.ExplicitConstructedResponseNode.addNodeView();
200
+ expect(result).toBeDefined();
201
+ });
202
+ });
203
+ });
204
+ describe('DragInTheBlankNode', function () {
205
+ describe('configuration', function () {
206
+ it('has correct name', function () {
207
+ expect(_responseArea.DragInTheBlankNode.name).toBe('drag_in_the_blank');
208
+ });
209
+ it('is inline', function () {
210
+ expect(_responseArea.DragInTheBlankNode.inline).toBe(true);
211
+ });
212
+ it('is in inline group', function () {
213
+ expect(_responseArea.DragInTheBlankNode.group).toBe('inline');
214
+ });
215
+ it('is atomic', function () {
216
+ expect(_responseArea.DragInTheBlankNode.atom).toBe(true);
217
+ });
218
+ });
219
+ describe('addAttributes', function () {
220
+ it('returns required attributes', function () {
221
+ var attributes = _responseArea.DragInTheBlankNode.addAttributes();
222
+ expect(attributes).toHaveProperty('index');
223
+ expect(attributes).toHaveProperty('id');
224
+ expect(attributes).toHaveProperty('value');
225
+ expect(attributes).toHaveProperty('inTable');
226
+ expect(attributes).toHaveProperty('updated');
227
+ expect(attributes.index).toEqual({
228
+ "default": null
229
+ });
230
+ expect(attributes.id).toEqual({
231
+ "default": null
232
+ });
233
+ expect(attributes.value).toEqual({
234
+ "default": ''
235
+ });
236
+ expect(attributes.inTable).toEqual({
237
+ "default": null
238
+ });
239
+ expect(attributes.updated).toEqual({
240
+ "default": ''
241
+ });
242
+ });
243
+ });
244
+ describe('parseHTML', function () {
245
+ it('returns parsing rules', function () {
246
+ var rules = _responseArea.DragInTheBlankNode.parseHTML();
247
+ expect(Array.isArray(rules)).toBe(true);
248
+ expect(rules).toHaveLength(1);
249
+ expect(rules[0]).toHaveProperty('tag');
250
+ });
251
+ });
252
+ describe('renderHTML', function () {
253
+ it('renders span with attributes', function () {
254
+ var result = _responseArea.DragInTheBlankNode.renderHTML({
255
+ HTMLAttributes: {
256
+ index: '1',
257
+ id: '1',
258
+ value: 'test'
259
+ }
260
+ });
261
+ expect(result[0]).toBe('span');
262
+ expect(result[1]).toHaveProperty('data-type', 'drag_in_the_blank');
263
+ });
264
+ });
265
+ describe('addNodeView', function () {
266
+ it('returns ReactNodeViewRenderer result', function () {
267
+ var result = _responseArea.DragInTheBlankNode.addNodeView();
268
+ expect(result).toBeDefined();
269
+ });
270
+ });
271
+ });
272
+ describe('InlineDropdownNode', function () {
273
+ describe('configuration', function () {
274
+ it('has correct name', function () {
275
+ expect(_responseArea.InlineDropdownNode.name).toBe('inline_dropdown');
276
+ });
277
+ it('is inline', function () {
278
+ expect(_responseArea.InlineDropdownNode.inline).toBe(true);
279
+ });
280
+ it('is in inline group', function () {
281
+ expect(_responseArea.InlineDropdownNode.group).toBe('inline');
282
+ });
283
+ it('is atomic', function () {
284
+ expect(_responseArea.InlineDropdownNode.atom).toBe(true);
285
+ });
286
+ });
287
+ describe('addAttributes', function () {
288
+ it('returns required attributes', function () {
289
+ var attributes = _responseArea.InlineDropdownNode.addAttributes();
290
+ expect(attributes).toHaveProperty('index');
291
+ expect(attributes).toHaveProperty('value');
292
+ expect(attributes).toHaveProperty('updated');
293
+ expect(attributes.index).toEqual({
294
+ "default": null
295
+ });
296
+ expect(attributes.value).toEqual({
297
+ "default": ''
298
+ });
299
+ expect(attributes.updated).toEqual({
300
+ "default": ''
301
+ });
302
+ });
303
+ });
304
+ describe('parseHTML', function () {
305
+ it('returns parsing rules', function () {
306
+ var rules = _responseArea.InlineDropdownNode.parseHTML();
307
+ expect(Array.isArray(rules)).toBe(true);
308
+ expect(rules).toHaveLength(1);
309
+ expect(rules[0]).toHaveProperty('tag');
310
+ });
311
+ });
312
+ describe('renderHTML', function () {
313
+ it('renders span with attributes', function () {
314
+ var result = _responseArea.InlineDropdownNode.renderHTML({
315
+ HTMLAttributes: {
316
+ index: '1',
317
+ id: '1',
318
+ value: 'test'
319
+ }
320
+ });
321
+ expect(result[0]).toBe('span');
322
+ expect(result[1]).toHaveProperty('data-type', 'inline_dropdown');
323
+ });
324
+ });
325
+ describe('addNodeView', function () {
326
+ it('returns ReactNodeViewRenderer result', function () {
327
+ var result = _responseArea.InlineDropdownNode.addNodeView();
328
+ expect(result).toBeDefined();
329
+ });
330
+ });
331
+ });
332
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVzcG9uc2VBcmVhIiwicmVxdWlyZSIsImplc3QiLCJtb2NrIiwiRXh0ZW5zaW9uIiwiY3JlYXRlIiwiZm4iLCJjb25maWciLCJOb2RlIiwiUmVhY3ROb2RlVmlld1JlbmRlcmVyIiwiY29tcG9uZW50IiwiUGx1Z2luIiwiUGx1Z2luS2V5Iiwia2V5IiwiVGV4dFNlbGVjdGlvbiIsIm5lYXIiLCJwb3MiLCJkaXIiLCJ0eXBlIiwiZG9jIiwiTm9kZVNlbGVjdGlvbiIsIl9fZXNNb2R1bGUiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJkZXNjcmliZSIsIml0IiwiZXhwZWN0IiwiUmVzcG9uc2VBcmVhRXh0ZW5zaW9uIiwibmFtZSIsInRvQmUiLCJvcHRpb25zIiwiYWRkT3B0aW9ucyIsInRvSGF2ZVByb3BlcnR5IiwiY29udGV4dCIsInBsdWdpbnMiLCJhZGRQcm9zZU1pcnJvclBsdWdpbnMiLCJjYWxsIiwiQXJyYXkiLCJpc0FycmF5IiwidG9IYXZlTGVuZ3RoIiwibWF4UmVzcG9uc2VBcmVhcyIsImNvbW1hbmRzIiwiYWRkQ29tbWFuZHMiLCJfdHlwZW9mMiIsImluc2VydFJlc3BvbnNlQXJlYSIsIkV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUiLCJpbmxpbmUiLCJncm91cCIsImF0b20iLCJhdHRyaWJ1dGVzIiwiYWRkQXR0cmlidXRlcyIsImluZGV4IiwidG9FcXVhbCIsInZhbHVlIiwidXBkYXRlZCIsInJ1bGVzIiwicGFyc2VIVE1MIiwicmVzdWx0IiwicmVuZGVySFRNTCIsIkhUTUxBdHRyaWJ1dGVzIiwiaWQiLCJhZGROb2RlVmlldyIsInRvQmVEZWZpbmVkIiwiRHJhZ0luVGhlQmxhbmtOb2RlIiwiaW5UYWJsZSIsIklubGluZURyb3Bkb3duTm9kZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leHRlbnNpb25zL19fdGVzdHNfXy9yZXNwb25zZUFyZWEudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBSZXNwb25zZUFyZWFFeHRlbnNpb24sXG4gIEV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUsXG4gIERyYWdJblRoZUJsYW5rTm9kZSxcbiAgSW5saW5lRHJvcGRvd25Ob2RlLFxufSBmcm9tICcuLi9yZXNwb25zZUFyZWEnO1xuXG5qZXN0Lm1vY2soJ0B0aXB0YXAvY29yZScsICgpID0+ICh7XG4gIEV4dGVuc2lvbjogeyBjcmVhdGU6IGplc3QuZm4oKGNvbmZpZykgPT4gY29uZmlnKSB9LFxuICBOb2RlOiB7IGNyZWF0ZTogamVzdC5mbigoY29uZmlnKSA9PiBjb25maWcpIH0sXG59KSk7XG5cbmplc3QubW9jaygnQHRpcHRhcC9yZWFjdCcsICgpID0+ICh7XG4gIE5vZGU6IHsgY3JlYXRlOiBqZXN0LmZuKChjb25maWcpID0+IGNvbmZpZykgfSxcbiAgUmVhY3ROb2RlVmlld1JlbmRlcmVyOiBqZXN0LmZuKChjb21wb25lbnQpID0+IGNvbXBvbmVudCksXG59KSk7XG5cbmplc3QubW9jaygncHJvc2VtaXJyb3Itc3RhdGUnLCAoKSA9PiAoe1xuICBQbHVnaW46IGplc3QuZm4oZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIHJldHVybiBjb25maWc7XG4gIH0pLFxuICBQbHVnaW5LZXk6IGplc3QuZm4oZnVuY3Rpb24gKGtleSkge1xuICAgIHRoaXMua2V5ID0ga2V5O1xuICB9KSxcbiAgVGV4dFNlbGVjdGlvbjoge1xuICAgIG5lYXI6IGplc3QuZm4oKHBvcywgZGlyKSA9PiAoeyB0eXBlOiAndGV4dCcsIHBvcywgZGlyIH0pKSxcbiAgICBjcmVhdGU6IGplc3QuZm4oKGRvYywgcG9zKSA9PiAoeyB0eXBlOiAndGV4dCcsIHBvcyB9KSksXG4gIH0sXG4gIE5vZGVTZWxlY3Rpb246IHtcbiAgICBjcmVhdGU6IGplc3QuZm4oKGRvYywgcG9zKSA9PiAoeyB0eXBlOiAnbm9kZScsIHBvcyB9KSksXG4gIH0sXG59KSk7XG5cbmplc3QubW9jaygnLi4vLi4vY29tcG9uZW50cy9yZXNwQXJlYS9FeHBsaWNpdENvbnN0cnVjdGVkUmVzcG9uc2UnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiBqZXN0LmZuKCgpID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJleHBsaWNpdC1jb25zdHJ1Y3RlZC1yZXNwb25zZVwiIC8+KSxcbn0pKTtcblxuamVzdC5tb2NrKCcuLi8uLi9jb21wb25lbnRzL3Jlc3BBcmVhL0RyYWdJblRoZUJsYW5rL0RyYWdJblRoZUJsYW5rJywgKCkgPT4gKHtcbiAgX19lc01vZHVsZTogdHJ1ZSxcbiAgZGVmYXVsdDogamVzdC5mbigoKSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwiZHJhZy1pbi10aGUtYmxhbmtcIiAvPiksXG59KSk7XG5cbmplc3QubW9jaygnLi4vLi4vY29tcG9uZW50cy9yZXNwQXJlYS9JbmxpbmVEcm9wZG93bicsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6IGplc3QuZm4oKCkgPT4gPGRpdiBkYXRhLXRlc3RpZD1cImlubGluZS1kcm9wZG93blwiIC8+KSxcbn0pKTtcblxuZGVzY3JpYmUoJ1Jlc3BvbnNlQXJlYUV4dGVuc2lvbicsICgpID0+IHtcbiAgZGVzY3JpYmUoJ2NvbmZpZ3VyYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2hhcyBjb3JyZWN0IG5hbWUnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoUmVzcG9uc2VBcmVhRXh0ZW5zaW9uLm5hbWUpLnRvQmUoJ3Jlc3BvbnNlQXJlYScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkT3B0aW9ucycsICgpID0+IHtcbiAgICBpdCgncmV0dXJucyBkZWZhdWx0IG9wdGlvbnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zID0gUmVzcG9uc2VBcmVhRXh0ZW5zaW9uLmFkZE9wdGlvbnMoKTtcblxuICAgICAgZXhwZWN0KG9wdGlvbnMpLnRvSGF2ZVByb3BlcnR5KCdtYXhSZXNwb25zZUFyZWFzJywgbnVsbCk7XG4gICAgICBleHBlY3Qob3B0aW9ucykudG9IYXZlUHJvcGVydHkoJ2Vycm9yJywgbnVsbCk7XG4gICAgICBleHBlY3Qob3B0aW9ucykudG9IYXZlUHJvcGVydHkoJ29wdGlvbnMnLCBudWxsKTtcbiAgICAgIGV4cGVjdChvcHRpb25zKS50b0hhdmVQcm9wZXJ0eSgncmVzcEFyZWFUb29sYmFyJywgbnVsbCk7XG4gICAgICBleHBlY3Qob3B0aW9ucykudG9IYXZlUHJvcGVydHkoJ29uSGFuZGxlQXJlYUNoYW5nZScsIG51bGwpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkUHJvc2VNaXJyb3JQbHVnaW5zJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIGVtcHR5IGFycmF5IHdoZW4gbm8gdHlwZSBzcGVjaWZpZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICBvcHRpb25zOiB7fSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHBsdWdpbnMgPSBSZXNwb25zZUFyZWFFeHRlbnNpb24uYWRkUHJvc2VNaXJyb3JQbHVnaW5zLmNhbGwoY29udGV4dCk7XG5cbiAgICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHBsdWdpbnMpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHBsdWdpbnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIHBsdWdpbiBhcnJheSB3aGVuIHR5cGUgaXMgc3BlY2lmaWVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHR5cGU6ICdleHBsaWNpdC1jb25zdHJ1Y3RlZC1yZXNwb25zZScsXG4gICAgICAgICAgbWF4UmVzcG9uc2VBcmVhczogNSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHBsdWdpbnMgPSBSZXNwb25zZUFyZWFFeHRlbnNpb24uYWRkUHJvc2VNaXJyb3JQbHVnaW5zLmNhbGwoY29udGV4dCk7XG5cbiAgICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHBsdWdpbnMpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHBsdWdpbnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICAgIGV4cGVjdChwbHVnaW5zWzBdKS50b0hhdmVQcm9wZXJ0eSgna2V5Jyk7XG4gICAgICBleHBlY3QocGx1Z2luc1swXSkudG9IYXZlUHJvcGVydHkoJ3ZpZXcnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2FkZENvbW1hbmRzJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIGluc2VydFJlc3BvbnNlQXJlYSBjb21tYW5kJywgKCkgPT4ge1xuICAgICAgY29uc3QgY29tbWFuZHMgPSBSZXNwb25zZUFyZWFFeHRlbnNpb24uYWRkQ29tbWFuZHMoKTtcblxuICAgICAgZXhwZWN0KGNvbW1hbmRzKS50b0hhdmVQcm9wZXJ0eSgnaW5zZXJ0UmVzcG9uc2VBcmVhJyk7XG4gICAgICBleHBlY3QodHlwZW9mIGNvbW1hbmRzLmluc2VydFJlc3BvbnNlQXJlYSkudG9CZSgnZnVuY3Rpb24nKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0V4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdjb25maWd1cmF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdoYXMgY29ycmVjdCBuYW1lJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KEV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUubmFtZSkudG9CZSgnZXhwbGljaXRfY29uc3RydWN0ZWRfcmVzcG9uc2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdpcyBpbmxpbmUnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoRXhwbGljaXRDb25zdHJ1Y3RlZFJlc3BvbnNlTm9kZS5pbmxpbmUpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaXMgaW4gaW5saW5lIGdyb3VwJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KEV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUuZ3JvdXApLnRvQmUoJ2lubGluZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2lzIGF0b21pYycsICgpID0+IHtcbiAgICAgIGV4cGVjdChFeHBsaWNpdENvbnN0cnVjdGVkUmVzcG9uc2VOb2RlLmF0b20pLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhZGRBdHRyaWJ1dGVzJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIHJlcXVpcmVkIGF0dHJpYnV0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gRXhwbGljaXRDb25zdHJ1Y3RlZFJlc3BvbnNlTm9kZS5hZGRBdHRyaWJ1dGVzKCk7XG5cbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzKS50b0hhdmVQcm9wZXJ0eSgnaW5kZXgnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzKS50b0hhdmVQcm9wZXJ0eSgndmFsdWUnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzKS50b0hhdmVQcm9wZXJ0eSgndXBkYXRlZCcpO1xuXG4gICAgICBleHBlY3QoYXR0cmlidXRlcy5pbmRleCkudG9FcXVhbCh7IGRlZmF1bHQ6IG51bGwgfSk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlcy52YWx1ZSkudG9FcXVhbCh7IGRlZmF1bHQ6ICcnIH0pO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMudXBkYXRlZCkudG9FcXVhbCh7IGRlZmF1bHQ6ICcnIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncGFyc2VIVE1MJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIHBhcnNpbmcgcnVsZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlcyA9IEV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUucGFyc2VIVE1MKCk7XG5cbiAgICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJ1bGVzKSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChydWxlcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgICAgZXhwZWN0KHJ1bGVzWzBdKS50b0hhdmVQcm9wZXJ0eSgndGFnJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJIVE1MJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHNwYW4gd2l0aCBhdHRyaWJ1dGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gRXhwbGljaXRDb25zdHJ1Y3RlZFJlc3BvbnNlTm9kZS5yZW5kZXJIVE1MKHtcbiAgICAgICAgSFRNTEF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICBpbmRleDogJzEnLFxuICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgdmFsdWU6ICd0ZXN0JyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0WzBdKS50b0JlKCdzcGFuJyk7XG4gICAgICBleHBlY3QocmVzdWx0WzFdKS50b0hhdmVQcm9wZXJ0eSgnZGF0YS10eXBlJywgJ2V4cGxpY2l0X2NvbnN0cnVjdGVkX3Jlc3BvbnNlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhZGROb2RlVmlldycsICgpID0+IHtcbiAgICBpdCgncmV0dXJucyBSZWFjdE5vZGVWaWV3UmVuZGVyZXIgcmVzdWx0JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gRXhwbGljaXRDb25zdHJ1Y3RlZFJlc3BvbnNlTm9kZS5hZGROb2RlVmlldygpO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnRHJhZ0luVGhlQmxhbmtOb2RlJywgKCkgPT4ge1xuICBkZXNjcmliZSgnY29uZmlndXJhdGlvbicsICgpID0+IHtcbiAgICBpdCgnaGFzIGNvcnJlY3QgbmFtZScsICgpID0+IHtcbiAgICAgIGV4cGVjdChEcmFnSW5UaGVCbGFua05vZGUubmFtZSkudG9CZSgnZHJhZ19pbl90aGVfYmxhbmsnKTtcbiAgICB9KTtcblxuICAgIGl0KCdpcyBpbmxpbmUnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoRHJhZ0luVGhlQmxhbmtOb2RlLmlubGluZSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdpcyBpbiBpbmxpbmUgZ3JvdXAnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoRHJhZ0luVGhlQmxhbmtOb2RlLmdyb3VwKS50b0JlKCdpbmxpbmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdpcyBhdG9taWMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoRHJhZ0luVGhlQmxhbmtOb2RlLmF0b20pLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdhZGRBdHRyaWJ1dGVzJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIHJlcXVpcmVkIGF0dHJpYnV0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gRHJhZ0luVGhlQmxhbmtOb2RlLmFkZEF0dHJpYnV0ZXMoKTtcblxuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMpLnRvSGF2ZVByb3BlcnR5KCdpbmRleCcpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMpLnRvSGF2ZVByb3BlcnR5KCdpZCcpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMpLnRvSGF2ZVByb3BlcnR5KCd2YWx1ZScpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMpLnRvSGF2ZVByb3BlcnR5KCdpblRhYmxlJyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlcykudG9IYXZlUHJvcGVydHkoJ3VwZGF0ZWQnKTtcblxuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMuaW5kZXgpLnRvRXF1YWwoeyBkZWZhdWx0OiBudWxsIH0pO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMuaWQpLnRvRXF1YWwoeyBkZWZhdWx0OiBudWxsIH0pO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMudmFsdWUpLnRvRXF1YWwoeyBkZWZhdWx0OiAnJyB9KTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzLmluVGFibGUpLnRvRXF1YWwoeyBkZWZhdWx0OiBudWxsIH0pO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMudXBkYXRlZCkudG9FcXVhbCh7IGRlZmF1bHQ6ICcnIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncGFyc2VIVE1MJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIHBhcnNpbmcgcnVsZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlcyA9IERyYWdJblRoZUJsYW5rTm9kZS5wYXJzZUhUTUwoKTtcblxuICAgICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocnVsZXMpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHJ1bGVzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgICBleHBlY3QocnVsZXNbMF0pLnRvSGF2ZVByb3BlcnR5KCd0YWcnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlbmRlckhUTUwnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgc3BhbiB3aXRoIGF0dHJpYnV0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBEcmFnSW5UaGVCbGFua05vZGUucmVuZGVySFRNTCh7XG4gICAgICAgIEhUTUxBdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgaW5kZXg6ICcxJyxcbiAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgIHZhbHVlOiAndGVzdCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdFswXSkudG9CZSgnc3BhbicpO1xuICAgICAgZXhwZWN0KHJlc3VsdFsxXSkudG9IYXZlUHJvcGVydHkoJ2RhdGEtdHlwZScsICdkcmFnX2luX3RoZV9ibGFuaycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkTm9kZVZpZXcnLCAoKSA9PiB7XG4gICAgaXQoJ3JldHVybnMgUmVhY3ROb2RlVmlld1JlbmRlcmVyIHJlc3VsdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IERyYWdJblRoZUJsYW5rTm9kZS5hZGROb2RlVmlldygpO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnSW5saW5lRHJvcGRvd25Ob2RlJywgKCkgPT4ge1xuICBkZXNjcmliZSgnY29uZmlndXJhdGlvbicsICgpID0+IHtcbiAgICBpdCgnaGFzIGNvcnJlY3QgbmFtZScsICgpID0+IHtcbiAgICAgIGV4cGVjdChJbmxpbmVEcm9wZG93bk5vZGUubmFtZSkudG9CZSgnaW5saW5lX2Ryb3Bkb3duJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaXMgaW5saW5lJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KElubGluZURyb3Bkb3duTm9kZS5pbmxpbmUpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaXMgaW4gaW5saW5lIGdyb3VwJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KElubGluZURyb3Bkb3duTm9kZS5ncm91cCkudG9CZSgnaW5saW5lJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaXMgYXRvbWljJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KElubGluZURyb3Bkb3duTm9kZS5hdG9tKS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkQXR0cmlidXRlcycsICgpID0+IHtcbiAgICBpdCgncmV0dXJucyByZXF1aXJlZCBhdHRyaWJ1dGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IElubGluZURyb3Bkb3duTm9kZS5hZGRBdHRyaWJ1dGVzKCk7XG5cbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzKS50b0hhdmVQcm9wZXJ0eSgnaW5kZXgnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzKS50b0hhdmVQcm9wZXJ0eSgndmFsdWUnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzKS50b0hhdmVQcm9wZXJ0eSgndXBkYXRlZCcpO1xuXG4gICAgICBleHBlY3QoYXR0cmlidXRlcy5pbmRleCkudG9FcXVhbCh7IGRlZmF1bHQ6IG51bGwgfSk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlcy52YWx1ZSkudG9FcXVhbCh7IGRlZmF1bHQ6ICcnIH0pO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXMudXBkYXRlZCkudG9FcXVhbCh7IGRlZmF1bHQ6ICcnIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncGFyc2VIVE1MJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIHBhcnNpbmcgcnVsZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlcyA9IElubGluZURyb3Bkb3duTm9kZS5wYXJzZUhUTUwoKTtcblxuICAgICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocnVsZXMpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHJ1bGVzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgICBleHBlY3QocnVsZXNbMF0pLnRvSGF2ZVByb3BlcnR5KCd0YWcnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlbmRlckhUTUwnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgc3BhbiB3aXRoIGF0dHJpYnV0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBJbmxpbmVEcm9wZG93bk5vZGUucmVuZGVySFRNTCh7XG4gICAgICAgIEhUTUxBdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgaW5kZXg6ICcxJyxcbiAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgIHZhbHVlOiAndGVzdCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdFswXSkudG9CZSgnc3BhbicpO1xuICAgICAgZXhwZWN0KHJlc3VsdFsxXSkudG9IYXZlUHJvcGVydHkoJ2RhdGEtdHlwZScsICdpbmxpbmVfZHJvcGRvd24nKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2FkZE5vZGVWaWV3JywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIFJlYWN0Tm9kZVZpZXdSZW5kZXJlciByZXN1bHQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBJbmxpbmVEcm9wZG93bk5vZGUuYWRkTm9kZVZpZXcoKTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsYUFBQSxHQUFBQyxPQUFBO0FBT0FDLElBQUksQ0FBQ0MsSUFBSSxDQUFDLGNBQWMsRUFBRTtFQUFBLE9BQU87SUFDL0JDLFNBQVMsRUFBRTtNQUFFQyxNQUFNLEVBQUVILElBQUksQ0FBQ0ksRUFBRSxDQUFDLFVBQUNDLE1BQU07UUFBQSxPQUFLQSxNQUFNO01BQUE7SUFBRSxDQUFDO0lBQ2xEQyxJQUFJLEVBQUU7TUFBRUgsTUFBTSxFQUFFSCxJQUFJLENBQUNJLEVBQUUsQ0FBQyxVQUFDQyxNQUFNO1FBQUEsT0FBS0EsTUFBTTtNQUFBO0lBQUU7RUFDOUMsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVITCxJQUFJLENBQUNDLElBQUksQ0FBQyxlQUFlLEVBQUU7RUFBQSxPQUFPO0lBQ2hDSyxJQUFJLEVBQUU7TUFBRUgsTUFBTSxFQUFFSCxJQUFJLENBQUNJLEVBQUUsQ0FBQyxVQUFDQyxNQUFNO1FBQUEsT0FBS0EsTUFBTTtNQUFBO0lBQUUsQ0FBQztJQUM3Q0UscUJBQXFCLEVBQUVQLElBQUksQ0FBQ0ksRUFBRSxDQUFDLFVBQUNJLFNBQVM7TUFBQSxPQUFLQSxTQUFTO0lBQUE7RUFDekQsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVIUixJQUFJLENBQUNDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtFQUFBLE9BQU87SUFDcENRLE1BQU0sRUFBRVQsSUFBSSxDQUFDSSxFQUFFLENBQUMsVUFBVUMsTUFBTSxFQUFFO01BQ2hDLE9BQU9BLE1BQU07SUFDZixDQUFDLENBQUM7SUFDRkssU0FBUyxFQUFFVixJQUFJLENBQUNJLEVBQUUsQ0FBQyxVQUFVTyxHQUFHLEVBQUU7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
@@ -1,11 +1,28 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.symbol.js");
4
+ require("core-js/modules/es.array.filter.js");
5
+ require("core-js/modules/es.array.for-each.js");
6
+ require("core-js/modules/es.array.iterator.js");
7
+ require("core-js/modules/es.object.define-properties.js");
8
+ require("core-js/modules/es.object.define-property.js");
9
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
10
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
11
+ require("core-js/modules/es.object.keys.js");
12
+ require("core-js/modules/es.object.to-string.js");
13
+ require("core-js/modules/es.string.iterator.js");
14
+ require("core-js/modules/es.weak-map.js");
15
+ require("core-js/modules/web.dom-collections.for-each.js");
16
+ require("core-js/modules/web.dom-collections.iterator.js");
3
17
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
18
  var _typeof = require("@babel/runtime/helpers/typeof");
5
19
  Object.defineProperty(exports, "__esModule", {
6
20
  value: true
7
21
  });
8
22
  exports["default"] = void 0;
23
+ require("core-js/modules/es.array.includes.js");
24
+ require("core-js/modules/es.number.to-fixed.js");
25
+ require("core-js/modules/es.parse-int.js");
9
26
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
27
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
28
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -143,7 +160,10 @@ function ImageComponent(props) {
143
160
  resizeHandle.addEventListener('mousedown', initResize, false);
144
161
  }
145
162
  return function () {
146
- if (resizeHandle) resizeHandle.removeEventListener('mousedown', initResize, false);
163
+ if (resizeHandle) {
164
+ resizeHandle.removeEventListener('mousedown', initResize, false);
165
+ }
166
+ options.imageHandling.onDelete(node);
147
167
  };
148
168
  }, []);
149
169
  (0, _react.useEffect)(function () {
@@ -285,4 +305,4 @@ ImageComponent.propTypes = {
285
305
  maxImageHeight: _propTypes["default"].number
286
306
  };
287
307
  var _default = exports["default"] = ImageComponent;
288
- //# sourceMappingURL=component.js.map
308
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9pc0VxdWFsIiwiX2RlYnVnIiwiX0xpbmVhclByb2dyZXNzIiwiX3N0eWxlcyIsIl9yZWFjdDIiLCJfSW5zZXJ0SW1hZ2VIYW5kbGVyIiwiX0ltYWdlVG9vbGJhciIsIl9jdXN0b21Ub29sYmFyV3JhcHBlciIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJsb2ciLCJkZWJ1ZyIsIlN0eWxlZFByb2dyZXNzIiwic3R5bGVkIiwiTGluZWFyUHJvZ3Jlc3MiLCJzaG91bGRGb3J3YXJkUHJvcCIsInByb3AiLCJfcmVmIiwiaGlkZVByb2dyZXNzIiwicG9zaXRpb24iLCJsZWZ0Iiwid2lkdGgiLCJ0b3AiLCJ0cmFuc2l0aW9uIiwib3BhY2l0eSIsIlN0eWxlZFJvb3QiLCJpbmNsdWRlcyIsIl9yZWYyIiwidGhlbWUiLCJhY3RpdmUiLCJsb2FkaW5nIiwicGVuZGluZ0RlbGV0ZSIsImJvcmRlciIsImNvbmNhdCIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsImNvbW1vbiIsIndoaXRlIiwiZGlzcGxheSIsIlN0eWxlZEltYWdlQ29udGFpbmVyIiwiX3JlZjMiLCJhbGlnbkl0ZW1zIiwiU3R5bGVkUmVzaXplIiwiX3JlZjQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjdXJzb3IiLCJoZWlnaHQiLCJib3JkZXJSYWRpdXMiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJzaXplUHgiLCJzIiwiSW1hZ2VDb21wb25lbnQiLCJwcm9wcyIsIm5vZGUiLCJlZGl0b3IiLCJhdHRyaWJ1dGVzIiwib25Gb2N1cyIsInNlbGVjdGVkIiwib3B0aW9ucyIsIl9wcm9wcyRtYXhJbWFnZVdpZHRoIiwibWF4SW1hZ2VXaWR0aCIsIl9wcm9wcyRtYXhJbWFnZUhlaWdodCIsIm1heEltYWdlSGVpZ2h0IiwibGF0ZXgiLCJoYW5kbGVDaGFuZ2UiLCJoYW5kbGVEb25lIiwiYWx0IiwiYXR0cnMiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzaG93VG9vbGJhciIsInNldFNob3dUb29sYmFyIiwiaW1nUmVmIiwidXNlUmVmIiwicmVzaXplUmVmIiwidG9vbGJhclJlZiIsImdldFBlcmNlbnRGcm9tV2lkdGgiLCJ1c2VDYWxsYmFjayIsImZsb29yZWQiLCJjdXJyZW50IiwibmF0dXJhbFdpZHRoIiwicGFyc2VJbnQiLCJ0b0ZpeGVkIiwiYXBwbHlTaXplRGF0YSIsInVwZGF0ZSIsInJlc2l6ZVBlcmNlbnQiLCJpc0VxdWFsIiwiY29tbWFuZHMiLCJ1cGRhdGVBdHRyaWJ1dGVzIiwidXNlRWZmZWN0Iiwic2VsZWN0aW9uIiwic3RhdGUiLCJvbmx5VGhpc05vZGVTZWxlY3RlZCIsImZyb20iLCJub2RlU2l6ZSIsInRvIiwiaW1hZ2VIYW5kbGluZyIsImluc2VydEltYWdlUmVxdWVzdGVkIiwiZmluaXNoIiwiSW5zZXJ0SW1hZ2VIYW5kbGVyIiwicmVzaXplSGFuZGxlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImluaXRSZXNpemUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25EZWxldGUiLCJsb2FkSW1hZ2UiLCJib3giLCJzdHlsZSIsInciLCJNYXRoIiwibWluIiwiaCIsIm5hdHVyYWxIZWlnaHQiLCJ1cGRhdGVBc3BlY3QiLCJpbml0aWFsIiwibmV4dCIsImtlZXBBc3BlY3QiLCJ1bmRlZmluZWQiLCJyZXNpemVUeXBlIiwicmF0aW8iLCJzdGFydFJlc2l6ZSIsImJvdW5kcyIsInRhcmdldCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNsaWVudFgiLCJjbGllbnRZIiwib25DaGFuZ2UiLCJuZXdWYWx1ZXMiLCJzdG9wUmVzaXplIiwid2luZG93Iiwib2JqZWN0Rml0IiwiZmxleEFsaWduIiwiY2VudGVyIiwicmlnaHQiLCJhbGlnbm1lbnQiLCJjcmVhdGVFbGVtZW50IiwiTm9kZVZpZXdXcmFwcGVyIiwibG9hZGVkIiwiZGVsZXRlU3RhdHVzIiwianVzdGlmeUNvbnRlbnQiLCJtb2RlIiwidmFsdWUiLCJwZXJjZW50IiwiX2V4dGVuZHMyIiwicmVmIiwic3JjIiwib25Mb2FkIiwiY2xhc3NOYW1lIiwiekluZGV4IiwiYmFja2dyb3VuZCIsImJveFNoYWRvdyIsInNob3dEb25lIiwib25Eb25lIiwiX3Byb3BzJGltYWdlSGFuZGxpbmciLCJmb2N1cyIsImRpc2FibGVJbWFnZUFsaWdubWVudEJ1dHRvbnMiLCJpbWFnZUxvYWRlZCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJmdW5jIiwibnVtYmVyIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dGVuc2lvbnMvY29tcG9uZW50LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IExpbmVhclByb2dyZXNzIGZyb20gJ0BtdWkvbWF0ZXJpYWwvTGluZWFyUHJvZ3Jlc3MnO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuaW1wb3J0IHsgTm9kZVZpZXdXcmFwcGVyIH0gZnJvbSAnQHRpcHRhcC9yZWFjdCc7XG5pbXBvcnQgSW5zZXJ0SW1hZ2VIYW5kbGVyIGZyb20gJy4uL2NvbXBvbmVudHMvaW1hZ2UvSW5zZXJ0SW1hZ2VIYW5kbGVyJztcbmltcG9ydCBJbWFnZVRvb2xiYXIgZnJvbSAnLi4vY29tcG9uZW50cy9pbWFnZS9JbWFnZVRvb2xiYXInO1xuaW1wb3J0IEN1c3RvbVRvb2xiYXJXcmFwcGVyIGZyb20gJy4vY3VzdG9tLXRvb2xiYXItd3JhcHBlcic7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6aW1hZ2U6Y29tcG9uZW50Jyk7XG5cbmNvbnN0IFN0eWxlZFByb2dyZXNzID0gc3R5bGVkKExpbmVhclByb2dyZXNzLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiAocHJvcCkgPT4gcHJvcCAhPT0gJ2hpZGVQcm9ncmVzcycsXG59KSgoeyBoaWRlUHJvZ3Jlc3MgfSkgPT4gKHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIGxlZnQ6ICcwJyxcbiAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gIHRvcDogJzAlJyxcbiAgdHJhbnNpdGlvbjogJ29wYWNpdHkgMjAwbXMgbGluZWFyJyxcbiAgLi4uKGhpZGVQcm9ncmVzcyAmJiB7XG4gICAgb3BhY2l0eTogMCxcbiAgfSksXG59KSk7XG5cbmNvbnN0IFN0eWxlZFJvb3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IChwcm9wKSA9PiAhWydhY3RpdmUnLCAnbG9hZGluZycsICdwZW5kaW5nRGVsZXRlJ10uaW5jbHVkZXMocHJvcCksXG59KSgoeyB0aGVtZSwgYWN0aXZlLCBsb2FkaW5nLCBwZW5kaW5nRGVsZXRlIH0pID0+ICh7XG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBib3JkZXI6IGFjdGl2ZSA/IGBzb2xpZCAxcHggJHt0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbn1gIDogYHNvbGlkIDFweCAke3RoZW1lLnBhbGV0dGUuY29tbW9uLndoaXRlfWAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgdHJhbnNpdGlvbjogJ29wYWNpdHkgMjAwbXMgbGluZWFyJyxcbiAgLi4uKGxvYWRpbmcgJiYge1xuICAgIG9wYWNpdHk6IDAuMyxcbiAgfSksXG4gIC4uLihwZW5kaW5nRGVsZXRlICYmIHtcbiAgICBvcGFjaXR5OiAwLjMsXG4gIH0pLFxufSkpO1xuXG5jb25zdCBTdHlsZWRJbWFnZUNvbnRhaW5lciA9IHN0eWxlZCgnZGl2JykoKHsgdGhlbWUgfSkgPT4gKHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAnJiY6aG92ZXIgPiAucmVzaXplJzoge1xuICAgIGRpc3BsYXk6ICdibG9jaycsXG4gIH0sXG59KSk7XG5cbmNvbnN0IFN0eWxlZFJlc2l6ZSA9IHN0eWxlZCgnZGl2JykoKHsgdGhlbWUgfSkgPT4gKHtcbiAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbixcbiAgY3Vyc29yOiAnY29sLXJlc2l6ZScsXG4gIGhlaWdodDogJzM1cHgnLFxuICB3aWR0aDogJzVweCcsXG4gIGJvcmRlclJhZGl1czogOCxcbiAgbWFyZ2luTGVmdDogJzVweCcsXG4gIG1hcmdpblJpZ2h0OiAnMTBweCcsXG4gIGRpc3BsYXk6ICdub25lJyxcbn0pKTtcblxuY29uc3Qgc2l6ZVB4ID0gKHMpID0+IChzID8gYCR7c31weGAgOiAnY2FsYygyMHB4KScpO1xuXG5mdW5jdGlvbiBJbWFnZUNvbXBvbmVudChwcm9wcykge1xuICBjb25zdCB7XG4gICAgbm9kZSxcbiAgICBlZGl0b3IsXG4gICAgYXR0cmlidXRlcyxcbiAgICBvbkZvY3VzLFxuICAgIHNlbGVjdGVkLFxuICAgIG9wdGlvbnMsXG4gICAgbWF4SW1hZ2VXaWR0aCA9IDcwMCxcbiAgICBtYXhJbWFnZUhlaWdodCA9IDkwMCxcbiAgICBsYXRleCxcbiAgICBoYW5kbGVDaGFuZ2UsXG4gICAgaGFuZGxlRG9uZSxcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7IGFsdCB9ID0gbm9kZS5hdHRycztcblxuICBjb25zdCBbc2hvd1Rvb2xiYXIsIHNldFNob3dUb29sYmFyXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBpbWdSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHJlc2l6ZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgdG9vbGJhclJlZiA9IHVzZVJlZihudWxsKTtcblxuICBjb25zdCBnZXRQZXJjZW50RnJvbVdpZHRoID0gdXNlQ2FsbGJhY2soKHdpZHRoKSA9PiB7XG4gICAgY29uc3QgZmxvb3JlZCA9ICh3aWR0aCAvIGltZ1JlZi5jdXJyZW50Lm5hdHVyYWxXaWR0aCkgKiA0O1xuICAgIHJldHVybiBwYXJzZUludChmbG9vcmVkLnRvRml4ZWQoMCkgKiAyNSwgMTApO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgYXBwbHlTaXplRGF0YSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIW5vZGUuYXR0cnMud2lkdGggfHwgIWltZ1JlZi5jdXJyZW50KSByZXR1cm47XG5cbiAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICAuLi5ub2RlLmF0dHJzLFxuICAgICAgcmVzaXplUGVyY2VudDogZ2V0UGVyY2VudEZyb21XaWR0aChub2RlLmF0dHJzLndpZHRoKSxcbiAgICB9O1xuXG4gICAgaWYgKCFpc0VxdWFsKHVwZGF0ZSwgbm9kZS5hdHRycykpIHtcbiAgICAgIGVkaXRvci5jb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKCdpbWFnZVVwbG9hZE5vZGUnLCB1cGRhdGUpO1xuICAgIH1cbiAgfSwgW2VkaXRvciwgbm9kZS5hdHRycywgZ2V0UGVyY2VudEZyb21XaWR0aF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvci5zdGF0ZTtcbiAgICBjb25zdCBvbmx5VGhpc05vZGVTZWxlY3RlZCA9IHNlbGVjdGlvbi5mcm9tICsgbm9kZS5ub2RlU2l6ZSA9PT0gc2VsZWN0aW9uLnRvO1xuXG4gICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICBpZiAob25seVRoaXNOb2RlU2VsZWN0ZWQpIHtcbiAgICAgICAgc2V0U2hvd1Rvb2xiYXIoc2VsZWN0ZWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTaG93VG9vbGJhcihzZWxlY3RlZCk7XG4gICAgfVxuICB9LCBbZWRpdG9yLCBub2RlLCBzZWxlY3RlZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgb3B0aW9ucy5pbWFnZUhhbmRsaW5nLmluc2VydEltYWdlUmVxdWVzdGVkKG5vZGUsIChmaW5pc2gpID0+IG5ldyBJbnNlcnRJbWFnZUhhbmRsZXIoZWRpdG9yLCBub2RlLCBmaW5pc2gpKTtcbiAgICBhcHBseVNpemVEYXRhKCk7XG5cbiAgICBjb25zdCByZXNpemVIYW5kbGUgPSByZXNpemVSZWYuY3VycmVudDtcbiAgICBpZiAocmVzaXplSGFuZGxlKSB7XG4gICAgICByZXNpemVIYW5kbGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaW5pdFJlc2l6ZSwgZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlc2l6ZUhhbmRsZSkge1xuICAgICAgICByZXNpemVIYW5kbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaW5pdFJlc2l6ZSwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBvcHRpb25zLmltYWdlSGFuZGxpbmcub25EZWxldGUobm9kZSk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYXBwbHlTaXplRGF0YSgpO1xuICB9KTtcblxuICBjb25zdCBsb2FkSW1hZ2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgYm94ID0gaW1nUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFib3gpIHJldHVybjtcblxuICAgIGlmICghYm94LnN0eWxlLndpZHRoIHx8IGJveC5zdHlsZS53aWR0aCA9PT0gJ2NhbGMoMjBweCknKSB7XG4gICAgICBjb25zdCB3ID0gTWF0aC5taW4oYm94Lm5hdHVyYWxXaWR0aCwgbWF4SW1hZ2VXaWR0aCk7XG4gICAgICBjb25zdCBoID0gTWF0aC5taW4oYm94Lm5hdHVyYWxIZWlnaHQsIG1heEltYWdlSGVpZ2h0KTtcblxuICAgICAgYm94LnN0eWxlLndpZHRoID0gYCR7d31weGA7XG4gICAgICBib3guc3R5bGUuaGVpZ2h0ID0gYCR7aH1weGA7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHsgd2lkdGg6IHcsIGhlaWdodDogaCB9O1xuICAgICAgaWYgKCFpc0VxdWFsKHVwZGF0ZSwgbm9kZS5hdHRycykpIHtcbiAgICAgICAgZWRpdG9yLmNvbW1hbmRzLnVwZGF0ZUF0dHJpYnV0ZXMoJ2ltYWdlVXBsb2FkTm9kZScsIHVwZGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCBub2RlLmF0dHJzLCBtYXhJbWFnZVdpZHRoLCBtYXhJbWFnZUhlaWdodF0pO1xuXG4gIGNvbnN0IHVwZGF0ZUFzcGVjdCA9IChpbml0aWFsLCBuZXh0LCBrZWVwQXNwZWN0ID0gdHJ1ZSwgcmVzaXplVHlwZSkgPT4ge1xuICAgIGlmIChrZWVwQXNwZWN0KSB7XG4gICAgICBjb25zdCByYXRpbyA9IGluaXRpYWwud2lkdGggLyBpbml0aWFsLmhlaWdodDtcbiAgICAgIGlmIChyZXNpemVUeXBlID09PSAnaGVpZ2h0JykgcmV0dXJuIHsgd2lkdGg6IG5leHQuaGVpZ2h0ICogcmF0aW8sIGhlaWdodDogbmV4dC5oZWlnaHQgfTtcbiAgICAgIHJldHVybiB7IHdpZHRoOiBuZXh0LndpZHRoLCBoZWlnaHQ6IG5leHQud2lkdGggLyByYXRpbyB9O1xuICAgIH1cbiAgICByZXR1cm4gbmV4dDtcbiAgfTtcblxuICBjb25zdCBzdGFydFJlc2l6ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBjb25zdCBib3ggPSBpbWdSZWYuY3VycmVudDtcbiAgICAgIGlmICghYm94KSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGJvdW5kcyA9IGUudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgaW5pdGlhbCA9IHsgd2lkdGg6IGJveC5uYXR1cmFsV2lkdGgsIGhlaWdodDogYm94Lm5hdHVyYWxIZWlnaHQgfTtcblxuICAgICAgY29uc3QgbmV4dCA9IHVwZGF0ZUFzcGVjdChpbml0aWFsLCB7XG4gICAgICAgIHdpZHRoOiBlLmNsaWVudFggLSBib3VuZHMubGVmdCxcbiAgICAgICAgaGVpZ2h0OiBlLmNsaWVudFkgLSBib3VuZHMudG9wLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChuZXh0LndpZHRoID4gNTAgJiYgbmV4dC5oZWlnaHQgPiA1MCAmJiBuZXh0LndpZHRoIDw9IDcwMCAmJiBuZXh0LmhlaWdodCA8PSA5MDApIHtcbiAgICAgICAgYm94LnN0eWxlLndpZHRoID0gYCR7bmV4dC53aWR0aH1weGA7XG4gICAgICAgIGJveC5zdHlsZS5oZWlnaHQgPSBgJHtuZXh0LmhlaWdodH1weGA7XG5cbiAgICAgICAgY29uc3QgdXBkYXRlID0geyB3aWR0aDogbmV4dC53aWR0aCwgaGVpZ2h0OiBuZXh0LmhlaWdodCB9O1xuICAgICAgICBpZiAoIWlzRXF1YWwodXBkYXRlLCBub2RlLmF0dHJzKSkge1xuICAgICAgICAgIGVkaXRvci5jb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKCdpbWFnZVVwbG9hZE5vZGUnLCB1cGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbZWRpdG9yLCBub2RlLmF0dHJzXSxcbiAgKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdWYWx1ZXMpID0+IHtcbiAgICAgIGVkaXRvci5jb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKCdpbWFnZVVwbG9hZE5vZGUnLCBuZXdWYWx1ZXMpO1xuICAgIH0sXG4gICAgW2VkaXRvcl0sXG4gICk7XG5cbiAgY29uc3Qgc3RvcFJlc2l6ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgc3RhcnRSZXNpemUpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgc3RvcFJlc2l6ZSk7XG4gIH0sIFtzdGFydFJlc2l6ZV0pO1xuXG4gIGNvbnN0IGluaXRSZXNpemUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHN0YXJ0UmVzaXplKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHN0b3BSZXNpemUpO1xuICB9LCBbc3RhcnRSZXNpemUsIHN0b3BSZXNpemVdKTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICB3aWR0aDogc2l6ZVB4KG5vZGUuYXR0cnMud2lkdGgpLFxuICAgIGhlaWdodDogc2l6ZVB4KG5vZGUuYXR0cnMuaGVpZ2h0KSxcbiAgICBvYmplY3RGaXQ6ICdjb250YWluJyxcbiAgfTtcblxuICBjb25zdCBmbGV4QWxpZ24gPSB7IGxlZnQ6ICdmbGV4LXN0YXJ0JywgY2VudGVyOiAnY2VudGVyJywgcmlnaHQ6ICdmbGV4LWVuZCcgfVtub2RlLmF0dHJzLmFsaWdubWVudF0gfHwgJ2ZsZXgtc3RhcnQnO1xuXG4gIHJldHVybiAoXG4gICAgPE5vZGVWaWV3V3JhcHBlcj5cbiAgICAgIDxTdHlsZWRSb290XG4gICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgIGFjdGl2ZT17c2VsZWN0ZWR9XG4gICAgICAgIGxvYWRpbmc9eyFub2RlLmF0dHJzLmxvYWRlZH1cbiAgICAgICAgcGVuZGluZ0RlbGV0ZT17bm9kZS5hdHRycy5kZWxldGVTdGF0dXMgPT09ICdwZW5kaW5nJ31cbiAgICAgICAgc3R5bGU9e3sganVzdGlmeUNvbnRlbnQ6IGZsZXhBbGlnbiB9fVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkUHJvZ3Jlc3MgbW9kZT1cImRldGVybWluYXRlXCIgdmFsdWU9e25vZGUuYXR0cnMucGVyY2VudCB8fCAwfSBoaWRlUHJvZ3Jlc3M9e25vZGUuYXR0cnMubG9hZGVkfSAvPlxuXG4gICAgICAgIDxTdHlsZWRJbWFnZUNvbnRhaW5lcj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICB7Li4uYXR0cmlidXRlc31cbiAgICAgICAgICAgIHJlZj17aW1nUmVmfVxuICAgICAgICAgICAgc3JjPXtub2RlLmF0dHJzLnNyY31cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIG9uTG9hZD17bG9hZEltYWdlfVxuICAgICAgICAgICAgYWx0PXtub2RlLmF0dHJzLmFsdH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTdHlsZWRSZXNpemUgcmVmPXtyZXNpemVSZWZ9IGNsYXNzTmFtZT1cInJlc2l6ZVwiIC8+XG4gICAgICAgIDwvU3R5bGVkSW1hZ2VDb250YWluZXI+XG4gICAgICA8L1N0eWxlZFJvb3Q+XG5cbiAgICAgIHtzaG93VG9vbGJhciAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICByZWY9e3Rvb2xiYXJSZWZ9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAnMTAwJScsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgekluZGV4OiAyMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1lZGl0YWJsZS1odG1sLXRvb2xiYXItYmcsICNlZmVmZWYpJyxcbiAgICAgICAgICAgIGJveFNoYWRvdzpcbiAgICAgICAgICAgICAgJzBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiknLFxuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEN1c3RvbVRvb2xiYXJXcmFwcGVyXG4gICAgICAgICAgICBzaG93RG9uZVxuICAgICAgICAgICAgey4uLm9wdGlvbnN9XG4gICAgICAgICAgICBvbkRvbmU9eygpID0+IHtcbiAgICAgICAgICAgICAgc2V0U2hvd1Rvb2xiYXIoZmFsc2UpO1xuICAgICAgICAgICAgICBwcm9wcy5pbWFnZUhhbmRsaW5nPy5vbkRvbmUoKTtcbiAgICAgICAgICAgICAgcHJvcHMuZWRpdG9yLmNvbW1hbmRzLmZvY3VzKCdlbmQnKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEltYWdlVG9vbGJhclxuICAgICAgICAgICAgICBkaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zPXtvcHRpb25zLmRpc2FibGVJbWFnZUFsaWdubWVudEJ1dHRvbnN9XG4gICAgICAgICAgICAgIGFsdD17bm9kZS5hdHRycy5hbHR9XG4gICAgICAgICAgICAgIGltYWdlTG9hZGVkPXtub2RlLmF0dHJzLmxvYWRlZH1cbiAgICAgICAgICAgICAgYWxpZ25tZW50PXtub2RlLmF0dHJzLmFsaWdubWVudCB8fCAnbGVmdCd9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DdXN0b21Ub29sYmFyV3JhcHBlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvTm9kZVZpZXdXcmFwcGVyPlxuICApO1xufVxuXG5JbWFnZUNvbXBvbmVudC5wcm9wVHlwZXMgPSB7XG4gIG5vZGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZWRpdG9yOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGF0dHJpYnV0ZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICBtYXhJbWFnZVdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuICBtYXhJbWFnZUhlaWdodDogUHJvcFR5cGVzLm51bWJlcixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlQ29tcG9uZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsbUJBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLGFBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLHFCQUFBLEdBQUFSLHNCQUFBLENBQUFGLE9BQUE7QUFBNEQsU0FBQUQsd0JBQUFZLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFkLHVCQUFBLFlBQUFBLHdCQUFBWSxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMs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
@@ -1,10 +1,21 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.object.define-property.js");
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.removeDialogs = exports.CSSMark = void 0;
9
+ require("core-js/modules/es.array.concat.js");
10
+ require("core-js/modules/es.array.find.js");
11
+ require("core-js/modules/es.array.for-each.js");
12
+ require("core-js/modules/es.array.includes.js");
13
+ require("core-js/modules/es.array.map.js");
14
+ require("core-js/modules/es.array.slice.js");
15
+ require("core-js/modules/es.function.name.js");
16
+ require("core-js/modules/es.object.to-string.js");
17
+ require("core-js/modules/es.string.includes.js");
18
+ require("core-js/modules/web.dom-collections.for-each.js");
8
19
  var _react = _interopRequireDefault(require("react"));
9
20
  var _reactDom = _interopRequireDefault(require("react-dom"));
10
21
  var _core = require("@tiptap/core");
@@ -1 +1 @@
1
- {"version":3,"file":"css.js","names":["_react","_interopRequireDefault","require","_reactDom","_core","_List","_ListItem","removeDialogs","exports","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","_ref","editor","callback","opts","selectedText","parentNode","editorDOM","options","element","newEl","createElement","selection","state","className","popoverEl","closePopOver","firstCallMade","listener","e","focusIsInModals","contains","target","focusIsInEditor","handleClose","undefined","body","removeEventListener","handleChange","name","parentNodeClass","attrs","createHTML","html","concat","tag","object","text","slice","$anchor","textOffset","$head","el","style","background","height","padding","overflow","display","flexFlow","component","names","map","i","key","button","onClick","marginRight","dangerouslySetInnerHTML","__html","ReactDOM","render","cursorItem","view","nodeDOM","from","cursorNode","bodyRect","parentElement","getBoundingClientRect","boundRect","appendChild","maxWidth","position","top","zIndex","leftValue","left","Math","abs","offsetWidth","rightValue","x","leftAlignedWidth","right","rightAlignedWidth","addEventListener","CSSMark","Mark","create","addOptions","classes","addAttributes","parseHTML","getAttribute","renderHTML","attributes","_this","getAttrs","cls","match","find","includes","_ref2","HTMLAttributes","mergeAttributes","addCommands","_this2","setCSSClass","_ref3","commands","setMark","unsetCSSClass","_ref4","unsetMark","openCSSClassDialog","_ref5","doc","textBetween","to","$from","nodeAfter","extraCSSRules","chain","focus","run"],"sources":["../../src/extensions/css.js"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Mark, mergeAttributes } from '@tiptap/core';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\n\nexport const removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-css-dialog');\n\n prevDialogs.forEach((s) => s.remove());\n};\n\nconst insertDialog = ({ editor, callback, opts, selectedText, parentNode }) => {\n const editorDOM = editor.options.element;\n const newEl = document.createElement('div');\n const { selection } = editor.state;\n\n removeDialogs();\n\n newEl.className = 'insert-css-dialog';\n\n let popoverEl;\n\n const closePopOver = () => {\n if (popoverEl) {\n popoverEl.remove();\n }\n };\n\n let firstCallMade = false;\n\n const listener = (e) => {\n // this will be triggered right after setting it because\n // this toolbar is added on the mousedown event\n // so right after mouseup, the click will be triggered\n if (firstCallMade) {\n const focusIsInModals = newEl.contains(e.target) || (popoverEl && popoverEl.contains(e.target));\n const focusIsInEditor = editorDOM.contains(e.target);\n\n if (!(focusIsInModals || focusIsInEditor)) {\n handleClose();\n }\n } else {\n firstCallMade = true;\n }\n };\n\n const handleClose = () => {\n callback(undefined, true);\n newEl.remove();\n closePopOver();\n document.body.removeEventListener('click', listener);\n };\n\n const handleChange = (name) => {\n callback(name, true);\n newEl.remove();\n closePopOver();\n document.body.removeEventListener('click', listener);\n };\n\n const parentNodeClass = parentNode?.attrs.class;\n const createHTML = (name) => {\n let html = `<span class=\"${name}\">${selectedText}</span>`;\n\n if (parentNode) {\n let tag = 'span';\n\n if (parentNode?.object === 'inline') {\n tag = 'span';\n }\n\n if (parentNode?.object === 'block') {\n tag = 'div';\n }\n\n html = `<${tag} class=\"${parentNodeClass}\">${parentNode.text.slice(\n 0,\n selection.$anchor.textOffset,\n )}${html}${parentNode.text.slice(selection.$head.textOffset)}</${tag}>`;\n }\n\n return html;\n };\n\n const el = (\n <div\n style={{ background: 'white', height: 500, padding: 20, overflow: 'hidden', display: 'flex', flexFlow: 'column' }}\n >\n <h2>Please choose a css class</h2>\n {parentNodeClass && <div>The current parent has this class {parentNodeClass}</div>}\n <List component=\"nav\" style={{ overflow: 'scroll' }}>\n {opts.names.map((name, i) => (\n <ListItem key={`rule-${i}`} button onClick={() => handleChange(name)}>\n <div style={{ marginRight: 20 }}>{name}</div>\n <div\n dangerouslySetInnerHTML={{\n __html: createHTML(name),\n }}\n />\n </ListItem>\n ))}\n </List>\n </div>\n );\n\n ReactDOM.render(el, newEl, () => {\n const cursorItem = editor.view.nodeDOM(editor.state.selection.from);\n const cursorNode = cursorItem?.parentNode;\n\n if (cursorNode) {\n const bodyRect = editorDOM.parentElement.parentElement.parentElement.getBoundingClientRect();\n const boundRect = cursorNode.getBoundingClientRect();\n\n editorDOM.parentElement.parentElement.parentElement.appendChild(newEl);\n\n newEl.style.maxWidth = '500px';\n newEl.style.position = 'absolute';\n newEl.style.top = 0;\n newEl.style.zIndex = 99999;\n\n const leftValue = `${boundRect.left + Math.abs(bodyRect.left) + cursorNode.offsetWidth + 10}px`;\n\n const rightValue = `${boundRect.x}px`;\n\n newEl.style.left = leftValue;\n\n const leftAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = rightValue;\n\n const rightAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = 'unset';\n\n if (leftAlignedWidth >= rightAlignedWidth) {\n newEl.style.left = leftValue;\n } else {\n newEl.style.right = rightValue;\n }\n\n document.body.addEventListener('click', listener);\n }\n });\n};\n\nexport const CSSMark = Mark.create({\n name: 'cssmark',\n\n addOptions() {\n return {\n classes: [],\n };\n },\n\n addAttributes() {\n return {\n class: {\n default: null,\n parseHTML: (el) => el.getAttribute('class'),\n renderHTML: (attributes) => {\n if (!attributes.class) return {};\n return { class: attributes.class };\n },\n },\n };\n },\n\n parseHTML() {\n // Any span with a class that matches one of allowed classes\n return [\n {\n tag: 'span[class]',\n getAttrs: (el) => {\n const cls = el.getAttribute('class') || '';\n const match = this.options.classes.find((name) => cls.includes(name));\n return match ? { class: match } : false;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['span', mergeAttributes(HTMLAttributes), 0];\n },\n\n addCommands() {\n return {\n setCSSClass: (className) => ({ commands }) => {\n return commands.setMark(this.name, { class: className });\n },\n\n unsetCSSClass: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n },\n\n openCSSClassDialog: () => ({ editor }) => {\n insertDialog({\n editor,\n selectedText: editor.state.doc.textBetween(editor.state.selection.from, editor.state.selection.to),\n parentNode: editor.state.selection.$from.nodeAfter,\n opts: this.options.extraCSSRules,\n callback: (className) => {\n if (className) {\n editor\n .chain()\n .focus()\n .setCSSClass(className)\n .run();\n }\n },\n });\n },\n };\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"css.js","names":["_react","_interopRequireDefault","require","_reactDom","_core","_List","_ListItem","removeDialogs","exports","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","_ref","editor","callback","opts","selectedText","parentNode","editorDOM","options","element","newEl","createElement","selection","state","className","popoverEl","closePopOver","firstCallMade","listener","e","focusIsInModals","contains","target","focusIsInEditor","handleClose","undefined","body","removeEventListener","handleChange","name","parentNodeClass","attrs","createHTML","html","concat","tag","object","text","slice","$anchor","textOffset","$head","el","style","background","height","padding","overflow","display","flexFlow","component","names","map","i","key","button","onClick","marginRight","dangerouslySetInnerHTML","__html","ReactDOM","render","cursorItem","view","nodeDOM","from","cursorNode","bodyRect","parentElement","getBoundingClientRect","boundRect","appendChild","maxWidth","position","top","zIndex","leftValue","left","Math","abs","offsetWidth","rightValue","x","leftAlignedWidth","right","rightAlignedWidth","addEventListener","CSSMark","Mark","create","addOptions","classes","addAttributes","parseHTML","getAttribute","renderHTML","attributes","_this","getAttrs","cls","match","find","includes","_ref2","HTMLAttributes","mergeAttributes","addCommands","_this2","setCSSClass","_ref3","commands","setMark","unsetCSSClass","_ref4","unsetMark","openCSSClassDialog","_ref5","doc","textBetween","to","$from","nodeAfter","extraCSSRules","chain","focus","run"],"sources":["../../src/extensions/css.js"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Mark, mergeAttributes } from '@tiptap/core';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\n\nexport const removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-css-dialog');\n\n prevDialogs.forEach((s) => s.remove());\n};\n\nconst insertDialog = ({ editor, callback, opts, selectedText, parentNode }) => {\n const editorDOM = editor.options.element;\n const newEl = document.createElement('div');\n const { selection } = editor.state;\n\n removeDialogs();\n\n newEl.className = 'insert-css-dialog';\n\n let popoverEl;\n\n const closePopOver = () => {\n if (popoverEl) {\n popoverEl.remove();\n }\n };\n\n let firstCallMade = false;\n\n const listener = (e) => {\n // this will be triggered right after setting it because\n // this toolbar is added on the mousedown event\n // so right after mouseup, the click will be triggered\n if (firstCallMade) {\n const focusIsInModals = newEl.contains(e.target) || (popoverEl && popoverEl.contains(e.target));\n const focusIsInEditor = editorDOM.contains(e.target);\n\n if (!(focusIsInModals || focusIsInEditor)) {\n handleClose();\n }\n } else {\n firstCallMade = true;\n }\n };\n\n const handleClose = () => {\n callback(undefined, true);\n newEl.remove();\n closePopOver();\n document.body.removeEventListener('click', listener);\n };\n\n const handleChange = (name) => {\n callback(name, true);\n newEl.remove();\n closePopOver();\n document.body.removeEventListener('click', listener);\n };\n\n const parentNodeClass = parentNode?.attrs.class;\n const createHTML = (name) => {\n let html = `<span class=\"${name}\">${selectedText}</span>`;\n\n if (parentNode) {\n let tag = 'span';\n\n if (parentNode?.object === 'inline') {\n tag = 'span';\n }\n\n if (parentNode?.object === 'block') {\n tag = 'div';\n }\n\n html = `<${tag} class=\"${parentNodeClass}\">${parentNode.text.slice(\n 0,\n selection.$anchor.textOffset,\n )}${html}${parentNode.text.slice(selection.$head.textOffset)}</${tag}>`;\n }\n\n return html;\n };\n\n const el = (\n <div\n style={{ background: 'white', height: 500, padding: 20, overflow: 'hidden', display: 'flex', flexFlow: 'column' }}\n >\n <h2>Please choose a css class</h2>\n {parentNodeClass && <div>The current parent has this class {parentNodeClass}</div>}\n <List component=\"nav\" style={{ overflow: 'scroll' }}>\n {opts.names.map((name, i) => (\n <ListItem key={`rule-${i}`} button onClick={() => handleChange(name)}>\n <div style={{ marginRight: 20 }}>{name}</div>\n <div\n dangerouslySetInnerHTML={{\n __html: createHTML(name),\n }}\n />\n </ListItem>\n ))}\n </List>\n </div>\n );\n\n ReactDOM.render(el, newEl, () => {\n const cursorItem = editor.view.nodeDOM(editor.state.selection.from);\n const cursorNode = cursorItem?.parentNode;\n\n if (cursorNode) {\n const bodyRect = editorDOM.parentElement.parentElement.parentElement.getBoundingClientRect();\n const boundRect = cursorNode.getBoundingClientRect();\n\n editorDOM.parentElement.parentElement.parentElement.appendChild(newEl);\n\n newEl.style.maxWidth = '500px';\n newEl.style.position = 'absolute';\n newEl.style.top = 0;\n newEl.style.zIndex = 99999;\n\n const leftValue = `${boundRect.left + Math.abs(bodyRect.left) + cursorNode.offsetWidth + 10}px`;\n\n const rightValue = `${boundRect.x}px`;\n\n newEl.style.left = leftValue;\n\n const leftAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = rightValue;\n\n const rightAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = 'unset';\n\n if (leftAlignedWidth >= rightAlignedWidth) {\n newEl.style.left = leftValue;\n } else {\n newEl.style.right = rightValue;\n }\n\n document.body.addEventListener('click', listener);\n }\n });\n};\n\nexport const CSSMark = Mark.create({\n name: 'cssmark',\n\n addOptions() {\n return {\n classes: [],\n };\n },\n\n addAttributes() {\n return {\n class: {\n default: null,\n parseHTML: (el) => el.getAttribute('class'),\n renderHTML: (attributes) => {\n if (!attributes.class) return {};\n return { class: attributes.class };\n },\n },\n };\n },\n\n parseHTML() {\n // Any span with a class that matches one of allowed classes\n return [\n {\n tag: 'span[class]',\n getAttrs: (el) => {\n const cls = el.getAttribute('class') || '';\n const match = this.options.classes.find((name) => cls.includes(name));\n return match ? { class: match } : false;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['span', mergeAttributes(HTMLAttributes), 0];\n },\n\n addCommands() {\n return {\n setCSSClass: (className) => ({ commands }) => {\n return commands.setMark(this.name, { class: className });\n },\n\n unsetCSSClass: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n },\n\n openCSSClassDialog: () => ({ editor }) => {\n insertDialog({\n editor,\n selectedText: editor.state.doc.textBetween(editor.state.selection.from, editor.state.selection.to),\n parentNode: editor.state.selection.$from.nodeAfter,\n opts: this.options.extraCSSRules,\n callback: (className) => {\n if (className) {\n editor\n .chain()\n .focus()\n .setCSSClass(className)\n .run();\n }\n },\n });\n },\n };\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.symbol.js");
4
+ require("core-js/modules/es.array.filter.js");
5
+ require("core-js/modules/es.array.for-each.js");
6
+ require("core-js/modules/es.array.iterator.js");
7
+ require("core-js/modules/es.object.define-properties.js");
8
+ require("core-js/modules/es.object.define-property.js");
9
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
10
+ require("core-js/modules/es.object.get-own-property-descriptors.js");
11
+ require("core-js/modules/es.object.keys.js");
12
+ require("core-js/modules/es.object.to-string.js");
13
+ require("core-js/modules/es.string.iterator.js");
14
+ require("core-js/modules/es.weak-map.js");
15
+ require("core-js/modules/web.dom-collections.for-each.js");
16
+ require("core-js/modules/web.dom-collections.iterator.js");
3
17
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
18
  var _typeof = require("@babel/runtime/helpers/typeof");
5
19
  Object.defineProperty(exports, "__esModule", {
@@ -7,6 +21,7 @@ Object.defineProperty(exports, "__esModule", {
7
21
  });
8
22
  exports["default"] = void 0;
9
23
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
24
+ require("core-js/modules/es.array.includes.js");
10
25
  var _react = _interopRequireWildcard(require("react"));
11
26
  var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
12
27
  var _Delete = _interopRequireDefault(require("@mui/icons-material/Delete"));