UNPKG

react-router-dom

Version:

Declarative routing for React web applications

10 lines (9 loc) 3.01 kB
import{Router,useHref,useNavigate,useLocation,useResolvedLocation,useMatch,useBlocker}from'react-router';import{createBrowserHistory,createHashHistory}from'history';import PropTypes from'prop-types';import React from'react';export{MemoryRouter,Navigate,Outlet,Redirect,Route,Router,Routes,createRoutesFromChildren,generatePath,matchRoutes,resolveLocation,useBlocker,useHref,useLocation,useMatch,useNavigate,useOutlet,useParams,useResolvedLocation,useRoutes}from'react-router';function h({children:a,timeout:b,window:d}){let c=React.useRef(null);null==c.current&&(c.current=createBrowserHistory({window:d}));return React.createElement(Router,{children:a,history:c.current,timeout:b})}h.displayName="BrowserRouter";h.propTypes={children:PropTypes.node,timeout:PropTypes.number,window:PropTypes.object}; function k({children:a,timeout:b,window:d}){let c=React.useRef(null);null==c.current&&(c.current=createHashHistory({window:d}));return React.createElement(Router,{children:a,history:c.current,timeout:b})}k.displayName="HashRouter";k.propTypes={children:PropTypes.node,timeout:PropTypes.number,window:PropTypes.object}; let l=React.forwardRef(function({as:a="a",onClick:b,replace:d=!1,state:c,target:f,to:e,...m},n){let g=useHref(e),v=useNavigate(),p=useLocation(),q=useResolvedLocation(e);return React.createElement(a,Object.assign({},m,{href:g,onClick:function(a){b&&b(a);a.defaultPrevented||0!==a.button||f&&"_self"!==f||a.metaKey||a.altKey||a.ctrlKey||a.shiftKey||(a.preventDefault(),a=q.pathname===p.pathname&&q.search===p.search&&q.hash===p.hash,v(e,{replace:!!d||a,state:c}))},ref:n,target:f}))});l.displayName="Link"; l.propTypes={as:PropTypes.elementType,onClick:PropTypes.func,replace:PropTypes.bool,state:PropTypes.object,target:PropTypes.string,to:PropTypes.oneOfType([PropTypes.string,PropTypes.shape({pathname:PropTypes.string,search:PropTypes.string,hash:PropTypes.string})]).isRequired}; let r=React.forwardRef(function({"aria-current":a="page",activeClassName:b="active",activeStyle:d=null,className:c="",style:f=null,to:e,...m},n){let g=useMatch(e);a=g?a:void 0;b=[c,g?b:null].filter(Boolean).join(" ");return React.createElement(l,Object.assign({},m,{"aria-current":a,className:b,ref:n,style:{...f,...g?d:null},to:e}))});r.displayName="NavLink"; r.propTypes={...l.propTypes,"aria-current":PropTypes.oneOf("page step location date time true".split(" ")),activeClassName:PropTypes.string,activeStyle:PropTypes.object,className:PropTypes.string,style:PropTypes.object,to:PropTypes.oneOfType([PropTypes.string,PropTypes.shape({pathname:PropTypes.string,search:PropTypes.string,hash:PropTypes.string})]).isRequired};function t({message:a,when:b}){u(a,b);return null}t.displayName="Prompt";t.propTypes={message:PropTypes.string,when:PropTypes.bool}; function u(a,b){let d=React.useCallback(b=>{window.confirm(a)&&b.retry()},[a]);useBlocker(d,b)} export{h as BrowserRouter,k as HashRouter,l as Link,r as NavLink,t as Prompt,u as usePrompt} //# sourceMappingURL=react-router-dom.development.js.map