import { useRegisterActions } from "kbar"; import { flattenDeep } from "lodash"; import { useLocation } from "react-router-dom"; import { actionToKBar } from "~/actions"; import { Action } from "~/types"; import useActionContext from "./useActionContext"; /** * Hook to add actions to the command bar while the hook is inside a mounted * component. * * @param actions actions to make available */ export default function useCommandBarActions(actions: Action[]) { const location = useLocation(); const context = useActionContext({ isCommandBar: true, }); const registerable = flattenDeep( actions.map((action) => actionToKBar(action, context)) ); useRegisterActions(registerable, [ registerable.map((r) => r.id).join(""), location.pathname, ]); }