decord/source/modules/chat_input/native/useEmojiSuggestions.tsx
github-actions 8d58bae3b2 chore: update source for alpha 347.4
Skipped 1 file(s) >100MB (GitHub limit): source/__polyfill/04xxx/module_4907.js (118.4 MB)
2026-09-18 06:58:00 +00:00

162 lines
5.3 KiB
TypeScript

// Module ID: 12670
// Function ID: 12671
// Name: useEmojiSuggestions
// Dependencies: [32, 19, 5629, 5169, 1375, 504, 5612, 2]
// Exports: default
// Module 12670 (useEmojiSuggestions)
import AutocompleteUtilsDefault from "AutocompleteUtils" /* 5612 */;
import _slicedToArray from "module_32" /* 32 */;
import noop from "module_19" /* 19 */;
import EmojiStore from "EmojiStore" /* 5629 */;
const require = fn;
function findWordSpan(text, selectionStart, selectionEnd) {
if (selectionStart !== selectionEnd) {
const obj2 = { query: text.slice(selectionStart, selectionEnd), queryStart: selectionStart, queryEnd: selectionEnd };
return obj2;
} else {
const substr = text.slice(0, selectionStart);
const substr1 = text.slice(selectionStart);
const match = /\S+$/.exec(substr);
const match1 = /^\S+/.exec(substr1);
if (null == match) {
if (null == match1) {
const match2 = re9.exec(substr);
let tmp3 = null;
if (null != match2) {
const obj = { query: match2[1], queryStart: match2.index, queryEnd: selectionStart };
tmp3 = obj;
}
return tmp3;
}
}
let str;
if (match != null) {
str = match[0];
}
if (str == null) {
str = "";
}
let str2;
if (match1 != null) {
str2 = match1[0];
}
if (str2 == null) {
str2 = "";
}
const obj3 = { query: str + str2, queryStart: selectionStart - str.length, queryEnd: selectionStart + str2.length };
return obj3;
}
}
const LoadState = fn(5629).LoadState;
const EMOJI_SENTINEL = fn(5169).EMOJI_SENTINEL;
const EmojiIntention = fn(1375).EmojiIntention;
const re9 = /(\S+)\s$/;
let closure_10 = { unlockedEmojis: [], lockedEmojis: [], queryStart: 0, queryEnd: 0 };
const size = fn(2);
const result = size.fileFinishedImporting("modules/chat_input/native/useEmojiSuggestions.tsx");
export default function useEmojiSuggestions(channel) {
channel = channel.channel;
const text = channel.text;
importDefault = text;
const selectionStart = channel.selectionStart;
const selectionEnd = channel.selectionEnd;
const enabled = channel.enabled;
const maxCount = channel.maxCount;
const minUnlockedEmojis = channel.minUnlockedEmojis;
closure_10 = undefined;
const items = [maxCount];
const stateFromStores = channel(selectionStart[5]).useStateFromStores(items, () => maxCount.loadState);
const items1 = [channel, stateFromStores, enabled, maxCount, minUnlockedEmojis, selectionEnd, selectionStart, text];
const memo = enabled.useMemo(() => {
if (enabled) {
if (stateFromStores === LoadState.Loaded) {
const tmp10 = findWordSpan(text, selectionStart, selectionEnd);
let tmp3 = null;
if (null != tmp10) {
tmp3 = null;
if (tmp10.query.length >= 3) {
const query = tmp10.query;
tmp3 = null;
if (!query.startsWith(EMOJI_SENTINEL)) {
tmp3 = tmp10;
}
}
}
if (null == tmp3) {
return closure_10;
} else {
const obj3 = { query: tmp3.query, channel, intention: EmojiIntention.CHAT, maxCount };
const emojis = AutocompleteUtilsDefault.queryEmojiResults(obj3).emojis;
if (emojis.unlocked.length < minUnlockedEmojis) {
let obj = closure_10;
} else {
obj = { unlockedEmojis: null, lockedEmojis: null, queryStart: null, queryEnd: null };
({ unlocked: obj.unlockedEmojis, locked: obj.lockedEmojis } = emojis);
({ queryStart: obj.queryStart, queryEnd: obj.queryEnd } = tmp3);
}
return obj;
}
}
}
return closure_10;
}, items1);
let tmp3 = closure_10;
let obj = channel(selectionStart[5]);
[tmp5, tmp6] = selectionEnd(enabled.useState(closure_10), 2);
c9 = tmp6;
closure_10 = tmp7;
enabled.useRef(null);
let tmp8 = enabled;
if (enabled) {
tmp8 = "" !== text;
}
if (!tmp8) {
tmp8 = tmp5 === tmp3;
}
if (!tmp8) {
tmp6(tmp3);
}
const items2 = [enabled, text, memo, memo.unlockedEmojis.length > 0 || memo.lockedEmojis.length > 0];
const effect = obj2.useEffect(() => {
if (enabled) {
if ("" !== closure_1) {
if (closure_10) {
let num = ref.current;
if (num == null) {
num = -Infinity;
}
const _Math = Math;
const _Date = Date;
const sum = num + 500;
const _setTimeout = setTimeout;
const timeout = setTimeout(() => {
ref.current = Date.now();
_undefined(memo);
}, Math.max(0, sum - Date.now()));
return () => clearTimeout(closure_0);
}
}
}
ref.current = null;
}, items2);
const items3 = [text, selectionStart, selectionEnd];
const callback = obj2.useCallback(() => {
closure_11.current = null;
_undefined(closure_10);
}, []);
const memo1 = obj2.useMemo(() => {
let tmp3 = findWordSpan(text, selectionStart, selectionEnd);
if (tmp3 == null) {
const obj = { queryStart: selectionStart, queryEnd: selectionEnd };
tmp3 = obj;
}
return tmp3;
}, items3);
if (enabled) {
tmp3 = tmp5;
}
return { unlockedEmojis: tmp3.unlockedEmojis, lockedEmojis: tmp3.lockedEmojis, queryStart: memo1.queryStart, queryEnd: memo1.queryEnd, clear: callback };
};