Initial TrueGrowth source import
This commit is contained in:
27
packages/react-text/src/search-highlight.ts
Normal file
27
packages/react-text/src/search-highlight.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { useSyncExternalStore } from 'react';
|
||||
|
||||
let searchQuery = '';
|
||||
const listeners = new Set<() => void>();
|
||||
|
||||
function subscribe(listener: () => void) {
|
||||
listeners.add(listener);
|
||||
return () => {
|
||||
listeners.delete(listener);
|
||||
};
|
||||
}
|
||||
|
||||
function getSnapshot() {
|
||||
return searchQuery;
|
||||
}
|
||||
|
||||
/** 设置搜索高亮关键词(供搜索组件调用) */
|
||||
export function setSearchHighlightQuery(query: string) {
|
||||
if (searchQuery === query) return;
|
||||
searchQuery = query;
|
||||
listeners.forEach((listener) => listener());
|
||||
}
|
||||
|
||||
/** 订阅搜索高亮关键词(供 Text 组件内部使用) */
|
||||
export function useSearchHighlightQuery(): string {
|
||||
return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
||||
}
|
||||
Reference in New Issue
Block a user