UNPKG

@nlabs/gothamjs

Version:
44 lines (43 loc) 4.69 kB
/** * Copyright (c) 2018-Present, Nitrogen Labs, Inc. * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms. */ import { qs } from '@nlabs/utils'; import { useMemo } from 'react'; import { useLocation, useMatches, useNavigation, useParams } from 'react-router'; export 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 ]); }; export const parseNavUrl = (path, params)=>path.split('/').reduce((list, part)=>{ if (part?.substring(0, 1) === ':') { const value = params[part.substring(1)]; return [ ...list, value !== undefined ? value : part ]; } return [ ...list, part ]; }, []).join('/'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy92aWV3VXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7cXN9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3VzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TG9jYXRpb24sIE5hdmlnYXRpb24sIHVzZUxvY2F0aW9uLCB1c2VNYXRjaGVzLCB1c2VOYXZpZ2F0aW9uLCB1c2VQYXJhbXN9IGZyb20gJ3JlYWN0LXJvdXRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwUm91dGVyIHtcbiAgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uO1xuICByZWFkb25seSBtYXRjaGVzOiB1bmtub3duW107XG4gIHJlYWRvbmx5IG5hdmlnYXRpb246IE5hdmlnYXRpb247XG4gIHJlYWRvbmx5IHBhcmFtczogdW5rbm93bjtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZVJvdXRlID0gKCk6IEFwcFJvdXRlciA9PiB7XG4gIGNvbnN0IG5hdmlnYXRpb24gPSB1c2VOYXZpZ2F0aW9uKCk7XG4gIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKSB8fCB7fSBhcyB1bmtub3duIGFzIExvY2F0aW9uO1xuICBjb25zdCB1cmxQYXJhbXMgPSB1c2VQYXJhbXMoKTtcbiAgY29uc3QgbWF0Y2hlcyA9IHVzZU1hdGNoZXMoKTtcblxuICByZXR1cm4gdXNlTWVtbygoKSA9PiAoe1xuICAgIGxvY2F0aW9uLFxuICAgIG1hdGNoZXMsXG4gICAgbmF2aWdhdGlvbixcbiAgICBwYXJhbXM6IHtcbiAgICAgIC4uLihsb2NhdGlvbi5zdGF0ZSB8fCB7fSksXG4gICAgICAuLi51cmxQYXJhbXMsXG4gICAgICAuLi5xcy5wYXJzZShsb2NhdGlvbi5zZWFyY2gsIHtpZ25vcmVRdWVyeVByZWZpeDogdHJ1ZX0pXG4gICAgfVxuICB9KSwgW25hdmlnYXRpb24sIGxvY2F0aW9uLCBtYXRjaGVzLCB1cmxQYXJhbXNdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZU5hdlVybCA9IChwYXRoOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcgPT4gcGF0aFxuICAuc3BsaXQoJy8nKVxuICAucmVkdWNlKChsaXN0OiBzdHJpbmdbXSwgcGFydDogc3RyaW5nKSA9PiB7XG4gICAgaWYocGFydD8uc3Vic3RyaW5nKDAsIDEpID09PSAnOicpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zW3BhcnQuc3Vic3RyaW5nKDEpXTtcbiAgICAgIHJldHVybiBbLi4ubGlzdCwgdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogcGFydF0gYXMgc3RyaW5nW107XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5saXN0LCBwYXJ0XTtcbiAgfSwgW10pLmpvaW4oJy8nKTtcbiJdLCJuYW1lcyI6WyJxcyIsInVzZU1lbW8iLCJ1c2VMb2NhdGlvbiIsInVzZU1hdGNoZXMiLCJ1c2VOYXZpZ2F0aW9uIiwidXNlUGFyYW1zIiwidXNlUm91dGUiLCJuYXZpZ2F0aW9uIiwibG9jYXRpb24iLCJ1cmxQYXJhbXMiLCJtYXRjaGVzIiwicGFyYW1zIiwic3RhdGUiLCJwYXJzZSIsInNlYXJjaCIsImlnbm9yZVF1ZXJ5UHJlZml4IiwicGFyc2VOYXZVcmwiLCJwYXRoIiwic3BsaXQiLCJyZWR1Y2UiLCJsaXN0IiwicGFydCIsInN1YnN0cmluZyIsInZhbHVlIiwidW5kZWZpbmVkIiwiam9pbiJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsRUFBRSxRQUFPLGVBQWU7QUFDaEMsU0FBUUMsT0FBTyxRQUFPLFFBQVE7QUFDOUIsU0FBOEJDLFdBQVcsRUFBRUMsVUFBVSxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsUUFBTyxlQUFlO0FBU3JHLE9BQU8sTUFBTUMsV0FBVztJQUN0QixNQUFNQyxhQUFhSDtJQUNuQixNQUFNSSxXQUFXTixpQkFBaUIsQ0FBQztJQUNuQyxNQUFNTyxZQUFZSjtJQUNsQixNQUFNSyxVQUFVUDtJQUVoQixPQUFPRixRQUFRLElBQU8sQ0FBQTtZQUNwQk87WUFDQUU7WUFDQUg7WUFDQUksUUFBUTtnQkFDTixHQUFJSCxTQUFTSSxLQUFLLElBQUksQ0FBQyxDQUFDO2dCQUN4QixHQUFHSCxTQUFTO2dCQUNaLEdBQUdULEdBQUdhLEtBQUssQ0FBQ0wsU0FBU00sTUFBTSxFQUFFO29CQUFDQyxtQkFBbUI7Z0JBQUksRUFBRTtZQUN6RDtRQUNGLENBQUEsR0FBSTtRQUFDUjtRQUFZQztRQUFVRTtRQUFTRDtLQUFVO0FBQ2hELEVBQUU7QUFFRixPQUFPLE1BQU1PLGNBQWMsQ0FBQ0MsTUFBY04sU0FBNENNLEtBQ25GQyxLQUFLLENBQUMsS0FDTkMsTUFBTSxDQUFDLENBQUNDLE1BQWdCQztRQUN2QixJQUFHQSxNQUFNQyxVQUFVLEdBQUcsT0FBTyxLQUFLO1lBQ2hDLE1BQU1DLFFBQVFaLE1BQU0sQ0FBQ1UsS0FBS0MsU0FBUyxDQUFDLEdBQUc7WUFDdkMsT0FBTzttQkFBSUY7Z0JBQU1HLFVBQVVDLFlBQVlELFFBQVFGO2FBQUs7UUFDdEQ7UUFFQSxPQUFPO2VBQUlEO1lBQU1DO1NBQUs7SUFDeEIsR0FBRyxFQUFFLEVBQUVJLElBQUksQ0FBQyxLQUFLIn0=