UNPKG

react-hooks-global-scrollspy

Version:
19 lines (18 loc) 1.01 kB
import { useCallback, useContext } from "react"; import { GlobalScrollSpyContext } from "./GlobalScrollSpyContext"; /** * @returns [ isActive, actions ] - Two return values are returned as an array * @returns isActive - Whether the DOM element specified by key is active * @returns actions - Actions are used to control registered DOM elements specified by key */ export var useGlobalScrollSpyOf = function (key) { var _a = useContext(GlobalScrollSpyContext), activeElement = _a.activeElement, actions = _a.actions; var isActive = (activeElement === null || activeElement === void 0 ? void 0 : activeElement.key) === key; var registerElement = useCallback(function (element) { actions.registerElement({ key: key, element: element }); }, [actions, key]); var unregisterElement = useCallback(function () { actions.unregisterElement({ key: key }); }, [actions, key]); return [isActive, { registerElement: registerElement, unregisterElement: unregisterElement }]; };