x-star-editor 0.3.5 → 0.3.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.
|
@@ -423,7 +423,12 @@ export var getDefaultToolbarItemMap = function getDefaultToolbarItemMap(locale,
|
|
|
423
423
|
children: /*#__PURE__*/React.createElement(SvgOrderedList, {
|
|
424
424
|
className: classNames("".concat(prefix, "icon"))
|
|
425
425
|
}),
|
|
426
|
-
tooltip: t('orderedList')
|
|
426
|
+
tooltip: t('orderedList'),
|
|
427
|
+
onClick: function onClick(exec) {
|
|
428
|
+
return exec(toggleHandler({
|
|
429
|
+
type: 'orderedList'
|
|
430
|
+
}));
|
|
431
|
+
}
|
|
427
432
|
},
|
|
428
433
|
redo: function redo(_ref5) {
|
|
429
434
|
var history = _ref5.history;
|
|
@@ -459,7 +464,12 @@ export var getDefaultToolbarItemMap = function getDefaultToolbarItemMap(locale,
|
|
|
459
464
|
children: /*#__PURE__*/React.createElement(SvgTaskList, {
|
|
460
465
|
className: classNames("".concat(prefix, "icon"))
|
|
461
466
|
}),
|
|
462
|
-
tooltip: t('taskList')
|
|
467
|
+
tooltip: t('taskList'),
|
|
468
|
+
onClick: function onClick(exec) {
|
|
469
|
+
return exec(toggleHandler({
|
|
470
|
+
type: 'taskList'
|
|
471
|
+
}));
|
|
472
|
+
}
|
|
463
473
|
},
|
|
464
474
|
thematicBreak: {
|
|
465
475
|
children: /*#__PURE__*/React.createElement(SvgThematicBreak, {
|
|
@@ -531,14 +541,17 @@ export var getDefaultToolbarItemMap = function getDefaultToolbarItemMap(locale,
|
|
|
531
541
|
children: /*#__PURE__*/React.createElement(SvgUnorderedList, {
|
|
532
542
|
className: classNames("".concat(prefix, "icon"))
|
|
533
543
|
}),
|
|
534
|
-
tooltip: t('unorderedList')
|
|
544
|
+
tooltip: t('unorderedList'),
|
|
545
|
+
onClick: function onClick(exec) {
|
|
546
|
+
return exec(toggleHandler({
|
|
547
|
+
type: 'unorderedList'
|
|
548
|
+
}));
|
|
549
|
+
}
|
|
535
550
|
}
|
|
536
551
|
};
|
|
537
552
|
};
|
|
538
553
|
export var getDefaultToolbarItems = function getDefaultToolbarItems() {
|
|
539
|
-
return [['heading', 'strong', 'emphasis', 'delete'], ['thematicBreak', 'blockquote' /** 'table' */], ['link', 'image', 'mermaid'], ['inlineCode', 'code', 'inlineMath', 'math'], ['undo', 'redo']
|
|
540
|
-
// ['orderedList', 'unorderedList', 'taskList'],
|
|
541
|
-
['toMarkdown', 'toHTML']
|
|
554
|
+
return [['heading', 'strong', 'emphasis', 'delete'], ['thematicBreak', 'blockquote' /** 'table' */], ['link', 'image', 'mermaid'], ['inlineCode', 'code', 'inlineMath', 'math'], ['orderedList', 'unorderedList', 'taskList'], ['toMarkdown', 'toHTML'], ['undo', 'redo']
|
|
542
555
|
// ['help'],
|
|
543
556
|
];
|
|
544
557
|
};
|
package/dist/utils/history.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export interface InsertAction {
|
|
|
17
17
|
export interface ToggleAction {
|
|
18
18
|
type: 'toggle';
|
|
19
19
|
payload: {
|
|
20
|
-
type: 'blockquote' | 'delete' | 'emphasis' | 'inlineCode' | 'inlineMath' | 'math' | 'strong' | 'thematicBreak';
|
|
20
|
+
type: 'blockquote' | 'delete' | 'emphasis' | 'inlineCode' | 'inlineMath' | 'math' | 'orderedList' | 'strong' | 'taskList' | 'thematicBreak' | 'unorderedList';
|
|
21
21
|
} | {
|
|
22
22
|
type: 'code';
|
|
23
23
|
lang: string;
|
package/dist/utils/history.js
CHANGED
|
@@ -35,21 +35,26 @@ var stateReducer = function stateReducer(_ref, action) {
|
|
|
35
35
|
var lineAfter = sourceCode.slice(lineEndOffset);
|
|
36
36
|
switch (action.payload.type) {
|
|
37
37
|
case 'blockquote':
|
|
38
|
+
case 'orderedList':
|
|
39
|
+
case 'taskList':
|
|
40
|
+
case 'unorderedList':
|
|
38
41
|
{
|
|
42
|
+
var type = action.payload.type;
|
|
43
|
+
var prefixes = type === 'blockquote' ? ['>', '>'] : type === 'orderedList' ? ['\\d+\\.', '1.'] : type === 'taskList' ? ['[*+-] \\[[ x]]', '* [ ]'] : ['[*+-]', '*'];
|
|
39
44
|
var lines = sourceCode.slice(lineStartOffset, lineEndOffset).split('\n');
|
|
40
45
|
var values = lines.map(function (line) {
|
|
41
|
-
return
|
|
46
|
+
return new RegExp("^ {0,3}".concat(prefixes[0], " +")).test(line);
|
|
42
47
|
});
|
|
43
48
|
for (var i = 0; i < values.length; i++) {
|
|
44
49
|
if (values[i]) {
|
|
45
|
-
lines[i] = lines[i].replace(
|
|
50
|
+
lines[i] = lines[i].replace(new RegExp("^ {0,3}".concat(prefixes[0], " +")), '');
|
|
46
51
|
}
|
|
47
52
|
}
|
|
48
53
|
if (values.some(function (value) {
|
|
49
54
|
return !value;
|
|
50
55
|
})) {
|
|
51
56
|
for (var _i = 0; _i < lines.length; _i++) {
|
|
52
|
-
lines[_i] = "
|
|
57
|
+
lines[_i] = "".concat(prefixes[1], " ").concat(lines[_i]);
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
60
|
var _text = lines.join('\n');
|
|
@@ -76,8 +81,8 @@ var stateReducer = function stateReducer(_ref, action) {
|
|
|
76
81
|
case 'inlineMath':
|
|
77
82
|
case 'strong':
|
|
78
83
|
{
|
|
79
|
-
var
|
|
80
|
-
var delimiters =
|
|
84
|
+
var _type = action.payload.type;
|
|
85
|
+
var delimiters = _type === 'emphasis' ? ['*', '_'] : _type === 'strong' ? ['**', '__'] : _type === 'inlineCode' ? ['`'] : _type === 'delete' ? ['~~'] : ['$'];
|
|
81
86
|
var _text2 = sourceCode.slice(startOffset, endOffset);
|
|
82
87
|
for (var _i2 = 0, _delimiters = delimiters; _i2 < _delimiters.length; _i2++) {
|
|
83
88
|
var _delimiter = _delimiters[_i2];
|
|
@@ -128,12 +133,12 @@ var stateReducer = function stateReducer(_ref, action) {
|
|
|
128
133
|
case 'link':
|
|
129
134
|
{
|
|
130
135
|
var _action$payload2 = action.payload,
|
|
131
|
-
|
|
136
|
+
_type2 = _action$payload2.type,
|
|
132
137
|
url = _action$payload2.url,
|
|
133
138
|
description = _action$payload2.description;
|
|
134
139
|
return {
|
|
135
|
-
sourceCode: "".concat(before).concat(
|
|
136
|
-
selection: createSelection(startOffset + url.length + description.length + 4 + (
|
|
140
|
+
sourceCode: "".concat(before).concat(_type2 === 'image' ? '!' : '', "[").concat(description, "](").concat(url, ")").concat(after),
|
|
141
|
+
selection: createSelection(startOffset + url.length + description.length + 4 + (_type2 === 'image' ? 1 : 0))
|
|
137
142
|
};
|
|
138
143
|
}
|
|
139
144
|
case 'math':
|
|
@@ -149,21 +149,11 @@ var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
};
|
|
152
|
-
var observer = new MutationObserver(function () {
|
|
153
|
-
return listener({
|
|
154
|
-
currentTarget: editor
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
152
|
editor.addEventListener('scroll', listener);
|
|
158
153
|
viewer.addEventListener('scroll', listener);
|
|
159
|
-
observer.observe(viewer, {
|
|
160
|
-
subtree: true,
|
|
161
|
-
childList: true
|
|
162
|
-
});
|
|
163
154
|
return function () {
|
|
164
155
|
editor.removeEventListener('scroll', listener);
|
|
165
156
|
viewer.removeEventListener('scroll', listener);
|
|
166
|
-
observer.disconnect();
|
|
167
157
|
};
|
|
168
158
|
}, []);
|
|
169
159
|
var _useState = useState(initialValue),
|
|
@@ -223,15 +213,19 @@ var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
|
223
213
|
var overflow = document.body.style.overflow;
|
|
224
214
|
var listener = createKeybindingsHandler({
|
|
225
215
|
Escape: function Escape(e) {
|
|
226
|
-
e.
|
|
216
|
+
e.stopImmediatePropagation();
|
|
227
217
|
setFullscreen(false);
|
|
228
218
|
}
|
|
229
219
|
});
|
|
230
220
|
document.body.style.overflow = 'hidden';
|
|
231
|
-
document.addEventListener('keydown', listener
|
|
221
|
+
document.addEventListener('keydown', listener, {
|
|
222
|
+
capture: true
|
|
223
|
+
});
|
|
232
224
|
return function () {
|
|
233
225
|
document.body.style.overflow = overflow;
|
|
234
|
-
document.removeEventListener('keydown', listener
|
|
226
|
+
document.removeEventListener('keydown', listener, {
|
|
227
|
+
capture: true
|
|
228
|
+
});
|
|
235
229
|
};
|
|
236
230
|
}
|
|
237
231
|
}, [fullscreen]);
|
|
@@ -189,14 +189,17 @@ var XStarMdEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
189
189
|
}
|
|
190
190
|
};
|
|
191
191
|
useEffect(function () {
|
|
192
|
-
var
|
|
192
|
+
var editor = containerRef.current;
|
|
193
|
+
if (!editor) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
193
196
|
var listener = function listener(e) {
|
|
194
197
|
var targetRange = e.getTargetRanges()[0];
|
|
195
|
-
if (!targetRange
|
|
198
|
+
if (!targetRange) {
|
|
196
199
|
return;
|
|
197
200
|
}
|
|
198
|
-
var startOffset = container.getOffset(
|
|
199
|
-
var endOffset = container.getOffset(
|
|
201
|
+
var startOffset = container.getOffset(editor, targetRange.startContainer, targetRange.startOffset);
|
|
202
|
+
var endOffset = container.getOffset(editor, targetRange.endContainer, targetRange.endOffset);
|
|
200
203
|
var selection = createSelection(startOffset, endOffset);
|
|
201
204
|
switch (e.inputType) {
|
|
202
205
|
case 'insertText':
|
|
@@ -352,10 +355,9 @@ var XStarMdEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
352
355
|
}
|
|
353
356
|
}
|
|
354
357
|
};
|
|
355
|
-
|
|
358
|
+
editor.addEventListener('beforeinput', listener);
|
|
356
359
|
return function () {
|
|
357
|
-
|
|
358
|
-
return (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.removeEventListener('beforeinput', listener);
|
|
360
|
+
return editor.removeEventListener('beforeinput', listener);
|
|
359
361
|
};
|
|
360
362
|
}, []);
|
|
361
363
|
return /*#__PURE__*/React.createElement(LocaleProvider, {
|