next-nprogress-bar
Advanced tools
+9
-0
| import React from 'react'; | ||
| import { ProgressBarProps } from '.'; | ||
| import { NavigateOptions } from 'next/dist/shared/lib/app-router-context'; | ||
| export declare const AppProgressBar: React.MemoExoticComponent<({ color, height, options, shallowRouting, delay, style, }: ProgressBarProps) => React.JSX.Element>; | ||
| export declare function useRouter(): { | ||
| push: (href: string, options?: NavigateOptions) => void; | ||
| back(): void; | ||
| forward(): void; | ||
| refresh(): void; | ||
| replace(href: string, options?: NavigateOptions | undefined): void; | ||
| prefetch(href: string, options?: import("next/dist/shared/lib/app-router-context").PrefetchOptions | undefined): void; | ||
| }; |
+1
-4
@@ -18,3 +18,2 @@ export interface NProgressOptions { | ||
| options?: Partial<NProgressOptions>; | ||
| appDirectory?: boolean; | ||
| shallowRouting?: boolean; | ||
@@ -28,3 +27,2 @@ delay?: number; | ||
| * @param options NProgress options. @default undefined | ||
| * @param appDirectory If your are in the app directory - @default false | ||
| * @param shallowRouting If the progress bar is not displayed when you use shallow routing - @default false | ||
@@ -34,4 +32,3 @@ * @param delay When the page loads faster than the progress bar, it does not display - @default 0 | ||
| */ | ||
| export { AppProgressBar } from './appDir'; | ||
| export { useRouter } from './appRouter'; | ||
| export { AppProgressBar, useRouter } from './appDir'; | ||
| export { PagesProgressBar } from './pagesDir'; |
+39
-11
@@ -8,2 +8,30 @@ 'use strict'; | ||
| /****************************************************************************** | ||
| Copyright (c) Microsoft Corporation. | ||
| Permission to use, copy, modify, and/or distribute this software for any | ||
| purpose with or without fee is hereby granted. | ||
| THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH | ||
| REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | ||
| AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, | ||
| INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | ||
| LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR | ||
| OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | ||
| PERFORMANCE OF THIS SOFTWARE. | ||
| ***************************************************************************** */ | ||
| /* global Reflect, Promise */ | ||
| var __assign = function() { | ||
| __assign = Object.assign || function __assign(t) { | ||
| for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
| s = arguments[i]; | ||
| for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; | ||
| } | ||
| return t; | ||
| }; | ||
| return __assign.apply(this, arguments); | ||
| }; | ||
| function isSameURL(target, current) { | ||
@@ -41,5 +69,7 @@ var cleanTarget = target.protocol + '//' + target.host + target.pathname; | ||
| var currentUrl = new URL(location.href); | ||
| if (!shallowRouting || !isSameURL(targetUrl, currentUrl)) { | ||
| startProgress(); | ||
| } | ||
| if (shallowRouting && isSameURL(targetUrl, currentUrl)) | ||
| return; | ||
| if ((targetUrl === null || targetUrl === void 0 ? void 0 : targetUrl.href) === (currentUrl === null || currentUrl === void 0 ? void 0 : currentUrl.href)) | ||
| return; | ||
| startProgress(); | ||
| }; | ||
@@ -63,12 +93,10 @@ var handleMutation = function () { | ||
| }, function () { return true; }); | ||
| var useRouter = function () { | ||
| function useRouter() { | ||
| var router = navigation.useRouter(); | ||
| var push = router.push; | ||
| router.push = function (href, options) { | ||
| function push(href, options) { | ||
| NProgress.start(); | ||
| push(href, options); | ||
| }; | ||
| return router; | ||
| }; | ||
| return router.push(href, options); | ||
| } | ||
| return __assign(__assign({}, router), { push: push }); | ||
| } | ||
@@ -75,0 +103,0 @@ var PagesProgressBar = React.memo(function (_a) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/utils/sameURL.ts","../src/appDir.tsx","../src/appRouter.tsx","../src/pagesDir.tsx"],"sourcesContent":["export function isSameURL(target: URL, current: URL) {\n const cleanTarget = target.protocol + '//' + target.host + target.pathname;\n const cleanCurrent =\n current.protocol + '//' + current.host + current.pathname;\n\n return cleanTarget === cleanCurrent;\n}\n","import React, { useEffect } from 'react';\nimport NProgress from 'nprogress';\nimport { isSameURL } from './utils/sameURL';\nimport { usePathname, useSearchParams } from 'next/navigation';\nimport { ProgressBarProps } from '.';\n\ntype PushStateInput = [\n data: any,\n unused: string,\n url?: string | URL | null | undefined,\n];\n\nexport const AppProgressBar = React.memo(\n ({\n color = '#0A2FFF',\n height = '2px',\n options,\n shallowRouting = false,\n delay = 0,\n style,\n }: ProgressBarProps) => {\n const styles = (\n <style>\n {style ||\n `\n #nprogress {\n pointer-events: none;\n }\n \n #nprogress .bar {\n background: ${color};\n \n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n \n width: 100%;\n height: ${height};\n }\n \n /* Fancy blur effect */\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px ${color}, 0 0 5px ${color};\n opacity: 1.0;\n \n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n }\n \n /* Remove these to get rid of the spinner */\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n \n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n \n border: solid 2px transparent;\n border-top-color: ${color};\n border-left-color: ${color};\n border-radius: 50%;\n \n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n }\n \n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n \n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n \n @-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n @keyframes nprogress-spinner {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}\n </style>\n );\n\n NProgress.configure(options || {});\n\n const pathname = usePathname();\n const searchParams = useSearchParams();\n\n useEffect(() => {\n NProgress.done();\n }, [pathname, searchParams]);\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n\n const startProgress = () => {\n timer = setTimeout(NProgress.start, delay);\n };\n\n const stopProgress = () => {\n clearTimeout(timer);\n NProgress.done();\n };\n\n const handleAnchorClick = (event: MouseEvent) => {\n const anchorElement = event.currentTarget as HTMLAnchorElement;\n\n // Skip anchors with target=\"_blank\"\n if (anchorElement.target === '_blank') return;\n\n const targetUrl = new URL(anchorElement.href);\n const currentUrl = new URL(location.href);\n\n if (!shallowRouting || !isSameURL(targetUrl, currentUrl)) {\n startProgress();\n }\n };\n\n const handleMutation: MutationCallback = () => {\n const anchorElements = document.querySelectorAll('a');\n anchorElements.forEach((anchor) =>\n anchor.addEventListener('click', handleAnchorClick),\n );\n };\n\n const mutationObserver = new MutationObserver(handleMutation);\n mutationObserver.observe(document, { childList: true, subtree: true });\n\n window.history.pushState = new Proxy(window.history.pushState, {\n apply: (target, thisArg, argArray: PushStateInput) => {\n stopProgress();\n return target.apply(thisArg, argArray);\n },\n });\n }, []);\n\n return styles;\n },\n () => true,\n);\n","import { useRouter as useNextRouter } from 'next/navigation';\nimport NProgress from 'nprogress';\n\nexport const useRouter = () => {\n const router = useNextRouter();\n\n const { push } = router;\n\n router.push = (href, options) => {\n NProgress.start();\n push(href, options);\n };\n\n return router;\n};\n","import React, { useEffect } from 'react';\nimport NProgress from 'nprogress';\nimport { isSameURL } from './utils/sameURL';\nimport Router from 'next/router';\nimport { ProgressBarProps } from '.';\n\nexport const PagesProgressBar = React.memo(\n ({\n color = '#0A2FFF',\n height = '2px',\n options,\n shallowRouting = false,\n delay = 0,\n style,\n }: ProgressBarProps) => {\n const styles = (\n <style>\n {style ||\n `\n #nprogress {\n pointer-events: none;\n }\n \n #nprogress .bar {\n background: ${color};\n \n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n \n width: 100%;\n height: ${height};\n }\n \n /* Fancy blur effect */\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px ${color}, 0 0 5px ${color};\n opacity: 1.0;\n \n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n }\n \n /* Remove these to get rid of the spinner */\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n \n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n \n border: solid 2px transparent;\n border-top-color: ${color};\n border-left-color: ${color};\n border-radius: 50%;\n \n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n }\n \n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n \n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n \n @-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n @keyframes nprogress-spinner {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}\n </style>\n );\n\n NProgress.configure(options || {});\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n\n const startProgress = () => {\n timer = setTimeout(NProgress.start, delay);\n };\n\n const stopProgress = () => {\n clearTimeout(timer);\n NProgress.done();\n };\n\n const handleRouteStart = (url: string) => {\n const targetUrl = new URL(url, location.href);\n const currentUrl = new URL(Router.route, location.href);\n\n if (!shallowRouting || !isSameURL(targetUrl, currentUrl)) {\n startProgress();\n }\n };\n const handleRouteDone = () => stopProgress();\n\n Router.events.on('routeChangeStart', handleRouteStart);\n Router.events.on('routeChangeComplete', handleRouteDone);\n Router.events.on('routeChangeError', handleRouteDone);\n\n return () => {\n // Make sure to remove the event handler on unmount!\n Router.events.off('routeChangeStart', handleRouteStart);\n Router.events.off('routeChangeComplete', handleRouteDone);\n Router.events.off('routeChangeError', handleRouteDone);\n };\n }, []);\n\n return styles;\n },\n () => true,\n);\n"],"names":["usePathname","useSearchParams","useEffect","useNextRouter"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/utils/sameURL.ts","../src/appDir.tsx","../src/pagesDir.tsx"],"sourcesContent":["export function isSameURL(target: URL, current: URL) {\n const cleanTarget = target.protocol + '//' + target.host + target.pathname;\n const cleanCurrent =\n current.protocol + '//' + current.host + current.pathname;\n\n return cleanTarget === cleanCurrent;\n}\n","import React, { useEffect } from 'react';\nimport NProgress from 'nprogress';\nimport { isSameURL } from './utils/sameURL';\nimport {\n usePathname,\n useSearchParams,\n useRouter as useNextRouter,\n} from 'next/navigation';\nimport { ProgressBarProps } from '.';\nimport { NavigateOptions } from 'next/dist/shared/lib/app-router-context';\n\ntype PushStateInput = [\n data: any,\n unused: string,\n url?: string | URL | null | undefined,\n];\n\nexport const AppProgressBar = React.memo(\n ({\n color = '#0A2FFF',\n height = '2px',\n options,\n shallowRouting = false,\n delay = 0,\n style,\n }: ProgressBarProps) => {\n const styles = (\n <style>\n {style ||\n `\n #nprogress {\n pointer-events: none;\n }\n \n #nprogress .bar {\n background: ${color};\n \n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n \n width: 100%;\n height: ${height};\n }\n \n /* Fancy blur effect */\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px ${color}, 0 0 5px ${color};\n opacity: 1.0;\n \n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n }\n \n /* Remove these to get rid of the spinner */\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n \n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n \n border: solid 2px transparent;\n border-top-color: ${color};\n border-left-color: ${color};\n border-radius: 50%;\n \n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n }\n \n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n \n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n \n @-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n @keyframes nprogress-spinner {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}\n </style>\n );\n\n NProgress.configure(options || {});\n\n const pathname = usePathname();\n const searchParams = useSearchParams();\n\n useEffect(() => {\n NProgress.done();\n }, [pathname, searchParams]);\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n\n const startProgress = () => {\n timer = setTimeout(NProgress.start, delay);\n };\n\n const stopProgress = () => {\n clearTimeout(timer);\n NProgress.done();\n };\n\n const handleAnchorClick = (event: MouseEvent) => {\n const anchorElement = event.currentTarget as HTMLAnchorElement;\n\n // Skip anchors with target=\"_blank\"\n if (anchorElement.target === '_blank') return;\n\n const targetUrl = new URL(anchorElement.href);\n const currentUrl = new URL(location.href);\n\n if (shallowRouting && isSameURL(targetUrl, currentUrl)) return;\n if (targetUrl?.href === currentUrl?.href) return;\n\n startProgress();\n };\n\n const handleMutation: MutationCallback = () => {\n const anchorElements = document.querySelectorAll('a');\n anchorElements.forEach((anchor) =>\n anchor.addEventListener('click', handleAnchorClick),\n );\n };\n\n const mutationObserver = new MutationObserver(handleMutation);\n mutationObserver.observe(document, { childList: true, subtree: true });\n\n window.history.pushState = new Proxy(window.history.pushState, {\n apply: (target, thisArg, argArray: PushStateInput) => {\n stopProgress();\n return target.apply(thisArg, argArray);\n },\n });\n }, []);\n\n return styles;\n },\n () => true,\n);\n\nexport function useRouter() {\n const router = useNextRouter();\n\n function push(href: string, options?: NavigateOptions) {\n NProgress.start();\n return router.push(href, options);\n }\n\n return { ...router, push };\n}\n","import React, { useEffect } from 'react';\nimport NProgress from 'nprogress';\nimport { isSameURL } from './utils/sameURL';\nimport Router from 'next/router';\nimport { ProgressBarProps } from '.';\n\nexport const PagesProgressBar = React.memo(\n ({\n color = '#0A2FFF',\n height = '2px',\n options,\n shallowRouting = false,\n delay = 0,\n style,\n }: ProgressBarProps) => {\n const styles = (\n <style>\n {style ||\n `\n #nprogress {\n pointer-events: none;\n }\n \n #nprogress .bar {\n background: ${color};\n \n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n \n width: 100%;\n height: ${height};\n }\n \n /* Fancy blur effect */\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px ${color}, 0 0 5px ${color};\n opacity: 1.0;\n \n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n }\n \n /* Remove these to get rid of the spinner */\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n \n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n \n border: solid 2px transparent;\n border-top-color: ${color};\n border-left-color: ${color};\n border-radius: 50%;\n \n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n }\n \n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n \n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n \n @-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n }\n @keyframes nprogress-spinner {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}\n </style>\n );\n\n NProgress.configure(options || {});\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n\n const startProgress = () => {\n timer = setTimeout(NProgress.start, delay);\n };\n\n const stopProgress = () => {\n clearTimeout(timer);\n NProgress.done();\n };\n\n const handleRouteStart = (url: string) => {\n const targetUrl = new URL(url, location.href);\n const currentUrl = new URL(Router.route, location.href);\n\n if (!shallowRouting || !isSameURL(targetUrl, currentUrl)) {\n startProgress();\n }\n };\n const handleRouteDone = () => stopProgress();\n\n Router.events.on('routeChangeStart', handleRouteStart);\n Router.events.on('routeChangeComplete', handleRouteDone);\n Router.events.on('routeChangeError', handleRouteDone);\n\n return () => {\n // Make sure to remove the event handler on unmount!\n Router.events.off('routeChangeStart', handleRouteStart);\n Router.events.off('routeChangeComplete', handleRouteDone);\n Router.events.off('routeChangeError', handleRouteDone);\n };\n }, []);\n\n return styles;\n },\n () => true,\n);\n"],"names":["usePathname","useSearchParams","useEffect","useNextRouter"],"mappings":"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"} |
+1
-1
| { | ||
| "name": "next-nprogress-bar", | ||
| "version": "2.0.1", | ||
| "version": "2.0.2", | ||
| "description": "NextJS progress bar compatible with new app directory", | ||
@@ -5,0 +5,0 @@ "repository": { |
36516
5.73%186
19.23%