@milkdown/plugin-emoji 5.1.1 → 5.3.0
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/lib/filter/style.d.ts.map +1 -1
- package/lib/index.cjs.js +58 -0
- package/lib/index.cjs.js.map +1 -0
- package/lib/index.es.js +489 -0
- package/lib/index.es.js.map +1 -0
- package/lib/node.d.ts.map +1 -1
- package/package.json +21 -9
- package/src/filter/index.ts +1 -1
- package/src/filter/style.ts +6 -4
- package/src/node.ts +4 -2
- package/lib/constant.js +0 -6
- package/lib/constant.js.map +0 -1
- package/lib/filter/helper.js +0 -64
- package/lib/filter/helper.js.map +0 -1
- package/lib/filter/index.js +0 -131
- package/lib/filter/index.js.map +0 -1
- package/lib/filter/style.js +0 -41
- package/lib/filter/style.js.map +0 -1
- package/lib/index.js +0 -6
- package/lib/index.js.map +0 -1
- package/lib/node.js +0 -92
- package/lib/node.js.map +0 -1
- package/lib/parse.js +0 -4
- package/lib/parse.js.map +0 -1
- package/lib/picker.js +0 -113
- package/lib/picker.js.map +0 -1
- package/lib/remark-twemoji.js +0 -52
- package/lib/remark-twemoji.js.map +0 -1
package/lib/picker.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
/* Copyright 2021, Milkdown by Mirone. */
|
|
2
|
-
import { injectGlobal } from '@emotion/css';
|
|
3
|
-
import { EmojiButton } from '@joeattardi/emoji-button';
|
|
4
|
-
import { Decoration, DecorationSet, Plugin } from '@milkdown/prose';
|
|
5
|
-
import { parse } from './parse';
|
|
6
|
-
const keyword = ':emoji:';
|
|
7
|
-
const checkTrigger = (view, from, to, text, setRange) => {
|
|
8
|
-
if (view.composing)
|
|
9
|
-
return false;
|
|
10
|
-
const { state } = view;
|
|
11
|
-
const $from = state.doc.resolve(from);
|
|
12
|
-
if ($from.parent.type.spec.code)
|
|
13
|
-
return false;
|
|
14
|
-
const textBefore = $from.parent.textBetween($from.parentOffset - keyword.length + 1, $from.parentOffset, undefined, '\ufffc') +
|
|
15
|
-
text;
|
|
16
|
-
if (textBefore === keyword) {
|
|
17
|
-
setRange(from - keyword.length + 1, to + 1);
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
return false;
|
|
21
|
-
};
|
|
22
|
-
export const picker = (utils) => {
|
|
23
|
-
let trigger = false;
|
|
24
|
-
const holder = document.createElement('span');
|
|
25
|
-
let _from = 0;
|
|
26
|
-
let _to = 0;
|
|
27
|
-
const off = () => {
|
|
28
|
-
trigger = false;
|
|
29
|
-
_from = 0;
|
|
30
|
-
_to = 0;
|
|
31
|
-
};
|
|
32
|
-
const plugin = new Plugin({
|
|
33
|
-
props: {
|
|
34
|
-
handleKeyDown() {
|
|
35
|
-
off();
|
|
36
|
-
return false;
|
|
37
|
-
},
|
|
38
|
-
handleClick() {
|
|
39
|
-
off();
|
|
40
|
-
return false;
|
|
41
|
-
},
|
|
42
|
-
handleTextInput(view, from, to, text) {
|
|
43
|
-
trigger = checkTrigger(view, from, to, text, (from, to) => {
|
|
44
|
-
_from = from;
|
|
45
|
-
_to = to;
|
|
46
|
-
});
|
|
47
|
-
if (!trigger) {
|
|
48
|
-
off();
|
|
49
|
-
}
|
|
50
|
-
return false;
|
|
51
|
-
},
|
|
52
|
-
decorations(state) {
|
|
53
|
-
if (!trigger)
|
|
54
|
-
return null;
|
|
55
|
-
return DecorationSet.create(state.doc, [Decoration.widget(state.selection.to, holder)]);
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
view: (editorView) => {
|
|
59
|
-
const { parentNode } = editorView.dom;
|
|
60
|
-
if (!parentNode) {
|
|
61
|
-
throw new Error();
|
|
62
|
-
}
|
|
63
|
-
utils.getStyle(({ palette, font }) => {
|
|
64
|
-
const css = injectGlobal;
|
|
65
|
-
css `
|
|
66
|
-
.emoji-picker {
|
|
67
|
-
--dark-search-background-color: ${palette('surface')} !important;
|
|
68
|
-
--dark-text-color: ${palette('neutral', 0.87)} !important;
|
|
69
|
-
--dark-background-color: ${palette('background')} !important;
|
|
70
|
-
--dark-border-color: ${palette('shadow')} !important;
|
|
71
|
-
--dark-hover-color: ${palette('secondary', 0.12)} !important;
|
|
72
|
-
--dark-blue-color: ${palette('primary')} !important;
|
|
73
|
-
--dark-search-icon-color: ${palette('primary')} !important;
|
|
74
|
-
--dark-category-button-color: ${palette('secondary', 0.4)} !important;
|
|
75
|
-
--font: ${font.typography} !important;
|
|
76
|
-
--font-size: 1rem !important;
|
|
77
|
-
}
|
|
78
|
-
`;
|
|
79
|
-
});
|
|
80
|
-
const emojiPicker = new EmojiButton({
|
|
81
|
-
rootElement: parentNode,
|
|
82
|
-
autoFocusSearch: false,
|
|
83
|
-
style: 'twemoji',
|
|
84
|
-
theme: 'dark',
|
|
85
|
-
zIndex: 99,
|
|
86
|
-
});
|
|
87
|
-
emojiPicker.on('emoji', (selection) => {
|
|
88
|
-
const start = _from;
|
|
89
|
-
const end = _to;
|
|
90
|
-
off();
|
|
91
|
-
const html = parse(selection.emoji);
|
|
92
|
-
const node = editorView.state.schema.node('emoji', { html });
|
|
93
|
-
const { tr } = editorView.state;
|
|
94
|
-
editorView.dispatch(tr.replaceRangeWith(start, end, node));
|
|
95
|
-
});
|
|
96
|
-
return {
|
|
97
|
-
update: () => {
|
|
98
|
-
if (!trigger) {
|
|
99
|
-
emojiPicker.hidePicker();
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
emojiPicker.showPicker(holder);
|
|
103
|
-
return null;
|
|
104
|
-
},
|
|
105
|
-
destroy: () => {
|
|
106
|
-
emojiPicker.destroyPicker();
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
return plugin;
|
|
112
|
-
};
|
|
113
|
-
//# sourceMappingURL=picker.js.map
|
package/lib/picker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"picker.js","sourceRoot":"","sources":["../src/picker.ts"],"names":[],"mappings":"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"}
|
package/lib/remark-twemoji.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/* Copyright 2021, Milkdown by Mirone. */
|
|
2
|
-
import emojiRegex from 'emoji-regex';
|
|
3
|
-
import { parse } from './parse';
|
|
4
|
-
const regex = emojiRegex();
|
|
5
|
-
const isParent = (node) => !!node.children;
|
|
6
|
-
const isLiteral = (node) => !!node.value;
|
|
7
|
-
function flatMap(ast, fn) {
|
|
8
|
-
return transform(ast, 0, null)[0];
|
|
9
|
-
function transform(node, index, parent) {
|
|
10
|
-
if (isParent(node)) {
|
|
11
|
-
const out = [];
|
|
12
|
-
for (let i = 0, n = node.children.length; i < n; i++) {
|
|
13
|
-
const xs = transform(node.children[i], i, node);
|
|
14
|
-
if (xs) {
|
|
15
|
-
for (let j = 0, m = xs.length; j < m; j++) {
|
|
16
|
-
out.push(xs[j]);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
node.children = out;
|
|
21
|
-
}
|
|
22
|
-
return fn(node, index, parent);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export const twemojiPlugin = () => {
|
|
26
|
-
function transformer(tree) {
|
|
27
|
-
flatMap(tree, (node) => {
|
|
28
|
-
if (!isLiteral(node)) {
|
|
29
|
-
return [node];
|
|
30
|
-
}
|
|
31
|
-
const value = node.value;
|
|
32
|
-
const output = [];
|
|
33
|
-
let match;
|
|
34
|
-
let str = value;
|
|
35
|
-
while ((match = regex.exec(str))) {
|
|
36
|
-
const { index } = match;
|
|
37
|
-
const emoji = match[0];
|
|
38
|
-
if (index > 0) {
|
|
39
|
-
output.push(Object.assign(Object.assign({}, node), { value: str.slice(0, index) }));
|
|
40
|
-
}
|
|
41
|
-
output.push(Object.assign(Object.assign({}, node), { value: parse(emoji), type: 'emoji' }));
|
|
42
|
-
str = str.slice(index + emoji.length);
|
|
43
|
-
}
|
|
44
|
-
if (str.length) {
|
|
45
|
-
output.push(Object.assign(Object.assign({}, node), { value: str }));
|
|
46
|
-
}
|
|
47
|
-
return output;
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
return transformer;
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=remark-twemoji.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remark-twemoji.js","sourceRoot":"","sources":["../src/remark-twemoji.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,UAAU,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;AAE3B,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAkB,EAAE,CAAC,CAAC,CAAE,IAAe,CAAC,QAAQ,CAAC;AAC7E,MAAM,SAAS,GAAG,CAAC,IAAU,EAAmB,EAAE,CAAC,CAAC,CAAE,IAAgB,CAAC,KAAK,CAAC;AAE7E,SAAS,OAAO,CAAC,GAAS,EAAE,EAA8D;IACtF,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAElC,SAAS,SAAS,CAAC,IAAU,EAAE,KAAa,EAAE,MAAmB;QAC7D,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAChB,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClD,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,EAAE,EAAE;oBACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBACvC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;qBACnB;iBACJ;aACJ;YACD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;SACvB;QAED,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAC9B,SAAS,WAAW,CAAC,IAAU;QAC3B,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;YACnC,MAAM,MAAM,GAAsB,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC;YACV,IAAI,GAAG,GAAG,KAAK,CAAC;YAChB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;gBACxB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,KAAK,GAAG,CAAC,EAAE;oBACX,MAAM,CAAC,IAAI,iCAAM,IAAI,KAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAG,CAAC;iBACxD;gBACD,MAAM,CAAC,IAAI,iCAAM,IAAI,KAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,IAAG,CAAC;gBAC7D,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;aACzC;YACD,IAAI,GAAG,CAAC,MAAM,EAAE;gBACZ,MAAM,CAAC,IAAI,iCAAM,IAAI,KAAE,KAAK,EAAE,GAAG,IAAG,CAAC;aACxC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC"}
|