UNPKG

next-active-link

Version:

✅ Active link component for Next.JS, wrapping next/link component

2 lines 2.27 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var C=Object.defineProperty;var h=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var v=(t,n,e)=>n in t?C(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,f=(t,n)=>{for(var e in n||(n={}))A.call(n,e)&&v(t,e,n[e]);if(h)for(var e of h(n))P.call(n,e)&&v(t,e,n[e]);return t};var d=(t,n)=>{var e={};for(var s in t)A.call(t,s)&&n.indexOf(s)<0&&(e[s]=t[s]);if(t!=null&&h)for(var s of h(t))n.indexOf(s)<0&&P.call(t,s)&&(e[s]=t[s]);return e};var _link = require('next/link'); var _link2 = _interopRequireDefault(_link);var _react = require('react');var _router = require('next/router');var _tinycn = require('tiny-cn');var y={fragment:void 0,paths:void 0,queryParams:void 0},x=(t,n,e={exact:!0})=>{let s=new URL(n,location.href),i=new URL(t,location.href);if("exact"in e)return e.exact?s.href===i.href:s.href.includes(i.pathname);{let r=!1,{fragment:p,paths:c,queryParams:m}=f(f({},y),e);if(p&&(r=s.hash===i.hash),c){let a=s.pathname.split("/"),o=i.pathname.split("/");r=c==="exact"?s.pathname===i.pathname:a.some(l=>o.includes(l))}if(m){let a=Object.fromEntries(s.searchParams.entries()),o=Object.fromEntries(i.searchParams.entries());r=m==="exact"?s.search===i.search:Object.entries(a).some(([l,u])=>o[l]===u)}return r}};var g=({activeClassName:t,childClassName:n,linkUrl:e,activeMatchOptions:s,onActiveChange:i})=>{let[r,p]=_react.useState.call(void 0, n),{asPath:c,isReady:m}=_router.useRouter.call(void 0, );return _react.useEffect.call(void 0, ()=>{if(m){let a=x(e,c,s);i&&i(a);let o=_tinycn.cn.call(void 0, {[n]:!0,[t]:a});o!==r&&p(o)}},[c,m,e,n,t,p,r]),r};var M=s=>{var i=s,{children:t,activeClassName:n}=i,e=d(i,["children","activeClassName"]);var k;let r=_react.Children.only(t),p=(k=r.props.className)!=null?k:"",{as:c,href:m,activeMatchOptions:a,onActiveChange:o}=e,u=g({activeClassName:n,childClassName:p,linkUrl:c||m,activeMatchOptions:a,onActiveChange:o});return React.createElement(_link2.default,f({},e),_react.cloneElement.call(void 0, r,{className:u||null}))};exports.ActiveLink = M; //# sourceMappingURL=index.js.map