22 lines
592 B
TypeScript
22 lines
592 B
TypeScript
import { DependencyList, useEffect } from 'react'
|
|
import {
|
|
Command,
|
|
useCommandRegistry,
|
|
} from '../context/command-registry-context'
|
|
|
|
export const useCommandProvider = (
|
|
generateElements: () => Command[] | undefined,
|
|
dependencies: DependencyList
|
|
) => {
|
|
const { register, unregister } = useCommandRegistry()
|
|
useEffect(() => {
|
|
const elements = generateElements()
|
|
if (!elements) return
|
|
register(...elements)
|
|
return () => {
|
|
unregister(...elements.map(element => element.id))
|
|
}
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, dependencies)
|
|
}
|