import { memo, useDeferredValue, useState, useCallback } from 'react' import type { IssueData } from '@app/types' import type { Feed } from 'a11ywatch-web-wasm' import { PageList } from './page-list' import { GrSort } from 'react-icons/gr' type FeedItemProps = { feed: Feed data?: Map> domain: string onScanEvent?: any index?: number highlightErrors?: boolean } type FeedButtonProps = { domain: string pageCount: number onHeadingToggleEvent(): any onSortClick(): any } const FeedButton = ({ domain, onHeadingToggleEvent, onSortClick, pageCount, }: FeedButtonProps) => { return (
) } const FeedButtonMemo = memo(FeedButton) const FeedItemWrapper = ({ feed, onScanEvent, index, domain, }: FeedItemProps) => { const [visible, setVisible] = useState(index === 0) const [sorted, setSorted] = useState(false) const pages = useDeferredValue(feed?.get_website_keys(domain) ?? []) const onHeadingToggleEvent = useCallback( () => setVisible((v) => !v), [setVisible] ) const onSortClick = useCallback(() => { if (domain && feed) { feed.sort_website(domain) } setSorted((s) => !s) }, [setSorted, feed, domain]) return (
  • ) } export const FeedItem = memo(FeedItemWrapper)