next 15.2.0-canary.47 → 15.2.0-canary.48

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.

Potentially problematic release.


This version of next might be problematic. Click here for more details.

Files changed (65) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +2 -2
  3. package/dist/build/swc/index.js +1 -1
  4. package/dist/build/webpack-config.js +2 -2
  5. package/dist/client/app-bootstrap.js +1 -1
  6. package/dist/client/app-dir/link.d.ts +108 -28
  7. package/dist/client/app-dir/link.js +6 -4
  8. package/dist/client/app-dir/link.js.map +1 -1
  9. package/dist/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.js +3 -2
  10. package/dist/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.js.map +1 -1
  11. package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.js +8 -6
  12. package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.js.map +1 -1
  13. package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/use-error-hook.js +2 -3
  14. package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/use-error-hook.js.map +1 -1
  15. package/dist/client/components/react-dev-overlay/server/middleware-turbopack.js +39 -13
  16. package/dist/client/components/react-dev-overlay/server/middleware-turbopack.js.map +1 -1
  17. package/dist/client/components/react-dev-overlay/server/middleware-webpack.js +13 -3
  18. package/dist/client/components/react-dev-overlay/server/middleware-webpack.js.map +1 -1
  19. package/dist/client/index.js +1 -1
  20. package/dist/compiled/next-server/app-page-experimental.runtime.dev.js +2 -2
  21. package/dist/compiled/next-server/app-page-experimental.runtime.dev.js.map +1 -1
  22. package/dist/compiled/next-server/app-page.runtime.dev.js +2 -2
  23. package/dist/compiled/next-server/app-page.runtime.dev.js.map +1 -1
  24. package/dist/compiled/next-server/server.runtime.prod.js +6 -6
  25. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  26. package/dist/esm/build/index.js +2 -2
  27. package/dist/esm/build/swc/index.js +1 -1
  28. package/dist/esm/build/webpack-config.js +2 -2
  29. package/dist/esm/client/app-bootstrap.js +1 -1
  30. package/dist/esm/client/app-dir/link.js +6 -4
  31. package/dist/esm/client/app-dir/link.js.map +1 -1
  32. package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.js +3 -2
  33. package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.js.map +1 -1
  34. package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.js +8 -6
  35. package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.js.map +1 -1
  36. package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/use-error-hook.js +2 -3
  37. package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/use-error-hook.js.map +1 -1
  38. package/dist/esm/client/components/react-dev-overlay/server/middleware-turbopack.js +39 -13
  39. package/dist/esm/client/components/react-dev-overlay/server/middleware-turbopack.js.map +1 -1
  40. package/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js +13 -3
  41. package/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js.map +1 -1
  42. package/dist/esm/client/index.js +1 -1
  43. package/dist/esm/lib/metadata/types/metadata-interface.js +13 -1
  44. package/dist/esm/lib/metadata/types/metadata-interface.js.map +1 -1
  45. package/dist/esm/server/config.js +1 -1
  46. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  47. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  48. package/dist/esm/server/lib/app-info-log.js +1 -1
  49. package/dist/esm/server/lib/start-server.js +1 -1
  50. package/dist/esm/server/patch-error-inspect.js +42 -15
  51. package/dist/esm/server/patch-error-inspect.js.map +1 -1
  52. package/dist/lib/metadata/types/metadata-interface.d.ts +252 -179
  53. package/dist/lib/metadata/types/metadata-interface.js +13 -1
  54. package/dist/lib/metadata/types/metadata-interface.js.map +1 -1
  55. package/dist/server/config.js +1 -1
  56. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  57. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  58. package/dist/server/lib/app-info-log.js +1 -1
  59. package/dist/server/lib/start-server.js +1 -1
  60. package/dist/server/patch-error-inspect.js +42 -15
  61. package/dist/server/patch-error-inspect.js.map +1 -1
  62. package/dist/telemetry/anonymous-meta.js +1 -1
  63. package/dist/telemetry/events/session-stopped.js +2 -2
  64. package/dist/telemetry/events/version.js +2 -2
  65. package/package.json +15 -15
