import { cx } from 'flairup'; import * as React from 'react'; import { ClassNames } from '../../DomUtils/classNames'; import { getLabelHeight } from '../../DomUtils/elementPositionInRow'; import { stylesheet } from '../../Stylesheet/stylesheet'; import { categoryFromCategoryConfig } from '../../config/categoryConfig'; import { useCategoriesConfig } from '../../config/useConfig'; import { DataEmojis } from '../../dataUtils/DataTypes'; import { useEmojiVirtualization } from '../../hooks/useEmojiVirtualization'; import { CategoryConfig } from '../../types/exposedTypes'; import { useEmojiListRef } from '../context/ElementRefContext'; import { useVisibleCategoriesState } from '../context/PickerContext'; import { useGetEmojisByCategory } from '../context/PickerDataContext'; import { EmojiCategory } from './EmojiCategory'; import { MeasureEmoji } from './MeasureEmoji'; export function EmojiList({ scrollTop }: { scrollTop: number }) { const categories = useCategoriesConfig(); const [categoryHeights, setCategoryHeights] = React.useState<{ [key: string]: number; }>({}); const EmojiListRef = useEmojiListRef(); const getEmojisByCategory = useGetEmojisByCategory(); const labelHeight = getLabelHeight(EmojiListRef.current); let topOffset = 0; return ( ); } function RenderCategory({ categoryEmojis, categoryConfig, topOffset, onHeightReady, scrollTop, }: { categoryEmojis: DataEmojis; categoryConfig: CategoryConfig; topOffset: number; onHeightReady: (height: number) => void; scrollTop: number; }) { const [visibleCategories] = useVisibleCategoriesState(); const { virtualizedCounter, emojis, dimensions } = useEmojiVirtualization({ categoryEmojis, topOffset, onHeightReady, scrollTop, isCategoryVisible: visibleCategories.includes(categoryConfig.category), }); return ( ); } const styles = stylesheet.create({ emojiList: { '.': ClassNames.emojiList, listStyle: 'none', margin: '0', padding: '0', }, });