next13-progressbar
Version:
A ProgressBar for next.js >=13 with app directory
75 lines (63 loc) • 4.94 kB
JavaScript
;var O=Object.create;var g=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty;var o=(r,e)=>g(r,"name",{value:e,configurable:!0});var F=(r,e)=>{for(var t in e)g(r,t,{get:e[t],enumerable:!0})},N=(r,e,t,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of M(e))!B.call(r,s)&&s!==t&&g(r,s,{get:()=>e[s],enumerable:!(m=C(e,s))||m.enumerable});return r};var P=(r,e,t)=>(t=r!=null?O($(r)):{},N(e||!r||!r.__esModule?g(t,"default",{value:r,enumerable:!0}):t,r)),K=r=>N(g({},"__esModule",{value:!0}),r);var I={};F(I,{Next13ProgressBar:()=>U,default:()=>z,useRouter:()=>v});module.exports=K(I);var l=P(require("react")),p=P(require("nprogress")),u=require("next/navigation");var k=l.default.memo(({color:r="#0A2FFF",height:e="2px",options:t,showOnShallow:m=!1,delay:s=0,style:h})=>{let c=l.default.createElement("style",null,h||`
#nprogress {
pointer-events: none;
}
#nprogress .bar {
background: ${r};
position: fixed;
z-index: 1031;
top: 0;
left: 0;
width: 100%;
height: ${e};
}
/* Fancy blur effect */
#nprogress .peg {
display: block;
position: absolute;
right: 0px;
width: 100px;
height: 100%;
box-shadow: 0 0 10px ${r}, 0 0 5px ${r};
opacity: 1.0;
-webkit-transform: rotate(3deg) translate(0px, -4px);
-ms-transform: rotate(3deg) translate(0px, -4px);
transform: rotate(3deg) translate(0px, -4px);
}
/* Remove these to get rid of the spinner */
#nprogress .spinner {
display: block;
position: fixed;
z-index: 1031;
top: 15px;
right: 15px;
}
#nprogress .spinner-icon {
width: 18px;
height: 18px;
box-sizing: border-box;
border: solid 2px transparent;
border-top-color: ${r};
border-left-color: ${r};
border-radius: 50%;
-webkit-animation: nprogress-spinner 400ms linear infinite;
animation: nprogress-spinner 400ms linear infinite;
}
.nprogress-custom-parent {
overflow: hidden;
position: relative;
}
.nprogress-custom-parent #nprogress .spinner,
.nprogress-custom-parent #nprogress .bar {
position: absolute;
}
@-webkit-keyframes nprogress-spinner {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); }
}
@keyframes nprogress-spinner {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
`);p.default.configure(t||{});let f=(0,u.usePathname)(),w=(0,u.useSearchParams)();return(0,l.useEffect)(()=>{p.default.done()},[f,w]),(0,l.useEffect)(()=>{let d,R=o(()=>{d=setTimeout(p.default.start,s)},"startProgress"),L=o(()=>{clearTimeout(d),p.default.done()},"stopProgress"),E=o(a=>{let i=a.currentTarget;if(i.target!=="_self"&&i.target?.trim()!==""||i.hasAttribute("download"))return;let n=new URL(i.href),b=new URL(location.href),T=n?.searchParams?.toString()!==b?.searchParams?.toString()&&n?.search!==b?.search,S=n?.pathname===b?.pathname&&!T;a.metaKey||a.ctrlKey||a.shiftKey||a.altKey||m&&S||S||R()},"handleAnchorClick"),A=o(()=>{let a=document.querySelectorAll("a");Array.from(a).filter(n=>n.href.startsWith("tel:+")||n.href.startsWith("mailto:")||n.target!=="_self"&&n.target?.trim()!==""?!1:n.href).forEach(n=>n.addEventListener("click",E))},"handleMutation");new MutationObserver(A).observe(document,{childList:!0,subtree:!0}),window.history.pushState=new Proxy(window.history.pushState,{apply:(a,i,n)=>(L(),a.apply(i,n))})},[]),c},()=>!0);function v(){let r=(0,u.useRouter)(),e=(0,u.usePathname)();function t(s,h){let c=new URL(s,location.href),f=new URL(location.href),d=c?.searchParams?.toString()!==f?.searchParams?.toString()&&c?.search!==f?.search;return c.pathname===e&&!d?Promise.resolve(!0):(p.default.start(),r.push(s,h))}o(t,"push");function m(s,h){return new URL(s,location.href).pathname===e?Promise.resolve(!0):(p.default.start(),r.replace(s,h))}return o(m,"replace"),{...r,push:t,replace:m}}o(v,"useRouter");var x=P(require("react"));function y(r){return o(function(t){return x.default.createElement(x.default.Suspense,null,x.default.createElement(r,{...t}))},"WithSuspenseComponent")}o(y,"withSuspense");var U=y(k);var z=U;0&&(module.exports={Next13ProgressBar,useRouter});
//# sourceMappingURL=index.js.map