mirror of
https://github.com/EnixCoda/Gitako.git
synced 2026-03-11 08:54:44 +00:00
15 lines
667 B
TypeScript
15 lines
667 B
TypeScript
import { useEffect, useState } from 'react'
|
|
import { VisibleNodes, VisibleNodesGenerator } from 'utils/VisibleNodesGenerator'
|
|
|
|
export function useVisibleNodes(visibleNodesGenerator: VisibleNodesGenerator | null) {
|
|
const [visibleNodes, setVisibleNodes] = useState<VisibleNodes | null>(
|
|
visibleNodesGenerator?.visibleNodes || null,
|
|
)
|
|
useEffect(() => {
|
|
const $visibleNodes = visibleNodesGenerator?.visibleNodes || null
|
|
if (visibleNodes !== $visibleNodes) setVisibleNodes($visibleNodes)
|
|
|
|
return visibleNodesGenerator?.onUpdate(setVisibleNodes)
|
|
}, [visibleNodesGenerator]) // eslint-disable-line react-hooks/exhaustive-deps
|
|
return visibleNodes
|
|
}
|