@uiw/react-md-editor 3.23.4 → 3.23.6
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.
- package/README.md +27 -34
- package/dist/mdeditor.js +66 -56
- package/dist/mdeditor.min.js +1 -1
- package/esm/components/DragBar/index.js +7 -7
- package/lib/components/DragBar/index.js +7 -7
- package/package.json +2 -2
- package/src/__test__/commands.test.tsx +0 -512
- package/src/__test__/editor.test.tsx +0 -88
- package/src/__test__/utils/getSurroundingWord.test.tsx +0 -22
|
@@ -29,8 +29,8 @@ var DragBar = props => {
|
|
|
29
29
|
dragRef.current = undefined;
|
|
30
30
|
document.removeEventListener('mousemove', handleMouseMove);
|
|
31
31
|
document.removeEventListener('mouseup', handleMouseUp);
|
|
32
|
-
(_$dom$current = $dom.current) == null
|
|
33
|
-
(_$dom$current2 = $dom.current) == null
|
|
32
|
+
(_$dom$current = $dom.current) == null || _$dom$current.removeEventListener('touchmove', handleMouseMove);
|
|
33
|
+
(_$dom$current2 = $dom.current) == null || _$dom$current2.removeEventListener('touchend', handleMouseUp);
|
|
34
34
|
}
|
|
35
35
|
function handleMouseDown(event) {
|
|
36
36
|
var _changedTouches$2, _$dom$current3, _$dom$current4;
|
|
@@ -42,25 +42,25 @@ var DragBar = props => {
|
|
|
42
42
|
};
|
|
43
43
|
document.addEventListener('mousemove', handleMouseMove);
|
|
44
44
|
document.addEventListener('mouseup', handleMouseUp);
|
|
45
|
-
(_$dom$current3 = $dom.current) == null
|
|
45
|
+
(_$dom$current3 = $dom.current) == null || _$dom$current3.addEventListener('touchmove', handleMouseMove, {
|
|
46
46
|
passive: false
|
|
47
47
|
});
|
|
48
|
-
(_$dom$current4 = $dom.current) == null
|
|
48
|
+
(_$dom$current4 = $dom.current) == null || _$dom$current4.addEventListener('touchend', handleMouseUp, {
|
|
49
49
|
passive: false
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
useEffect(() => {
|
|
53
53
|
if (document) {
|
|
54
54
|
var _$dom$current5, _$dom$current6;
|
|
55
|
-
(_$dom$current5 = $dom.current) == null
|
|
55
|
+
(_$dom$current5 = $dom.current) == null || _$dom$current5.addEventListener('touchstart', handleMouseDown, {
|
|
56
56
|
passive: false
|
|
57
57
|
});
|
|
58
|
-
(_$dom$current6 = $dom.current) == null
|
|
58
|
+
(_$dom$current6 = $dom.current) == null || _$dom$current6.addEventListener('mousedown', handleMouseDown);
|
|
59
59
|
}
|
|
60
60
|
return () => {
|
|
61
61
|
if (document) {
|
|
62
62
|
var _$dom$current7;
|
|
63
|
-
(_$dom$current7 = $dom.current) == null
|
|
63
|
+
(_$dom$current7 = $dom.current) == null || _$dom$current7.removeEventListener('touchstart', handleMouseDown);
|
|
64
64
|
document.removeEventListener('mousemove', handleMouseMove);
|
|
65
65
|
}
|
|
66
66
|
};
|
|
@@ -34,8 +34,8 @@ var DragBar = function DragBar(props) {
|
|
|
34
34
|
dragRef.current = undefined;
|
|
35
35
|
document.removeEventListener('mousemove', handleMouseMove);
|
|
36
36
|
document.removeEventListener('mouseup', handleMouseUp);
|
|
37
|
-
(_$dom$current = $dom.current) === null || _$dom$current === void 0
|
|
38
|
-
(_$dom$current2 = $dom.current) === null || _$dom$current2 === void 0
|
|
37
|
+
(_$dom$current = $dom.current) === null || _$dom$current === void 0 || _$dom$current.removeEventListener('touchmove', handleMouseMove);
|
|
38
|
+
(_$dom$current2 = $dom.current) === null || _$dom$current2 === void 0 || _$dom$current2.removeEventListener('touchend', handleMouseUp);
|
|
39
39
|
}
|
|
40
40
|
function handleMouseDown(event) {
|
|
41
41
|
var _changedTouches$2, _$dom$current3, _$dom$current4;
|
|
@@ -47,25 +47,25 @@ var DragBar = function DragBar(props) {
|
|
|
47
47
|
};
|
|
48
48
|
document.addEventListener('mousemove', handleMouseMove);
|
|
49
49
|
document.addEventListener('mouseup', handleMouseUp);
|
|
50
|
-
(_$dom$current3 = $dom.current) === null || _$dom$current3 === void 0
|
|
50
|
+
(_$dom$current3 = $dom.current) === null || _$dom$current3 === void 0 || _$dom$current3.addEventListener('touchmove', handleMouseMove, {
|
|
51
51
|
passive: false
|
|
52
52
|
});
|
|
53
|
-
(_$dom$current4 = $dom.current) === null || _$dom$current4 === void 0
|
|
53
|
+
(_$dom$current4 = $dom.current) === null || _$dom$current4 === void 0 || _$dom$current4.addEventListener('touchend', handleMouseUp, {
|
|
54
54
|
passive: false
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
(0, _react.useEffect)(function () {
|
|
58
58
|
if (document) {
|
|
59
59
|
var _$dom$current5, _$dom$current6;
|
|
60
|
-
(_$dom$current5 = $dom.current) === null || _$dom$current5 === void 0
|
|
60
|
+
(_$dom$current5 = $dom.current) === null || _$dom$current5 === void 0 || _$dom$current5.addEventListener('touchstart', handleMouseDown, {
|
|
61
61
|
passive: false
|
|
62
62
|
});
|
|
63
|
-
(_$dom$current6 = $dom.current) === null || _$dom$current6 === void 0
|
|
63
|
+
(_$dom$current6 = $dom.current) === null || _$dom$current6 === void 0 || _$dom$current6.addEventListener('mousedown', handleMouseDown);
|
|
64
64
|
}
|
|
65
65
|
return function () {
|
|
66
66
|
if (document) {
|
|
67
67
|
var _$dom$current7;
|
|
68
|
-
(_$dom$current7 = $dom.current) === null || _$dom$current7 === void 0
|
|
68
|
+
(_$dom$current7 = $dom.current) === null || _$dom$current7 === void 0 || _$dom$current7.removeEventListener('touchstart', handleMouseDown);
|
|
69
69
|
document.removeEventListener('mousemove', handleMouseMove);
|
|
70
70
|
}
|
|
71
71
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uiw/react-md-editor",
|
|
3
|
-
"version": "3.23.
|
|
3
|
+
"version": "3.23.6",
|
|
4
4
|
"description": "A markdown editor with preview, implemented with React.js and TypeScript.",
|
|
5
5
|
"homepage": "https://uiwjs.github.io/react-md-editor/",
|
|
6
6
|
"author": "kenny wang <wowohoo@qq.com>",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@babel/runtime": "^7.14.6",
|
|
27
|
-
"@uiw/react-markdown-preview": "^4.1.
|
|
27
|
+
"@uiw/react-markdown-preview": "^4.1.14",
|
|
28
28
|
"rehype": "~12.0.1",
|
|
29
29
|
"rehype-prism-plus": "~1.6.1"
|
|
30
30
|
},
|
|
@@ -1,512 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @jest-environment jsdom
|
|
3
|
-
*/
|
|
4
|
-
import React from 'react';
|
|
5
|
-
import { render, screen, fireEvent } from '@testing-library/react';
|
|
6
|
-
import userEvent from '@testing-library/user-event';
|
|
7
|
-
import '@testing-library/jest-dom';
|
|
8
|
-
import MDEditor, { commands } from '../';
|
|
9
|
-
|
|
10
|
-
it('MDEditor commands bold', async () => {
|
|
11
|
-
const MyComponent = () => {
|
|
12
|
-
const [value, setValue] = React.useState('title');
|
|
13
|
-
return (
|
|
14
|
-
<MDEditor
|
|
15
|
-
value={value}
|
|
16
|
-
textareaProps={{ title: 'test' }}
|
|
17
|
-
onChange={(value) => {
|
|
18
|
-
setValue(value || '');
|
|
19
|
-
}}
|
|
20
|
-
/>
|
|
21
|
-
);
|
|
22
|
-
};
|
|
23
|
-
render(<MyComponent />);
|
|
24
|
-
const btn = screen.getByTitle('Add bold text (ctrl + b)');
|
|
25
|
-
btn.focus();
|
|
26
|
-
fireEvent(
|
|
27
|
-
btn,
|
|
28
|
-
new MouseEvent('click', {
|
|
29
|
-
bubbles: true,
|
|
30
|
-
cancelable: true,
|
|
31
|
-
}),
|
|
32
|
-
);
|
|
33
|
-
const inputNode = screen.getByTitle('test');
|
|
34
|
-
expect(inputNode).toHaveValue('**title**');
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('MDEditor commands italic', async () => {
|
|
38
|
-
const MyComponent = () => {
|
|
39
|
-
const [value, setValue] = React.useState('title');
|
|
40
|
-
return (
|
|
41
|
-
<MDEditor
|
|
42
|
-
value={value}
|
|
43
|
-
textareaProps={{ title: 'test' }}
|
|
44
|
-
onChange={(value) => {
|
|
45
|
-
setValue(value || '');
|
|
46
|
-
}}
|
|
47
|
-
/>
|
|
48
|
-
);
|
|
49
|
-
};
|
|
50
|
-
render(<MyComponent />);
|
|
51
|
-
const btn = screen.getByTitle('Add italic text (ctrl + i)');
|
|
52
|
-
btn.focus();
|
|
53
|
-
fireEvent(
|
|
54
|
-
btn,
|
|
55
|
-
new MouseEvent('click', {
|
|
56
|
-
bubbles: true,
|
|
57
|
-
cancelable: true,
|
|
58
|
-
}),
|
|
59
|
-
);
|
|
60
|
-
const inputNode = screen.getByTitle('test');
|
|
61
|
-
expect(inputNode).toHaveValue('*title*');
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('MDEditor commands code', async () => {
|
|
65
|
-
const handleChange = jest.fn((value) => value);
|
|
66
|
-
render(<MDEditor value={`He llo \nWold!`} textareaProps={{ title: 'test' }} onChange={handleChange} />);
|
|
67
|
-
const input = screen.getByTitle<HTMLInputElement>('test');
|
|
68
|
-
input.setSelectionRange(0, 5);
|
|
69
|
-
const btn = screen.getByLabelText('Insert code (ctrl + j)');
|
|
70
|
-
fireEvent(
|
|
71
|
-
btn,
|
|
72
|
-
new MouseEvent('click', {
|
|
73
|
-
bubbles: true,
|
|
74
|
-
cancelable: true,
|
|
75
|
-
}),
|
|
76
|
-
);
|
|
77
|
-
expect(handleChange).toHaveReturnedWith('`He ll`o \nWold!');
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('MDEditor commands selectOptions code', async () => {
|
|
81
|
-
const handleChange = jest.fn((value) => value);
|
|
82
|
-
render(<MDEditor value={`Hello\nWold!`} textareaProps={{ title: 'test' }} onChange={handleChange} />);
|
|
83
|
-
const input = screen.getByTitle<HTMLInputElement>('test');
|
|
84
|
-
input.setSelectionRange(0, 11);
|
|
85
|
-
const btn = screen.getByLabelText('Insert code (ctrl + j)');
|
|
86
|
-
fireEvent(
|
|
87
|
-
btn,
|
|
88
|
-
new MouseEvent('click', {
|
|
89
|
-
bubbles: true,
|
|
90
|
-
cancelable: true,
|
|
91
|
-
}),
|
|
92
|
-
);
|
|
93
|
-
expect(handleChange).toHaveReturnedWith('```\nHello\nWold!\n```');
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('MDEditor commands code `ctrlcmd+j`', async () => {
|
|
97
|
-
const handleChange = jest.fn((value) => value);
|
|
98
|
-
render(<MDEditor value={`Hello`} textareaProps={{ title: 'test' }} onChange={handleChange} />);
|
|
99
|
-
const input = screen.getByTitle('test');
|
|
100
|
-
fireEvent.keyDown(input, { key: 'J', code: 'KeyJ', ctrlKey: true, shiftKey: true });
|
|
101
|
-
expect(handleChange).toHaveReturnedWith('```\nHello\n```');
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('MDEditor commands quote', async () => {
|
|
105
|
-
const MyComponent = () => {
|
|
106
|
-
const [value, setValue] = React.useState('title');
|
|
107
|
-
return (
|
|
108
|
-
<MDEditor
|
|
109
|
-
value={value}
|
|
110
|
-
textareaProps={{ title: 'test' }}
|
|
111
|
-
onChange={(value) => {
|
|
112
|
-
setValue(value || '');
|
|
113
|
-
}}
|
|
114
|
-
/>
|
|
115
|
-
);
|
|
116
|
-
};
|
|
117
|
-
render(<MyComponent />);
|
|
118
|
-
const btn = screen.getByLabelText('Insert a quote (ctrl + q)');
|
|
119
|
-
btn.focus();
|
|
120
|
-
fireEvent(
|
|
121
|
-
btn,
|
|
122
|
-
new MouseEvent('click', {
|
|
123
|
-
bubbles: true,
|
|
124
|
-
cancelable: true,
|
|
125
|
-
}),
|
|
126
|
-
);
|
|
127
|
-
const inputNode = screen.getByTitle('test');
|
|
128
|
-
expect(inputNode).toHaveValue('> title');
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
it('MDEditor commands HR', async () => {
|
|
132
|
-
const MyComponent = () => {
|
|
133
|
-
const [value, setValue] = React.useState('title');
|
|
134
|
-
return (
|
|
135
|
-
<MDEditor
|
|
136
|
-
value={value}
|
|
137
|
-
textareaProps={{ title: 'test' }}
|
|
138
|
-
onChange={(value) => {
|
|
139
|
-
setValue(value || '');
|
|
140
|
-
}}
|
|
141
|
-
/>
|
|
142
|
-
);
|
|
143
|
-
};
|
|
144
|
-
render(<MyComponent />);
|
|
145
|
-
const btn = screen.getByLabelText('Insert HR (ctrl + h)');
|
|
146
|
-
btn.focus();
|
|
147
|
-
fireEvent(
|
|
148
|
-
btn,
|
|
149
|
-
new MouseEvent('click', {
|
|
150
|
-
bubbles: true,
|
|
151
|
-
cancelable: true,
|
|
152
|
-
}),
|
|
153
|
-
);
|
|
154
|
-
const inputNode = screen.getByTitle('test');
|
|
155
|
-
expect(inputNode).toHaveValue('\n\n-----------\n\ntitle');
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
it('MDEditor commands strikethrough text', async () => {
|
|
159
|
-
const MyComponent = () => {
|
|
160
|
-
const [value, setValue] = React.useState('title');
|
|
161
|
-
return (
|
|
162
|
-
<MDEditor
|
|
163
|
-
value={value}
|
|
164
|
-
textareaProps={{ title: 'test' }}
|
|
165
|
-
onChange={(value) => {
|
|
166
|
-
setValue(value || '');
|
|
167
|
-
}}
|
|
168
|
-
/>
|
|
169
|
-
);
|
|
170
|
-
};
|
|
171
|
-
render(<MyComponent />);
|
|
172
|
-
const btn = screen.getByLabelText('Add strikethrough text (ctrl + shift + x)');
|
|
173
|
-
btn.focus();
|
|
174
|
-
fireEvent(
|
|
175
|
-
btn,
|
|
176
|
-
new MouseEvent('click', {
|
|
177
|
-
bubbles: true,
|
|
178
|
-
cancelable: true,
|
|
179
|
-
}),
|
|
180
|
-
);
|
|
181
|
-
const inputNode = screen.getByTitle('test');
|
|
182
|
-
expect(inputNode).toHaveValue('~~title~~');
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
it('MDEditor commands link', async () => {
|
|
186
|
-
const MyComponent = () => {
|
|
187
|
-
const [value, setValue] = React.useState('title');
|
|
188
|
-
return (
|
|
189
|
-
<MDEditor
|
|
190
|
-
value={value}
|
|
191
|
-
textareaProps={{ title: 'test' }}
|
|
192
|
-
onChange={(value) => {
|
|
193
|
-
setValue(value || '');
|
|
194
|
-
}}
|
|
195
|
-
/>
|
|
196
|
-
);
|
|
197
|
-
};
|
|
198
|
-
render(<MyComponent />);
|
|
199
|
-
const btn = screen.getByLabelText('Add a link (ctrl + l)');
|
|
200
|
-
btn.focus();
|
|
201
|
-
fireEvent(
|
|
202
|
-
btn,
|
|
203
|
-
new MouseEvent('click', {
|
|
204
|
-
bubbles: true,
|
|
205
|
-
cancelable: true,
|
|
206
|
-
}),
|
|
207
|
-
);
|
|
208
|
-
const inputNode = screen.getByTitle('test');
|
|
209
|
-
expect(inputNode).toHaveValue('[title](URL Here)');
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
it('MDEditor commands image', async () => {
|
|
213
|
-
const MyComponent = () => {
|
|
214
|
-
const [value, setValue] = React.useState('title');
|
|
215
|
-
return (
|
|
216
|
-
<MDEditor
|
|
217
|
-
value={value}
|
|
218
|
-
textareaProps={{ title: 'test' }}
|
|
219
|
-
onChange={(value) => {
|
|
220
|
-
setValue(value || '');
|
|
221
|
-
}}
|
|
222
|
-
/>
|
|
223
|
-
);
|
|
224
|
-
};
|
|
225
|
-
render(<MyComponent />);
|
|
226
|
-
const btn = screen.getByLabelText('Add image (ctrl + k)');
|
|
227
|
-
btn.focus();
|
|
228
|
-
fireEvent(
|
|
229
|
-
btn,
|
|
230
|
-
new MouseEvent('click', {
|
|
231
|
-
bubbles: true,
|
|
232
|
-
cancelable: true,
|
|
233
|
-
}),
|
|
234
|
-
);
|
|
235
|
-
const inputNode = screen.getByTitle('test');
|
|
236
|
-
expect(inputNode).toHaveValue('');
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
it("MDEditor commands image === ''", async () => {
|
|
240
|
-
const MyComponent = () => {
|
|
241
|
-
const [value, setValue] = React.useState('');
|
|
242
|
-
return (
|
|
243
|
-
<MDEditor
|
|
244
|
-
value={value}
|
|
245
|
-
textareaProps={{ title: 'test' }}
|
|
246
|
-
onChange={(value) => {
|
|
247
|
-
setValue(value || '');
|
|
248
|
-
}}
|
|
249
|
-
/>
|
|
250
|
-
);
|
|
251
|
-
};
|
|
252
|
-
render(<MyComponent />);
|
|
253
|
-
const btn = screen.getByLabelText('Add image (ctrl + k)');
|
|
254
|
-
btn.focus();
|
|
255
|
-
fireEvent(
|
|
256
|
-
btn,
|
|
257
|
-
new MouseEvent('click', {
|
|
258
|
-
bubbles: true,
|
|
259
|
-
cancelable: true,
|
|
260
|
-
}),
|
|
261
|
-
);
|
|
262
|
-
const inputNode = screen.getByTitle('test');
|
|
263
|
-
expect(inputNode).toHaveValue('');
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
it('MDEditor commands Add unordered list', async () => {
|
|
267
|
-
const MyComponent = () => {
|
|
268
|
-
const [value, setValue] = React.useState('title');
|
|
269
|
-
return (
|
|
270
|
-
<MDEditor
|
|
271
|
-
value={value}
|
|
272
|
-
textareaProps={{ title: 'test' }}
|
|
273
|
-
onChange={(value) => {
|
|
274
|
-
setValue(value || '');
|
|
275
|
-
}}
|
|
276
|
-
/>
|
|
277
|
-
);
|
|
278
|
-
};
|
|
279
|
-
render(<MyComponent />);
|
|
280
|
-
const btn = screen.getByLabelText('Add unordered list (ctrl + shift + u)');
|
|
281
|
-
btn.focus();
|
|
282
|
-
fireEvent(
|
|
283
|
-
btn,
|
|
284
|
-
new MouseEvent('click', {
|
|
285
|
-
bubbles: true,
|
|
286
|
-
cancelable: true,
|
|
287
|
-
}),
|
|
288
|
-
);
|
|
289
|
-
const inputNode = screen.getByTitle('test');
|
|
290
|
-
expect(inputNode).toHaveValue('- title');
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
it('MDEditor commands Add ordered list', async () => {
|
|
294
|
-
const handleChange = jest.fn((value) => value);
|
|
295
|
-
render(<MDEditor value="title" textareaProps={{ title: 'test' }} onChange={handleChange} />);
|
|
296
|
-
const btn = screen.getByLabelText('Add ordered list (ctrl + shift + o)');
|
|
297
|
-
fireEvent(
|
|
298
|
-
btn,
|
|
299
|
-
new MouseEvent('click', {
|
|
300
|
-
bubbles: true,
|
|
301
|
-
cancelable: true,
|
|
302
|
-
}),
|
|
303
|
-
);
|
|
304
|
-
expect(handleChange).toHaveReturnedWith('1. title');
|
|
305
|
-
});
|
|
306
|
-
|
|
307
|
-
it('MDEditor commands Add checked list', async () => {
|
|
308
|
-
const MyComponent = () => {
|
|
309
|
-
const [value, setValue] = React.useState('title');
|
|
310
|
-
return (
|
|
311
|
-
<MDEditor
|
|
312
|
-
value={value}
|
|
313
|
-
textareaProps={{ title: 'test' }}
|
|
314
|
-
onChange={(value) => {
|
|
315
|
-
setValue(value || '');
|
|
316
|
-
}}
|
|
317
|
-
/>
|
|
318
|
-
);
|
|
319
|
-
};
|
|
320
|
-
render(<MyComponent />);
|
|
321
|
-
const btn = screen.getByLabelText('Add checked list (ctrl + shift + c)');
|
|
322
|
-
|
|
323
|
-
btn.focus();
|
|
324
|
-
fireEvent(
|
|
325
|
-
btn,
|
|
326
|
-
new MouseEvent('click', {
|
|
327
|
-
bubbles: true,
|
|
328
|
-
cancelable: true,
|
|
329
|
-
}),
|
|
330
|
-
);
|
|
331
|
-
const inputNode = screen.getByTitle('test');
|
|
332
|
-
expect(inputNode).toHaveValue('- [ ] title');
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
it('MDEditor commands fullscreen', async () => {
|
|
336
|
-
const handleChange = jest.fn((value) => value);
|
|
337
|
-
await render(<MDEditor value="title" textareaProps={{ title: 'test' }} onChange={handleChange} />);
|
|
338
|
-
const btn = screen.getByLabelText('Toggle fullscreen (ctrl + 0)');
|
|
339
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
340
|
-
expect(document.body.style).toMatchObject({
|
|
341
|
-
overflow: 'hidden',
|
|
342
|
-
});
|
|
343
|
-
const input = screen.getByTitle('test');
|
|
344
|
-
input.focus();
|
|
345
|
-
expect(handleChange).not.toHaveReturned();
|
|
346
|
-
// await fireEvent.keyDown(input, { key: 'Escape' });
|
|
347
|
-
// await fireEvent.keyDown(input, { key: 'Escape' });
|
|
348
|
-
userEvent.type(input, `{esc}`);
|
|
349
|
-
userEvent.keyboard('{esc}');
|
|
350
|
-
expect(document.body.style).toMatchObject({
|
|
351
|
-
// overflow: 'visible',
|
|
352
|
-
// 🚨🚨🚨🚨🚨🚨🚨🚨🚨 ??????????
|
|
353
|
-
overflow: 'hidden',
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
|
|
357
|
-
it('MDEditor commands comment `ctrlcmd+/`', async () => {
|
|
358
|
-
const handleChange = jest.fn((value) => value);
|
|
359
|
-
render(<MDEditor value={`Hello`} textareaProps={{ title: 'test' }} onChange={handleChange} />);
|
|
360
|
-
const input = screen.getByTitle('test');
|
|
361
|
-
fireEvent.keyDown(input, { key: '/', code: 'Slash', ctrlKey: true });
|
|
362
|
-
expect(handleChange).toHaveReturnedWith('<!-- Hello -->');
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
it('MDEditor commands title1 value === undefined', async () => {
|
|
366
|
-
const handleChange = jest.fn((value) => value);
|
|
367
|
-
render(<MDEditor onChange={handleChange} commands={[commands.title1]} />);
|
|
368
|
-
const btn = screen.getByLabelText('Insert title1 (ctrl + 1)');
|
|
369
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
370
|
-
expect(handleChange).toHaveReturnedWith('# ');
|
|
371
|
-
});
|
|
372
|
-
|
|
373
|
-
it('MDEditor commands title1 value === test', async () => {
|
|
374
|
-
const handleChange = jest.fn((value) => value);
|
|
375
|
-
render(
|
|
376
|
-
<MDEditor
|
|
377
|
-
value="test"
|
|
378
|
-
textareaProps={{ title: 'textarea' }}
|
|
379
|
-
onChange={handleChange}
|
|
380
|
-
commands={[commands.title1]}
|
|
381
|
-
/>,
|
|
382
|
-
);
|
|
383
|
-
const btn = screen.getByLabelText('Insert title1 (ctrl + 1)');
|
|
384
|
-
const input = screen.getByTitle<HTMLTextAreaElement>('textarea');
|
|
385
|
-
input.setSelectionRange(2, 2);
|
|
386
|
-
|
|
387
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
388
|
-
expect(handleChange).toHaveReturnedWith('# test');
|
|
389
|
-
});
|
|
390
|
-
|
|
391
|
-
it('MDEditor commands title2 value === undefined', async () => {
|
|
392
|
-
const handleChange = jest.fn((value) => value);
|
|
393
|
-
render(<MDEditor onChange={handleChange} textareaProps={{ title: 'test' }} commands={[commands.title2]} />);
|
|
394
|
-
const input = screen.getByTitle<HTMLInputElement>('test');
|
|
395
|
-
input.setSelectionRange(0, 0);
|
|
396
|
-
const btn = screen.getByLabelText('Insert title2 (ctrl + 2)');
|
|
397
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
398
|
-
input.setSelectionRange(0, 0);
|
|
399
|
-
expect(handleChange).toHaveReturnedWith('## ');
|
|
400
|
-
});
|
|
401
|
-
|
|
402
|
-
it('MDEditor commands title2 value === test', async () => {
|
|
403
|
-
const handleChange = jest.fn((value) => value);
|
|
404
|
-
render(
|
|
405
|
-
<MDEditor value="test" onChange={handleChange} textareaProps={{ title: 'test' }} commands={[commands.title2]} />,
|
|
406
|
-
);
|
|
407
|
-
const input = screen.getByTitle<HTMLInputElement>('test');
|
|
408
|
-
input.setSelectionRange(2, 2);
|
|
409
|
-
const btn = screen.getByLabelText('Insert title2 (ctrl + 2)');
|
|
410
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
411
|
-
expect(handleChange).toHaveReturnedWith('## test');
|
|
412
|
-
});
|
|
413
|
-
|
|
414
|
-
it('MDEditor commands title3 value === undefined', async () => {
|
|
415
|
-
const handleChange = jest.fn((value) => value);
|
|
416
|
-
render(<MDEditor onChange={handleChange} commands={[commands.title3]} />);
|
|
417
|
-
const btn = screen.getByLabelText('Insert title3 (ctrl + 3)');
|
|
418
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
419
|
-
expect(handleChange).toHaveReturnedWith('### ');
|
|
420
|
-
});
|
|
421
|
-
|
|
422
|
-
it('MDEditor commands title3 value === test', async () => {
|
|
423
|
-
const handleChange = jest.fn((value) => value);
|
|
424
|
-
render(
|
|
425
|
-
<MDEditor
|
|
426
|
-
value="test"
|
|
427
|
-
textareaProps={{ title: 'textarea' }}
|
|
428
|
-
onChange={handleChange}
|
|
429
|
-
commands={[commands.title3]}
|
|
430
|
-
/>,
|
|
431
|
-
);
|
|
432
|
-
const btn = screen.getByLabelText('Insert title3 (ctrl + 3)');
|
|
433
|
-
const input = screen.getByTitle<HTMLInputElement>('textarea');
|
|
434
|
-
input.setSelectionRange(2, 2);
|
|
435
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
436
|
-
expect(handleChange).toHaveReturnedWith('### test');
|
|
437
|
-
});
|
|
438
|
-
|
|
439
|
-
it('MDEditor commands title4 value === undefined', async () => {
|
|
440
|
-
const handleChange = jest.fn((value) => value);
|
|
441
|
-
render(<MDEditor onChange={handleChange} commands={[commands.title4]} />);
|
|
442
|
-
const btn = screen.getByLabelText('Insert title4 (ctrl + 4)');
|
|
443
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
444
|
-
expect(handleChange).toHaveReturnedWith('#### ');
|
|
445
|
-
});
|
|
446
|
-
|
|
447
|
-
it('MDEditor commands title4 value === test', async () => {
|
|
448
|
-
const handleChange = jest.fn((value) => value);
|
|
449
|
-
render(
|
|
450
|
-
<MDEditor
|
|
451
|
-
value="test"
|
|
452
|
-
textareaProps={{ title: 'textarea' }}
|
|
453
|
-
onChange={handleChange}
|
|
454
|
-
commands={[commands.title4]}
|
|
455
|
-
/>,
|
|
456
|
-
);
|
|
457
|
-
const btn = screen.getByLabelText('Insert title4 (ctrl + 4)');
|
|
458
|
-
const input = screen.getByTitle('textarea');
|
|
459
|
-
(input as any).setSelectionRange(2, 2);
|
|
460
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
461
|
-
expect(handleChange).toHaveReturnedWith('#### test');
|
|
462
|
-
});
|
|
463
|
-
|
|
464
|
-
it('MDEditor commands title5 value === undefined', async () => {
|
|
465
|
-
const handleChange = jest.fn((value) => value);
|
|
466
|
-
render(<MDEditor onChange={handleChange} commands={[commands.title5]} />);
|
|
467
|
-
const btn = screen.getByLabelText('Insert title5 (ctrl + 5)');
|
|
468
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
469
|
-
expect(handleChange).toHaveReturnedWith('##### ');
|
|
470
|
-
});
|
|
471
|
-
|
|
472
|
-
it('MDEditor commands title5 value === test', async () => {
|
|
473
|
-
const handleChange = jest.fn((value) => value);
|
|
474
|
-
render(
|
|
475
|
-
<MDEditor
|
|
476
|
-
value="test"
|
|
477
|
-
textareaProps={{ title: 'textarea' }}
|
|
478
|
-
onChange={handleChange}
|
|
479
|
-
commands={[commands.title5]}
|
|
480
|
-
/>,
|
|
481
|
-
);
|
|
482
|
-
const btn = screen.getByLabelText('Insert title5 (ctrl + 5)');
|
|
483
|
-
const input = screen.getByTitle<HTMLInputElement>('textarea');
|
|
484
|
-
input.setSelectionRange(2, 2);
|
|
485
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
486
|
-
expect(handleChange).toHaveReturnedWith('##### test');
|
|
487
|
-
});
|
|
488
|
-
|
|
489
|
-
it('MDEditor commands title6 value === undefined', async () => {
|
|
490
|
-
const handleChange = jest.fn((value) => value);
|
|
491
|
-
render(<MDEditor onChange={handleChange} commands={[commands.title6]} />);
|
|
492
|
-
const btn = screen.getByLabelText('Insert title6 (ctrl + 6)');
|
|
493
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
494
|
-
expect(handleChange).toHaveReturnedWith('###### ');
|
|
495
|
-
});
|
|
496
|
-
|
|
497
|
-
it('MDEditor commands title6 value === test', async () => {
|
|
498
|
-
const handleChange = jest.fn((value) => value);
|
|
499
|
-
render(
|
|
500
|
-
<MDEditor
|
|
501
|
-
value="test"
|
|
502
|
-
textareaProps={{ title: 'textarea' }}
|
|
503
|
-
onChange={handleChange}
|
|
504
|
-
commands={[commands.title6]}
|
|
505
|
-
/>,
|
|
506
|
-
);
|
|
507
|
-
const btn = screen.getByLabelText('Insert title6 (ctrl + 6)');
|
|
508
|
-
const input = screen.getByTitle('textarea');
|
|
509
|
-
(input as any).setSelectionRange(2, 2);
|
|
510
|
-
fireEvent(btn, new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
511
|
-
expect(handleChange).toHaveReturnedWith('###### test');
|
|
512
|
-
});
|