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
  };
@@ -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;
@@ -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 /^ {0,3}> */.test(line);
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(/^ {0,3}> */, '');
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] = "> ".concat(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 type = action.payload.type;
80
- var delimiters = type === 'emphasis' ? ['*', '_'] : type === 'strong' ? ['**', '__'] : type === 'inlineCode' ? ['`'] : type === 'delete' ? ['~~'] : ['$'];
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
- _type = _action$payload2.type,
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(_type === 'image' ? '!' : '', "[").concat(description, "](").concat(url, ")").concat(after),
136
- selection: createSelection(startOffset + url.length + description.length + 4 + (_type === 'image' ? 1 : 0))
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.stopPropagation();
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 _containerRef$current;
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 || !containerRef.current) {
198
+ if (!targetRange) {
196
199
  return;
197
200
  }
198
- var startOffset = container.getOffset(containerRef.current, targetRange.startContainer, targetRange.startOffset);
199
- var endOffset = container.getOffset(containerRef.current, targetRange.endContainer, targetRange.endOffset);
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
- (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.addEventListener('beforeinput', listener);
358
+ editor.addEventListener('beforeinput', listener);
356
359
  return function () {
357
- var _containerRef$current2;
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, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "x-star-editor",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "description": "An editor developed by turingstar",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",