@chayns-components/emoji-input 5.6.6 → 5.6.8
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/cjs/build.test.js +34 -0
- package/lib/cjs/build.test.js.map +1 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +48 -219
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -1
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.test.js +316 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.test.js.map +1 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js +1 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +1 -1
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji-picker-emoji-list/EmojiPickerEmojiList.js +109 -0
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/emoji-picker-emoji-list/EmojiPickerEmojiList.js.map +1 -0
- package/lib/esm/build.test.js +32 -0
- package/lib/esm/build.test.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +47 -218
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -1
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.test.js +312 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.test.js.map +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js +1 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji/Emoji.js.map +1 -1
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji-picker-emoji-list/EmojiPickerEmojiList.js +101 -0
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/emoji-picker-emoji-list/EmojiPickerEmojiList.js.map +1 -0
- package/lib/types/components/emoji-picker/emoji-picker-emojis/emoji-picker-emoji-list/EmojiPickerEmojiList.d.ts +15 -0
- package/package.json +2 -2
- package/lib/types/components/emoji-input/EmojiInput.test.d.ts +0 -1
- package/lib/types/utils/emoji.test.d.ts +0 -1
- package/lib/types/utils/selection.test.d.ts +0 -1
- package/lib/types/utils/text.test.d.ts +0 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _nodeChild_process = require("node:child_process");
|
|
4
|
+
var _nodeFs = require("node:fs");
|
|
5
|
+
var _nodeModule = require("node:module");
|
|
6
|
+
var _nodeOs = require("node:os");
|
|
7
|
+
var _nodePath = require("node:path");
|
|
8
|
+
var _nodeUrl = require("node:url");
|
|
9
|
+
var _vitest = require("vitest");
|
|
10
|
+
(0, _vitest.it)('emits the public type entry at the declared package path without test declarations', () => {
|
|
11
|
+
const packageRoot = (0, _nodePath.join)((0, _nodePath.dirname)((0, _nodeUrl.fileURLToPath)(import.meta.url)), '..');
|
|
12
|
+
const {
|
|
13
|
+
types
|
|
14
|
+
} = JSON.parse((0, _nodeFs.readFileSync)((0, _nodePath.join)(packageRoot, 'package.json'), 'utf8'));
|
|
15
|
+
const outputDirectory = (0, _nodeFs.mkdtempSync)((0, _nodePath.join)((0, _nodeOs.tmpdir)(), 'emoji-input-types-'));
|
|
16
|
+
try {
|
|
17
|
+
(0, _nodeChild_process.execFileSync)(process.execPath, [(0, _nodeModule.createRequire)(import.meta.url).resolve('typescript/bin/tsc'), '--project', (0, _nodePath.join)(packageRoot, 'tsconfig.json'), '--outDir', outputDirectory], {
|
|
18
|
+
timeout: 25_000,
|
|
19
|
+
stdio: 'pipe'
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// A fresh output directory prevents old declarations from hiding a changed emit layout.
|
|
23
|
+
(0, _vitest.expect)((0, _nodeFs.existsSync)((0, _nodePath.join)(outputDirectory, (0, _nodePath.relative)('lib/types', types)))).toBe(true);
|
|
24
|
+
(0, _vitest.expect)((0, _nodeFs.readdirSync)(outputDirectory, {
|
|
25
|
+
recursive: true
|
|
26
|
+
}).filter(file => file.toString().endsWith('.test.d.ts'))).toEqual([]);
|
|
27
|
+
} finally {
|
|
28
|
+
(0, _nodeFs.rmSync)(outputDirectory, {
|
|
29
|
+
recursive: true,
|
|
30
|
+
force: true
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}, 30_000);
|
|
34
|
+
//# sourceMappingURL=build.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.test.js","names":["_nodeChild_process","require","_nodeFs","_nodeModule","_nodeOs","_nodePath","_nodeUrl","_vitest","it","packageRoot","join","dirname","fileURLToPath","import","meta","url","types","JSON","parse","readFileSync","outputDirectory","mkdtempSync","tmpdir","execFileSync","process","execPath","createRequire","resolve","timeout","stdio","expect","existsSync","relative","toBe","readdirSync","recursive","filter","file","toString","endsWith","toEqual","rmSync","force"],"sources":["../../src/build.test.ts"],"sourcesContent":["import { execFileSync } from 'node:child_process';\nimport { existsSync, mkdtempSync, readFileSync, readdirSync, rmSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { tmpdir } from 'node:os';\nimport { dirname, join, relative } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { expect, it } from 'vitest';\n\nit('emits the public type entry at the declared package path without test declarations', () => {\n const packageRoot = join(dirname(fileURLToPath(import.meta.url)), '..');\n const { types } = JSON.parse(readFileSync(join(packageRoot, 'package.json'), 'utf8')) as {\n types: string;\n };\n const outputDirectory = mkdtempSync(join(tmpdir(), 'emoji-input-types-'));\n\n try {\n execFileSync(\n process.execPath,\n [\n createRequire(import.meta.url).resolve('typescript/bin/tsc'),\n '--project',\n join(packageRoot, 'tsconfig.json'),\n '--outDir',\n outputDirectory,\n ],\n { timeout: 25_000, stdio: 'pipe' },\n );\n\n // A fresh output directory prevents old declarations from hiding a changed emit layout.\n expect(existsSync(join(outputDirectory, relative('lib/types', types)))).toBe(true);\n expect(\n readdirSync(outputDirectory, { recursive: true }).filter((file) =>\n file.toString().endsWith('.test.d.ts'),\n ),\n ).toEqual([]);\n } finally {\n rmSync(outputDirectory, { recursive: true, force: true });\n }\n}, 30_000);\n"],"mappings":";;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAEA,IAAAO,UAAE,EAAC,oFAAoF,EAAE,MAAM;EAC3F,MAAMC,WAAW,GAAG,IAAAC,cAAI,EAAC,IAAAC,iBAAO,EAAC,IAAAC,sBAAa,EAACC,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;EACvE,MAAM;IAAEC;EAAM,CAAC,GAAGC,IAAI,CAACC,KAAK,CAAC,IAAAC,oBAAY,EAAC,IAAAT,cAAI,EAACD,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAEnF;EACD,MAAMW,eAAe,GAAG,IAAAC,mBAAW,EAAC,IAAAX,cAAI,EAAC,IAAAY,cAAM,EAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;EAEzE,IAAI;IACA,IAAAC,+BAAY,EACRC,OAAO,CAACC,QAAQ,EAChB,CACI,IAAAC,yBAAa,EAACb,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAACY,OAAO,CAAC,oBAAoB,CAAC,EAC5D,WAAW,EACX,IAAAjB,cAAI,EAACD,WAAW,EAAE,eAAe,CAAC,EAClC,UAAU,EACVW,eAAe,CAClB,EACD;MAAEQ,OAAO,EAAE,MAAM;MAAEC,KAAK,EAAE;IAAO,CACrC,CAAC;;IAED;IACA,IAAAC,cAAM,EAAC,IAAAC,kBAAU,EAAC,IAAArB,cAAI,EAACU,eAAe,EAAE,IAAAY,kBAAQ,EAAC,WAAW,EAAEhB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACiB,IAAI,CAAC,IAAI,CAAC;IAClF,IAAAH,cAAM,EACF,IAAAI,mBAAW,EAACd,eAAe,EAAE;MAAEe,SAAS,EAAE;IAAK,CAAC,CAAC,CAACC,MAAM,CAAEC,IAAI,IAC1DA,IAAI,CAACC,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,YAAY,CACzC,CACJ,CAAC,CAACC,OAAO,CAAC,EAAE,CAAC;EACjB,CAAC,SAAS;IACN,IAAAC,cAAM,EAACrB,eAAe,EAAE;MAAEe,SAAS,EAAE,IAAI;MAAEO,KAAK,EAAE;IAAK,CAAC,CAAC;EAC7D;AACJ,CAAC,EAAE,MAAM,CAAC","ignoreList":[]}
|
|
@@ -4,15 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _core = require("@chayns-components/core");
|
|
8
|
-
var _emojilib = _interopRequireDefault(require("emojilib"));
|
|
9
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _emojilib = _interopRequireDefault(require("emojilib"));
|
|
10
9
|
var _emojiDeDE = _interopRequireDefault(require("../../../constants/emoji-de-DE.json"));
|
|
11
10
|
var _emojiHistory = require("../../../hooks/emojiHistory");
|
|
12
|
-
var
|
|
13
|
-
var _EmojiPickerEmojis = require("./EmojiPickerEmojis.styles");
|
|
11
|
+
var _EmojiPickerEmojiList = _interopRequireDefault(require("./emoji-picker-emoji-list/EmojiPickerEmojiList"));
|
|
14
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
16
14
|
const EmojiPickerEmojis = ({
|
|
17
15
|
accessToken,
|
|
18
16
|
onSelect,
|
|
@@ -20,11 +18,20 @@ const EmojiPickerEmojis = ({
|
|
|
20
18
|
searchString,
|
|
21
19
|
selectedCategory
|
|
22
20
|
}) => {
|
|
23
|
-
const [shouldPreventScroll, setShouldPreventScroll] = (0, _react.useState)(false);
|
|
24
|
-
const [shouldShowSkinTonePopup, setShouldShowSkinTonePopup] = (0, _react.useState)(false);
|
|
25
|
-
const [focusedIndex, setFocusedIndex] = (0, _react.useState)(0);
|
|
26
21
|
const [emojiCategories, setEmojiCategories] = (0, _react.useState)([]);
|
|
27
|
-
const [emojiList, setEmojiList] = (0, _react.useState)(
|
|
22
|
+
const [emojiList, setEmojiList] = (0, _react.useState)({});
|
|
23
|
+
const {
|
|
24
|
+
addOrUpdateEmojiInHistory,
|
|
25
|
+
historyEmojis
|
|
26
|
+
} = (0, _emojiHistory.useEmojiHistory)({
|
|
27
|
+
accessToken,
|
|
28
|
+
personId,
|
|
29
|
+
selectedCategory
|
|
30
|
+
});
|
|
31
|
+
const handleSelect = (0, _react.useCallback)((emoji, shouldRestoreInputFocus = false) => {
|
|
32
|
+
onSelect(emoji.emoji, shouldRestoreInputFocus);
|
|
33
|
+
void addOrUpdateEmojiInHistory(emoji);
|
|
34
|
+
}, [addOrUpdateEmojiInHistory, onSelect]);
|
|
28
35
|
(0, _react.useEffect)(() => {
|
|
29
36
|
void Promise.resolve().then(() => _interopRequireWildcard(require('unicode-emoji-json/data-by-group.json'))).then(({
|
|
30
37
|
default: categories
|
|
@@ -37,219 +44,41 @@ const EmojiPickerEmojis = ({
|
|
|
37
44
|
setEmojiList(emojis);
|
|
38
45
|
});
|
|
39
46
|
}, []);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
selectedCategory
|
|
51
|
-
});
|
|
52
|
-
const handlePopupVisibilityChange = (0, _react.useCallback)(isVisible => {
|
|
53
|
-
setShouldShowSkinTonePopup(isVisible);
|
|
54
|
-
shouldPreventEmojiControlsRef.current = isVisible;
|
|
55
|
-
setShouldPreventScroll(isVisible);
|
|
56
|
-
}, []);
|
|
57
|
-
const handleSelect = (0, _react.useCallback)(({
|
|
58
|
-
emoji,
|
|
59
|
-
name,
|
|
60
|
-
skin_tone_support,
|
|
61
|
-
index
|
|
62
|
-
}, shouldRestoreInputFocus = false) => {
|
|
63
|
-
onSelect(emoji, shouldRestoreInputFocus);
|
|
64
|
-
if (index) {
|
|
65
|
-
setFocusedIndex(index);
|
|
66
|
-
}
|
|
67
|
-
void addOrUpdateEmojiInHistory({
|
|
47
|
+
let visibleEmojis;
|
|
48
|
+
if (searchString.trim() !== '') {
|
|
49
|
+
const lowerSearchString = searchString.toLowerCase();
|
|
50
|
+
visibleEmojis = Object.entries(emojiList).filter(([emoji, {
|
|
51
|
+
name
|
|
52
|
+
}]) => {
|
|
53
|
+
const keywords = _emojilib.default[emoji];
|
|
54
|
+
const germanKeywords = _emojiDeDE.default[emoji];
|
|
55
|
+
return name.includes(lowerSearchString) || (keywords === null || keywords === void 0 ? void 0 : keywords.some(keyword => keyword.includes(lowerSearchString))) || (germanKeywords === null || germanKeywords === void 0 ? void 0 : germanKeywords.some(keyword => keyword.includes(lowerSearchString)));
|
|
56
|
+
}).map(([emoji, data]) => ({
|
|
68
57
|
emoji,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (selectedCategory) {
|
|
75
|
-
setFocusedIndex(0);
|
|
76
|
-
const container = emojiRef.current;
|
|
77
|
-
if (!container) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
container.scrollTop = 0;
|
|
81
|
-
}
|
|
82
|
-
}, [selectedCategory]);
|
|
83
|
-
(0, _react.useEffect)(() => {
|
|
84
|
-
const handleKeyDown = event => {
|
|
85
|
-
if (shouldPreventListener) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (!shouldPreventEmojiControlsRef.current && (event.key === 'ArrowUp' || event.key === 'ArrowDown' || event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {
|
|
89
|
-
var _emojiRef$current;
|
|
90
|
-
event.preventDefault();
|
|
91
|
-
const children = (_emojiRef$current = emojiRef.current) === null || _emojiRef$current === void 0 ? void 0 : _emojiRef$current.children;
|
|
92
|
-
if (children && children.length > 0) {
|
|
93
|
-
const container = emojiRef.current;
|
|
94
|
-
let newIndex = focusedIndex !== null ? focusedIndex : 0;
|
|
95
|
-
if (event.ctrlKey) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
if (event.key === 'ArrowUp') {
|
|
99
|
-
newIndex = (newIndex - 6) % children.length;
|
|
100
|
-
} else if (event.key === 'ArrowDown') {
|
|
101
|
-
newIndex = (newIndex + 6) % children.length;
|
|
102
|
-
} else if (event.key === 'ArrowLeft') {
|
|
103
|
-
newIndex = (newIndex - 1) % children.length;
|
|
104
|
-
} else if (event.key === 'ArrowRight') {
|
|
105
|
-
newIndex = (newIndex + 1) % children.length;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// remove focus from the old element
|
|
109
|
-
if (focusedIndex !== null) {
|
|
110
|
-
const prevElement = children[focusedIndex];
|
|
111
|
-
prevElement.tabIndex = -1;
|
|
112
|
-
}
|
|
113
|
-
if (newIndex < 0) {
|
|
114
|
-
newIndex = children.length - 1;
|
|
115
|
-
} else if (newIndex > children.length - 1) {
|
|
116
|
-
newIndex = 0;
|
|
117
|
-
}
|
|
118
|
-
setFocusedIndex(newIndex);
|
|
119
|
-
|
|
120
|
-
// Set focus to the element
|
|
121
|
-
const newElement = children[newIndex];
|
|
122
|
-
newElement.tabIndex = 0;
|
|
123
|
-
const containerRect = container.getBoundingClientRect();
|
|
124
|
-
const elementRect = newElement.getBoundingClientRect();
|
|
125
|
-
if (elementRect.bottom > containerRect.bottom) {
|
|
126
|
-
container.scrollTop += elementRect.bottom - containerRect.bottom;
|
|
127
|
-
} else if (elementRect.top < containerRect.top) {
|
|
128
|
-
container.scrollTop -= containerRect.top - elementRect.top;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
} else if (event.key === 'Enter' && !shouldPreventEmojiControlsRef.current && focusedIndex !== null) {
|
|
132
|
-
var _emojiRef$current2;
|
|
133
|
-
if (event.ctrlKey) {
|
|
134
|
-
setShouldShowSkinTonePopup(true);
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
const {
|
|
138
|
-
dataset
|
|
139
|
-
} = (_emojiRef$current2 = emojiRef.current) === null || _emojiRef$current2 === void 0 ? void 0 : _emojiRef$current2.children[focusedIndex];
|
|
140
|
-
const {
|
|
141
|
-
emoji,
|
|
142
|
-
name,
|
|
143
|
-
skinToneSupport
|
|
144
|
-
} = dataset;
|
|
145
|
-
if (!emoji || !name || !skinToneSupport) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
handleSelect({
|
|
149
|
-
emoji,
|
|
150
|
-
name,
|
|
151
|
-
skin_tone_support: skinToneSupport === 'true'
|
|
152
|
-
}, true);
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
document.addEventListener('keydown', handleKeyDown);
|
|
156
|
-
return () => {
|
|
157
|
-
document.removeEventListener('keydown', handleKeyDown);
|
|
158
|
-
};
|
|
159
|
-
}, [focusedIndex, handleSelect, shouldPreventListener]);
|
|
160
|
-
const handleRightClick = (0, _react.useCallback)(index => {
|
|
161
|
-
setFocusedIndex(index);
|
|
162
|
-
}, []);
|
|
163
|
-
const emojis = (0, _react.useMemo)(() => {
|
|
58
|
+
...data
|
|
59
|
+
}));
|
|
60
|
+
} else if (selectedCategory === 'history') {
|
|
61
|
+
visibleEmojis = historyEmojis;
|
|
62
|
+
} else {
|
|
164
63
|
var _emojiCategories$find;
|
|
165
|
-
|
|
166
|
-
const lowerSearchString = searchString.toLowerCase();
|
|
167
|
-
const searchResults = [];
|
|
168
|
-
Object.entries(emojiList).forEach(([emoji, {
|
|
169
|
-
name,
|
|
170
|
-
skin_tone_support
|
|
171
|
-
}], index) => {
|
|
172
|
-
const keywords = _emojilib.default[emoji];
|
|
173
|
-
const germanKeywords = _emojiDeDE.default[emoji];
|
|
174
|
-
if (name.includes(lowerSearchString) || keywords !== null && keywords !== void 0 && keywords.some(keyword => keyword.includes(lowerSearchString)) || germanKeywords !== null && germanKeywords !== void 0 && germanKeywords.some(keyword => keyword.includes(lowerSearchString))) {
|
|
175
|
-
searchResults.push(/*#__PURE__*/_react.default.createElement(_Emoji.default, {
|
|
176
|
-
shouldShowSkinTonePopup: index === focusedIndex && skin_tone_support && shouldShowSkinTonePopup,
|
|
177
|
-
isSelected: index === focusedIndex,
|
|
178
|
-
emoji: emoji,
|
|
179
|
-
index: index,
|
|
180
|
-
onRightClick: handleRightClick,
|
|
181
|
-
isSkinToneSupported: skin_tone_support,
|
|
182
|
-
key: name,
|
|
183
|
-
name: name,
|
|
184
|
-
onPopupVisibilityChange: handlePopupVisibilityChange,
|
|
185
|
-
onSelect: e => handleSelect({
|
|
186
|
-
emoji: e,
|
|
187
|
-
name,
|
|
188
|
-
skin_tone_support,
|
|
189
|
-
index
|
|
190
|
-
}),
|
|
191
|
-
emojiList: emojiList
|
|
192
|
-
}));
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
return searchResults;
|
|
196
|
-
}
|
|
197
|
-
if (selectedCategory === 'history') {
|
|
198
|
-
return historyEmojis.map(({
|
|
199
|
-
emoji,
|
|
200
|
-
name,
|
|
201
|
-
skin_tone_support
|
|
202
|
-
}, index) => /*#__PURE__*/_react.default.createElement(_Emoji.default, {
|
|
203
|
-
isSelected: index === focusedIndex,
|
|
204
|
-
shouldShowSkinTonePopup: index === focusedIndex && skin_tone_support && shouldShowSkinTonePopup,
|
|
205
|
-
emoji: emoji,
|
|
206
|
-
name: name,
|
|
207
|
-
key: name,
|
|
208
|
-
index: index,
|
|
209
|
-
onRightClick: handleRightClick,
|
|
210
|
-
onPopupVisibilityChange: handlePopupVisibilityChange,
|
|
211
|
-
onSelect: e => handleSelect({
|
|
212
|
-
emoji: e,
|
|
213
|
-
name,
|
|
214
|
-
skin_tone_support,
|
|
215
|
-
index
|
|
216
|
-
}),
|
|
217
|
-
isSkinToneSupported: false,
|
|
218
|
-
emojiList: emojiList
|
|
219
|
-
}));
|
|
220
|
-
}
|
|
221
|
-
return (_emojiCategories$find = emojiCategories.find(({
|
|
64
|
+
visibleEmojis = ((_emojiCategories$find = emojiCategories.find(({
|
|
222
65
|
slug
|
|
223
|
-
}) => slug === selectedCategory)) === null || _emojiCategories$find === void 0 ? void 0 : _emojiCategories$find.emojis
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
name,
|
|
240
|
-
skin_tone_support,
|
|
241
|
-
index
|
|
242
|
-
}),
|
|
243
|
-
emojiList: emojiList
|
|
244
|
-
}));
|
|
245
|
-
}, [searchString, selectedCategory, focusedIndex, shouldShowSkinTonePopup, handleRightClick, handlePopupVisibilityChange, handleSelect, historyEmojis]);
|
|
246
|
-
const shouldShowNoContentInfo = !emojis || emojis.length === 0;
|
|
247
|
-
return /*#__PURE__*/_react.default.createElement(_EmojiPickerEmojis.StyledEmojiPickerEmojis, {
|
|
248
|
-
className: "chayns-scrollbar",
|
|
249
|
-
$shouldPreventScroll: shouldPreventScroll,
|
|
250
|
-
$shouldShowNoContentInfo: shouldShowNoContentInfo,
|
|
251
|
-
ref: combinedRef
|
|
252
|
-
}, emojis, shouldShowNoContentInfo && /*#__PURE__*/_react.default.createElement(_EmojiPickerEmojis.StyledEmojiPickerEmojisNoContentInfo, null, "Hier werden die zuletzt verwendeten Emojis angezeigt, die \xFCber diese Auswahl gew\xE4hlt wurden."));
|
|
66
|
+
}) => slug === selectedCategory)) === null || _emojiCategories$find === void 0 ? void 0 : _emojiCategories$find.emojis) ?? [];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Reset navigation and dismiss popups when the displayed identities or their order change,
|
|
70
|
+
// following the existing category-change rule without taking focus from the search field.
|
|
71
|
+
const isHistory = searchString.trim() === '' && selectedCategory === 'history';
|
|
72
|
+
const listKey = JSON.stringify([selectedCategory, isHistory, visibleEmojis.map(({
|
|
73
|
+
emoji
|
|
74
|
+
}) => emoji)]);
|
|
75
|
+
return /*#__PURE__*/_react.default.createElement(_EmojiPickerEmojiList.default, {
|
|
76
|
+
key: listKey,
|
|
77
|
+
emojis: visibleEmojis,
|
|
78
|
+
emojiList: emojiList,
|
|
79
|
+
isHistory: isHistory,
|
|
80
|
+
onSelect: handleSelect
|
|
81
|
+
});
|
|
253
82
|
};
|
|
254
83
|
EmojiPickerEmojis.displayName = 'EmojiPickerEmojis';
|
|
255
84
|
var _default = exports.default = EmojiPickerEmojis;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiPickerEmojis.js","names":["_core","require","_emojilib","_interopRequireDefault","_react","_interopRequireWildcard","_emojiDeDE","_emojiHistory","_Emoji","_EmojiPickerEmojis","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","EmojiPickerEmojis","accessToken","onSelect","personId","searchString","selectedCategory","shouldPreventScroll","setShouldPreventScroll","useState","shouldShowSkinTonePopup","setShouldShowSkinTonePopup","focusedIndex","setFocusedIndex","emojiCategories","setEmojiCategories","emojiList","setEmojiList","useEffect","Promise","resolve","then","categories","emojis","shouldPreventListener","ref","useIsMeasuredClone","emojiRef","useRef","shouldPreventEmojiControlsRef","combinedRef","useCombinedRefs","addOrUpdateEmojiInHistory","historyEmojis","useEmojiHistory","handlePopupVisibilityChange","useCallback","isVisible","current","handleSelect","emoji","name","skin_tone_support","index","shouldRestoreInputFocus","container","scrollTop","handleKeyDown","event","key","_emojiRef$current","preventDefault","children","length","newIndex","ctrlKey","prevElement","tabIndex","newElement","containerRect","getBoundingClientRect","elementRect","bottom","top","_emojiRef$current2","dataset","skinToneSupport","document","addEventListener","removeEventListener","handleRightClick","useMemo","_emojiCategories$find","trim","lowerSearchString","toLowerCase","searchResults","entries","forEach","keywords","emojiLib","germanKeywords","germanEmojiLib","includes","some","keyword","push","createElement","isSelected","onRightClick","isSkinToneSupported","onPopupVisibilityChange","map","find","slug","shouldShowNoContentInfo","StyledEmojiPickerEmojis","className","$shouldPreventScroll","$shouldShowNoContentInfo","StyledEmojiPickerEmojisNoContentInfo","displayName","_default","exports"],"sources":["../../../../../src/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.tsx"],"sourcesContent":["// @ts-nocheck\n\nimport { useCombinedRefs, useIsMeasuredClone } from '@chayns-components/core';\nimport emojiLib from 'emojilib';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport germanEmojiLib from '../../../constants/emoji-de-DE.json';\nimport { useEmojiHistory } from '../../../hooks/emojiHistory';\nimport type { Category } from '../../../types/category';\nimport Emoji from './emoji/Emoji';\nimport {\n StyledEmojiPickerEmojis,\n StyledEmojiPickerEmojisNoContentInfo,\n} from './EmojiPickerEmojis.styles';\n\nexport type EmojiPickerEmojisProps = {\n accessToken?: string;\n onSelect: (emoji: string, shouldRestoreInputFocus?: boolean) => void;\n personId?: string;\n searchString: string;\n selectedCategory: Category;\n};\n\ninterface EmojiType {\n emoji: string;\n skin_tone_support: boolean;\n name: string;\n slug: string;\n unicode_version: string;\n emoji_version: string;\n group?: string;\n}\n\ninterface EmojiCategory {\n name: string;\n slug: string;\n emojis: EmojiType[];\n}\n\ntype EmojiData = EmojiCategory[];\ninterface EmojiDictionary {\n [key: string]: EmojiType;\n}\n\nconst EmojiPickerEmojis: FC<EmojiPickerEmojisProps> = ({\n accessToken,\n onSelect,\n personId,\n searchString,\n selectedCategory,\n}) => {\n const [shouldPreventScroll, setShouldPreventScroll] = useState(false);\n const [shouldShowSkinTonePopup, setShouldShowSkinTonePopup] = useState(false);\n const [focusedIndex, setFocusedIndex] = useState<number>(0);\n const [emojiCategories, setEmojiCategories] = useState<EmojiData>([]);\n const [emojiList, setEmojiList] = useState<EmojiDictionary[]>([]);\n\n useEffect(() => {\n void import('unicode-emoji-json/data-by-group.json').then(({ default: categories }) => {\n setEmojiCategories(categories);\n });\n void import('unicode-emoji-json/data-by-emoji.json').then(({ default: emojis }) => {\n setEmojiList(emojis);\n });\n }, []);\n\n const [shouldPreventListener, ref] = useIsMeasuredClone();\n\n const emojiRef = useRef<HTMLDivElement>(null);\n const shouldPreventEmojiControlsRef = useRef(false);\n\n const combinedRef = useCombinedRefs(emojiRef, ref);\n\n const { addOrUpdateEmojiInHistory, historyEmojis } = useEmojiHistory({\n accessToken,\n personId,\n selectedCategory,\n });\n\n const handlePopupVisibilityChange = useCallback((isVisible: boolean) => {\n setShouldShowSkinTonePopup(isVisible);\n shouldPreventEmojiControlsRef.current = isVisible;\n setShouldPreventScroll(isVisible);\n }, []);\n\n const handleSelect = useCallback(\n (\n {\n emoji,\n name,\n skin_tone_support,\n index,\n }: {\n emoji: string;\n name: string;\n skin_tone_support: boolean;\n index?: number;\n },\n shouldRestoreInputFocus = false,\n ) => {\n onSelect(emoji, shouldRestoreInputFocus);\n\n if (index) {\n setFocusedIndex(index);\n }\n\n void addOrUpdateEmojiInHistory({ emoji, name, skin_tone_support });\n },\n [addOrUpdateEmojiInHistory, onSelect],\n );\n\n useEffect(() => {\n if (selectedCategory) {\n setFocusedIndex(0);\n\n const container = emojiRef.current;\n\n if (!container) {\n return;\n }\n\n container.scrollTop = 0;\n }\n }, [selectedCategory]);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (shouldPreventListener) {\n return;\n }\n\n if (\n !shouldPreventEmojiControlsRef.current &&\n (event.key === 'ArrowUp' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight')\n ) {\n event.preventDefault();\n const children = emojiRef.current?.children;\n if (children && children.length > 0) {\n const container = emojiRef.current;\n let newIndex = focusedIndex !== null ? focusedIndex : 0;\n\n if (event.ctrlKey) {\n return;\n }\n\n if (event.key === 'ArrowUp') {\n newIndex = (newIndex - 6) % children.length;\n } else if (event.key === 'ArrowDown') {\n newIndex = (newIndex + 6) % children.length;\n } else if (event.key === 'ArrowLeft') {\n newIndex = (newIndex - 1) % children.length;\n } else if (event.key === 'ArrowRight') {\n newIndex = (newIndex + 1) % children.length;\n }\n\n // remove focus from the old element\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n if (newIndex < 0) {\n newIndex = children.length - 1;\n } else if (newIndex > children.length - 1) {\n newIndex = 0;\n }\n\n setFocusedIndex(newIndex);\n\n // Set focus to the element\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n\n const containerRect = container.getBoundingClientRect();\n const elementRect = newElement.getBoundingClientRect();\n\n if (elementRect.bottom > containerRect.bottom) {\n container.scrollTop += elementRect.bottom - containerRect.bottom;\n } else if (elementRect.top < containerRect.top) {\n container.scrollTop -= containerRect.top - elementRect.top;\n }\n }\n } else if (\n event.key === 'Enter' &&\n !shouldPreventEmojiControlsRef.current &&\n focusedIndex !== null\n ) {\n if (event.ctrlKey) {\n setShouldShowSkinTonePopup(true);\n\n return;\n }\n\n const { dataset } = emojiRef.current?.children[focusedIndex] as HTMLDivElement;\n\n const { emoji, name, skinToneSupport } = dataset;\n\n if (!emoji || !name || !skinToneSupport) {\n return;\n }\n\n handleSelect({ emoji, name, skin_tone_support: skinToneSupport === 'true' }, true);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [focusedIndex, handleSelect, shouldPreventListener]);\n\n const handleRightClick = useCallback((index: number) => {\n setFocusedIndex(index);\n }, []);\n\n const emojis = useMemo(() => {\n if (searchString.trim() !== '') {\n const lowerSearchString = searchString.toLowerCase();\n\n const searchResults: JSX.Element[] = [];\n\n Object.entries(emojiList).forEach(([emoji, { name, skin_tone_support }], index) => {\n const keywords = (emojiLib as { [key: string]: string[] })[emoji] as\n | string[]\n | undefined;\n\n const germanKeywords = (germanEmojiLib as { [key: string]: string[] })[emoji] as\n | string[]\n | undefined;\n\n if (\n name.includes(lowerSearchString) ||\n keywords?.some((keyword) => keyword.includes(lowerSearchString)) ||\n germanKeywords?.some((keyword) => keyword.includes(lowerSearchString))\n ) {\n searchResults.push(\n <Emoji\n shouldShowSkinTonePopup={\n index === focusedIndex &&\n skin_tone_support &&\n shouldShowSkinTonePopup\n }\n isSelected={index === focusedIndex}\n emoji={emoji}\n index={index}\n onRightClick={handleRightClick}\n isSkinToneSupported={skin_tone_support}\n key={name}\n name={name}\n onPopupVisibilityChange={handlePopupVisibilityChange}\n onSelect={(e) =>\n handleSelect({ emoji: e, name, skin_tone_support, index })\n }\n emojiList={emojiList}\n />,\n );\n }\n });\n\n return searchResults;\n }\n\n if (selectedCategory === 'history') {\n return historyEmojis.map(({ emoji, name, skin_tone_support }, index) => (\n <Emoji\n isSelected={index === focusedIndex}\n shouldShowSkinTonePopup={\n index === focusedIndex && skin_tone_support && shouldShowSkinTonePopup\n }\n emoji={emoji}\n name={name}\n key={name}\n index={index}\n onRightClick={handleRightClick}\n onPopupVisibilityChange={handlePopupVisibilityChange}\n onSelect={(e) => handleSelect({ emoji: e, name, skin_tone_support, index })}\n isSkinToneSupported={false}\n emojiList={emojiList}\n />\n ));\n }\n\n return emojiCategories\n .find(({ slug }) => slug === selectedCategory)\n ?.emojis.map(({ emoji, name, skin_tone_support }, index) => (\n <Emoji\n isSelected={index === focusedIndex}\n shouldShowSkinTonePopup={\n index === focusedIndex && skin_tone_support && shouldShowSkinTonePopup\n }\n emoji={emoji}\n name={name}\n index={index}\n onRightClick={handleRightClick}\n isSkinToneSupported={skin_tone_support}\n key={name}\n onPopupVisibilityChange={handlePopupVisibilityChange}\n onSelect={(e) => handleSelect({ emoji: e, name, skin_tone_support, index })}\n emojiList={emojiList}\n />\n ));\n }, [\n searchString,\n selectedCategory,\n focusedIndex,\n shouldShowSkinTonePopup,\n handleRightClick,\n handlePopupVisibilityChange,\n handleSelect,\n historyEmojis,\n ]);\n\n const shouldShowNoContentInfo = !emojis || emojis.length === 0;\n\n return (\n <StyledEmojiPickerEmojis\n className=\"chayns-scrollbar\"\n $shouldPreventScroll={shouldPreventScroll}\n $shouldShowNoContentInfo={shouldShowNoContentInfo}\n ref={combinedRef}\n >\n {emojis}\n {shouldShowNoContentInfo && (\n <StyledEmojiPickerEmojisNoContentInfo>\n Hier werden die zuletzt verwendeten Emojis angezeigt, die über diese Auswahl\n gewählt wurden.\n </StyledEmojiPickerEmojisNoContentInfo>\n )}\n </StyledEmojiPickerEmojis>\n );\n};\n\nEmojiPickerEmojis.displayName = 'EmojiPickerEmojis';\n\nexport default EmojiPickerEmojis;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"EmojiPickerEmojis.js","names":["_react","_interopRequireWildcard","require","_emojilib","_interopRequireDefault","_emojiDeDE","_emojiHistory","_EmojiPickerEmojiList","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","EmojiPickerEmojis","accessToken","onSelect","personId","searchString","selectedCategory","emojiCategories","setEmojiCategories","useState","emojiList","setEmojiList","addOrUpdateEmojiInHistory","historyEmojis","useEmojiHistory","handleSelect","useCallback","emoji","shouldRestoreInputFocus","useEffect","Promise","resolve","then","categories","emojis","visibleEmojis","trim","lowerSearchString","toLowerCase","entries","filter","name","keywords","emojiLib","germanKeywords","germanEmojiLib","includes","some","keyword","map","data","_emojiCategories$find","find","slug","isHistory","listKey","JSON","stringify","createElement","key","displayName","_default","exports"],"sources":["../../../../../src/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect, useState } from 'react';\nimport emojiLib from 'emojilib';\nimport germanEmojiLib from '../../../constants/emoji-de-DE.json';\nimport { useEmojiHistory } from '../../../hooks/emojiHistory';\nimport type { Category } from '../../../types/category';\nimport EmojiPickerEmojiList, {\n type PickerEmoji,\n} from './emoji-picker-emoji-list/EmojiPickerEmojiList';\n\nexport type EmojiPickerEmojisProps = {\n accessToken?: string;\n onSelect: (emoji: string, shouldRestoreInputFocus?: boolean) => void;\n personId?: string;\n searchString: string;\n selectedCategory: Category;\n};\n\ntype EmojiDictionary = Record<string, Omit<PickerEmoji, 'emoji'>>;\ntype EmojiCategory = { slug: string; emojis: PickerEmoji[] };\n\nconst EmojiPickerEmojis: FC<EmojiPickerEmojisProps> = ({\n accessToken,\n onSelect,\n personId,\n searchString,\n selectedCategory,\n}) => {\n const [emojiCategories, setEmojiCategories] = useState<EmojiCategory[]>([]);\n const [emojiList, setEmojiList] = useState<EmojiDictionary>({});\n\n const { addOrUpdateEmojiInHistory, historyEmojis } = useEmojiHistory({\n accessToken,\n personId,\n selectedCategory,\n });\n\n const handleSelect = useCallback(\n (emoji: PickerEmoji, shouldRestoreInputFocus = false) => {\n onSelect(emoji.emoji, shouldRestoreInputFocus);\n void addOrUpdateEmojiInHistory(emoji);\n },\n [addOrUpdateEmojiInHistory, onSelect],\n );\n\n useEffect(() => {\n void import('unicode-emoji-json/data-by-group.json').then(({ default: categories }) => {\n setEmojiCategories(categories);\n });\n void import('unicode-emoji-json/data-by-emoji.json').then(({ default: emojis }) => {\n setEmojiList(emojis);\n });\n }, []);\n\n let visibleEmojis: PickerEmoji[];\n\n if (searchString.trim() !== '') {\n const lowerSearchString = searchString.toLowerCase();\n visibleEmojis = Object.entries(emojiList)\n .filter(([emoji, { name }]) => {\n const keywords = (emojiLib as Record<string, string[]>)[emoji];\n const germanKeywords = (germanEmojiLib as Record<string, string[]>)[emoji];\n\n return (\n name.includes(lowerSearchString) ||\n keywords?.some((keyword) => keyword.includes(lowerSearchString)) ||\n germanKeywords?.some((keyword) => keyword.includes(lowerSearchString))\n );\n })\n .map(([emoji, data]) => ({ emoji, ...data }));\n } else if (selectedCategory === 'history') {\n visibleEmojis = historyEmojis;\n } else {\n visibleEmojis = emojiCategories.find(({ slug }) => slug === selectedCategory)?.emojis ?? [];\n }\n\n // Reset navigation and dismiss popups when the displayed identities or their order change,\n // following the existing category-change rule without taking focus from the search field.\n const isHistory = searchString.trim() === '' && selectedCategory === 'history';\n const listKey = JSON.stringify([\n selectedCategory,\n isHistory,\n visibleEmojis.map(({ emoji }) => emoji),\n ]);\n\n return (\n <EmojiPickerEmojiList\n key={listKey}\n emojis={visibleEmojis}\n emojiList={emojiList}\n isHistory={isHistory}\n onSelect={handleSelect}\n />\n );\n};\n\nEmojiPickerEmojis.displayName = 'EmojiPickerEmojis';\n\nexport default EmojiPickerEmojis;\n"],"mappings":"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","ignoreList":[]}
|