UNPKG

@nlabs/gothamjs

Version:
32 lines (31 loc) 3.82 kB
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=