@next-box/link-extra 0.0.19 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/production.analysis.txt +26 -26
- package/dist/types/cjs/Link.d.cts +2 -2
- package/dist/types/cjs/Link.d.cts.map +1 -1
- package/dist/types/cjs/LinkProvider.d.cts +3 -3
- package/dist/types/cjs/LinkProvider.d.cts.map +1 -1
- package/dist/types/cjs/helpers.d.cts +1 -1
- package/dist/types/cjs/helpers.d.cts.map +1 -1
- package/dist/types/cjs/types.d.cts +7 -4
- package/dist/types/cjs/types.d.cts.map +1 -1
- package/dist/types/esm/Link.d.ts +2 -2
- package/dist/types/esm/Link.d.ts.map +1 -1
- package/dist/types/esm/LinkProvider.d.ts +3 -3
- package/dist/types/esm/LinkProvider.d.ts.map +1 -1
- package/dist/types/esm/helpers.d.ts +1 -1
- package/dist/types/esm/helpers.d.ts.map +1 -1
- package/dist/types/esm/types.d.ts +7 -4
- package/dist/types/esm/types.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +15 -14
- package/src/Link.tsx +11 -8
- package/src/LinkProvider.tsx +38 -46
- package/src/helpers.ts +7 -9
- package/src/types.ts +10 -4
- package/src/useLinkExtra.ts +2 -2
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("react"),n=require("nanoid");const t=r.createContext({}),a=e=>{if(!globalThis.location)return!1;const r=URL.parse(e,location.origin);if(!r)return!1;const{pathname:n,search:t}=r,a=new URLSearchParams(t);a.has("y")&&a.delete("y");const o=new URLSearchParams(location.search);return o.has("y")&&o.delete("y"),`${n}?${a.toString()}`==`${location.pathname}?${o.toString()}`},o=e=>{if(!globalThis.location)return e;const r=URL.parse(e,location.origin);if(!r)return e;const t=new URLSearchParams(location.search),a=t.get("y");a&&t.delete("y");const{pathname:o,search:i}=r,c=new URLSearchParams(i);return`${o}?${i}`==`${location.pathname}?${t.toString()}`?c.set("y",a??n.nanoid()):c.set("y",n.nanoid()),`${o}?${c.toString()}`},i=()=>r.use(t);exports.Link=({children:r,disableRouterCache:n=!0,href:t="#",onClick:c,prefetch:s=!1,scroll:l=!1,...u})=>{const{NextLink:h,OwnLink:d,onLinkClicked:L}=i();return n&&(t=o(t)),e.jsx(h,{href:t,legacyBehavior:!0,passHref:!0,prefetch:s,scroll:l,children:e.jsx(d,{onClick:e=>{c&&c(e),a(t)||e.defaultPrevented||L()},...u,children:r})})},exports.LinkContext=t,exports.LinkProvider=({LoadingComponent:n,NextLink:a,OwnLink:o,children:i,loadingTimeout:c=500,pathname:s})=>{const l=r.useRef(null),[u,h]=r.useState(!1),d=r.useCallback(()=>{l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{h(!0)},c)},[c]);return r.useEffect(()=>{l.current&&clearTimeout(l.current),h(!1),scroll(0,0)},[s]),e.jsx(t,{value:{NextLink:a,OwnLink:o,onLinkClicked:()=>{d()}},children:e.jsxs(e.Fragment,{children:[i,u?e.jsx(n,{}):void 0]})})},exports.addCacheBusterQueryParam=o,exports.shouldUrlAndLocationMatch=a,exports.useLinkExtra=i;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/LinkProvider.tsx","../../src/helpers.ts","../../src/useLinkExtra.ts","../../src/Link.tsx"],"sourcesContent":["import type Link from 'next/link.js';\nimport {\n type ComponentType,\n type FC,\n type ReactNode,\n createContext,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { type LinkContextData, type NextLinkComponent, type OwnLinkProps } from '#types.js';\n\n// Context requires an initial value, but this is set in the provider so casting\n// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\nexport const LinkContext = createContext<LinkContextData>({} as LinkContextData);\n\nexport type LinkProviderProps = {\n LoadingComponent: ComponentType;\n NextLink: typeof Link;\n OwnLink: ComponentType<OwnLinkProps>;\n children: ReactNode | ReactNode[];\n loadingTimeout?: number;\n pathname: string;\n};\n\nexport const LinkProvider: FC<LinkProviderProps> = ({\n LoadingComponent,\n NextLink,\n OwnLink,\n children,\n loadingTimeout = 500,\n pathname,\n}) => {\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [showLoading, setShowLoading] = useState<boolean>(false);\n\n const onLinkClicked = useCallback(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setShowLoading(true);\n }, loadingTimeout);\n }, [loadingTimeout]);\n\n useEffect(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // This is setting state based on pathname change\n // eslint-disable-next-line react-hooks/set-state-in-effect, @eslint-react/set-state-in-effect\n setShowLoading(false);\n scroll(0, 0);\n }, [pathname]);\n\n return (\n <LinkContext\n value={{\n // Casting due to issues marrying up prop type and context type\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n NextLink: NextLink as unknown as NextLinkComponent,\n OwnLink,\n onLinkClicked: () => {\n onLinkClicked();\n },\n }}\n >\n <>\n {children}\n {showLoading ? <LoadingComponent /> : undefined}\n </>\n </LinkContext>\n );\n};\n","import { nanoid } from 'nanoid';\n\nexport const shouldUrlAndLocationMatch = (url: string): boolean => {\n // It is possible for this to be undefined\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!globalThis.location) {\n return false;\n }\n\n const parsedUrl = URL.parse(url, location.origin);\n\n if (!parsedUrl) {\n return false;\n }\n\n const { pathname, search } = parsedUrl;\n const urlSearchParams = new URLSearchParams(search);\n\n if (urlSearchParams.has('y')) {\n urlSearchParams.delete('y');\n }\n\n const locationSearchParams = new URLSearchParams(location.search);\n\n if (locationSearchParams.has('y')) {\n locationSearchParams.delete('y');\n }\n\n return `${pathname}?${urlSearchParams.toString()}` === `${location.pathname}?${locationSearchParams.toString()}`;\n};\n\nexport const addCacheBusterQueryParam = (url: string): string => {\n // It is possible for this to be undefined\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!globalThis.location) {\n return url;\n }\n\n const parsedUrl = URL.parse(url, location.origin);\n\n if (!parsedUrl) {\n return url;\n }\n\n const locationSearchParams = new URLSearchParams(location.search);\n const locationCacheBusterSearchParam = locationSearchParams.get('y');\n\n if (locationCacheBusterSearchParam) {\n locationSearchParams.delete('y');\n }\n\n const { pathname, search } = parsedUrl;\n const searchParams = new URLSearchParams(search);\n\n if (`${pathname}?${search}` === `${location.pathname}?${locationSearchParams.toString()}`) {\n searchParams.set('y', locationCacheBusterSearchParam ?? nanoid());\n } else {\n searchParams.set('y', nanoid());\n }\n\n return `${pathname}?${searchParams.toString()}`;\n};\n","import { use } from 'react';\nimport { type LinkContextData } from '#types.ts';\nimport { LinkContext } from './LinkProvider.tsx';\n\nexport const useLinkExtra = (): LinkContextData => {\n return use(LinkContext);\n};\n","import { type AnchorHTMLAttributes, type JSX, type ReactNode } from 'react';\nimport { addCacheBusterQueryParam, shouldUrlAndLocationMatch } from '#helpers.ts';\nimport { useLinkExtra } from './useLinkExtra.ts';\n\nexport type LinkProps<T extends object> = {\n children: ReactNode;\n disableRouterCache?: boolean;\n href?: string;\n prefetch?: boolean;\n scroll?: boolean;\n} & AnchorHTMLAttributes<HTMLAnchorElement> &\n T;\n\nexport const Link = <T extends object>({\n children,\n disableRouterCache = true,\n href = '#',\n onClick,\n prefetch = false,\n scroll = false,\n ...otherProps\n}: LinkProps<T>): JSX.Element => {\n // This and the two other disables below are false positives\n // eslint-disable-next-line @eslint-react/static-components\n const { NextLink, OwnLink, onLinkClicked } = useLinkExtra();\n\n if (disableRouterCache) {\n href = addCacheBusterQueryParam(href);\n }\n\n return (\n // This needs to remain: https://github.com/vercel/next.js/discussions/76329\n // eslint-disable-next-line @typescript-eslint/no-deprecated, @eslint-react/static-components\n <NextLink href={href} legacyBehavior passHref prefetch={prefetch} scroll={scroll}>\n <OwnLink // eslint-disable-line @eslint-react/static-components\n onClick={event => {\n if (onClick) {\n onClick(event);\n }\n\n if (!shouldUrlAndLocationMatch(href) && !event.defaultPrevented) {\n onLinkClicked();\n }\n }}\n {...otherProps}\n >\n {children}\n </OwnLink>\n </NextLink>\n );\n};\n"],"names":["LinkContext","createContext","shouldUrlAndLocationMatch","url","globalThis","location","parsedUrl","URL","parse","origin","pathname","search","urlSearchParams","URLSearchParams","has","delete","locationSearchParams","toString","addCacheBusterQueryParam","locationCacheBusterSearchParam","get","searchParams","set","nanoid","useLinkExtra","use","children","disableRouterCache","href","onClick","prefetch","scroll","otherProps","NextLink","OwnLink","onLinkClicked","_jsx","legacyBehavior","passHref","event","defaultPrevented","LoadingComponent","loadingTimeout","timeoutRef","useRef","showLoading","setShowLoading","useState","useCallback","current","clearTimeout","setTimeout","useEffect","value","_jsxs","_Fragment","undefined"],"mappings":"uFAeO,MAAMA,EAAcC,EAAAA,cAA+B,CAAA,GCb7CC,EAA6BC,IAGxC,IAAKC,WAAWC,SACd,OAAO,EAGT,MAAMC,EAAYC,IAAIC,MAAML,EAAKE,SAASI,QAE1C,IAAKH,EACH,OAAO,EAGT,MAAMI,SAAEA,EAAQC,OAAEA,GAAWL,EACvBM,EAAkB,IAAIC,gBAAgBF,GAExCC,EAAgBE,IAAI,MACtBF,EAAgBG,OAAO,KAGzB,MAAMC,EAAuB,IAAIH,gBAAgBR,SAASM,QAM1D,OAJIK,EAAqBF,IAAI,MAC3BE,EAAqBD,OAAO,KAGvB,GAAGL,KAAYE,EAAgBK,cAAiB,GAAGZ,SAASK,YAAYM,EAAqBC,cAGzFC,EAA4Bf,IAGvC,IAAKC,WAAWC,SACd,OAAOF,EAGT,MAAMG,EAAYC,IAAIC,MAAML,EAAKE,SAASI,QAE1C,IAAKH,EACH,OAAOH,EAGT,MAAMa,EAAuB,IAAIH,gBAAgBR,SAASM,QACpDQ,EAAiCH,EAAqBI,IAAI,KAE5DD,GACFH,EAAqBD,OAAO,KAG9B,MAAML,SAAEA,EAAQC,OAAEA,GAAWL,EACvBe,EAAe,IAAIR,gBAAgBF,GAQzC,MANI,GAAGD,KAAYC,KAAa,GAAGN,SAASK,YAAYM,EAAqBC,aAC3EI,EAAaC,IAAI,IAAKH,GAAkCI,EAAAA,UAExDF,EAAaC,IAAI,IAAKC,EAAAA,UAGjB,GAAGb,KAAYW,EAAaJ,cCxDxBO,EAAe,IACnBC,EAAAA,IAAIzB,gBCQO,EAClB0B,WACAC,sBAAqB,EACrBC,OAAO,IACPC,UACAC,YAAW,EACXC,UAAS,KACNC,MAIH,MAAMC,SAAEA,EAAQC,QAAEA,EAAOC,cAAEA,GAAkBX,IAM7C,OAJIG,IACFC,EAAOV,EAAyBU,IAMhCQ,EAAAA,IAACH,EAAAA,CAASL,KAAMA,EAAMS,gBAAc,EAACC,UAAQ,EAACR,SAAUA,EAAUC,OAAQA,WACxEK,EAAAA,IAACF,GACCL,QAASU,IACHV,GACFA,EAAQU,GAGLrC,EAA0B0B,IAAUW,EAAMC,kBAC7CL,QAGAH,EAEHN,SAAAA,kDHpB0C,EACjDe,mBACAR,WACAC,UACAR,WACAgB,iBAAiB,IACjBhC,eAEA,MAAMiC,EAAaC,EAAAA,OAA6C,OACzDC,EAAaC,GAAkBC,EAAAA,UAAkB,GAElDZ,EAAgBa,EAAAA,YAAY,KAC5BL,EAAWM,SACbC,aAAaP,EAAWM,SAG1BN,EAAWM,QAAUE,WAAW,KAC9BL,GAAe,IACdJ,IACF,CAACA,IAaJ,OAXAU,EAAAA,UAAU,KACJT,EAAWM,SACbC,aAAaP,EAAWM,SAK1BH,GAAe,GACff,OAAO,EAAG,IACT,CAACrB,IAGF0B,EAAAA,IAACpC,EAAAA,CACCqD,MAAO,CAGLpB,SAAUA,EACVC,UACAC,cAAe,KACbA,eAIJmB,EAAAA,KAAAC,WAAA,WACG7B,EACAmB,EAAcT,EAAAA,IAACK,EAAAA,CAAAA,QAAsBe"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as n,Fragment as
|
|
1
|
+
import{jsx as e,jsxs as n,Fragment as r}from"react/jsx-runtime";import{createContext as t,useRef as o,useState as a,useCallback as i,useEffect as c,use as l}from"react";import{nanoid as s}from"nanoid";const h=t({}),u=({LoadingComponent:t,NextLink:l,OwnLink:s,children:u,loadingTimeout:m=500,pathname:d})=>{const p=o(null),[L,f]=a(!1),g=i(()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{f(!0)},m)},[m]);return c(()=>{p.current&&clearTimeout(p.current),f(!1),scroll(0,0)},[d]),e(h,{value:{NextLink:l,OwnLink:s,onLinkClicked:()=>{g()}},children:n(r,{children:[u,L?e(t,{}):void 0]})})},m=e=>{if(!globalThis.location)return!1;const n=URL.parse(e,location.origin);if(!n)return!1;const{pathname:r,search:t}=n,o=new URLSearchParams(t);o.has("y")&&o.delete("y");const a=new URLSearchParams(location.search);return a.has("y")&&a.delete("y"),`${r}?${o.toString()}`==`${location.pathname}?${a.toString()}`},d=e=>{if(!globalThis.location)return e;const n=URL.parse(e,location.origin);if(!n)return e;const r=new URLSearchParams(location.search),t=r.get("y");t&&r.delete("y");const{pathname:o,search:a}=n,i=new URLSearchParams(a);return`${o}?${a}`==`${location.pathname}?${r.toString()}`?i.set("y",t??s()):i.set("y",s()),`${o}?${i.toString()}`},p=()=>l(h),L=({children:n,disableRouterCache:r=!0,href:t="#",onClick:o,prefetch:a=!1,scroll:i=!1,...c})=>{const{NextLink:l,OwnLink:s,onLinkClicked:h}=p();return r&&(t=d(t)),e(l,{href:t,legacyBehavior:!0,passHref:!0,prefetch:a,scroll:i,children:e(s,{onClick:e=>{o&&o(e),m(t)||e.defaultPrevented||h()},...c,children:n})})};export{L as Link,h as LinkContext,u as LinkProvider,d as addCacheBusterQueryParam,m as shouldUrlAndLocationMatch,p as useLinkExtra};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/LinkProvider.tsx","../../src/helpers.ts","../../src/useLinkExtra.ts","../../src/Link.tsx"],"sourcesContent":["import type Link from 'next/link.js';\nimport {\n type ComponentType,\n type FC,\n type ReactNode,\n createContext,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { type LinkContextData, type NextLinkComponent, type OwnLinkProps } from '#types.js';\n\n// Context requires an initial value, but this is set in the provider so casting\n// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\nexport const LinkContext = createContext<LinkContextData>({} as LinkContextData);\n\nexport type LinkProviderProps = {\n LoadingComponent: ComponentType;\n NextLink: typeof Link;\n OwnLink: ComponentType<OwnLinkProps>;\n children: ReactNode | ReactNode[];\n loadingTimeout?: number;\n pathname: string;\n};\n\nexport const LinkProvider: FC<LinkProviderProps> = ({\n LoadingComponent,\n NextLink,\n OwnLink,\n children,\n loadingTimeout = 500,\n pathname,\n}) => {\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [showLoading, setShowLoading] = useState<boolean>(false);\n\n const onLinkClicked = useCallback(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setShowLoading(true);\n }, loadingTimeout);\n }, [loadingTimeout]);\n\n useEffect(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // This is setting state based on pathname change\n // eslint-disable-next-line react-hooks/set-state-in-effect, @eslint-react/set-state-in-effect\n setShowLoading(false);\n scroll(0, 0);\n }, [pathname]);\n\n return (\n <LinkContext\n value={{\n // Casting due to issues marrying up prop type and context type\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n NextLink: NextLink as unknown as NextLinkComponent,\n OwnLink,\n onLinkClicked: () => {\n onLinkClicked();\n },\n }}\n >\n <>\n {children}\n {showLoading ? <LoadingComponent /> : undefined}\n </>\n </LinkContext>\n );\n};\n","import { nanoid } from 'nanoid';\n\nexport const shouldUrlAndLocationMatch = (url: string): boolean => {\n // It is possible for this to be undefined\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!globalThis.location) {\n return false;\n }\n\n const parsedUrl = URL.parse(url, location.origin);\n\n if (!parsedUrl) {\n return false;\n }\n\n const { pathname, search } = parsedUrl;\n const urlSearchParams = new URLSearchParams(search);\n\n if (urlSearchParams.has('y')) {\n urlSearchParams.delete('y');\n }\n\n const locationSearchParams = new URLSearchParams(location.search);\n\n if (locationSearchParams.has('y')) {\n locationSearchParams.delete('y');\n }\n\n return `${pathname}?${urlSearchParams.toString()}` === `${location.pathname}?${locationSearchParams.toString()}`;\n};\n\nexport const addCacheBusterQueryParam = (url: string): string => {\n // It is possible for this to be undefined\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!globalThis.location) {\n return url;\n }\n\n const parsedUrl = URL.parse(url, location.origin);\n\n if (!parsedUrl) {\n return url;\n }\n\n const locationSearchParams = new URLSearchParams(location.search);\n const locationCacheBusterSearchParam = locationSearchParams.get('y');\n\n if (locationCacheBusterSearchParam) {\n locationSearchParams.delete('y');\n }\n\n const { pathname, search } = parsedUrl;\n const searchParams = new URLSearchParams(search);\n\n if (`${pathname}?${search}` === `${location.pathname}?${locationSearchParams.toString()}`) {\n searchParams.set('y', locationCacheBusterSearchParam ?? nanoid());\n } else {\n searchParams.set('y', nanoid());\n }\n\n return `${pathname}?${searchParams.toString()}`;\n};\n","import { use } from 'react';\nimport { type LinkContextData } from '#types.ts';\nimport { LinkContext } from './LinkProvider.tsx';\n\nexport const useLinkExtra = (): LinkContextData => {\n return use(LinkContext);\n};\n","import { type AnchorHTMLAttributes, type JSX, type ReactNode } from 'react';\nimport { addCacheBusterQueryParam, shouldUrlAndLocationMatch } from '#helpers.ts';\nimport { useLinkExtra } from './useLinkExtra.ts';\n\nexport type LinkProps<T extends object> = {\n children: ReactNode;\n disableRouterCache?: boolean;\n href?: string;\n prefetch?: boolean;\n scroll?: boolean;\n} & AnchorHTMLAttributes<HTMLAnchorElement> &\n T;\n\nexport const Link = <T extends object>({\n children,\n disableRouterCache = true,\n href = '#',\n onClick,\n prefetch = false,\n scroll = false,\n ...otherProps\n}: LinkProps<T>): JSX.Element => {\n // This and the two other disables below are false positives\n // eslint-disable-next-line @eslint-react/static-components\n const { NextLink, OwnLink, onLinkClicked } = useLinkExtra();\n\n if (disableRouterCache) {\n href = addCacheBusterQueryParam(href);\n }\n\n return (\n // This needs to remain: https://github.com/vercel/next.js/discussions/76329\n // eslint-disable-next-line @typescript-eslint/no-deprecated, @eslint-react/static-components\n <NextLink href={href} legacyBehavior passHref prefetch={prefetch} scroll={scroll}>\n <OwnLink // eslint-disable-line @eslint-react/static-components\n onClick={event => {\n if (onClick) {\n onClick(event);\n }\n\n if (!shouldUrlAndLocationMatch(href) && !event.defaultPrevented) {\n onLinkClicked();\n }\n }}\n {...otherProps}\n >\n {children}\n </OwnLink>\n </NextLink>\n );\n};\n"],"names":["LinkContext","createContext","LinkProvider","LoadingComponent","NextLink","OwnLink","children","loadingTimeout","pathname","timeoutRef","useRef","showLoading","setShowLoading","useState","onLinkClicked","useCallback","current","clearTimeout","setTimeout","useEffect","scroll","_jsx","value","_jsxs","_Fragment","undefined","shouldUrlAndLocationMatch","url","globalThis","location","parsedUrl","URL","parse","origin","search","urlSearchParams","URLSearchParams","has","delete","locationSearchParams","toString","addCacheBusterQueryParam","locationCacheBusterSearchParam","get","searchParams","set","nanoid","useLinkExtra","use","Link","disableRouterCache","href","onClick","prefetch","otherProps","legacyBehavior","passHref","event","defaultPrevented"],"mappings":"yMAeO,MAAMA,EAAcC,EAA+B,CAAA,GAW7CC,EAAsC,EACjDC,mBACAC,WACAC,UACAC,WACAC,iBAAiB,IACjBC,eAEA,MAAMC,EAAaC,EAA6C,OACzDC,EAAaC,GAAkBC,GAAkB,GAElDC,EAAgBC,EAAY,KAC5BN,EAAWO,SACbC,aAAaR,EAAWO,SAG1BP,EAAWO,QAAUE,WAAW,KAC9BN,GAAe,IACdL,IACF,CAACA,IAaJ,OAXAY,EAAU,KACJV,EAAWO,SACbC,aAAaR,EAAWO,SAK1BJ,GAAe,GACfQ,OAAO,EAAG,IACT,CAACZ,IAGFa,EAACrB,EAAAA,CACCsB,MAAO,CAGLlB,SAAUA,EACVC,UACAS,cAAe,KACbA,eAIJS,EAAAC,EAAA,WACGlB,EACAK,EAAcU,EAAClB,EAAAA,CAAAA,QAAsBsB,QCtEjCC,EAA6BC,IAGxC,IAAKC,WAAWC,SACd,OAAO,EAGT,MAAMC,EAAYC,IAAIC,MAAML,EAAKE,SAASI,QAE1C,IAAKH,EACH,OAAO,EAGT,MAAMtB,SAAEA,EAAQ0B,OAAEA,GAAWJ,EACvBK,EAAkB,IAAIC,gBAAgBF,GAExCC,EAAgBE,IAAI,MACtBF,EAAgBG,OAAO,KAGzB,MAAMC,EAAuB,IAAIH,gBAAgBP,SAASK,QAM1D,OAJIK,EAAqBF,IAAI,MAC3BE,EAAqBD,OAAO,KAGvB,GAAG9B,KAAY2B,EAAgBK,cAAiB,GAAGX,SAASrB,YAAY+B,EAAqBC,cAGzFC,EAA4Bd,IAGvC,IAAKC,WAAWC,SACd,OAAOF,EAGT,MAAMG,EAAYC,IAAIC,MAAML,EAAKE,SAASI,QAE1C,IAAKH,EACH,OAAOH,EAGT,MAAMY,EAAuB,IAAIH,gBAAgBP,SAASK,QACpDQ,EAAiCH,EAAqBI,IAAI,KAE5DD,GACFH,EAAqBD,OAAO,KAG9B,MAAM9B,SAAEA,EAAQ0B,OAAEA,GAAWJ,EACvBc,EAAe,IAAIR,gBAAgBF,GAQzC,MANI,GAAG1B,KAAY0B,KAAa,GAAGL,SAASrB,YAAY+B,EAAqBC,aAC3EI,EAAaC,IAAI,IAAKH,GAAkCI,KAExDF,EAAaC,IAAI,IAAKC,KAGjB,GAAGtC,KAAYoC,EAAaJ,cCxDxBO,EAAe,IACnBC,EAAIhD,GCQAiD,EAAO,EAClB3C,WACA4C,sBAAqB,EACrBC,OAAO,IACPC,UACAC,YAAW,EACXjC,UAAS,KACNkC,MAIH,MAAMlD,SAAEA,EAAQC,QAAEA,EAAOS,cAAEA,GAAkBiC,IAM7C,OAJIG,IACFC,EAAOV,EAAyBU,IAMhC9B,EAACjB,EAAAA,CAAS+C,KAAMA,EAAMI,gBAAc,EAACC,UAAQ,EAACH,SAAUA,EAAUjC,OAAQA,WACxEC,EAAChB,GACC+C,QAASK,IACHL,GACFA,EAAQK,GAGL/B,EAA0ByB,IAAUM,EAAMC,kBAC7C5C,QAGAwC,EAEHhD,SAAAA"}
|
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
-----------------------------
|
|
2
2
|
Rollup File Analysis
|
|
3
3
|
-----------------------------
|
|
4
|
-
bundle size: 4.
|
|
5
|
-
original size: 5.
|
|
6
|
-
code reduction:
|
|
4
|
+
bundle size: 4.643 KB
|
|
5
|
+
original size: 5.717 KB
|
|
6
|
+
code reduction: 18.79 %
|
|
7
7
|
module count: 5
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
file: /src/
|
|
11
|
-
bundle space:
|
|
12
|
-
rendered size: 1.
|
|
13
|
-
original size:
|
|
14
|
-
code reduction:
|
|
9
|
+
██████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
10
|
+
file: /src/helpers.ts
|
|
11
|
+
bundle space: 37.43 %
|
|
12
|
+
rendered size: 1.738 KB
|
|
13
|
+
original size: 1.739 KB
|
|
14
|
+
code reduction: 0.06 %
|
|
15
15
|
dependents: 2
|
|
16
|
-
- /src/
|
|
16
|
+
- /src/Link.tsx
|
|
17
17
|
- /src/index.ts
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
file: /src/
|
|
21
|
-
bundle space:
|
|
22
|
-
rendered size: 1.
|
|
23
|
-
original size:
|
|
24
|
-
code reduction:
|
|
19
|
+
█████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
20
|
+
file: /src/LinkProvider.tsx
|
|
21
|
+
bundle space: 35.21 %
|
|
22
|
+
rendered size: 1.635 KB
|
|
23
|
+
original size: 2.064 KB
|
|
24
|
+
code reduction: 20.78 %
|
|
25
25
|
dependents: 2
|
|
26
|
-
- /src/
|
|
26
|
+
- /src/useLinkExtra.ts
|
|
27
27
|
- /src/index.ts
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
█████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
30
30
|
file: /src/Link.tsx
|
|
31
|
-
bundle space:
|
|
32
|
-
rendered size:
|
|
33
|
-
original size: 1.
|
|
34
|
-
code reduction:
|
|
31
|
+
bundle space: 26.1 %
|
|
32
|
+
rendered size: 1.212 KB
|
|
33
|
+
original size: 1.544 KB
|
|
34
|
+
code reduction: 21.5 %
|
|
35
35
|
dependents: 1
|
|
36
36
|
- /src/index.ts
|
|
37
37
|
|
|
38
38
|
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
|
39
39
|
file: /src/useLinkExtra.ts
|
|
40
|
-
bundle space: 1.
|
|
41
|
-
rendered size:
|
|
42
|
-
original size:
|
|
43
|
-
code reduction:
|
|
40
|
+
bundle space: 1.25 %
|
|
41
|
+
rendered size: 58 Bytes
|
|
42
|
+
original size: 213 Bytes
|
|
43
|
+
code reduction: 72.77 %
|
|
44
44
|
dependents: 2
|
|
45
45
|
- /src/Link.tsx
|
|
46
46
|
- /src/index.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AnchorHTMLAttributes, type ReactNode } from 'react';
|
|
1
|
+
import { type AnchorHTMLAttributes, type JSX, type ReactNode } from 'react';
|
|
2
2
|
export type LinkProps<T extends object> = {
|
|
3
3
|
children: ReactNode;
|
|
4
4
|
disableRouterCache?: boolean;
|
|
@@ -6,5 +6,5 @@ export type LinkProps<T extends object> = {
|
|
|
6
6
|
prefetch?: boolean;
|
|
7
7
|
scroll?: boolean;
|
|
8
8
|
} & AnchorHTMLAttributes<HTMLAnchorElement> & T;
|
|
9
|
-
export declare const Link: <T extends object>({ children, disableRouterCache, href, onClick, prefetch, scroll, ...otherProps }: LinkProps<T>) =>
|
|
9
|
+
export declare const Link: <T extends object>({ children, disableRouterCache, href, onClick, prefetch, scroll, ...otherProps }: LinkProps<T>) => JSX.Element;
|
|
10
10
|
//# sourceMappingURL=Link.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.d.cts","sourceRoot":"","sources":["../../../src/Link.ctsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Link.d.cts","sourceRoot":"","sources":["../../../src/Link.ctsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI5E,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GACzC,CAAC,CAAC;AAEJ,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,kFAQpC,SAAS,CAAC,CAAC,CAAC,KAAG,GAAG,CAAC,OA6BrB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Link from 'next/link.js';
|
|
2
|
-
import { type ComponentType, type ReactNode } from 'react';
|
|
1
|
+
import type Link from 'next/link.js';
|
|
2
|
+
import { type ComponentType, type FC, type ReactNode } from 'react';
|
|
3
3
|
import { type LinkContextData, type OwnLinkProps } from '#types.js';
|
|
4
4
|
export declare const LinkContext: import("react").Context<LinkContextData>;
|
|
5
5
|
export type LinkProviderProps = {
|
|
@@ -10,5 +10,5 @@ export type LinkProviderProps = {
|
|
|
10
10
|
loadingTimeout?: number;
|
|
11
11
|
pathname: string;
|
|
12
12
|
};
|
|
13
|
-
export declare const LinkProvider:
|
|
13
|
+
export declare const LinkProvider: FC<LinkProviderProps>;
|
|
14
14
|
//# sourceMappingURL=LinkProvider.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkProvider.d.cts","sourceRoot":"","sources":["../../../src/LinkProvider.ctsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkProvider.d.cts","sourceRoot":"","sources":["../../../src/LinkProvider.ctsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EACP,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,eAAe,EAA0B,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAI5F,eAAO,MAAM,WAAW,0CAAwD,CAAC;AAEjF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,EAAE,aAAa,CAAC;IAChC,QAAQ,EAAE,OAAO,IAAI,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACrC,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAkD9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.cts","sourceRoot":"","sources":["../../../src/helpers.cts"],"names":[],"mappings":"AAEA,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"helpers.d.cts","sourceRoot":"","sources":["../../../src/helpers.cts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,GAAI,KAAK,MAAM,KAAG,OA2BvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,KAAK,MAAM,KAAG,MA8BtD,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type AnchorHTMLAttributes, type ComponentType } from 'react';
|
|
1
|
+
import { type LinkProps } from 'next/link.js';
|
|
2
|
+
import { type AnchorHTMLAttributes, type ComponentType, type ReactNode } from 'react';
|
|
3
3
|
export type OwnLinkProps = Record<string, any> & AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
4
|
+
export type NextLinkComponent = ComponentType<LinkProps & {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}>;
|
|
4
7
|
export type LinkContextData = {
|
|
5
|
-
NextLink:
|
|
8
|
+
NextLink: NextLinkComponent;
|
|
6
9
|
OwnLink: ComponentType<AnchorHTMLAttributes<HTMLAnchorElement>>;
|
|
7
|
-
|
|
10
|
+
onLinkClicked: () => void;
|
|
8
11
|
};
|
|
9
12
|
//# sourceMappingURL=types.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/types.cts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../../src/types.cts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAItF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAEzF,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAC3C,SAAS,GAAG;IACV,QAAQ,EAAE,SAAS,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAChE,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC"}
|
package/dist/types/esm/Link.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AnchorHTMLAttributes, type ReactNode } from 'react';
|
|
1
|
+
import { type AnchorHTMLAttributes, type JSX, type ReactNode } from 'react';
|
|
2
2
|
export type LinkProps<T extends object> = {
|
|
3
3
|
children: ReactNode;
|
|
4
4
|
disableRouterCache?: boolean;
|
|
@@ -6,5 +6,5 @@ export type LinkProps<T extends object> = {
|
|
|
6
6
|
prefetch?: boolean;
|
|
7
7
|
scroll?: boolean;
|
|
8
8
|
} & AnchorHTMLAttributes<HTMLAnchorElement> & T;
|
|
9
|
-
export declare const Link: <T extends object>({ children, disableRouterCache, href, onClick, prefetch, scroll, ...otherProps }: LinkProps<T>) =>
|
|
9
|
+
export declare const Link: <T extends object>({ children, disableRouterCache, href, onClick, prefetch, scroll, ...otherProps }: LinkProps<T>) => JSX.Element;
|
|
10
10
|
//# sourceMappingURL=Link.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI5E,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GACzC,CAAC,CAAC;AAEJ,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,kFAQpC,SAAS,CAAC,CAAC,CAAC,KAAG,GAAG,CAAC,OA6BrB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Link from 'next/link.js';
|
|
2
|
-
import { type ComponentType, type ReactNode } from 'react';
|
|
1
|
+
import type Link from 'next/link.js';
|
|
2
|
+
import { type ComponentType, type FC, type ReactNode } from 'react';
|
|
3
3
|
import { type LinkContextData, type OwnLinkProps } from '#types.js';
|
|
4
4
|
export declare const LinkContext: import("react").Context<LinkContextData>;
|
|
5
5
|
export type LinkProviderProps = {
|
|
@@ -10,5 +10,5 @@ export type LinkProviderProps = {
|
|
|
10
10
|
loadingTimeout?: number;
|
|
11
11
|
pathname: string;
|
|
12
12
|
};
|
|
13
|
-
export declare const LinkProvider:
|
|
13
|
+
export declare const LinkProvider: FC<LinkProviderProps>;
|
|
14
14
|
//# sourceMappingURL=LinkProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkProvider.d.ts","sourceRoot":"","sources":["../../../src/LinkProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkProvider.d.ts","sourceRoot":"","sources":["../../../src/LinkProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EACP,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,eAAe,EAA0B,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAI5F,eAAO,MAAM,WAAW,0CAAwD,CAAC;AAEjF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,EAAE,aAAa,CAAC;IAChC,QAAQ,EAAE,OAAO,IAAI,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACrC,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAkD9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,GAAI,KAAK,MAAM,KAAG,OA2BvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,KAAK,MAAM,KAAG,MA8BtD,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type AnchorHTMLAttributes, type ComponentType } from 'react';
|
|
1
|
+
import { type LinkProps } from 'next/link.js';
|
|
2
|
+
import { type AnchorHTMLAttributes, type ComponentType, type ReactNode } from 'react';
|
|
3
3
|
export type OwnLinkProps = Record<string, any> & AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
4
|
+
export type NextLinkComponent = ComponentType<LinkProps & {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}>;
|
|
4
7
|
export type LinkContextData = {
|
|
5
|
-
NextLink:
|
|
8
|
+
NextLink: NextLinkComponent;
|
|
6
9
|
OwnLink: ComponentType<AnchorHTMLAttributes<HTMLAnchorElement>>;
|
|
7
|
-
|
|
10
|
+
onLinkClicked: () => void;
|
|
8
11
|
};
|
|
9
12
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAItF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAEzF,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAC3C,SAAS,GAAG;IACV,QAAQ,EAAE,SAAS,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAChE,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC"}
|