import { Popover, Transition } from '@headlessui/react'; import { useStore } from '@nanostores/react'; import classNames from 'classnames'; import { type Change, diffLines } from 'diff'; import { memo, useCallback, useMemo, useState } from 'react'; import { webBuilderStore } from '~/.client/stores/web-builder'; interface PageModifiedDropdownProps { onSelectPage: (pageName: string) => void; } export const PageModifiedDropdown = memo(({ onSelectPage }: PageModifiedDropdownProps) => { const pageHistory = useStore(webBuilderStore.pagesStore.pageHistory); const currentSelectedPage = useStore(webBuilderStore.editorStore.selectedDocument); const modifiedPages = Object.entries(pageHistory); const hasChanges = modifiedPages.length > 0; const [searchQuery, setSearchQuery] = useState(''); const filteredPages = useMemo(() => { return modifiedPages.filter(([pageName]) => pageName.toLowerCase().includes(searchQuery.toLowerCase())); }, [modifiedPages, searchQuery]); const handleSelectPage = useCallback( (pageName: string, close: () => void) => { // 如果是当前已选中的页面,不执行任何操作 if (pageName === currentSelectedPage) { return; } onSelectPage(pageName); webBuilderStore.currentView.set('diff'); // 关闭下拉菜单 close(); }, [onSelectPage, currentSelectedPage], ); return (
{searchQuery ? '没有匹配的页面' : '没有修改的页面'}
{searchQuery ? '尝试其他搜索' : '更改将在此处显示'}