@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/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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"}
@@ -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"}