MCPcopy Create free account
hub / github.com/Make-md/makemd / StickerModal

Function StickerModal

src/shared/components/StickerModal.tsx:19–174  ·  view source on GitHub ↗
(props)

Source from the content-addressed store, hash-verified

17}
18
19const StickerModal: React.FC<StickerModalProps> = (props) => {
20 const [query, setQuery] = useState("");
21 const [allStickers, setAllStickers] = useState<Sticker[]>([]);
22 const [stickers, setStickers] = useState<Sticker[]>([]);
23 const [selectedSticker, setSelectedSticker] = useState<number>(null);
24
25 const htmlFromSticker = (sticker: Sticker) => {
26 if (sticker.type == "emoji") {
27 return emojiFromString(sticker.html);
28 }
29 return sticker.html;
30 };
31
32 useEffect(() => {
33 const _allImages: Sticker[] = [];
34 _allImages.push(...props.ui.allStickers());
35 setAllStickers(_allImages);
36 }, []);
37
38 const categories = useMemo(
39 () => new Set(allStickers.map((f) => f.type)),
40 [allStickers]
41 );
42
43 const [page, setPage] = useState(1);
44
45 const loadNextPage = useCallback(() => {
46 setPage((p) => p + 1);
47 }, [page]);
48 const loaderRef = useRef(null);
49 useEffect(() => {
50 const observer = new IntersectionObserver((entries) => {
51 const target = entries[0];
52 if (target.isIntersecting) {
53 loadNextPage();
54 }
55 });
56
57 if (loaderRef.current) {
58 observer.observe(loaderRef.current);
59 }
60
61 return () => {
62 if (loaderRef.current) {
63 observer.unobserve(loaderRef.current);
64 }
65 };
66 }, [loadNextPage]);
67 const [selectedCategory, setSelectedCategory] = useState<string>(null);
68 useEffect(() => {
69 setStickers(
70 allStickers
71 .filter(
72 (f) =>
73 f.name.includes(query.toLowerCase()) &&
74 (selectedCategory == null || f.type == selectedCategory)
75 )
76 .slice(0, page * 250)

Callers

nothing calls this directly

Calls 8

htmlFromStickerFunction · 0.85
pushMethod · 0.80
sliceMethod · 0.80
filterMethod · 0.80
hideMethod · 0.65
allStickersMethod · 0.45
mapMethod · 0.45
getStickerMethod · 0.45

Tested by

no test coverage detected