package/dist/bin/next CHANGED
@@ -75,7 +75,7 @@ const program = new NextRootCommand();
75
75
  program.name('next').description('The Next.js CLI allows you to develop, build, start your application, and more.').configureHelp({
76
76
  formatHelp: (cmd, helper)=>(0, _formatclihelpoutput.formatCliHelpOutput)(cmd, helper),
77
77
  subcommandTerm: (cmd)=>`${cmd.name()} ${cmd.usage()}`
78
- }).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"15.2.0-canary.47"}`, '-v, --version', 'Outputs the Next.js version.');
78
+ }).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"15.2.0-canary.48"}`, '-v, --version', 'Outputs the Next.js version.');
79
79
  program.command('build').description('Creates an optimized production build of your application. The output displays information about each route.').argument('[directory]', `A directory on which to build the application. ${(0, _picocolors.italic)('If no directory is provided, the current directory will be used.')}`).option('-d, --debug', 'Enables a more verbose build output.').option('--no-lint', 'Disables linting.').option('--no-mangling', 'Disables mangling.').option('--profile', 'Enables production profiling for React.').option('--experimental-app-only', 'Builds only App Router routes.').addOption(new _commander.Option('--experimental-turbo').hideHelp()).addOption(new _commander.Option('--experimental-build-mode [mode]', 'Uses an experimental build mode.').choices([
80
80
  'compile',
81
81
  'generate'
@@ -364,7 +364,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
364
364
  const nextBuildSpan = (0, _trace.trace)('next-build', undefined, {
365
365
  buildMode: experimentalBuildMode,
366
366
  isTurboBuild: String(turboNextBuild),
367
- version: "15.2.0-canary.47"
367
+ version: "15.2.0-canary.48"
368
368
  });
369
369
  _buildcontext.NextBuildContext.nextBuildSpan = nextBuildSpan;
370
370
  _buildcontext.NextBuildContext.dir = dir;
@@ -729,7 +729,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
729
729
  // Files outside of the distDir can be "type": "module"
730
730
  await writeFileUtf8(_path.default.join(distDir, 'package.json'), '{"type": "commonjs"}');
731
731
  // These are written to distDir, so they need to come after creating and cleaning distDr.
732
- await (0, _builddiagnostics.recordFrameworkVersion)("15.2.0-canary.47");
732
+ await (0, _builddiagnostics.recordFrameworkVersion)("15.2.0-canary.48");
733
733
  await (0, _builddiagnostics.updateBuildDiagnostics)({
734
734
  buildStage: 'start'
735
735
  });
@@ -119,7 +119,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
119
119
  }
120
120
  return newObj;
121
121
  }
122
- const nextVersion = "15.2.0-canary.47";
122
+ const nextVersion = "15.2.0-canary.48";
123
123
  const ArchName = (0, _os.arch)();
124
124
  const PlatformName = (0, _os.platform)();
125
125
  function infoLog(...args) {
@@ -1510,7 +1510,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
1510
1510
  isClient && new _copyfileplugin.CopyFilePlugin({
1511
1511
  // file path to build output of `@next/polyfill-nomodule`
1512
1512
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1513
- cacheKey: "15.2.0-canary.47",
1513
+ cacheKey: "15.2.0-canary.48",
1514
1514
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1515
1515
  minimize: false,
1516
1516
  info: {
@@ -1743,7 +1743,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
1743
1743
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1744
1744
  // - Next.js version
1745
1745
  // - next.config.js keys that affect compilation
1746
- version: `${__dirname}|${"15.2.0-canary.47"}|${configVars}`,
1746
+ version: `${__dirname}|${"15.2.0-canary.48"}|${configVars}`,
1747
1747
  cacheDirectory: _path.default.join(distDir, 'cache', 'webpack'),
1748
1748
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1749
1749
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
@@ -13,7 +13,7 @@ Object.defineProperty(exports, "appBootstrap", {
13
13
  return appBootstrap;
14
14
  }
15
15
  });
16
- const version = "15.2.0-canary.47";
16
+ const version = "15.2.0-canary.48";
17
17
  window.next = {
18
18
  version,
19
19
  appDir: true
@@ -3,91 +3,171 @@ import type { UrlObject } from 'url';
3
3
  type Url = string | UrlObject;
4
4
  type InternalLinkProps = {
5
5
  /**
6
- * The path or URL to navigate to. It can also be an object.
6
+ * **Required**. The path or URL to navigate to. It can also be an object (similar to `URL`).
7
7
  *
8
- * @example https://nextjs.org/docs/api-reference/next/link#with-url-object
8
+ * @example
9
+ * ```tsx
10
+ * // Navigate to /dashboard:
11
+ * <Link href="/dashboard">Dashboard</Link>
12
+ *
13
+ * // Navigate to /about?name=test:
14
+ * <Link href={{ pathname: '/about', query: { name: 'test' } }}>
15
+ * About
16
+ * </Link>
17
+ * ```
18
+ *
19
+ * @remarks
20
+ * - For external URLs, use a fully qualified URL such as `https://...`.
21
+ * - In the App Router, dynamic routes must not include bracketed segments in `href`.
9
22
  */
10
23
  href: Url;
11
24
  /**
12
- * Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes) to see how it worked. Note: when this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes).
25
+ * @deprecated v10.0.0: `href` props pointing to a dynamic route are
26
+ * automatically resolved and no longer require the `as` prop.
13
27
  */
14
28
  as?: Url;
15
29
  /**
16
- * Replace the current `history` state instead of adding a new url into the stack.
30
+ * Replace the current `history` state instead of adding a new URL into the stack.
17
31
  *
18
32
  * @defaultValue `false`
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * <Link href="/about" replace>
37
+ * About (replaces the history state)
38
+ * </Link>
39
+ * ```
19
40
  */
20
41
  replace?: boolean;
21
42
  /**
22
- * Whether to override the default scroll behavior
43
+ * Whether to override the default scroll behavior. If `true`, Next.js attempts to maintain
44
+ * the scroll position if the newly navigated page is still visible. If not, it scrolls to the top.
23
45
  *
24
- * @example https://nextjs.org/docs/api-reference/next/link#disable-scrolling-to-the-top-of-the-page
46
+ * If `false`, Next.js will not modify the scroll behavior at all.
25
47
  *
26
48
  * @defaultValue `true`
49
+ *
50
+ * @example
51
+ * ```tsx
52
+ * <Link href="/dashboard" scroll={false}>
53
+ * No auto scroll
54
+ * </Link>
55
+ * ```
27
56
  */
28
57
  scroll?: boolean;
29
58
  /**
30
- * Update the path of the current page without rerunning [`getStaticProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-static-props), [`getServerSideProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props) or [`getInitialProps`](/docs/pages/api-reference/functions/get-initial-props).
59
+ * Update the path of the current page without rerunning data fetching methods
60
+ * like `getStaticProps`, `getServerSideProps`, or `getInitialProps`.
61
+ *
62
+ * @remarks
63
+ * `shallow` only applies to the Pages Router. For the App Router, see the
64
+ * [following documentation](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#using-the-native-history-api).
31
65
  *
32
66
  * @defaultValue `false`
67
+ *
68
+ * @example
69
+ * ```tsx
70
+ * <Link href="/blog" shallow>
71
+ * Shallow navigation
72
+ * </Link>
73
+ * ```
33
74
  */
34
75
  shallow?: boolean;
35
76
  /**
36
- * Forces `Link` to send the `href` property to its child.
77
+ * Forces `Link` to pass its `href` to the child component. Useful if the child is a custom
78
+ * component that wraps an `<a>` tag, or if you're using certain styling libraries.
37
79
  *
38
80
  * @defaultValue `false`
81
+ *
82
+ * @example
83
+ * ```tsx
84
+ * <Link href="/dashboard" passHref>
85
+ * <MyStyledAnchor>Dashboard</MyStyledAnchor>
86
+ * </Link>
87
+ * ```
39
88
  */
40
89
  passHref?: boolean;
41
90
  /**
42
91
  * Prefetch the page in the background.
43
92
  * Any `<Link />` that is in the viewport (initially or through scroll) will be prefetched.
44
- * Prefetch can be disabled by passing `prefetch={false}`. Prefetching is only enabled in production.
93
+ * Prefetch can be disabled by passing `prefetch={false}`.
45
94
  *
46
- * In App Router:
47
- * - `null` (default): For statically generated pages, this will prefetch the full React Server Component data. For dynamic pages, this will prefetch up to the nearest route segment with a [`loading.js`](https://nextjs.org/docs/app/api-reference/file-conventions/loading) file. If there is no loading file, it will not fetch the full tree to avoid fetching too much data.
48
- * - `true`: This will prefetch the full React Server Component data for all route segments, regardless of whether they contain a segment with `loading.js`.
49
- * - `false`: This will not prefetch any data, even on hover.
95
+ * @remarks
96
+ * Prefetching is only enabled in production.
50
97
  *
51
- * In Pages Router:
52
- * - `true` (default): The full route & its data will be prefetched.
53
- * - `false`: Prefetching will not happen when entering the viewport, but will still happen on hover.
54
- * @defaultValue `true` (pages router) or `null` (app router)
98
+ * - In the **App Router**:
99
+ * - `null` (default): Prefetch behavior depends on static vs dynamic routes:
100
+ * - Static routes: fully prefetched
101
+ * - Dynamic routes: partial prefetch to the nearest segment with a `loading.js`
102
+ * - `true`: Always prefetch the full route and data.
103
+ * - `false`: Disable prefetching on both viewport and hover.
104
+ * - In the **Pages Router**:
105
+ * - `true` (default): Prefetches the route and data in the background on viewport or hover.
106
+ * - `false`: Prefetch only on hover, not on viewport.
107
+ *
108
+ * @defaultValue `true` (Pages Router) or `null` (App Router)
109
+ *
110
+ * @example
111
+ * ```tsx
112
+ * <Link href="/dashboard" prefetch={false}>
113
+ * Dashboard
114
+ * </Link>
115
+ * ```
55
116
  */
56
117
  prefetch?: boolean | null;
57
118
  /**
58
- * The active locale is automatically prepended. `locale` allows for providing a different locale.
59
- * When `false` `href` has to include the locale as the default behavior is disabled.
60
- * Note: This is only available in the Pages Router.
119
+ * The active locale is automatically prepended in the Pages Router. `locale` allows for providing
120
+ * a different locale, or can be set to `false` to opt out of automatic locale behavior.
121
+ *
122
+ * @remarks
123
+ * Note: locale only applies in the Pages Router and is ignored in the App Router.
124
+ *
125
+ * @example
126
+ * ```tsx
127
+ * // Use the 'fr' locale:
128
+ * <Link href="/about" locale="fr">
129
+ * About (French)
130
+ * </Link>
131
+ *
132
+ * // Disable locale prefix:
133
+ * <Link href="/about" locale={false}>
134
+ * About (no locale prefix)
135
+ * </Link>
136
+ * ```
61
137
  */
62
138
  locale?: string | false;
63
139
  /**
64
- * Enable legacy link behavior.
140
+ * Enable legacy link behavior, requiring an `<a>` tag to wrap the child content
141
+ * if the child is a string or number.
142
+ *
65
143
  * @defaultValue `false`
66
144
  * @see https://github.com/vercel/next.js/commit/489e65ed98544e69b0afd7e0cfc3f9f6c2b803b7
67
145
  */
68
146
  legacyBehavior?: boolean;
69
147
  /**
70
- * Optional event handler for when the mouse pointer is moved onto Link
148
+ * Optional event handler for when the mouse pointer is moved onto the `<Link>`.
71
149
  */
72
150
  onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>;
73
151
  /**
74
- * Optional event handler for when Link is touched.
152
+ * Optional event handler for when the `<Link>` is touched.
75
153
  */
76
154
  onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>;
77
155
  /**
78
- * Optional event handler for when Link is clicked.
156
+ * Optional event handler for when the `<Link>` is clicked.
79
157
  */
80
158
  onClick?: React.MouseEventHandler<HTMLAnchorElement>;
81
159
  };
82
160
  export type LinkProps<RouteInferType = any> = InternalLinkProps;
83
161
  export declare function unmountLinkInstance(element: HTMLAnchorElement | SVGAElement): void;
84
162
  /**
85
- * A React component that extends the HTML `<a>` element to provide [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)
86
- * and client-side navigation between routes.
163
+ * A React component that extends the HTML `<a>` element to provide
164
+ * [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)
165
+ * and client-side navigation. This is the primary way to navigate between routes in Next.js.
87
166
  *
88
- * It is the primary way to navigate between routes in Next.js.
167
+ * @remarks
168
+ * - Prefetching is only enabled in production.
89
169
  *
90
- * Read more: [Next.js docs: `<Link>`](https://nextjs.org/docs/app/api-reference/components/link)
170
+ * @see https://nextjs.org/docs/app/api-reference/components/link
91
171
  */
92
172
  declare const Link: React.ForwardRefExoticComponent<Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof InternalLinkProps> & InternalLinkProps & {
93
173
  children?: React.ReactNode | undefined;
@@ -232,12 +232,14 @@ function formatStringOrUrl(urlObjOrString) {
232
232
  return (0, _formaturl.formatUrl)(urlObjOrString);
233
233
  }
234
234
  /**
235
- * A React component that extends the HTML `<a>` element to provide [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)
236
- * and client-side navigation between routes.
235
+ * A React component that extends the HTML `<a>` element to provide
236
+ * [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)
237
+ * and client-side navigation. This is the primary way to navigate between routes in Next.js.
237
238
  *
238
- * It is the primary way to navigate between routes in Next.js.
239
+ * @remarks
240
+ * - Prefetching is only enabled in production.
239
241
  *
240
- * Read more: [Next.js docs: `<Link>`](https://nextjs.org/docs/app/api-reference/components/link)
242
+ * @see https://nextjs.org/docs/app/api-reference/components/link
241
243
  */ const Link = /*#__PURE__*/ _react.default.forwardRef(function LinkComponent(props, forwardedRef) {
242
244
  let children;
243
245
  const { href: hrefProp, as: asProp, children: childrenProp, prefetch: prefetchProp = null, passHref, replace, shallow, scroll, onClick, onMouseEnter: onMouseEnterProp, onTouchStart: onTouchStartProp, legacyBehavior = false, ...restProps } = props;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/client/app-dir/link.tsx"],"sourcesContent":["'use client'\n\nimport type { NextRouter } from '../../shared/lib/router/router'\n\nimport React from 'react'\nimport type { UrlObject } from 'url'\nimport { formatUrl } from '../../shared/lib/router/utils/format-url'\nimport { AppRouterContext } from '../../shared/lib/app-router-context.shared-runtime'\nimport type { AppRouterInstance } from '../../shared/lib/app-router-context.shared-runtime'\nimport { PrefetchKind } from '../components/router-reducer/router-reducer-types'\nimport { useMergedRef } from '../use-merged-ref'\nimport { isAbsoluteUrl } from '../../shared/lib/utils'\nimport { addBasePath } from '../add-base-path'\nimport { warnOnce } from '../../shared/lib/utils/warn-once'\nimport {\n type PrefetchTask,\n schedulePrefetchTask as scheduleSegmentPrefetchTask,\n cancelPrefetchTask,\n bumpPrefetchTask,\n PrefetchPriority,\n} from '../components/segment-cache/scheduler'\nimport { getCurrentAppRouterState } from '../../shared/lib/router/action-queue'\nimport { createCacheKey } from '../components/segment-cache/cache-key'\nimport { createPrefetchURL } from '../components/app-router'\n\ntype Url = string | UrlObject\ntype RequiredKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T]\ntype OptionalKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? K : never\n}[keyof T]\n\ntype InternalLinkProps = {\n /**\n * The path or URL to navigate to. It can also be an object.\n *\n * @example https://nextjs.org/docs/api-reference/next/link#with-url-object\n */\n href: Url\n /**\n * Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes) to see how it worked. Note: when this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes).\n */\n as?: Url\n /**\n * Replace the current `history` state instead of adding a new url into the stack.\n *\n * @defaultValue `false`\n */\n replace?: boolean\n /**\n * Whether to override the default scroll behavior\n *\n * @example https://nextjs.org/docs/api-reference/next/link#disable-scrolling-to-the-top-of-the-page\n *\n * @defaultValue `true`\n */\n scroll?: boolean\n /**\n * Update the path of the current page without rerunning [`getStaticProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-static-props), [`getServerSideProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props) or [`getInitialProps`](/docs/pages/api-reference/functions/get-initial-props).\n *\n * @defaultValue `false`\n */\n shallow?: boolean\n /**\n * Forces `Link` to send the `href` property to its child.\n *\n * @defaultValue `false`\n */\n passHref?: boolean\n /**\n * Prefetch the page in the background.\n * Any `<Link />` that is in the viewport (initially or through scroll) will be prefetched.\n * Prefetch can be disabled by passing `prefetch={false}`. Prefetching is only enabled in production.\n *\n * In App Router:\n * - `null` (default): For statically generated pages, this will prefetch the full React Server Component data. For dynamic pages, this will prefetch up to the nearest route segment with a [`loading.js`](https://nextjs.org/docs/app/api-reference/file-conventions/loading) file. If there is no loading file, it will not fetch the full tree to avoid fetching too much data.\n * - `true`: This will prefetch the full React Server Component data for all route segments, regardless of whether they contain a segment with `loading.js`.\n * - `false`: This will not prefetch any data, even on hover.\n *\n * In Pages Router:\n * - `true` (default): The full route & its data will be prefetched.\n * - `false`: Prefetching will not happen when entering the viewport, but will still happen on hover.\n * @defaultValue `true` (pages router) or `null` (app router)\n */\n prefetch?: boolean | null\n /**\n * The active locale is automatically prepended. `locale` allows for providing a different locale.\n * When `false` `href` has to include the locale as the default behavior is disabled.\n * Note: This is only available in the Pages Router.\n */\n locale?: string | false\n /**\n * Enable legacy link behavior.\n * @defaultValue `false`\n * @see https://github.com/vercel/next.js/commit/489e65ed98544e69b0afd7e0cfc3f9f6c2b803b7\n */\n legacyBehavior?: boolean\n /**\n * Optional event handler for when the mouse pointer is moved onto Link\n */\n onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>\n /**\n * Optional event handler for when Link is touched.\n */\n onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n /**\n * Optional event handler for when Link is clicked.\n */\n onClick?: React.MouseEventHandler<HTMLAnchorElement>\n}\n\n// TODO-APP: Include the full set of Anchor props\n// adding this to the publicly exported type currently breaks existing apps\n\n// `RouteInferType` is a stub here to avoid breaking `typedRoutes` when the type\n// isn't generated yet. It will be replaced when the webpack plugin runs.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type LinkProps<RouteInferType = any> = InternalLinkProps\ntype LinkPropsRequired = RequiredKeys<LinkProps>\ntype LinkPropsOptional = OptionalKeys<Omit<InternalLinkProps, 'locale'>>\n\ntype LinkInstance = {\n router: AppRouterInstance\n kind: PrefetchKind.AUTO | PrefetchKind.FULL\n prefetchHref: string\n\n isVisible: boolean\n wasHoveredOrTouched: boolean\n\n // The most recently initiated prefetch task. It may or may not have\n // already completed. The same prefetch task object can be reused across\n // multiple prefetches of the same link.\n prefetchTask: PrefetchTask | null\n}\n\n// TODO: This is currently a WeakMap because it doesn't need to be enumerable,\n// but eventually we'll want to be able to re-prefetch all the currently\n// visible links, e.g. after a revalidation or refresh.\nconst links:\n | WeakMap<HTMLAnchorElement | SVGAElement, LinkInstance>\n | Map<Element, LinkInstance> =\n typeof WeakMap === 'function' ? new WeakMap() : new Map()\n\n// A single IntersectionObserver instance shared by all <Link> components.\nconst observer: IntersectionObserver | null =\n typeof IntersectionObserver === 'function'\n ? new IntersectionObserver(handleIntersect, {\n rootMargin: '200px',\n })\n : null\n\nfunction mountLinkInstance(\n element: HTMLAnchorElement | SVGAElement,\n href: string,\n router: AppRouterInstance,\n kind: PrefetchKind.AUTO | PrefetchKind.FULL\n) {\n let prefetchUrl: URL | null = null\n try {\n prefetchUrl = createPrefetchURL(href)\n if (prefetchUrl === null) {\n // We only track the link if it's prefetchable. For example, this excludes\n // links to external URLs.\n return\n }\n } catch {\n // createPrefetchURL sometimes throws an error if an invalid URL is\n // provided, though I'm not sure if it's actually necessary.\n // TODO: Consider removing the throw from the inner function, or change it\n // to reportError. Or maybe the error isn't even necessary for automatic\n // prefetches, just navigations.\n const reportErrorFn =\n typeof reportError === 'function' ? reportError : console.error\n reportErrorFn(\n `Cannot prefetch '${href}' because it cannot be converted to a URL.`\n )\n return\n }\n\n const instance: LinkInstance = {\n prefetchHref: prefetchUrl.href,\n router,\n kind,\n isVisible: false,\n wasHoveredOrTouched: false,\n prefetchTask: null,\n }\n const existingInstance = links.get(element)\n if (existingInstance !== undefined) {\n // This shouldn't happen because each <Link> component should have its own\n // anchor tag instance, but it's defensive coding to avoid a memory leak in\n // case there's a logical error somewhere else.\n unmountLinkInstance(element)\n }\n links.set(element, instance)\n if (observer !== null) {\n observer.observe(element)\n }\n}\n\nexport function unmountLinkInstance(element: HTMLAnchorElement | SVGAElement) {\n const instance = links.get(element)\n if (instance !== undefined) {\n links.delete(element)\n const prefetchTask = instance.prefetchTask\n if (prefetchTask !== null) {\n cancelPrefetchTask(prefetchTask)\n }\n }\n if (observer !== null) {\n observer.unobserve(element)\n }\n}\n\nfunction handleIntersect(entries: Array<IntersectionObserverEntry>) {\n for (const entry of entries) {\n // Some extremely old browsers or polyfills don't reliably support\n // isIntersecting so we check intersectionRatio instead. (Do we care? Not\n // really. But whatever this is fine.)\n const isVisible = entry.intersectionRatio > 0\n onLinkVisibilityChanged(entry.target as HTMLAnchorElement, isVisible)\n }\n}\n\nfunction onLinkVisibilityChanged(\n element: HTMLAnchorElement | SVGAElement,\n isVisible: boolean\n) {\n if (process.env.NODE_ENV !== 'production') {\n // Prefetching on viewport is disabled in development for performance\n // reasons, because it requires compiling the target page.\n // TODO: Investigate re-enabling this.\n return\n }\n\n const instance = links.get(element)\n if (instance === undefined) {\n return\n }\n\n instance.isVisible = isVisible\n rescheduleLinkPrefetch(instance)\n}\n\nfunction onNavigationIntent(element: HTMLAnchorElement | SVGAElement) {\n const instance = links.get(element)\n if (instance === undefined) {\n return\n }\n // Prefetch the link on hover/touchstart.\n if (instance !== undefined) {\n instance.wasHoveredOrTouched = true\n rescheduleLinkPrefetch(instance)\n }\n}\n\nfunction rescheduleLinkPrefetch(instance: LinkInstance) {\n const existingPrefetchTask = instance.prefetchTask\n\n if (!instance.isVisible) {\n // Cancel any in-progress prefetch task. (If it already finished then this\n // is a no-op.)\n if (existingPrefetchTask !== null) {\n cancelPrefetchTask(existingPrefetchTask)\n }\n // We don't need to reset the prefetchTask to null upon cancellation; an\n // old task object can be rescheduled with bumpPrefetchTask. This is a\n // micro-optimization but also makes the code simpler (don't need to\n // worry about whether an old task object is stale).\n return\n }\n\n if (!process.env.__NEXT_CLIENT_SEGMENT_CACHE) {\n // The old prefetch implementation does not have different priority levels.\n // Just schedule a new prefetch task.\n prefetchWithOldCacheImplementation(instance)\n return\n }\n\n // In the Segment Cache implementation, we assign a higher priority level to\n // links that were at one point hovered or touched. Since the queue is last-\n // in-first-out, the highest priority Link is whichever one was hovered last.\n //\n // We also increase the relative priority of links whenever they re-enter the\n // viewport, as if they were being scheduled for the first time.\n const priority = instance.wasHoveredOrTouched\n ? PrefetchPriority.Intent\n : PrefetchPriority.Default\n if (existingPrefetchTask === null) {\n // Initiate a prefetch task.\n const appRouterState = getCurrentAppRouterState()\n if (appRouterState !== null) {\n const nextUrl = appRouterState.nextUrl\n const treeAtTimeOfPrefetch = appRouterState.tree\n const cacheKey = createCacheKey(instance.prefetchHref, nextUrl)\n instance.prefetchTask = scheduleSegmentPrefetchTask(\n cacheKey,\n treeAtTimeOfPrefetch,\n instance.kind === PrefetchKind.FULL,\n priority\n )\n }\n } else {\n // We already have an old task object that we can reschedule. This is\n // effectively the same as canceling the old task and creating a new one.\n bumpPrefetchTask(existingPrefetchTask, priority)\n }\n}\n\nfunction prefetchWithOldCacheImplementation(instance: LinkInstance) {\n // This is the path used when the Segment Cache is not enabled.\n if (typeof window === 'undefined') {\n return\n }\n\n const doPrefetch = async () => {\n // note that `appRouter.prefetch()` is currently sync,\n // so we have to wrap this call in an async function to be able to catch() errors below.\n return instance.router.prefetch(instance.prefetchHref, {\n kind: instance.kind,\n })\n }\n\n // Prefetch the page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n doPrefetch().catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n // rethrow to show invalid URL errors\n throw err\n }\n })\n}\n\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\nfunction linkClicked(\n e: React.MouseEvent,\n router: NextRouter | AppRouterInstance,\n href: string,\n as: string,\n replace?: boolean,\n shallow?: boolean,\n scroll?: boolean\n): void {\n const { nodeName } = e.currentTarget\n\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === 'A'\n\n if (isAnchorNodeName && isModifiedEvent(e)) {\n // ignore click for browser’s default behavior\n return\n }\n\n e.preventDefault()\n\n const navigate = () => {\n // If the router is an NextRouter instance it will have `beforePopState`\n const routerScroll = scroll ?? true\n if ('beforePopState' in router) {\n router[replace ? 'replace' : 'push'](href, as, {\n shallow,\n scroll: routerScroll,\n })\n } else {\n router[replace ? 'replace' : 'push'](as || href, {\n scroll: routerScroll,\n })\n }\n }\n\n React.startTransition(navigate)\n}\n\ntype LinkPropsReal = React.PropsWithChildren<\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof LinkProps> &\n LinkProps\n>\n\nfunction formatStringOrUrl(urlObjOrString: UrlObject | string): string {\n if (typeof urlObjOrString === 'string') {\n return urlObjOrString\n }\n\n return formatUrl(urlObjOrString)\n}\n\n/**\n * A React component that extends the HTML `<a>` element to provide [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation between routes.\n *\n * It is the primary way to navigate between routes in Next.js.\n *\n * Read more: [Next.js docs: `<Link>`](https://nextjs.org/docs/app/api-reference/components/link)\n */\nconst Link = React.forwardRef<HTMLAnchorElement, LinkPropsReal>(\n function LinkComponent(props, forwardedRef) {\n let children: React.ReactNode\n\n const {\n href: hrefProp,\n as: asProp,\n children: childrenProp,\n prefetch: prefetchProp = null,\n passHref,\n replace,\n shallow,\n scroll,\n onClick,\n onMouseEnter: onMouseEnterProp,\n onTouchStart: onTouchStartProp,\n legacyBehavior = false,\n ...restProps\n } = props\n\n children = childrenProp\n\n if (\n legacyBehavior &&\n (typeof children === 'string' || typeof children === 'number')\n ) {\n children = <a>{children}</a>\n }\n\n const router = React.useContext(AppRouterContext)\n\n const prefetchEnabled = prefetchProp !== false\n /**\n * The possible states for prefetch are:\n * - null: this is the default \"auto\" mode, where we will prefetch partially if the link is in the viewport\n * - true: we will prefetch if the link is visible and prefetch the full page, not just partially\n * - false: we will not prefetch if in the viewport at all\n */\n const appPrefetchKind =\n prefetchProp === null ? PrefetchKind.AUTO : PrefetchKind.FULL\n\n if (process.env.NODE_ENV !== 'production') {\n function createPropError(args: {\n key: string\n expected: string\n actual: string\n }) {\n return new Error(\n `Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`<Link>\\`, but got \\`${args.actual}\\` instead.` +\n (typeof window !== 'undefined'\n ? \"\\nOpen your browser's console to view the Component stack trace.\"\n : '')\n )\n }\n\n // TypeScript trick for type-guarding:\n const requiredPropsGuard: Record<LinkPropsRequired, true> = {\n href: true,\n } as const\n const requiredProps: LinkPropsRequired[] = Object.keys(\n requiredPropsGuard\n ) as LinkPropsRequired[]\n requiredProps.forEach((key: LinkPropsRequired) => {\n if (key === 'href') {\n if (\n props[key] == null ||\n (typeof props[key] !== 'string' && typeof props[key] !== 'object')\n ) {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: props[key] === null ? 'null' : typeof props[key],\n })\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _: never = key\n }\n })\n\n // TypeScript trick for type-guarding:\n const optionalPropsGuard: Record<LinkPropsOptional, true> = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true,\n } as const\n const optionalProps: LinkPropsOptional[] = Object.keys(\n optionalPropsGuard\n ) as LinkPropsOptional[]\n optionalProps.forEach((key: LinkPropsOptional) => {\n const valType = typeof props[key]\n\n if (key === 'as') {\n if (props[key] && valType !== 'string' && valType !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: valType,\n })\n }\n } else if (\n key === 'onClick' ||\n key === 'onMouseEnter' ||\n key === 'onTouchStart'\n ) {\n if (props[key] && valType !== 'function') {\n throw createPropError({\n key,\n expected: '`function`',\n actual: valType,\n })\n }\n } else if (\n key === 'replace' ||\n key === 'scroll' ||\n key === 'shallow' ||\n key === 'passHref' ||\n key === 'prefetch' ||\n key === 'legacyBehavior'\n ) {\n if (props[key] != null && valType !== 'boolean') {\n throw createPropError({\n key,\n expected: '`boolean`',\n actual: valType,\n })\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _: never = key\n }\n })\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (props.locale) {\n warnOnce(\n 'The `locale` prop is not supported in `next/link` while using the `app` router. Read more about app router internalization: https://nextjs.org/docs/app/building-your-application/routing/internationalization'\n )\n }\n if (!asProp) {\n let href: string | undefined\n if (typeof hrefProp === 'string') {\n href = hrefProp\n } else if (\n typeof hrefProp === 'object' &&\n typeof hrefProp.pathname === 'string'\n ) {\n href = hrefProp.pathname\n }\n\n if (href) {\n const hasDynamicSegment = href\n .split('/')\n .some((segment) => segment.startsWith('[') && segment.endsWith(']'))\n\n if (hasDynamicSegment) {\n throw new Error(\n `Dynamic href \\`${href}\\` found in <Link> while using the \\`/app\\` router, this is not supported. Read more: https://nextjs.org/docs/messages/app-dir-dynamic-href`\n )\n }\n }\n }\n }\n\n const { href, as } = React.useMemo(() => {\n const resolvedHref = formatStringOrUrl(hrefProp)\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref,\n }\n }, [hrefProp, asProp])\n\n // This will return the first child, if multiple are provided it will throw an error\n let child: any\n if (legacyBehavior) {\n if (process.env.NODE_ENV === 'development') {\n if (onClick) {\n console.warn(\n `\"onClick\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link`\n )\n }\n if (onMouseEnterProp) {\n console.warn(\n `\"onMouseEnter\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link`\n )\n }\n try {\n child = React.Children.only(children)\n } catch (err) {\n if (!children) {\n throw new Error(\n `No children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but one child is required https://nextjs.org/docs/messages/link-no-children`\n )\n }\n throw new Error(\n `Multiple children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` +\n (typeof window !== 'undefined'\n ? \" \\nOpen your browser's console to view the Component stack trace.\"\n : '')\n )\n }\n } else {\n child = React.Children.only(children)\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if ((children as any)?.type === 'a') {\n throw new Error(\n 'Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor'\n )\n }\n }\n }\n\n const childRef: any = legacyBehavior\n ? child && typeof child === 'object' && child.ref\n : forwardedRef\n\n // Use a callback ref to attach an IntersectionObserver to the anchor tag on\n // mount. In the future we will also use this to keep track of all the\n // currently mounted <Link> instances, e.g. so we can re-prefetch them after\n // a revalidation or refresh.\n const observeLinkVisibilityOnMount = React.useCallback(\n (element: HTMLAnchorElement | SVGAElement) => {\n if (prefetchEnabled && router !== null) {\n mountLinkInstance(element, href, router, appPrefetchKind)\n }\n return () => {\n unmountLinkInstance(element)\n }\n },\n [prefetchEnabled, href, router, appPrefetchKind]\n )\n\n const mergedRef = useMergedRef(observeLinkVisibilityOnMount, childRef)\n\n const childProps: {\n onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n onMouseEnter: React.MouseEventHandler<HTMLAnchorElement>\n onClick: React.MouseEventHandler<HTMLAnchorElement>\n href?: string\n ref?: any\n } = {\n ref: mergedRef,\n onClick(e) {\n if (process.env.NODE_ENV !== 'production') {\n if (!e) {\n throw new Error(\n `Component rendered inside next/link has to pass click event to \"onClick\" prop.`\n )\n }\n }\n\n if (!legacyBehavior && typeof onClick === 'function') {\n onClick(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onClick === 'function'\n ) {\n child.props.onClick(e)\n }\n\n if (!router) {\n return\n }\n\n if (e.defaultPrevented) {\n return\n }\n\n linkClicked(e, router, href, as, replace, shallow, scroll)\n },\n onMouseEnter(e) {\n if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n onMouseEnterProp(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onMouseEnter === 'function'\n ) {\n child.props.onMouseEnter(e)\n }\n\n if (!router) {\n return\n }\n\n if (!prefetchEnabled || process.env.NODE_ENV === 'development') {\n return\n }\n\n onNavigationIntent(e.currentTarget as HTMLAnchorElement | SVGAElement)\n },\n onTouchStart: process.env.__NEXT_LINK_NO_TOUCH_START\n ? undefined\n : function onTouchStart(e) {\n if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n onTouchStartProp(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onTouchStart === 'function'\n ) {\n child.props.onTouchStart(e)\n }\n\n if (!router) {\n return\n }\n\n if (!prefetchEnabled) {\n return\n }\n\n onNavigationIntent(\n e.currentTarget as HTMLAnchorElement | SVGAElement\n )\n },\n }\n\n // If child is an <a> tag and doesn't have a href attribute, or if the 'passHref' property is\n // defined, we specify the current 'href', so that repetition is not needed by the user.\n // If the url is absolute, we can bypass the logic to prepend the basePath.\n if (isAbsoluteUrl(as)) {\n childProps.href = as\n } else if (\n !legacyBehavior ||\n passHref ||\n (child.type === 'a' && !('href' in child.props))\n ) {\n childProps.href = addBasePath(as)\n }\n\n return legacyBehavior ? (\n React.cloneElement(child, childProps)\n ) : (\n <a {...restProps} {...childProps}>\n {children}\n </a>\n )\n }\n)\n\nexport default Link\n"],"names":["unmountLinkInstance","links","WeakMap","Map","observer","IntersectionObserver","handleIntersect","rootMargin","mountLinkInstance","element","href","router","kind","prefetchUrl","createPrefetchURL","reportErrorFn","reportError","console","error","instance","prefetchHref","isVisible","wasHoveredOrTouched","prefetchTask","existingInstance","get","undefined","set","observe","delete","cancelPrefetchTask","unobserve","entries","entry","intersectionRatio","onLinkVisibilityChanged","target","process","env","NODE_ENV","rescheduleLinkPrefetch","onNavigationIntent","existingPrefetchTask","__NEXT_CLIENT_SEGMENT_CACHE","prefetchWithOldCacheImplementation","priority","PrefetchPriority","Intent","Default","appRouterState","getCurrentAppRouterState","nextUrl","treeAtTimeOfPrefetch","tree","cacheKey","createCacheKey","scheduleSegmentPrefetchTask","PrefetchKind","FULL","bumpPrefetchTask","window","doPrefetch","prefetch","catch","err","isModifiedEvent","event","eventTarget","currentTarget","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","linkClicked","e","as","replace","shallow","scroll","nodeName","isAnchorNodeName","toUpperCase","preventDefault","navigate","routerScroll","React","startTransition","formatStringOrUrl","urlObjOrString","formatUrl","Link","forwardRef","LinkComponent","props","forwardedRef","children","hrefProp","asProp","childrenProp","prefetchProp","passHref","onClick","onMouseEnter","onMouseEnterProp","onTouchStart","onTouchStartProp","legacyBehavior","restProps","a","useContext","AppRouterContext","prefetchEnabled","appPrefetchKind","AUTO","createPropError","args","Error","key","expected","actual","requiredPropsGuard","requiredProps","Object","keys","forEach","_","optionalPropsGuard","optionalProps","valType","locale","warnOnce","pathname","hasDynamicSegment","split","some","segment","startsWith","endsWith","useMemo","resolvedHref","child","warn","Children","only","type","childRef","ref","observeLinkVisibilityOnMount","useCallback","mergedRef","useMergedRef","childProps","defaultPrevented","__NEXT_LINK_NO_TOUCH_START","isAbsoluteUrl","addBasePath","cloneElement"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/client/app-dir/link.tsx"],"sourcesContent":["'use client'\n\nimport type { NextRouter } from '../../shared/lib/router/router'\n\nimport React from 'react'\nimport type { UrlObject } from 'url'\nimport { formatUrl } from '../../shared/lib/router/utils/format-url'\nimport { AppRouterContext } from '../../shared/lib/app-router-context.shared-runtime'\nimport type { AppRouterInstance } from '../../shared/lib/app-router-context.shared-runtime'\nimport { PrefetchKind } from '../components/router-reducer/router-reducer-types'\nimport { useMergedRef } from '../use-merged-ref'\nimport { isAbsoluteUrl } from '../../shared/lib/utils'\nimport { addBasePath } from '../add-base-path'\nimport { warnOnce } from '../../shared/lib/utils/warn-once'\nimport {\n type PrefetchTask,\n schedulePrefetchTask as scheduleSegmentPrefetchTask,\n cancelPrefetchTask,\n bumpPrefetchTask,\n PrefetchPriority,\n} from '../components/segment-cache/scheduler'\nimport { getCurrentAppRouterState } from '../../shared/lib/router/action-queue'\nimport { createCacheKey } from '../components/segment-cache/cache-key'\nimport { createPrefetchURL } from '../components/app-router'\n\ntype Url = string | UrlObject\ntype RequiredKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T]\ntype OptionalKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? K : never\n}[keyof T]\n\ntype InternalLinkProps = {\n /**\n * **Required**. The path or URL to navigate to. It can also be an object (similar to `URL`).\n *\n * @example\n * ```tsx\n * // Navigate to /dashboard:\n * <Link href=\"/dashboard\">Dashboard</Link>\n *\n * // Navigate to /about?name=test:\n * <Link href={{ pathname: '/about', query: { name: 'test' } }}>\n * About\n * </Link>\n * ```\n *\n * @remarks\n * - For external URLs, use a fully qualified URL such as `https://...`.\n * - In the App Router, dynamic routes must not include bracketed segments in `href`.\n */\n href: Url\n\n /**\n * @deprecated v10.0.0: `href` props pointing to a dynamic route are\n * automatically resolved and no longer require the `as` prop.\n */\n as?: Url\n\n /**\n * Replace the current `history` state instead of adding a new URL into the stack.\n *\n * @defaultValue `false`\n *\n * @example\n * ```tsx\n * <Link href=\"/about\" replace>\n * About (replaces the history state)\n * </Link>\n * ```\n */\n replace?: boolean\n\n /**\n * Whether to override the default scroll behavior. If `true`, Next.js attempts to maintain\n * the scroll position if the newly navigated page is still visible. If not, it scrolls to the top.\n *\n * If `false`, Next.js will not modify the scroll behavior at all.\n *\n * @defaultValue `true`\n *\n * @example\n * ```tsx\n * <Link href=\"/dashboard\" scroll={false}>\n * No auto scroll\n * </Link>\n * ```\n */\n scroll?: boolean\n\n /**\n * Update the path of the current page without rerunning data fetching methods\n * like `getStaticProps`, `getServerSideProps`, or `getInitialProps`.\n *\n * @remarks\n * `shallow` only applies to the Pages Router. For the App Router, see the\n * [following documentation](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#using-the-native-history-api).\n *\n * @defaultValue `false`\n *\n * @example\n * ```tsx\n * <Link href=\"/blog\" shallow>\n * Shallow navigation\n * </Link>\n * ```\n */\n shallow?: boolean\n\n /**\n * Forces `Link` to pass its `href` to the child component. Useful if the child is a custom\n * component that wraps an `<a>` tag, or if you're using certain styling libraries.\n *\n * @defaultValue `false`\n *\n * @example\n * ```tsx\n * <Link href=\"/dashboard\" passHref>\n * <MyStyledAnchor>Dashboard</MyStyledAnchor>\n * </Link>\n * ```\n */\n passHref?: boolean\n\n /**\n * Prefetch the page in the background.\n * Any `<Link />` that is in the viewport (initially or through scroll) will be prefetched.\n * Prefetch can be disabled by passing `prefetch={false}`.\n *\n * @remarks\n * Prefetching is only enabled in production.\n *\n * - In the **App Router**:\n * - `null` (default): Prefetch behavior depends on static vs dynamic routes:\n * - Static routes: fully prefetched\n * - Dynamic routes: partial prefetch to the nearest segment with a `loading.js`\n * - `true`: Always prefetch the full route and data.\n * - `false`: Disable prefetching on both viewport and hover.\n * - In the **Pages Router**:\n * - `true` (default): Prefetches the route and data in the background on viewport or hover.\n * - `false`: Prefetch only on hover, not on viewport.\n *\n * @defaultValue `true` (Pages Router) or `null` (App Router)\n *\n * @example\n * ```tsx\n * <Link href=\"/dashboard\" prefetch={false}>\n * Dashboard\n * </Link>\n * ```\n */\n prefetch?: boolean | null\n\n /**\n * The active locale is automatically prepended in the Pages Router. `locale` allows for providing\n * a different locale, or can be set to `false` to opt out of automatic locale behavior.\n *\n * @remarks\n * Note: locale only applies in the Pages Router and is ignored in the App Router.\n *\n * @example\n * ```tsx\n * // Use the 'fr' locale:\n * <Link href=\"/about\" locale=\"fr\">\n * About (French)\n * </Link>\n *\n * // Disable locale prefix:\n * <Link href=\"/about\" locale={false}>\n * About (no locale prefix)\n * </Link>\n * ```\n */\n locale?: string | false\n\n /**\n * Enable legacy link behavior, requiring an `<a>` tag to wrap the child content\n * if the child is a string or number.\n *\n * @defaultValue `false`\n * @see https://github.com/vercel/next.js/commit/489e65ed98544e69b0afd7e0cfc3f9f6c2b803b7\n */\n legacyBehavior?: boolean\n\n /**\n * Optional event handler for when the mouse pointer is moved onto the `<Link>`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>\n\n /**\n * Optional event handler for when the `<Link>` is touched.\n */\n onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n\n /**\n * Optional event handler for when the `<Link>` is clicked.\n */\n onClick?: React.MouseEventHandler<HTMLAnchorElement>\n}\n\n// TODO-APP: Include the full set of Anchor props\n// adding this to the publicly exported type currently breaks existing apps\n\n// `RouteInferType` is a stub here to avoid breaking `typedRoutes` when the type\n// isn't generated yet. It will be replaced when the webpack plugin runs.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type LinkProps<RouteInferType = any> = InternalLinkProps\ntype LinkPropsRequired = RequiredKeys<LinkProps>\ntype LinkPropsOptional = OptionalKeys<Omit<InternalLinkProps, 'locale'>>\n\ntype LinkInstance = {\n router: AppRouterInstance\n kind: PrefetchKind.AUTO | PrefetchKind.FULL\n prefetchHref: string\n\n isVisible: boolean\n wasHoveredOrTouched: boolean\n\n // The most recently initiated prefetch task. It may or may not have\n // already completed. The same prefetch task object can be reused across\n // multiple prefetches of the same link.\n prefetchTask: PrefetchTask | null\n}\n\n// TODO: This is currently a WeakMap because it doesn't need to be enumerable,\n// but eventually we'll want to be able to re-prefetch all the currently\n// visible links, e.g. after a revalidation or refresh.\nconst links:\n | WeakMap<HTMLAnchorElement | SVGAElement, LinkInstance>\n | Map<Element, LinkInstance> =\n typeof WeakMap === 'function' ? new WeakMap() : new Map()\n\n// A single IntersectionObserver instance shared by all <Link> components.\nconst observer: IntersectionObserver | null =\n typeof IntersectionObserver === 'function'\n ? new IntersectionObserver(handleIntersect, {\n rootMargin: '200px',\n })\n : null\n\nfunction mountLinkInstance(\n element: HTMLAnchorElement | SVGAElement,\n href: string,\n router: AppRouterInstance,\n kind: PrefetchKind.AUTO | PrefetchKind.FULL\n) {\n let prefetchUrl: URL | null = null\n try {\n prefetchUrl = createPrefetchURL(href)\n if (prefetchUrl === null) {\n // We only track the link if it's prefetchable. For example, this excludes\n // links to external URLs.\n return\n }\n } catch {\n // createPrefetchURL sometimes throws an error if an invalid URL is\n // provided, though I'm not sure if it's actually necessary.\n // TODO: Consider removing the throw from the inner function, or change it\n // to reportError. Or maybe the error isn't even necessary for automatic\n // prefetches, just navigations.\n const reportErrorFn =\n typeof reportError === 'function' ? reportError : console.error\n reportErrorFn(\n `Cannot prefetch '${href}' because it cannot be converted to a URL.`\n )\n return\n }\n\n const instance: LinkInstance = {\n prefetchHref: prefetchUrl.href,\n router,\n kind,\n isVisible: false,\n wasHoveredOrTouched: false,\n prefetchTask: null,\n }\n const existingInstance = links.get(element)\n if (existingInstance !== undefined) {\n // This shouldn't happen because each <Link> component should have its own\n // anchor tag instance, but it's defensive coding to avoid a memory leak in\n // case there's a logical error somewhere else.\n unmountLinkInstance(element)\n }\n links.set(element, instance)\n if (observer !== null) {\n observer.observe(element)\n }\n}\n\nexport function unmountLinkInstance(element: HTMLAnchorElement | SVGAElement) {\n const instance = links.get(element)\n if (instance !== undefined) {\n links.delete(element)\n const prefetchTask = instance.prefetchTask\n if (prefetchTask !== null) {\n cancelPrefetchTask(prefetchTask)\n }\n }\n if (observer !== null) {\n observer.unobserve(element)\n }\n}\n\nfunction handleIntersect(entries: Array<IntersectionObserverEntry>) {\n for (const entry of entries) {\n // Some extremely old browsers or polyfills don't reliably support\n // isIntersecting so we check intersectionRatio instead. (Do we care? Not\n // really. But whatever this is fine.)\n const isVisible = entry.intersectionRatio > 0\n onLinkVisibilityChanged(entry.target as HTMLAnchorElement, isVisible)\n }\n}\n\nfunction onLinkVisibilityChanged(\n element: HTMLAnchorElement | SVGAElement,\n isVisible: boolean\n) {\n if (process.env.NODE_ENV !== 'production') {\n // Prefetching on viewport is disabled in development for performance\n // reasons, because it requires compiling the target page.\n // TODO: Investigate re-enabling this.\n return\n }\n\n const instance = links.get(element)\n if (instance === undefined) {\n return\n }\n\n instance.isVisible = isVisible\n rescheduleLinkPrefetch(instance)\n}\n\nfunction onNavigationIntent(element: HTMLAnchorElement | SVGAElement) {\n const instance = links.get(element)\n if (instance === undefined) {\n return\n }\n // Prefetch the link on hover/touchstart.\n if (instance !== undefined) {\n instance.wasHoveredOrTouched = true\n rescheduleLinkPrefetch(instance)\n }\n}\n\nfunction rescheduleLinkPrefetch(instance: LinkInstance) {\n const existingPrefetchTask = instance.prefetchTask\n\n if (!instance.isVisible) {\n // Cancel any in-progress prefetch task. (If it already finished then this\n // is a no-op.)\n if (existingPrefetchTask !== null) {\n cancelPrefetchTask(existingPrefetchTask)\n }\n // We don't need to reset the prefetchTask to null upon cancellation; an\n // old task object can be rescheduled with bumpPrefetchTask. This is a\n // micro-optimization but also makes the code simpler (don't need to\n // worry about whether an old task object is stale).\n return\n }\n\n if (!process.env.__NEXT_CLIENT_SEGMENT_CACHE) {\n // The old prefetch implementation does not have different priority levels.\n // Just schedule a new prefetch task.\n prefetchWithOldCacheImplementation(instance)\n return\n }\n\n // In the Segment Cache implementation, we assign a higher priority level to\n // links that were at one point hovered or touched. Since the queue is last-\n // in-first-out, the highest priority Link is whichever one was hovered last.\n //\n // We also increase the relative priority of links whenever they re-enter the\n // viewport, as if they were being scheduled for the first time.\n const priority = instance.wasHoveredOrTouched\n ? PrefetchPriority.Intent\n : PrefetchPriority.Default\n if (existingPrefetchTask === null) {\n // Initiate a prefetch task.\n const appRouterState = getCurrentAppRouterState()\n if (appRouterState !== null) {\n const nextUrl = appRouterState.nextUrl\n const treeAtTimeOfPrefetch = appRouterState.tree\n const cacheKey = createCacheKey(instance.prefetchHref, nextUrl)\n instance.prefetchTask = scheduleSegmentPrefetchTask(\n cacheKey,\n treeAtTimeOfPrefetch,\n instance.kind === PrefetchKind.FULL,\n priority\n )\n }\n } else {\n // We already have an old task object that we can reschedule. This is\n // effectively the same as canceling the old task and creating a new one.\n bumpPrefetchTask(existingPrefetchTask, priority)\n }\n}\n\nfunction prefetchWithOldCacheImplementation(instance: LinkInstance) {\n // This is the path used when the Segment Cache is not enabled.\n if (typeof window === 'undefined') {\n return\n }\n\n const doPrefetch = async () => {\n // note that `appRouter.prefetch()` is currently sync,\n // so we have to wrap this call in an async function to be able to catch() errors below.\n return instance.router.prefetch(instance.prefetchHref, {\n kind: instance.kind,\n })\n }\n\n // Prefetch the page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n doPrefetch().catch((err) => {\n if (process.env.NODE_ENV !== 'production') {\n // rethrow to show invalid URL errors\n throw err\n }\n })\n}\n\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\nfunction linkClicked(\n e: React.MouseEvent,\n router: NextRouter | AppRouterInstance,\n href: string,\n as: string,\n replace?: boolean,\n shallow?: boolean,\n scroll?: boolean\n): void {\n const { nodeName } = e.currentTarget\n\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === 'A'\n\n if (isAnchorNodeName && isModifiedEvent(e)) {\n // ignore click for browser’s default behavior\n return\n }\n\n e.preventDefault()\n\n const navigate = () => {\n // If the router is an NextRouter instance it will have `beforePopState`\n const routerScroll = scroll ?? true\n if ('beforePopState' in router) {\n router[replace ? 'replace' : 'push'](href, as, {\n shallow,\n scroll: routerScroll,\n })\n } else {\n router[replace ? 'replace' : 'push'](as || href, {\n scroll: routerScroll,\n })\n }\n }\n\n React.startTransition(navigate)\n}\n\ntype LinkPropsReal = React.PropsWithChildren<\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof LinkProps> &\n LinkProps\n>\n\nfunction formatStringOrUrl(urlObjOrString: UrlObject | string): string {\n if (typeof urlObjOrString === 'string') {\n return urlObjOrString\n }\n\n return formatUrl(urlObjOrString)\n}\n\n/**\n * A React component that extends the HTML `<a>` element to provide\n * [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation. This is the primary way to navigate between routes in Next.js.\n *\n * @remarks\n * - Prefetching is only enabled in production.\n *\n * @see https://nextjs.org/docs/app/api-reference/components/link\n */\nconst Link = React.forwardRef<HTMLAnchorElement, LinkPropsReal>(\n function LinkComponent(props, forwardedRef) {\n let children: React.ReactNode\n\n const {\n href: hrefProp,\n as: asProp,\n children: childrenProp,\n prefetch: prefetchProp = null,\n passHref,\n replace,\n shallow,\n scroll,\n onClick,\n onMouseEnter: onMouseEnterProp,\n onTouchStart: onTouchStartProp,\n legacyBehavior = false,\n ...restProps\n } = props\n\n children = childrenProp\n\n if (\n legacyBehavior &&\n (typeof children === 'string' || typeof children === 'number')\n ) {\n children = <a>{children}</a>\n }\n\n const router = React.useContext(AppRouterContext)\n\n const prefetchEnabled = prefetchProp !== false\n /**\n * The possible states for prefetch are:\n * - null: this is the default \"auto\" mode, where we will prefetch partially if the link is in the viewport\n * - true: we will prefetch if the link is visible and prefetch the full page, not just partially\n * - false: we will not prefetch if in the viewport at all\n */\n const appPrefetchKind =\n prefetchProp === null ? PrefetchKind.AUTO : PrefetchKind.FULL\n\n if (process.env.NODE_ENV !== 'production') {\n function createPropError(args: {\n key: string\n expected: string\n actual: string\n }) {\n return new Error(\n `Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`<Link>\\`, but got \\`${args.actual}\\` instead.` +\n (typeof window !== 'undefined'\n ? \"\\nOpen your browser's console to view the Component stack trace.\"\n : '')\n )\n }\n\n // TypeScript trick for type-guarding:\n const requiredPropsGuard: Record<LinkPropsRequired, true> = {\n href: true,\n } as const\n const requiredProps: LinkPropsRequired[] = Object.keys(\n requiredPropsGuard\n ) as LinkPropsRequired[]\n requiredProps.forEach((key: LinkPropsRequired) => {\n if (key === 'href') {\n if (\n props[key] == null ||\n (typeof props[key] !== 'string' && typeof props[key] !== 'object')\n ) {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: props[key] === null ? 'null' : typeof props[key],\n })\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _: never = key\n }\n })\n\n // TypeScript trick for type-guarding:\n const optionalPropsGuard: Record<LinkPropsOptional, true> = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true,\n } as const\n const optionalProps: LinkPropsOptional[] = Object.keys(\n optionalPropsGuard\n ) as LinkPropsOptional[]\n optionalProps.forEach((key: LinkPropsOptional) => {\n const valType = typeof props[key]\n\n if (key === 'as') {\n if (props[key] && valType !== 'string' && valType !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: valType,\n })\n }\n } else if (\n key === 'onClick' ||\n key === 'onMouseEnter' ||\n key === 'onTouchStart'\n ) {\n if (props[key] && valType !== 'function') {\n throw createPropError({\n key,\n expected: '`function`',\n actual: valType,\n })\n }\n } else if (\n key === 'replace' ||\n key === 'scroll' ||\n key === 'shallow' ||\n key === 'passHref' ||\n key === 'prefetch' ||\n key === 'legacyBehavior'\n ) {\n if (props[key] != null && valType !== 'boolean') {\n throw createPropError({\n key,\n expected: '`boolean`',\n actual: valType,\n })\n }\n } else {\n // TypeScript trick for type-guarding:\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _: never = key\n }\n })\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (props.locale) {\n warnOnce(\n 'The `locale` prop is not supported in `next/link` while using the `app` router. Read more about app router internalization: https://nextjs.org/docs/app/building-your-application/routing/internationalization'\n )\n }\n if (!asProp) {\n let href: string | undefined\n if (typeof hrefProp === 'string') {\n href = hrefProp\n } else if (\n typeof hrefProp === 'object' &&\n typeof hrefProp.pathname === 'string'\n ) {\n href = hrefProp.pathname\n }\n\n if (href) {\n const hasDynamicSegment = href\n .split('/')\n .some((segment) => segment.startsWith('[') && segment.endsWith(']'))\n\n if (hasDynamicSegment) {\n throw new Error(\n `Dynamic href \\`${href}\\` found in <Link> while using the \\`/app\\` router, this is not supported. Read more: https://nextjs.org/docs/messages/app-dir-dynamic-href`\n )\n }\n }\n }\n }\n\n const { href, as } = React.useMemo(() => {\n const resolvedHref = formatStringOrUrl(hrefProp)\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref,\n }\n }, [hrefProp, asProp])\n\n // This will return the first child, if multiple are provided it will throw an error\n let child: any\n if (legacyBehavior) {\n if (process.env.NODE_ENV === 'development') {\n if (onClick) {\n console.warn(\n `\"onClick\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link`\n )\n }\n if (onMouseEnterProp) {\n console.warn(\n `\"onMouseEnter\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link`\n )\n }\n try {\n child = React.Children.only(children)\n } catch (err) {\n if (!children) {\n throw new Error(\n `No children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but one child is required https://nextjs.org/docs/messages/link-no-children`\n )\n }\n throw new Error(\n `Multiple children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` +\n (typeof window !== 'undefined'\n ? \" \\nOpen your browser's console to view the Component stack trace.\"\n : '')\n )\n }\n } else {\n child = React.Children.only(children)\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if ((children as any)?.type === 'a') {\n throw new Error(\n 'Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor'\n )\n }\n }\n }\n\n const childRef: any = legacyBehavior\n ? child && typeof child === 'object' && child.ref\n : forwardedRef\n\n // Use a callback ref to attach an IntersectionObserver to the anchor tag on\n // mount. In the future we will also use this to keep track of all the\n // currently mounted <Link> instances, e.g. so we can re-prefetch them after\n // a revalidation or refresh.\n const observeLinkVisibilityOnMount = React.useCallback(\n (element: HTMLAnchorElement | SVGAElement) => {\n if (prefetchEnabled && router !== null) {\n mountLinkInstance(element, href, router, appPrefetchKind)\n }\n return () => {\n unmountLinkInstance(element)\n }\n },\n [prefetchEnabled, href, router, appPrefetchKind]\n )\n\n const mergedRef = useMergedRef(observeLinkVisibilityOnMount, childRef)\n\n const childProps: {\n onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n onMouseEnter: React.MouseEventHandler<HTMLAnchorElement>\n onClick: React.MouseEventHandler<HTMLAnchorElement>\n href?: string\n ref?: any\n } = {\n ref: mergedRef,\n onClick(e) {\n if (process.env.NODE_ENV !== 'production') {\n if (!e) {\n throw new Error(\n `Component rendered inside next/link has to pass click event to \"onClick\" prop.`\n )\n }\n }\n\n if (!legacyBehavior && typeof onClick === 'function') {\n onClick(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onClick === 'function'\n ) {\n child.props.onClick(e)\n }\n\n if (!router) {\n return\n }\n\n if (e.defaultPrevented) {\n return\n }\n\n linkClicked(e, router, href, as, replace, shallow, scroll)\n },\n onMouseEnter(e) {\n if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n onMouseEnterProp(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onMouseEnter === 'function'\n ) {\n child.props.onMouseEnter(e)\n }\n\n if (!router) {\n return\n }\n\n if (!prefetchEnabled || process.env.NODE_ENV === 'development') {\n return\n }\n\n onNavigationIntent(e.currentTarget as HTMLAnchorElement | SVGAElement)\n },\n onTouchStart: process.env.__NEXT_LINK_NO_TOUCH_START\n ? undefined\n : function onTouchStart(e) {\n if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n onTouchStartProp(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onTouchStart === 'function'\n ) {\n child.props.onTouchStart(e)\n }\n\n if (!router) {\n return\n }\n\n if (!prefetchEnabled) {\n return\n }\n\n onNavigationIntent(\n e.currentTarget as HTMLAnchorElement | SVGAElement\n )\n },\n }\n\n // If child is an <a> tag and doesn't have a href attribute, or if the 'passHref' property is\n // defined, we specify the current 'href', so that repetition is not needed by the user.\n // If the url is absolute, we can bypass the logic to prepend the basePath.\n if (isAbsoluteUrl(as)) {\n childProps.href = as\n } else if (\n !legacyBehavior ||\n passHref ||\n (child.type === 'a' && !('href' in child.props))\n ) {\n childProps.href = addBasePath(as)\n }\n\n return legacyBehavior ? (\n React.cloneElement(child, childProps)\n ) : (\n <a {...restProps} {...childProps}>\n {children}\n </a>\n )\n }\n)\n\nexport default Link\n"],"names":["unmountLinkInstance","links","WeakMap","Map","observer","IntersectionObserver","handleIntersect","rootMargin","mountLinkInstance","element","href","router","kind","prefetchUrl","createPrefetchURL","reportErrorFn","reportError","console","error","instance","prefetchHref","isVisible","wasHoveredOrTouched","prefetchTask","existingInstance","get","undefined","set","observe","delete","cancelPrefetchTask","unobserve","entries","entry","intersectionRatio","onLinkVisibilityChanged","target","process","env","NODE_ENV","rescheduleLinkPrefetch","onNavigationIntent","existingPrefetchTask","__NEXT_CLIENT_SEGMENT_CACHE","prefetchWithOldCacheImplementation","priority","PrefetchPriority","Intent","Default","appRouterState","getCurrentAppRouterState","nextUrl","treeAtTimeOfPrefetch","tree","cacheKey","createCacheKey","scheduleSegmentPrefetchTask","PrefetchKind","FULL","bumpPrefetchTask","window","doPrefetch","prefetch","catch","err","isModifiedEvent","event","eventTarget","currentTarget","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","linkClicked","e","as","replace","shallow","scroll","nodeName","isAnchorNodeName","toUpperCase","preventDefault","navigate","routerScroll","React","startTransition","formatStringOrUrl","urlObjOrString","formatUrl","Link","forwardRef","LinkComponent","props","forwardedRef","children","hrefProp","asProp","childrenProp","prefetchProp","passHref","onClick","onMouseEnter","onMouseEnterProp","onTouchStart","onTouchStartProp","legacyBehavior","restProps","a","useContext","AppRouterContext","prefetchEnabled","appPrefetchKind","AUTO","createPropError","args","Error","key","expected","actual","requiredPropsGuard","requiredProps","Object","keys","forEach","_","optionalPropsGuard","optionalProps","valType","locale","warnOnce","pathname","hasDynamicSegment","split","some","segment","startsWith","endsWith","useMemo","resolvedHref","child","warn","Children","only","type","childRef","ref","observeLinkVisibilityOnMount","useCallback","mergedRef","useMergedRef","childProps","defaultPrevented","__NEXT_LINK_NO_TOUCH_START","isAbsoluteUrl","addBasePath","cloneElement"],"mappings":"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"}
@@ -12,14 +12,15 @@ const _tagged_template_literal_loose = require("@swc/helpers/_/_tagged_template_
12
12
  const _nooptemplate = require("../../helpers/noop-template");
13
13
  function _templateObject() {
14
14
  const data = _tagged_template_literal_loose._([
15
- "\n [data-nextjs-dialog-root] {\n --next-dialog-radius: var(--rounded-xl);\n --next-dialog-footer-height: 48px;\n --next-dialog-max-width: 960px;\n\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: calc(100% - 56px);\n max-width: var(--next-dialog-max-width);\n margin-right: auto;\n margin-left: auto;\n scale: 0.98;\n opacity: 0;\n transition-property: scale, opacity;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--timing-overlay);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n }\n\n [data-nextjs-dialog] {\n outline: none;\n }\n\n /* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n [data-nextjs-dialog-sizer] {\n overflow: hidden;\n border-radius: inherit;\n }\n\n [data-nextjs-dialog-backdrop] {\n opacity: 0;\n transition: opacity var(--transition-duration) var(--timing-overlay);\n }\n\n [data-nextjs-dialog-overlay][data-rendered='true']\n [data-nextjs-dialog-backdrop] {\n opacity: 1;\n }\n\n [data-nextjs-dialog-content] {\n border: none;\n margin: 0;\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n }\n\n /* Account for the footer height, when present */\n [data-nextjs-dialog-body]:has(~ [data-nextjs-dialog-footer]) {\n margin-bottom: calc(var(--next-dialog-footer-height) + 2px);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n padding: var(--size-4);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n\n [data-nextjs-dialog-footer] {\n width: 100%;\n /* We make this element absolute to fix it to the bottom during the height transition */\n position: absolute;\n bottom: 0;\n min-height: var(--next-dialog-footer-height);\n border-radius: 0 0 var(--next-dialog-radius) var(--next-dialog-radius);\n overflow: hidden;\n\n > * {\n height: 100%;\n }\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 540px;\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 960px;\n }\n }\n"
15
+ "\n [data-nextjs-dialog-root] {\n --next-dialog-radius: var(--rounded-xl);\n --next-dialog-footer-height: 48px;\n --next-dialog-max-width: 960px;\n\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: calc(100% - 56px);\n max-width: var(--next-dialog-max-width);\n margin-right: auto;\n margin-left: auto;\n scale: 0.98;\n opacity: 0;\n transition-property: scale, opacity;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--timing-overlay);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n }\n\n [data-nextjs-dialog] {\n outline: none;\n }\n\n ",
16
+ "\n [data-nextjs-dialog-sizer] {\n overflow: hidden;\n border-radius: inherit;\n }\n\n [data-nextjs-dialog-backdrop] {\n opacity: 0;\n transition: opacity var(--transition-duration) var(--timing-overlay);\n }\n\n [data-nextjs-dialog-overlay][data-rendered='true']\n [data-nextjs-dialog-backdrop] {\n opacity: 1;\n }\n\n [data-nextjs-dialog-content] {\n border: none;\n margin: 0;\n display: flex;\n flex-direction: column;\n position: relative;\n }\n\n /* Account for the footer height, when present */\n [data-nextjs-dialog-body]:has(~ [data-nextjs-dialog-footer]) {\n margin-bottom: calc(var(--next-dialog-footer-height) + 2px);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n padding: var(--size-4);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n\n [data-nextjs-dialog-footer] {\n width: 100%;\n /* We make this element absolute to fix it to the bottom during the height transition */\n position: absolute;\n bottom: 0;\n min-height: var(--next-dialog-footer-height);\n border-radius: 0 0 var(--next-dialog-radius) var(--next-dialog-radius);\n overflow: hidden;\n\n > * {\n height: 100%;\n }\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 540px;\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 960px;\n }\n }\n"
16
17
  ]);
17
18
  _templateObject = function() {
18
19
  return data;
19
20
  };
20
21
  return data;
21
22
  }
22
- const styles = (0, _nooptemplate.noop)(_templateObject());
23
+ const styles = (0, _nooptemplate.noop)(_templateObject(), '' /* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */ );
23
24
 
24
25
  if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
25
26
  Object.defineProperty(exports.default, '__esModule', { value: true });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.ts"],"sourcesContent":["import { noop as css } from '../../helpers/noop-template'\n\nconst styles = css`\n [data-nextjs-dialog-root] {\n --next-dialog-radius: var(--rounded-xl);\n --next-dialog-footer-height: 48px;\n --next-dialog-max-width: 960px;\n\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: calc(100% - 56px);\n max-width: var(--next-dialog-max-width);\n margin-right: auto;\n margin-left: auto;\n scale: 0.98;\n opacity: 0;\n transition-property: scale, opacity;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--timing-overlay);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n }\n\n [data-nextjs-dialog] {\n outline: none;\n }\n\n /* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n [data-nextjs-dialog-sizer] {\n overflow: hidden;\n border-radius: inherit;\n }\n\n [data-nextjs-dialog-backdrop] {\n opacity: 0;\n transition: opacity var(--transition-duration) var(--timing-overlay);\n }\n\n [data-nextjs-dialog-overlay][data-rendered='true']\n [data-nextjs-dialog-backdrop] {\n opacity: 1;\n }\n\n [data-nextjs-dialog-content] {\n border: none;\n margin: 0;\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n }\n\n /* Account for the footer height, when present */\n [data-nextjs-dialog-body]:has(~ [data-nextjs-dialog-footer]) {\n margin-bottom: calc(var(--next-dialog-footer-height) + 2px);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n padding: var(--size-4);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n\n [data-nextjs-dialog-footer] {\n width: 100%;\n /* We make this element absolute to fix it to the bottom during the height transition */\n position: absolute;\n bottom: 0;\n min-height: var(--next-dialog-footer-height);\n border-radius: 0 0 var(--next-dialog-radius) var(--next-dialog-radius);\n overflow: hidden;\n\n > * {\n height: 100%;\n }\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 540px;\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 960px;\n }\n }\n`\n\nexport { styles }\n"],"names":["styles","css"],"mappings":";;;;+BA8GSA;;;eAAAA;;;;8BA9GmB;;;;;;;;;;AAE5B,MAAMA,aAASC,kBAAG"}
1
+ {"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.ts"],"sourcesContent":["import { noop as css } from '../../helpers/noop-template'\n\nconst styles = css`\n [data-nextjs-dialog-root] {\n --next-dialog-radius: var(--rounded-xl);\n --next-dialog-footer-height: 48px;\n --next-dialog-max-width: 960px;\n\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: calc(100% - 56px);\n max-width: var(--next-dialog-max-width);\n margin-right: auto;\n margin-left: auto;\n scale: 0.98;\n opacity: 0;\n transition-property: scale, opacity;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--timing-overlay);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n }\n\n [data-nextjs-dialog] {\n outline: none;\n }\n\n ${\n '' /* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n }\n [data-nextjs-dialog-sizer] {\n overflow: hidden;\n border-radius: inherit;\n }\n\n [data-nextjs-dialog-backdrop] {\n opacity: 0;\n transition: opacity var(--transition-duration) var(--timing-overlay);\n }\n\n [data-nextjs-dialog-overlay][data-rendered='true']\n [data-nextjs-dialog-backdrop] {\n opacity: 1;\n }\n\n [data-nextjs-dialog-content] {\n border: none;\n margin: 0;\n display: flex;\n flex-direction: column;\n position: relative;\n }\n\n /* Account for the footer height, when present */\n [data-nextjs-dialog-body]:has(~ [data-nextjs-dialog-footer]) {\n margin-bottom: calc(var(--next-dialog-footer-height) + 2px);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n padding: var(--size-4);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n\n [data-nextjs-dialog-footer] {\n width: 100%;\n /* We make this element absolute to fix it to the bottom during the height transition */\n position: absolute;\n bottom: 0;\n min-height: var(--next-dialog-footer-height);\n border-radius: 0 0 var(--next-dialog-radius) var(--next-dialog-radius);\n overflow: hidden;\n\n > * {\n height: 100%;\n }\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 540px;\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 960px;\n }\n }\n`\n\nexport { styles }\n"],"names":["styles","css"],"mappings":";;;;+BA+GSA;;;eAAAA;;;;8BA/GmB;;;;;;;;;;;AAE5B,MAAMA,aAASC,kBAAG,qBA8Bd,GAAG,gFAAgF"}
@@ -30,14 +30,16 @@ function ErrorOverlay(param) {
30
30
  };
31
31
  if (!!((_state_rootLayoutMissingTags = state.rootLayoutMissingTags) == null ? void 0 : _state_rootLayoutMissingTags.length)) {
32
32
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_rootlayoutmissingtagserror.RootLayoutMissingTagsError, {
33
- missingTags: state.rootLayoutMissingTags,
34
- ...commonProps
33
+ ...commonProps,
34
+ // This is a runtime error, forcedly display error overlay
35
+ rendered: true,
36
+ missingTags: state.rootLayoutMissingTags
35
37
  });
36
38
  }
37
39
  if (state.buildError !== null) {
38
40
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_builderror.BuildError, {
39
- message: state.buildError,
40
- ...commonProps
41
+ ...commonProps,
42
+ message: state.buildError
41
43
  });
42
44
  }
43
45
  // No Runtime Errors.
@@ -48,12 +50,12 @@ function ErrorOverlay(param) {
48
50
  return null;
49
51
  }
50
52
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errors.Errors, {
53
+ ...commonProps,
51
54
  debugInfo: state.debugInfo,
52
55
  readyErrors: readyErrors,
53
56
  onClose: ()=>{
54
57
  setIsErrorOverlayOpen(false);
55
- },
56
- ...commonProps
58
+ }
57
59
  });
58
60
  }
59
61
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.tsx"],"sourcesContent":["import type { OverlayState } from '../../../../../shared'\n\nimport { BuildError } from '../../../container/build-error'\nimport { Errors } from '../../../container/errors'\nimport { RootLayoutMissingTagsError } from '../../../container/root-layout-missing-tags-error'\nimport { useDelayedRender } from '../../../hooks/use-delayed-render'\nimport type { ReadyRuntimeError } from '../../../../../internal/helpers/get-error-by-type'\n\nconst transitionDurationMs = 200\n\nexport interface ErrorBaseProps {\n rendered: boolean\n transitionDurationMs: number\n isTurbopack: boolean\n versionInfo: OverlayState['versionInfo']\n}\n\nexport function ErrorOverlay({\n state,\n readyErrors,\n isErrorOverlayOpen,\n setIsErrorOverlayOpen,\n}: {\n state: OverlayState\n readyErrors: ReadyRuntimeError[]\n isErrorOverlayOpen: boolean\n setIsErrorOverlayOpen: (value: boolean) => void\n}) {\n const isTurbopack = !!process.env.TURBOPACK\n\n // This hook lets us do an exit animation before unmounting the component\n const { mounted, rendered } = useDelayedRender(isErrorOverlayOpen, {\n exitDelay: transitionDurationMs,\n })\n\n const commonProps = {\n rendered,\n transitionDurationMs,\n isTurbopack,\n versionInfo: state.versionInfo,\n }\n\n if (!!state.rootLayoutMissingTags?.length) {\n return (\n <RootLayoutMissingTagsError\n missingTags={state.rootLayoutMissingTags}\n {...commonProps}\n />\n )\n }\n\n if (state.buildError !== null) {\n return <BuildError message={state.buildError} {...commonProps} />\n }\n\n // No Runtime Errors.\n if (!readyErrors.length) {\n return null\n }\n\n if (!mounted) {\n return null\n }\n\n return (\n <Errors\n debugInfo={state.debugInfo}\n readyErrors={readyErrors}\n onClose={() => {\n setIsErrorOverlayOpen(false)\n }}\n {...commonProps}\n />\n )\n}\n"],"names":["ErrorOverlay","transitionDurationMs","state","readyErrors","isErrorOverlayOpen","setIsErrorOverlayOpen","isTurbopack","process","env","TURBOPACK","mounted","rendered","useDelayedRender","exitDelay","commonProps","versionInfo","rootLayoutMissingTags","length","RootLayoutMissingTagsError","missingTags","buildError","BuildError","message","Errors","debugInfo","onClose"],"mappings":";;;;+BAiBgBA;;;eAAAA;;;;4BAfW;wBACJ;4CACoB;kCACV;AAGjC,MAAMC,uBAAuB;AAStB,SAASD,aAAa,KAU5B;IAV4B,IAAA,EAC3BE,KAAK,EACLC,WAAW,EACXC,kBAAkB,EAClBC,qBAAqB,EAMtB,GAV4B;QAyBrBH;IAdN,MAAMI,cAAc,CAAC,CAACC,QAAQC,GAAG,CAACC,SAAS;IAE3C,yEAAyE;IACzE,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGC,IAAAA,kCAAgB,EAACR,oBAAoB;QACjES,WAAWZ;IACb;IAEA,MAAMa,cAAc;QAClBH;QACAV;QACAK;QACAS,aAAab,MAAMa,WAAW;IAChC;IAEA,IAAI,CAAC,GAACb,+BAAAA,MAAMc,qBAAqB,qBAA3Bd,6BAA6Be,MAAM,GAAE;QACzC,qBACE,qBAACC,sDAA0B;YACzBC,aAAajB,MAAMc,qBAAqB;YACvC,GAAGF,WAAW;;IAGrB;IAEA,IAAIZ,MAAMkB,UAAU,KAAK,MAAM;QAC7B,qBAAO,qBAACC,sBAAU;YAACC,SAASpB,MAAMkB,UAAU;YAAG,GAAGN,WAAW;;IAC/D;IAEA,qBAAqB;IACrB,IAAI,CAACX,YAAYc,MAAM,EAAE;QACvB,OAAO;IACT;IAEA,IAAI,CAACP,SAAS;QACZ,OAAO;IACT;IAEA,qBACE,qBAACa,cAAM;QACLC,WAAWtB,MAAMsB,SAAS;QAC1BrB,aAAaA;QACbsB,SAAS;YACPpB,sBAAsB;QACxB;QACC,GAAGS,WAAW;;AAGrB"}
1
+ {"version":3,"sources":["../../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.tsx"],"sourcesContent":["import type { OverlayState } from '../../../../../shared'\n\nimport { BuildError } from '../../../container/build-error'\nimport { Errors } from '../../../container/errors'\nimport { RootLayoutMissingTagsError } from '../../../container/root-layout-missing-tags-error'\nimport { useDelayedRender } from '../../../hooks/use-delayed-render'\nimport type { ReadyRuntimeError } from '../../../../../internal/helpers/get-error-by-type'\n\nconst transitionDurationMs = 200\n\nexport interface ErrorBaseProps {\n rendered: boolean\n transitionDurationMs: number\n isTurbopack: boolean\n versionInfo: OverlayState['versionInfo']\n}\n\nexport function ErrorOverlay({\n state,\n readyErrors,\n isErrorOverlayOpen,\n setIsErrorOverlayOpen,\n}: {\n state: OverlayState\n readyErrors: ReadyRuntimeError[]\n isErrorOverlayOpen: boolean\n setIsErrorOverlayOpen: (value: boolean) => void\n}) {\n const isTurbopack = !!process.env.TURBOPACK\n\n // This hook lets us do an exit animation before unmounting the component\n const { mounted, rendered } = useDelayedRender(isErrorOverlayOpen, {\n exitDelay: transitionDurationMs,\n })\n\n const commonProps = {\n rendered,\n transitionDurationMs,\n isTurbopack,\n versionInfo: state.versionInfo,\n }\n\n if (!!state.rootLayoutMissingTags?.length) {\n return (\n <RootLayoutMissingTagsError\n {...commonProps}\n // This is a runtime error, forcedly display error overlay\n rendered\n missingTags={state.rootLayoutMissingTags}\n />\n )\n }\n\n if (state.buildError !== null) {\n return <BuildError {...commonProps} message={state.buildError} />\n }\n\n // No Runtime Errors.\n if (!readyErrors.length) {\n return null\n }\n\n if (!mounted) {\n return null\n }\n\n return (\n <Errors\n {...commonProps}\n debugInfo={state.debugInfo}\n readyErrors={readyErrors}\n onClose={() => {\n setIsErrorOverlayOpen(false)\n }}\n />\n )\n}\n"],"names":["ErrorOverlay","transitionDurationMs","state","readyErrors","isErrorOverlayOpen","setIsErrorOverlayOpen","isTurbopack","process","env","TURBOPACK","mounted","rendered","useDelayedRender","exitDelay","commonProps","versionInfo","rootLayoutMissingTags","length","RootLayoutMissingTagsError","missingTags","buildError","BuildError","message","Errors","debugInfo","onClose"],"mappings":";;;;+BAiBgBA;;;eAAAA;;;;4BAfW;wBACJ;4CACoB;kCACV;AAGjC,MAAMC,uBAAuB;AAStB,SAASD,aAAa,KAU5B;IAV4B,IAAA,EAC3BE,KAAK,EACLC,WAAW,EACXC,kBAAkB,EAClBC,qBAAqB,EAMtB,GAV4B;QAyBrBH;IAdN,MAAMI,cAAc,CAAC,CAACC,QAAQC,GAAG,CAACC,SAAS;IAE3C,yEAAyE;IACzE,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGC,IAAAA,kCAAgB,EAACR,oBAAoB;QACjES,WAAWZ;IACb;IAEA,MAAMa,cAAc;QAClBH;QACAV;QACAK;QACAS,aAAab,MAAMa,WAAW;IAChC;IAEA,IAAI,CAAC,GAACb,+BAAAA,MAAMc,qBAAqB,qBAA3Bd,6BAA6Be,MAAM,GAAE;QACzC,qBACE,qBAACC,sDAA0B;YACxB,GAAGJ,WAAW;YACf,0DAA0D;YAC1DH,QAAQ;YACRQ,aAAajB,MAAMc,qBAAqB;;IAG9C;IAEA,IAAId,MAAMkB,UAAU,KAAK,MAAM;QAC7B,qBAAO,qBAACC,sBAAU;YAAE,GAAGP,WAAW;YAAEQ,SAASpB,MAAMkB,UAAU;;IAC/D;IAEA,qBAAqB;IACrB,IAAI,CAACjB,YAAYc,MAAM,EAAE;QACvB,OAAO;IACT;IAEA,IAAI,CAACP,SAAS;QACZ,OAAO;IACT;IAEA,qBACE,qBAACa,cAAM;QACJ,GAAGT,WAAW;QACfU,WAAWtB,MAAMsB,SAAS;QAC1BrB,aAAaA;QACbsB,SAAS;YACPpB,sBAAsB;QACxB;;AAGN"}