mirror of
https://github.com/outline/outline.git
synced 2026-06-13 03:14:59 +03:00
0139b91b5d
* chore: Replace lodash with es-toolkit Migrate all direct lodash imports to es-toolkit/compat for a smaller, faster, lodash-compatible utility library. Transitive lodash usage from other packages remains unchanged. * fix: Restore isPlainObject semantics in CanCan policy The lodash migration aliased `isObject` to `lodash/isPlainObject` and the codemod incorrectly mapped the local name to es-toolkit's `isObject`, which also returns true for arrays and functions. This caused condition objects in policy definitions to be skipped, breaking authorization checks across the codebase. * fix: Restore unicode-aware length counting in validators es-toolkit/compat's size() returns string.length, while lodash's _.size() counts unicode code points. Switch to [...value].length to preserve the previous behavior so multi-byte characters like emoji count as one.
33 lines
886 B
TypeScript
33 lines
886 B
TypeScript
import { useRegisterActions } from "kbar";
|
|
import { flattenDeep } from "es-toolkit/compat";
|
|
import { useLocation } from "react-router-dom";
|
|
import { actionToKBar } from "~/actions";
|
|
import type { ActionVariant } 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: ActionVariant[],
|
|
additionalDeps: React.DependencyList = []
|
|
) {
|
|
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,
|
|
...additionalDeps,
|
|
]);
|
|
}
|