@nlabs/gothamjs
Version:
Platform
32 lines (31 loc) • 3.82 kB
JavaScript
import { qs } from "@nlabs/utils";
import { useMemo } from "react";
import { useLocation, useMatches, useNavigation, useParams } from "react-router";
const useRoute = () => {
const navigation = useNavigation();
const location = useLocation() || {};
const urlParams = useParams();
const matches = useMatches();
return useMemo(() => ({
location,
matches,
navigation,
params: {
...location.state || {},
...urlParams,
...qs.parse(location.search, { ignoreQueryPrefix: true })
}
}), [navigation, location, matches, urlParams]);
};
const parseNavUrl = (path, params) => path.split("/").reduce((list, part) => {
if (part?.substring(0, 1) === ":") {
const value = params[part.substring(1)];
return [...list, value !== void 0 ? value : part];
}
return [...list, part];
}, []).join("/");
export {
parseNavUrl,
useRoute
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3ZpZXdVdGlscy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7cXN9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TG9jYXRpb24sIE5hdmlnYXRpb24sIHVzZUxvY2F0aW9uLCB1c2VNYXRjaGVzLCB1c2VOYXZpZ2F0aW9uLCB1c2VQYXJhbXN9IGZyb20gJ3JlYWN0LXJvdXRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwUm91dGVyIHtcbiAgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uO1xuICByZWFkb25seSBtYXRjaGVzOiB1bmtub3duW107XG4gIHJlYWRvbmx5IG5hdmlnYXRpb246IE5hdmlnYXRpb247XG4gIHJlYWRvbmx5IHBhcmFtczogdW5rbm93bjtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZVJvdXRlID0gKCk6IEFwcFJvdXRlciA9PiB7XG4gIGNvbnN0IG5hdmlnYXRpb24gPSB1c2VOYXZpZ2F0aW9uKCk7XG4gIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKSB8fCB7fSBhcyB1bmtub3duIGFzIExvY2F0aW9uO1xuICBjb25zdCB1cmxQYXJhbXMgPSB1c2VQYXJhbXMoKTtcbiAgY29uc3QgbWF0Y2hlcyA9IHVzZU1hdGNoZXMoKTtcblxuICByZXR1cm4gdXNlTWVtbygoKSA9PiAoe1xuICAgIGxvY2F0aW9uLFxuICAgIG1hdGNoZXMsXG4gICAgbmF2aWdhdGlvbixcbiAgICBwYXJhbXM6IHtcbiAgICAgIC4uLihsb2NhdGlvbi5zdGF0ZSB8fCB7fSksXG4gICAgICAuLi51cmxQYXJhbXMsXG4gICAgICAuLi5xcy5wYXJzZShsb2NhdGlvbi5zZWFyY2gsIHtpZ25vcmVRdWVyeVByZWZpeDogdHJ1ZX0pXG4gICAgfVxuICB9KSwgW25hdmlnYXRpb24sIGxvY2F0aW9uLCBtYXRjaGVzLCB1cmxQYXJhbXNdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZU5hdlVybCA9IChwYXRoOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcgPT4gcGF0aFxuICAuc3BsaXQoJy8nKVxuICAucmVkdWNlKChsaXN0OiBzdHJpbmdbXSwgcGFydDogc3RyaW5nKSA9PiB7XG4gICAgaWYocGFydD8uc3Vic3RyaW5nKDAsIDEpID09PSAnOicpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zW3BhcnQuc3Vic3RyaW5nKDEpXTtcbiAgICAgIHJldHVybiBbLi4ubGlzdCwgdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogcGFydF0gYXMgc3RyaW5nW107XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5saXN0LCBwYXJ0XTtcbiAgfSwgW10pLmpvaW4oJy8nKTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsVUFBUztBQUNqQixTQUFRLGVBQWM7QUFDdEIsU0FBOEIsYUFBYSxZQUFZLGVBQWUsaUJBQWdCO0FBUy9FLE1BQU0sV0FBVyxNQUFpQjtBQUN2QyxRQUFNLGFBQWEsY0FBYztBQUNqQyxRQUFNLFdBQVcsWUFBWSxLQUFLLENBQUM7QUFDbkMsUUFBTSxZQUFZLFVBQVU7QUFDNUIsUUFBTSxVQUFVLFdBQVc7QUFFM0IsU0FBTyxRQUFRLE9BQU87QUFBQSxJQUNwQjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSxRQUFRO0FBQUEsTUFDTixHQUFJLFNBQVMsU0FBUyxDQUFDO0FBQUEsTUFDdkIsR0FBRztBQUFBLE1BQ0gsR0FBRyxHQUFHLE1BQU0sU0FBUyxRQUFRLEVBQUMsbUJBQW1CLEtBQUksQ0FBQztBQUFBLElBQ3hEO0FBQUEsRUFDRixJQUFJLENBQUMsWUFBWSxVQUFVLFNBQVMsU0FBUyxDQUFDO0FBQ2hEO0FBRU8sTUFBTSxjQUFjLENBQUMsTUFBYyxXQUE0QyxLQUNuRixNQUFNLEdBQUcsRUFDVCxPQUFPLENBQUMsTUFBZ0IsU0FBaUI7QUFDeEMsTUFBRyxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sS0FBSztBQUNoQyxVQUFNLFFBQVEsT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQ3RDLFdBQU8sQ0FBQyxHQUFHLE1BQU0sVUFBVSxTQUFZLFFBQVEsSUFBSTtBQUFBLEVBQ3JEO0FBRUEsU0FBTyxDQUFDLEdBQUcsTUFBTSxJQUFJO0FBQ3ZCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHOyIsCiAgIm5hbWVzIjogW10KfQo=