Просмотр исходного кода

relocate emojiAutoCompletionSettings.ts,

WNomunomu 2 лет назад
Родитель
Сommit
62b2c32a87

+ 2 - 2
packages/editor/src/services/codemirror-editor/use-codemirror-editor/use-codemirror-editor.ts

@@ -8,7 +8,7 @@ import { keymap, EditorView } from '@codemirror/view';
 import { useCodeMirror, type UseCodeMirror } from '@uiw/react-codemirror';
 import deepmerge from 'ts-deepmerge';
 
-import { emojiAutocompletionSettings } from '../../../stores/emojiAutocompletionSettings';
+import { emojiAutocompletionSettings } from '../../extensions/emojiAutocompletionSettings';
 
 import { useAppendExtensions, type AppendExtensions } from './utils/append-extensions';
 import { useFocus, type Focus } from './utils/focus';
@@ -33,6 +33,7 @@ const defaultExtensions: Extension[] = [
   markdown({ base: markdownLanguage, codeLanguages: languages }),
   keymap.of([indentWithTab]),
   Prec.lowest(keymap.of(defaultKeymap)),
+  emojiAutocompletionSettings,
 ];
 
 
@@ -44,7 +45,6 @@ export const useCodeMirrorEditor = (props?: UseCodeMirror): UseCodeMirrorEditor
       {
         extensions: [
           defaultExtensions,
-          emojiAutocompletionSettings,
         ],
         // Reset settings of react-codemirror.
         // The extension defined first will be used, so it must be disabled here.

+ 6 - 2
packages/editor/src/stores/emojiAutocompletionSettings.ts → packages/editor/src/services/extensions/emojiAutocompletionSettings.ts

@@ -38,17 +38,21 @@ const emojiOptions = emojiDataArray.map(
   tag => ({ label: `:${tag}:`, type: tag }),
 );
 
+const TWO_OR_MORE_WORD_CHARACTERS_REGEX = /:\w{2,}$/;
+
+
+// EmojiAutocompletion is activated when two characters are entered into the editor.
 const emojiAutocompletion = (context: CompletionContext) => {
   const nodeBefore = syntaxTree(context.state).resolveInner(context.pos, -1);
   const textBefore = context.state.sliceDoc(nodeBefore.from, context.pos);
-  const emojiBefore = /:\w{2,}$/.exec(textBefore);
+  const emojiBefore = TWO_OR_MORE_WORD_CHARACTERS_REGEX.exec(textBefore);
 
   if (!emojiBefore && !context.explicit) return null;
 
   return {
     from: emojiBefore ? nodeBefore.from + emojiBefore.index : context.pos,
     options: emojiOptions,
-    validFor: /^:\w{2,}$/,
+    validFor: TWO_OR_MORE_WORD_CHARACTERS_REGEX,
   };
 };