mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-19 17:38:19 +08:00
ui: quick emoji input support
This commit is contained in:
1 parent
402a58cd47
commit
fae452cc94
6 files changed
+255
-108
No files matched your search
@@ -0,0 +1,138 @@
|
||||
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import list from 'emojis-list';
|
||||
import keyword from 'emojis-keywords';
|
||||
|
||||
const qqEmojies = [
|
||||
'weixiao',
|
||||
'piezui',
|
||||
'se',
|
||||
'fadai',
|
||||
'deyi',
|
||||
'liulei',
|
||||
'haixiu',
|
||||
'bizui',
|
||||
'shui',
|
||||
'daku',
|
||||
'ganga',
|
||||
'fanu',
|
||||
'tiaopi',
|
||||
'ciya',
|
||||
'jingya',
|
||||
'nanguo',
|
||||
'ku',
|
||||
'lenghan',
|
||||
'zhuakuang',
|
||||
'tu',
|
||||
'touxiao',
|
||||
'keai',
|
||||
'baiyan',
|
||||
'aoman',
|
||||
'jie',
|
||||
'kun',
|
||||
'jingkong',
|
||||
'liuhan',
|
||||
'hanxiao',
|
||||
'dabing',
|
||||
'fendou',
|
||||
'zhouma',
|
||||
'yiwen',
|
||||
'xu',
|
||||
'yun',
|
||||
'zhemo',
|
||||
'shuai',
|
||||
'kulou',
|
||||
'qiaoda',
|
||||
'zaijian',
|
||||
'cahan',
|
||||
'koubi',
|
||||
'guzhang',
|
||||
'qiudale',
|
||||
'huaixiao',
|
||||
'zuohengheng',
|
||||
'youhengheng',
|
||||
'haqian',
|
||||
'bishi',
|
||||
'weiqu',
|
||||
'kuaikule',
|
||||
'yinxian',
|
||||
'qinqin',
|
||||
'xia',
|
||||
'kelian',
|
||||
'caidao',
|
||||
'xigua',
|
||||
'pijiu',
|
||||
'lanqiu',
|
||||
'pingpang',
|
||||
'kafei',
|
||||
'fan',
|
||||
'zhutou',
|
||||
'meigui',
|
||||
'diaoxie',
|
||||
'shiai',
|
||||
'aixin',
|
||||
'xinsui',
|
||||
'dangao',
|
||||
'shandian',
|
||||
'zhadan',
|
||||
'dao',
|
||||
'zuqiu',
|
||||
'piaochong',
|
||||
'bianbian',
|
||||
'yueliang',
|
||||
'taiyang',
|
||||
'liwu',
|
||||
'yongbao',
|
||||
'qiang',
|
||||
'ruo',
|
||||
'woshou',
|
||||
'shengli',
|
||||
'baoquan',
|
||||
'gouyin',
|
||||
'quantou',
|
||||
'chajin',
|
||||
'aini',
|
||||
'no',
|
||||
'ok',
|
||||
];
|
||||
|
||||
function emoji(range) {
|
||||
return keyword.map((i, index) => ({
|
||||
label: `${list[index]} ${i}`,
|
||||
kind: monaco.languages.CompletionItemKind.Keyword,
|
||||
documentation: i,
|
||||
insertText: list[index],
|
||||
range,
|
||||
}));
|
||||
}
|
||||
|
||||
function qqEmoji(range) {
|
||||
return qqEmojies.map((i, index) => ({
|
||||
label: `/${i}`,
|
||||
kind: monaco.languages.CompletionItemKind.Keyword,
|
||||
documentation: `/${i}`,
|
||||
insertText: ` `,
|
||||
range,
|
||||
}));
|
||||
}
|
||||
|
||||
monaco.languages.registerCompletionItemProvider('markdown', {
|
||||
provideCompletionItems(model, position) {
|
||||
const word = model.getWordAtPosition(position);
|
||||
const prefix = model.getValueInRange({
|
||||
startLineNumber: position.lineNumber,
|
||||
endLineNumber: position.lineNumber,
|
||||
startColumn: word.startColumn - 1,
|
||||
endColumn: position.column - 1,
|
||||
});
|
||||
if (![':', '/'].includes(prefix)) return { suggestions: [] };
|
||||
const range = {
|
||||
startLineNumber: position.lineNumber,
|
||||
endLineNumber: position.lineNumber,
|
||||
startColumn: word.startColumn - 1,
|
||||
endColumn: word.endColumn,
|
||||
};
|
||||
return {
|
||||
suggestions: prefix === ':' ? emoji(range) : qqEmoji(range),
|
||||
};
|
||||
},
|
||||
});
|
||||
Reference in new issue
Block a user