@koordinates/xstate-tree
Version:
Build UIs with Actors using xstate and React
31 lines (30 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useRouteArgsIfActive = void 0;
const utils_1 = require("../utils");
const providers_1 = require("./providers");
const useIsRouteActive_1 = require("./useIsRouteActive");
/**
* @public
* Returns the arguments for the given route if the route is active.
* Returns undefined if the route is not active.
*
* @param route - the route to get the arguments for
* @returns the arguments for the given route if the route is active, undefined otherwise
* @throws if used outside of an xstate-tree root
*/
function useRouteArgsIfActive(route) {
const isActive = (0, useIsRouteActive_1.useIsRouteActive)(route);
const activeRoutes = (0, providers_1.useActiveRouteEvents)();
if (!isActive) {
return undefined;
}
const activeRoute = activeRoutes?.find((activeRoute) => activeRoute.type === route.event);
(0, utils_1.assertIsDefined)(activeRoute, "active route is not defined, but the route is active??");
return {
params: activeRoute.params,
query: activeRoute.query,
meta: activeRoute.meta,
};
}
exports.useRouteArgsIfActive = useRouteArgsIfActive;