eddev 2.0.0-beta.21 → 2.0.0-beta.211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/editor-styles.css +4 -0
- package/dist/app/entry/HydrationOverlay.d.ts +2 -0
- package/dist/app/entry/HydrationOverlay.d.ts.map +1 -0
- package/dist/app/entry/HydrationOverlay.js +2 -0
- package/dist/app/entry/MetaTags.d.ts +8 -0
- package/dist/app/entry/MetaTags.d.ts.map +1 -0
- package/dist/app/entry/MetaTags.js +30 -0
- package/dist/app/entry/boot-admin.d.ts +1 -0
- package/dist/app/entry/boot-admin.d.ts.map +1 -0
- package/dist/app/entry/boot-admin.js +7 -3
- package/dist/app/entry/hydration-script.d.ts +2 -0
- package/dist/app/entry/hydration-script.d.ts.map +1 -0
- package/dist/app/entry/hydration-script.js +18 -0
- package/dist/app/entry/spa-root.d.ts +1 -0
- package/dist/app/entry/spa-root.d.ts.map +1 -0
- package/dist/app/entry/spa-root.js +3 -5
- package/dist/app/entry/ssr-root-client.d.ts +4 -1
- package/dist/app/entry/ssr-root-client.d.ts.map +1 -0
- package/dist/app/entry/ssr-root-client.js +18 -6
- package/dist/app/entry/ssr-root.d.ts +6 -4
- package/dist/app/entry/ssr-root.d.ts.map +1 -0
- package/dist/app/entry/ssr-root.js +20 -19
- package/dist/app/lib/admin/defineField.d.ts +1 -0
- package/dist/app/lib/admin/defineField.d.ts.map +1 -0
- package/dist/app/lib/admin/defineWidget.d.ts +1 -0
- package/dist/app/lib/admin/defineWidget.d.ts.map +1 -0
- package/dist/app/lib/admin/index.d.ts +1 -0
- package/dist/app/lib/admin/index.d.ts.map +1 -0
- package/dist/app/lib/admin/installFieldTypes.d.ts +1 -0
- package/dist/app/lib/admin/installFieldTypes.d.ts.map +1 -0
- package/dist/app/lib/admin/installFieldTypes.js +2 -0
- package/dist/app/lib/admin/runWidgets.d.ts +1 -0
- package/dist/app/lib/admin/runWidgets.d.ts.map +1 -0
- package/dist/app/lib/admin/runWidgets.js +7 -2
- package/dist/app/lib/blocks/ContentBlocks.d.ts +7 -4
- package/dist/app/lib/blocks/ContentBlocks.d.ts.map +1 -0
- package/dist/app/lib/blocks/ContentBlocks.js +16 -3
- package/dist/app/lib/blocks/EditableText.d.ts +30 -5
- package/dist/app/lib/blocks/EditableText.d.ts.map +1 -0
- package/dist/app/lib/blocks/EditableText.js +34 -5
- package/dist/app/lib/blocks/InnerBlocks.d.ts +21 -6
- package/dist/app/lib/blocks/InnerBlocks.d.ts.map +1 -0
- package/dist/app/lib/blocks/InnerBlocks.js +73 -25
- package/dist/app/lib/blocks/SlotBlocks.d.ts +8 -0
- package/dist/app/lib/blocks/SlotBlocks.d.ts.map +1 -0
- package/dist/app/lib/blocks/SlotBlocks.js +46 -0
- package/dist/app/lib/blocks/block-utils.d.ts +2 -1
- package/dist/app/lib/blocks/block-utils.d.ts.map +1 -0
- package/dist/app/lib/blocks/block-utils.js +3 -1
- package/dist/app/lib/blocks/builtin-blocks.d.ts +2 -0
- package/dist/app/lib/blocks/builtin-blocks.d.ts.map +1 -0
- package/dist/app/lib/blocks/builtin-blocks.js +55 -0
- package/dist/app/lib/blocks/defineBlock.d.ts +4 -0
- package/dist/app/lib/blocks/defineBlock.d.ts.map +1 -0
- package/dist/app/lib/blocks/defineBlock.js +9 -0
- package/dist/app/lib/blocks/editor/EditorHighlights.d.ts +8 -0
- package/dist/app/lib/blocks/editor/EditorHighlights.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/EditorHighlights.js +164 -0
- package/dist/app/lib/blocks/editor/EditorSupport.d.ts +1 -0
- package/dist/app/lib/blocks/editor/EditorSupport.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/EditorSupport.js +17 -10
- package/dist/app/lib/blocks/editor/ErrorBoundaryEditor.d.ts +2 -1
- package/dist/app/lib/blocks/editor/ErrorBoundaryEditor.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/block-templates.d.ts +8 -1
- package/dist/app/lib/blocks/editor/block-templates.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/block-templates.js +71 -2
- package/dist/app/lib/blocks/editor/blocks-by-tag.d.ts +1 -0
- package/dist/app/lib/blocks/editor/blocks-by-tag.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/controls.d.ts +1 -0
- package/dist/app/lib/blocks/editor/controls.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/create-block.d.ts +10 -0
- package/dist/app/lib/blocks/editor/create-block.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/create-block.js +13 -0
- package/dist/app/lib/blocks/editor/editor-config.d.ts +77 -8
- package/dist/app/lib/blocks/editor/editor-config.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/editor-config.js +29 -62
- package/dist/app/lib/blocks/editor/installGutenbergHooks.d.ts +4 -0
- package/dist/app/lib/blocks/editor/installGutenbergHooks.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/installGutenbergHooks.js +126 -21
- package/dist/app/lib/blocks/editor/root-blocks.d.ts +7 -0
- package/dist/app/lib/blocks/editor/root-blocks.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/root-blocks.js +30 -0
- package/dist/app/lib/blocks/editor/usePostEditor.d.ts +12 -1
- package/dist/app/lib/blocks/editor/usePostEditor.d.ts.map +1 -0
- package/dist/app/lib/blocks/editor/usePostEditor.js +28 -13
- package/dist/app/lib/blocks/index.d.ts +8 -5
- package/dist/app/lib/blocks/index.d.ts.map +1 -0
- package/dist/app/lib/blocks/index.js +7 -5
- package/dist/app/lib/blocks/inline-editing.d.ts +10 -0
- package/dist/app/lib/blocks/inline-editing.d.ts.map +1 -0
- package/dist/app/lib/blocks/inline-editing.js +12 -2
- package/dist/app/lib/devtools/components/BreakpointIndicator.d.ts +1 -0
- package/dist/app/lib/devtools/components/BreakpointIndicator.d.ts.map +1 -0
- package/dist/app/lib/devtools/components/BreakpointIndicator.js +2 -2
- package/dist/app/lib/devtools/components/DevUI.d.ts +1 -0
- package/dist/app/lib/devtools/components/DevUI.d.ts.map +1 -0
- package/dist/app/lib/devtools/components/DevUI.js +3 -2
- package/dist/app/lib/devtools/components/GridIndicator.d.ts +2 -0
- package/dist/app/lib/devtools/components/GridIndicator.d.ts.map +1 -0
- package/dist/app/lib/devtools/components/GridIndicator.js +29 -0
- package/dist/app/lib/devtools/dev-tools-store.d.ts +1 -0
- package/dist/app/lib/devtools/dev-tools-store.d.ts.map +1 -0
- package/dist/app/lib/devtools/hooks/usePersistState.d.ts +2 -1
- package/dist/app/lib/devtools/hooks/usePersistState.d.ts.map +1 -0
- package/dist/app/lib/devtools/hooks/usePersistState.js +11 -2
- package/dist/app/lib/devtools/hooks/useTailwind.d.ts +77 -76
- package/dist/app/lib/devtools/hooks/useTailwind.d.ts.map +1 -0
- package/dist/app/lib/devtools/index.d.ts +1 -0
- package/dist/app/lib/devtools/index.d.ts.map +1 -0
- package/dist/app/lib/devtools/loader.d.ts +1 -0
- package/dist/app/lib/devtools/loader.d.ts.map +1 -0
- package/dist/app/lib/devtools/loader.js +6 -5
- package/dist/app/lib/devtools/tailwind.config.d.ts +1 -0
- package/dist/app/lib/devtools/tailwind.config.d.ts.map +1 -0
- package/dist/app/lib/devtools/useQueryDebug.d.ts +8 -1
- package/dist/app/lib/devtools/useQueryDebug.d.ts.map +1 -0
- package/dist/app/lib/devtools/useQueryDebug.js +5 -8
- package/dist/app/lib/dynamic/dynamic.d.ts +2 -1
- package/dist/app/lib/dynamic/dynamic.d.ts.map +1 -0
- package/dist/app/lib/dynamic/dynamic.js +5 -1
- package/dist/app/lib/dynamic/index.d.ts +1 -0
- package/dist/app/lib/dynamic/index.d.ts.map +1 -0
- package/dist/app/lib/hooks/index.d.ts +3 -3
- package/dist/app/lib/hooks/index.d.ts.map +1 -0
- package/dist/app/lib/hooks/index.js +2 -3
- package/dist/app/lib/hooks/{queryUtils.d.ts → query-hooks.d.ts} +42 -3
- package/dist/app/lib/hooks/query-hooks.d.ts.map +1 -0
- package/dist/app/lib/hooks/{queryUtils.js → query-hooks.js} +90 -28
- package/dist/app/lib/hooks/useAppData.d.ts +1 -0
- package/dist/app/lib/hooks/useAppData.d.ts.map +1 -0
- package/dist/app/lib/hooks/useAppData.js +11 -0
- package/dist/app/lib/hooks/useRPC.d.ts +1 -4
- package/dist/app/lib/hooks/useRPC.d.ts.map +1 -0
- package/dist/app/lib/hooks/useRPC.js +0 -8
- package/dist/app/lib/integrations/gravityforms/index.d.ts +3 -0
- package/dist/app/lib/integrations/gravityforms/index.d.ts.map +1 -0
- package/dist/app/lib/integrations/gravityforms/index.js +2 -0
- package/dist/app/lib/integrations/gravityforms/types.d.ts +145 -0
- package/dist/app/lib/integrations/gravityforms/types.d.ts.map +1 -0
- package/dist/app/lib/integrations/gravityforms/types.js +1 -0
- package/dist/app/lib/integrations/gravityforms/useGravityForm.d.ts +31 -0
- package/dist/app/lib/integrations/gravityforms/useGravityForm.d.ts.map +1 -0
- package/dist/app/lib/integrations/gravityforms/useGravityForm.js +295 -0
- package/dist/app/lib/internal/finalize-rpc.d.ts +18 -0
- package/dist/app/lib/internal/finalize-rpc.d.ts.map +1 -0
- package/dist/app/lib/internal/finalize-rpc.js +3 -0
- package/dist/app/lib/internal/index.d.ts +2 -0
- package/dist/app/lib/internal/index.d.ts.map +1 -0
- package/dist/app/lib/internal/index.js +1 -0
- package/dist/app/lib/internal/internal-store.d.ts +1 -0
- package/dist/app/lib/internal/internal-store.d.ts.map +1 -0
- package/dist/app/lib/internal/read-admin-manifest.d.ts +1 -0
- package/dist/app/lib/internal/read-admin-manifest.d.ts.map +1 -0
- package/dist/app/lib/internal/read-block-manifest.d.ts +2 -0
- package/dist/app/lib/internal/read-block-manifest.d.ts.map +1 -0
- package/dist/app/lib/internal/read-block-manifest.js +7 -0
- package/dist/app/lib/internal/read-view-manifest.d.ts +7 -4
- package/dist/app/lib/internal/read-view-manifest.d.ts.map +1 -0
- package/dist/app/lib/internal/read-view-manifest.js +18 -0
- package/dist/app/lib/legacy-stitches/createStitches.d.ts +510 -1
- package/dist/app/lib/legacy-stitches/createStitches.d.ts.map +1 -0
- package/dist/app/lib/legacy-stitches/index.d.ts +1 -0
- package/dist/app/lib/legacy-stitches/index.d.ts.map +1 -0
- package/dist/app/lib/routing/components/BackButton.d.ts +50 -0
- package/dist/app/lib/routing/components/BackButton.d.ts.map +1 -0
- package/dist/app/lib/routing/components/BackButton.js +47 -0
- package/dist/app/lib/routing/components/BrowserRouter.d.ts +10 -1
- package/dist/app/lib/routing/components/BrowserRouter.d.ts.map +1 -0
- package/dist/app/lib/routing/components/BrowserRouter.js +136 -21
- package/dist/app/lib/routing/components/ClientOnly.d.ts +2 -1
- package/dist/app/lib/routing/components/ClientOnly.d.ts.map +1 -0
- package/dist/app/lib/routing/components/ClientOnly.js +1 -1
- package/dist/app/lib/routing/components/Link.d.ts +19 -2
- package/dist/app/lib/routing/components/Link.d.ts.map +1 -0
- package/dist/app/lib/routing/components/Link.js +43 -23
- package/dist/app/lib/routing/components/NativeLinkHandler.d.ts +10 -0
- package/dist/app/lib/routing/components/NativeLinkHandler.d.ts.map +1 -0
- package/dist/app/lib/routing/components/NativeLinkHandler.js +23 -0
- package/dist/app/lib/routing/components/RouteRenderer.d.ts +1 -0
- package/dist/app/lib/routing/components/RouteRenderer.d.ts.map +1 -0
- package/dist/app/lib/routing/components/RouteRenderer.js +17 -3
- package/dist/app/lib/routing/components/SSRRouter.d.ts +3 -0
- package/dist/app/lib/routing/components/SSRRouter.d.ts.map +1 -0
- package/dist/app/lib/routing/components/SSRRouter.js +3 -2
- package/dist/app/lib/routing/components/ScrollRestoration.d.ts +1 -0
- package/dist/app/lib/routing/components/ScrollRestoration.d.ts.map +1 -0
- package/dist/app/lib/routing/components/ScrollRestoration.js +4 -1
- package/dist/app/lib/routing/context.d.ts +9 -5
- package/dist/app/lib/routing/context.d.ts.map +1 -0
- package/dist/app/lib/routing/context.js +12 -95
- package/dist/app/lib/routing/hooks/useIsSSR.d.ts +1 -0
- package/dist/app/lib/routing/hooks/useIsSSR.d.ts.map +1 -0
- package/dist/app/lib/routing/hooks/useRestorableState.d.ts +3 -1
- package/dist/app/lib/routing/hooks/useRestorableState.d.ts.map +1 -0
- package/dist/app/lib/routing/hooks/useRoute.d.ts +16 -0
- package/dist/app/lib/routing/hooks/useRoute.d.ts.map +1 -0
- package/dist/app/lib/routing/hooks/useRoute.js +21 -0
- package/dist/app/lib/routing/hooks/useRouteMeta.d.ts +6 -0
- package/dist/app/lib/routing/hooks/useRouteMeta.d.ts.map +1 -0
- package/dist/app/lib/routing/hooks/useRouteMeta.js +9 -0
- package/dist/app/lib/routing/hooks/useRouteTransition.d.ts +1 -0
- package/dist/app/lib/routing/hooks/useRouteTransition.d.ts.map +1 -0
- package/dist/app/lib/routing/hooks/useRouter.d.ts +1 -0
- package/dist/app/lib/routing/hooks/useRouter.d.ts.map +1 -0
- package/dist/app/lib/routing/hooks/useRouterEvents.d.ts +1 -0
- package/dist/app/lib/routing/hooks/useRouterEvents.d.ts.map +1 -0
- package/dist/app/lib/routing/hooks/useRouterState.d.ts +1 -0
- package/dist/app/lib/routing/hooks/useRouterState.d.ts.map +1 -0
- package/dist/app/lib/routing/hooks/useSearchParams.d.ts +78 -6
- package/dist/app/lib/routing/hooks/useSearchParams.d.ts.map +1 -0
- package/dist/app/lib/routing/hooks/useSearchParams.js +75 -15
- package/dist/app/lib/routing/index.d.ts +3 -0
- package/dist/app/lib/routing/index.d.ts.map +1 -0
- package/dist/app/lib/routing/index.js +2 -0
- package/dist/app/lib/routing/loader.d.ts +1 -0
- package/dist/app/lib/routing/loader.d.ts.map +1 -0
- package/dist/app/lib/routing/loader.js +19 -10
- package/dist/app/lib/routing/types.d.ts +60 -12
- package/dist/app/lib/routing/types.d.ts.map +1 -0
- package/dist/app/lib/routing/utils.d.ts +7 -2
- package/dist/app/lib/routing/utils.d.ts.map +1 -0
- package/dist/app/lib/routing/utils.js +41 -4
- package/dist/app/lib/{hooks → runtime}/apiConfig.d.ts +11 -2
- package/dist/app/lib/runtime/apiConfig.d.ts.map +1 -0
- package/dist/app/lib/runtime/apiConfig.js +6 -0
- package/dist/app/lib/runtime/errorHandling.d.ts +40 -0
- package/dist/app/lib/runtime/errorHandling.d.ts.map +1 -0
- package/dist/app/lib/runtime/errorHandling.js +6 -0
- package/dist/app/lib/runtime/index.d.ts +3 -0
- package/dist/app/lib/runtime/index.d.ts.map +1 -0
- package/dist/app/lib/runtime/index.js +2 -0
- package/dist/app/lib/views/defineView.d.ts +2 -1
- package/dist/app/lib/views/defineView.d.ts.map +1 -0
- package/dist/app/lib/views/index.d.ts +1 -0
- package/dist/app/lib/views/index.d.ts.map +1 -0
- package/dist/app/server/index.d.ts +4 -1
- package/dist/app/server/index.d.ts.map +1 -0
- package/dist/app/server/index.js +3 -1
- package/dist/app/server/proxy-wp-admin.d.ts +2 -2
- package/dist/app/server/proxy-wp-admin.d.ts.map +1 -0
- package/dist/app/server/proxy-wp-admin.js +46 -13
- package/dist/app/server/render-ai-page.d.ts +13 -0
- package/dist/app/server/render-ai-page.d.ts.map +1 -0
- package/dist/app/server/render-ai-page.js +100 -0
- package/dist/app/server/render-ssr-page.d.ts +31 -3
- package/dist/app/server/render-ssr-page.d.ts.map +1 -0
- package/dist/app/server/render-ssr-page.js +226 -10
- package/dist/app/server/rpc.d.ts +60 -0
- package/dist/app/server/rpc.d.ts.map +1 -0
- package/dist/app/server/rpc.js +18 -0
- package/dist/app/server/server-context.d.ts +44 -6
- package/dist/app/server/server-context.d.ts.map +1 -0
- package/dist/app/server/server-context.js +334 -37
- package/dist/app/server/server-custom-config.d.ts +3 -0
- package/dist/app/server/server-custom-config.d.ts.map +1 -0
- package/dist/app/server/server-custom-config.js +1 -0
- package/dist/app/server/utils/content-security.d.ts +26 -0
- package/dist/app/server/utils/content-security.d.ts.map +1 -0
- package/dist/app/server/utils/content-security.js +124 -0
- package/dist/app/server/utils/headers.d.ts +1 -0
- package/dist/app/server/utils/headers.d.ts.map +1 -0
- package/dist/app/server/utils/replace-host.d.ts +2 -1
- package/dist/app/server/utils/replace-host.d.ts.map +1 -0
- package/dist/app/server/utils/replace-host.js +10 -2
- package/dist/app/server/utils/swr-cache.d.ts +5 -0
- package/dist/app/server/utils/swr-cache.d.ts.map +1 -0
- package/dist/app/server/utils/swr-cache.js +31 -0
- package/dist/app/utils/APIProvider.d.ts +3 -0
- package/dist/app/utils/APIProvider.d.ts.map +1 -0
- package/dist/app/utils/APIProvider.js +5 -0
- package/dist/app/utils/BlockErrorBoundary.d.ts +20 -0
- package/dist/app/utils/BlockErrorBoundary.d.ts.map +1 -0
- package/dist/app/utils/BlockErrorBoundary.js +38 -0
- package/dist/app/utils/ErrorMessage.d.ts +6 -0
- package/dist/app/utils/ErrorMessage.d.ts.map +1 -0
- package/dist/app/utils/ErrorMessage.js +14 -0
- package/dist/app/utils/RouteErrorBoundary.d.ts +20 -0
- package/dist/app/utils/RouteErrorBoundary.d.ts.map +1 -0
- package/dist/app/utils/RouteErrorBoundary.js +41 -0
- package/dist/app/utils/asset-capture.d.ts +3 -0
- package/dist/app/utils/asset-capture.d.ts.map +1 -0
- package/dist/app/utils/asset-capture.js +5 -0
- package/dist/app/utils/hydration-debugger.d.ts +14 -0
- package/dist/app/utils/hydration-debugger.d.ts.map +1 -0
- package/dist/app/utils/hydration-debugger.js +11 -0
- package/dist/app/utils/query-client.d.ts +3 -0
- package/dist/app/utils/query-client.d.ts.map +1 -0
- package/dist/app/utils/query-client.js +5 -1
- package/dist/app/utils/query-monitor.d.ts +27 -0
- package/dist/app/utils/query-monitor.d.ts.map +1 -0
- package/dist/app/utils/query-monitor.js +7 -0
- package/dist/app/utils/trpc-client.d.ts +3 -0
- package/dist/app/utils/trpc-client.d.ts.map +1 -0
- package/dist/app/utils/trpc-client.js +39 -0
- package/dist/app/utils/wp.d.ts +11 -10
- package/dist/app/utils/wp.d.ts.map +1 -0
- package/dist/node/cli/cli-mode.d.ts +1 -0
- package/dist/node/cli/cli-mode.d.ts.map +1 -0
- package/dist/node/cli/cli-worker.d.ts +1 -0
- package/dist/node/cli/cli-worker.d.ts.map +1 -0
- package/dist/node/cli/cli-worker.js +7 -3
- package/dist/node/cli/cli.d.ts +1 -0
- package/dist/node/cli/cli.d.ts.map +1 -0
- package/dist/node/cli/cli.js +120 -7
- package/dist/node/cli/display/CLIApp.d.ts +1 -0
- package/dist/node/cli/display/CLIApp.d.ts.map +1 -0
- package/dist/node/cli/display/CLIApp.js +1 -1
- package/dist/node/cli/display/boot-cli-app.d.ts +1 -0
- package/dist/node/cli/display/boot-cli-app.d.ts.map +1 -0
- package/dist/node/cli/display/boot-cli-app.js +1 -1
- package/dist/node/cli/display/components/Fullscreen.d.ts +1 -0
- package/dist/node/cli/display/components/Fullscreen.d.ts.map +1 -0
- package/dist/node/cli/display/components/LogEntries.d.ts +1 -0
- package/dist/node/cli/display/components/LogEntries.d.ts.map +1 -0
- package/dist/node/cli/display/components/MenuItem.d.ts +1 -0
- package/dist/node/cli/display/components/MenuItem.d.ts.map +1 -0
- package/dist/node/cli/display/components/TextInput.d.ts +1 -0
- package/dist/node/cli/display/components/TextInput.d.ts.map +1 -0
- package/dist/node/cli/display/hooks/useManifest.d.ts +1 -0
- package/dist/node/cli/display/hooks/useManifest.d.ts.map +1 -0
- package/dist/node/cli/display/hooks/useStatefulLog.d.ts +1 -0
- package/dist/node/cli/display/hooks/useStatefulLog.d.ts.map +1 -0
- package/dist/node/cli/display/tools/BlockList.d.ts +1 -0
- package/dist/node/cli/display/tools/BlockList.d.ts.map +1 -0
- package/dist/node/cli/display/tools/CreateBlock.d.ts +1 -0
- package/dist/node/cli/display/tools/CreateBlock.d.ts.map +1 -0
- package/dist/node/cli/display/tools/cli-tool-list.d.ts +1 -0
- package/dist/node/cli/display/tools/cli-tool-list.d.ts.map +1 -0
- package/dist/node/cli/display/tools/cli-tools.d.ts +1 -0
- package/dist/node/cli/display/tools/cli-tools.d.ts.map +1 -0
- package/dist/node/cli/display/util/colors.d.ts +1 -0
- package/dist/node/cli/display/util/colors.d.ts.map +1 -0
- package/dist/node/cli/version.d.ts +2 -1
- package/dist/node/cli/version.d.ts.map +1 -0
- package/dist/node/cli/version.js +1 -1
- package/dist/node/compiler/build-vinxi.d.ts +1 -0
- package/dist/node/compiler/build-vinxi.d.ts.map +1 -0
- package/dist/node/compiler/build-vinxi.js +2 -1
- package/dist/node/compiler/bundler.admin.d.ts +1 -0
- package/dist/node/compiler/bundler.admin.d.ts.map +1 -0
- package/dist/node/compiler/bundler.admin.js +1 -0
- package/dist/node/compiler/bundler.frontend.d.ts +2 -0
- package/dist/node/compiler/bundler.frontend.d.ts.map +1 -0
- package/dist/node/compiler/bundler.frontend.js +26 -11
- package/dist/node/compiler/dev-server.d.ts +1 -0
- package/dist/node/compiler/dev-server.d.ts.map +1 -0
- package/dist/node/compiler/dev-server.js +17 -1
- package/dist/node/compiler/get-vite-config.d.ts +12 -1
- package/dist/node/compiler/get-vite-config.d.ts.map +1 -0
- package/dist/node/compiler/get-vite-config.js +173 -42
- package/dist/node/compiler/vinxi-app.d.ts +13 -0
- package/dist/node/compiler/vinxi-app.d.ts.map +1 -0
- package/dist/node/compiler/vinxi-app.js +142 -32
- package/dist/node/compiler/vinxi-codegen.d.ts +1 -0
- package/dist/node/compiler/vinxi-codegen.d.ts.map +1 -0
- package/dist/node/compiler/vinxi-codegen.js +371 -108
- package/dist/node/graphql/graphql-codegen.d.ts +12 -1
- package/dist/node/graphql/graphql-codegen.d.ts.map +1 -0
- package/dist/node/graphql/graphql-codegen.js +239 -37
- package/dist/node/graphql/graphql-schema-loader.d.ts +3 -1
- package/dist/node/graphql/graphql-schema-loader.d.ts.map +1 -0
- package/dist/node/graphql/graphql-schema-loader.js +5 -16
- package/dist/node/graphql/plugins/gql-plugin-files.d.ts +3 -1
- package/dist/node/graphql/plugins/gql-plugin-files.d.ts.map +1 -0
- package/dist/node/graphql/plugins/gql-plugin-files.js +3 -2
- package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts +1 -0
- package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts.map +1 -0
- package/dist/node/graphql/plugins/gql-plugin-queries.d.ts +1 -0
- package/dist/node/graphql/plugins/gql-plugin-queries.d.ts.map +1 -0
- package/dist/node/graphql/plugins/gql-plugin-queries.js +2 -2
- package/dist/node/graphql/query-files-loader.d.ts +4 -0
- package/dist/node/graphql/query-files-loader.d.ts.map +1 -0
- package/dist/node/graphql/query-files-loader.js +5 -0
- package/dist/node/graphql/wp-info-query.d.ts +1 -0
- package/dist/node/graphql/wp-info-query.d.ts.map +1 -0
- package/dist/node/project/config.d.ts +207 -73
- package/dist/node/project/config.d.ts.map +1 -0
- package/dist/node/project/config.js +94 -20
- package/dist/node/project/eddev-build-file.d.ts +1 -0
- package/dist/node/project/eddev-build-file.d.ts.map +1 -0
- package/dist/node/project/eddev-build-file.js +4 -2
- package/dist/node/project/env.d.ts +5 -0
- package/dist/node/project/env.d.ts.map +1 -0
- package/dist/node/project/env.js +1 -0
- package/dist/node/project/favicons.d.ts +1 -1
- package/dist/node/project/favicons.d.ts.map +1 -0
- package/dist/node/project/favicons.js +1 -1
- package/dist/node/project/manifest/block-manifest.d.ts +1 -0
- package/dist/node/project/manifest/block-manifest.d.ts.map +1 -0
- package/dist/node/project/manifest/block-manifest.js +6 -2
- package/dist/node/project/manifest/field-manifest.d.ts +1 -0
- package/dist/node/project/manifest/field-manifest.d.ts.map +1 -0
- package/dist/node/project/manifest/manifest.d.ts +2 -0
- package/dist/node/project/manifest/manifest.d.ts.map +1 -0
- package/dist/node/project/manifest/manifest.js +14 -10
- package/dist/node/project/manifest/routes-manifest.d.ts +21 -0
- package/dist/node/project/manifest/routes-manifest.d.ts.map +1 -0
- package/dist/node/project/manifest/routes-manifest.js +74 -0
- package/dist/node/project/manifest/view-manifest.d.ts +1 -0
- package/dist/node/project/manifest/view-manifest.d.ts.map +1 -0
- package/dist/node/project/manifest/widget-manifest.d.ts +1 -0
- package/dist/node/project/manifest/widget-manifest.d.ts.map +1 -0
- package/dist/node/project/project.d.ts +12 -0
- package/dist/node/project/project.d.ts.map +1 -0
- package/dist/node/project/project.js +57 -3
- package/dist/node/project/wp-info.d.ts +3 -0
- package/dist/node/project/wp-info.d.ts.map +1 -0
- package/dist/node/project/wp-info.js +13 -1
- package/dist/node/storybook/index.d.ts +3 -0
- package/dist/node/storybook/index.d.ts.map +1 -0
- package/dist/node/storybook/index.js +13 -0
- package/dist/node/types/block-type.d.ts +57 -25
- package/dist/node/types/block-type.d.ts.map +1 -0
- package/dist/node/types/block-type.js +4 -1
- package/dist/node/types/view-type.d.ts +8 -7
- package/dist/node/types/view-type.d.ts.map +1 -0
- package/dist/node/utils/fetch-wp.d.ts +2 -0
- package/dist/node/utils/fetch-wp.d.ts.map +1 -0
- package/dist/node/utils/fetch-wp.js +28 -0
- package/dist/node/utils/format-zod-error.d.ts +1 -0
- package/dist/node/utils/format-zod-error.d.ts.map +1 -0
- package/dist/node/utils/fs-codegen.d.ts +4 -0
- package/dist/node/utils/fs-codegen.d.ts.map +1 -0
- package/dist/node/utils/fs-codegen.js +10 -2
- package/dist/node/utils/fs.d.ts +5 -0
- package/dist/node/utils/fs.d.ts.map +1 -0
- package/dist/node/utils/get-repo-info.d.ts +1 -0
- package/dist/node/utils/get-repo-info.d.ts.map +1 -0
- package/dist/node/utils/helpers.d.ts +1 -0
- package/dist/node/utils/helpers.d.ts.map +1 -0
- package/dist/node/utils/highlight-code.d.ts +1 -0
- package/dist/node/utils/highlight-code.d.ts.map +1 -0
- package/dist/node/utils/is-deploying.d.ts +1 -0
- package/dist/node/utils/is-deploying.d.ts.map +1 -0
- package/dist/node/utils/is-deploying.js +1 -1
- package/dist/node/utils/report-builder.d.ts +1 -0
- package/dist/node/utils/report-builder.d.ts.map +1 -0
- package/dist/node/utils/self-signed-cert.d.ts +5 -0
- package/dist/node/utils/self-signed-cert.d.ts.map +1 -0
- package/dist/node/utils/self-signed-cert.js +28 -4
- package/dist/node/utils/stateful-log.d.ts +1 -0
- package/dist/node/utils/stateful-log.d.ts.map +1 -0
- package/dist/node/utils/stateful-log.js +2 -0
- package/dist/node/utils/ts-export-extractor.d.ts +1 -0
- package/dist/node/utils/ts-export-extractor.d.ts.map +1 -0
- package/dist/node/utils/watch-file-tree.d.ts +18 -3
- package/dist/node/utils/watch-file-tree.d.ts.map +1 -0
- package/dist/node/utils/watch-file-tree.js +12 -5
- package/package.json +42 -25
- package/tsconfig.app.json +10 -5
- package/tsconfig.node.json +3 -2
- package/types.app.d.ts +2 -0
- package/types.meta.d.ts +449 -136
- package/dist/app/lib/blocks/ErrorBoundaryFrontend.d.ts +0 -15
- package/dist/app/lib/blocks/ErrorBoundaryFrontend.js +0 -35
- package/dist/app/lib/hooks/apiConfig.js +0 -4
- package/dist/app/lib/hooks/usePageLoad.d.ts +0 -6
- package/dist/app/lib/hooks/usePageLoad.js +0 -5
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useRoute } from "../hooks/useRoute";
|
|
3
|
+
import { useRouter } from "../hooks/useRouter";
|
|
4
|
+
import { useRouterState } from "../hooks/useRouterState";
|
|
5
|
+
import { getLinkHandlerMode } from "../utils";
|
|
6
|
+
/**
|
|
7
|
+
* Display a back button that will navigate to the previous page in the router's history.
|
|
8
|
+
*
|
|
9
|
+
* This will allow you to render a back button on the condition that the back button will not send the user to a different website.
|
|
10
|
+
*/
|
|
11
|
+
export function BackButton(props) {
|
|
12
|
+
const router = useRouter();
|
|
13
|
+
const prevRoute = useRouterState((state) => state.history[state.history.length - 2]);
|
|
14
|
+
const contextRoute = useRoute();
|
|
15
|
+
const activeRoute = useRouterState((state) => state.activeRoute);
|
|
16
|
+
const route = props.mode === "global" ? activeRoute : contextRoute;
|
|
17
|
+
const backAction = useMemo(() => {
|
|
18
|
+
if (prevRoute && (!props.filter || props.filter(prevRoute))) {
|
|
19
|
+
return (e) => {
|
|
20
|
+
const { mode } = getLinkHandlerMode(e, prevRoute.uri);
|
|
21
|
+
if (mode === "navigate") {
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
history.back();
|
|
24
|
+
// history.length
|
|
25
|
+
}
|
|
26
|
+
else if (mode === "ignore") {
|
|
27
|
+
e.preventDefault();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
else if (props.fallbackHref) {
|
|
32
|
+
return (e) => {
|
|
33
|
+
const { mode } = getLinkHandlerMode(e, props.fallbackHref);
|
|
34
|
+
if (mode === "navigate") {
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
router.navigate(props.fallbackHref);
|
|
37
|
+
}
|
|
38
|
+
else if (mode === "ignore") {
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}, [route, props.filter, props.fallbackHref]);
|
|
44
|
+
if (backAction) {
|
|
45
|
+
return props.render ? props.render({ route: prevRoute, onClick: backAction }) : null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { PropsWithChildren } from "react";
|
|
2
|
-
type
|
|
2
|
+
import { RouterAPIState, type RouterAPI } from "../types.js";
|
|
3
|
+
type Props = PropsWithChildren<{
|
|
4
|
+
routerRef?: React.MutableRefObject<RouterAPI | null>;
|
|
5
|
+
onReady?: () => void;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function getClientRouter(): {
|
|
8
|
+
state: RouterAPIState;
|
|
9
|
+
api: RouterAPI;
|
|
10
|
+
} | null;
|
|
3
11
|
export declare function BrowserRouter(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
4
12
|
export {};
|
|
13
|
+
//# sourceMappingURL=BrowserRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserRouter.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/BrowserRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuD,MAAM,OAAO,CAAA;AAK9F,OAAO,EAEL,cAAc,EAId,KAAK,SAAS,EAGf,MAAM,aAAa,CAAA;AAWpB,KAAK,KAAK,GAAG,iBAAiB,CAAC;IAC7B,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAC,CAAA;AAuEF,wBAAgB,eAAe;WAFJ,cAAc;SAAO,SAAS;SAIxD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,2CA8bzC"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useMemo, useRef, useState, useTransition } from "react";
|
|
3
|
-
import { isRelative, parseURL, resolveURL } from "ufo";
|
|
4
|
-
import { RouterContext, RouterStateContext } from "../context.js";
|
|
3
|
+
import { isEqual, isRelative, parseURL, resolveURL } from "ufo";
|
|
4
|
+
import { clientMetaTags, RouterContext, RouterStateContext } from "../context.js";
|
|
5
|
+
import { $routeMetaStore } from "../hooks/useRouteMeta.js";
|
|
5
6
|
import { RouteLoader } from "../loader.js";
|
|
6
|
-
import { getLinkHandlerMode, normalizeRoute, parseQuery, stringifyRouteLink } from "../utils.js";
|
|
7
|
+
import { getLinkHandlerMode, getRouteMeta, isSamePathname, normalizeRoute, parseQuery, stringifyRouteLink, } from "../utils.js";
|
|
7
8
|
import { AppRenderer } from "./RouteRenderer.js";
|
|
9
|
+
// Create a global RouteLoader instance
|
|
8
10
|
const loader = new RouteLoader();
|
|
11
|
+
// Create a unique ID for each history entry
|
|
12
|
+
let historyStamp = String(new Date().getTime());
|
|
13
|
+
let historyIndex = 0;
|
|
14
|
+
function getHistoryId() {
|
|
15
|
+
return historyStamp + historyIndex++;
|
|
16
|
+
}
|
|
17
|
+
// Set up the initial route data
|
|
9
18
|
let initialRoute;
|
|
10
19
|
let initialRouteHydrated = false;
|
|
11
20
|
if (env.client && !env.admin) {
|
|
@@ -23,7 +32,10 @@ if (env.client && !env.admin) {
|
|
|
23
32
|
search: "",
|
|
24
33
|
query: {},
|
|
25
34
|
view: initialData.view,
|
|
35
|
+
meta: getRouteMeta(initialData),
|
|
26
36
|
});
|
|
37
|
+
history.replaceState(historyStateForRoute(initialRoute), "", document.location.href);
|
|
38
|
+
$routeMetaStore.data = getRouteMeta(initialData);
|
|
27
39
|
}
|
|
28
40
|
function parseHrefPath(url) {
|
|
29
41
|
if (isRelative(url)) {
|
|
@@ -54,23 +66,18 @@ function historyStateForRoute(route) {
|
|
|
54
66
|
state: route.returnState,
|
|
55
67
|
};
|
|
56
68
|
}
|
|
57
|
-
let
|
|
58
|
-
function
|
|
59
|
-
return
|
|
69
|
+
let clientRouter = null;
|
|
70
|
+
export function getClientRouter() {
|
|
71
|
+
return clientRouter;
|
|
60
72
|
}
|
|
61
|
-
let lastRouterState = null;
|
|
62
73
|
export function BrowserRouter(props) {
|
|
63
74
|
const pendingRoute = useRef(null);
|
|
64
|
-
// const [activeRoute, setActiveRoute] = useState<RouteState>(initialRoute)
|
|
65
75
|
const [transitioning, startTransition] = useTransition();
|
|
66
76
|
const [routerState, setRouterState] = useState(() => ({
|
|
67
77
|
activeRoute: initialRoute,
|
|
68
78
|
history: [initialRoute],
|
|
69
79
|
blockers: [],
|
|
70
80
|
}));
|
|
71
|
-
if (lastRouterState !== routerState) {
|
|
72
|
-
lastRouterState = routerState;
|
|
73
|
-
}
|
|
74
81
|
const { internals, api } = useMemo(() => {
|
|
75
82
|
let subscribers = new Set();
|
|
76
83
|
let state = routerState;
|
|
@@ -79,8 +86,27 @@ export function BrowserRouter(props) {
|
|
|
79
86
|
...state,
|
|
80
87
|
...update,
|
|
81
88
|
};
|
|
89
|
+
if (state?.activeRoute?.meta?.tags) {
|
|
90
|
+
if (env.serverless) {
|
|
91
|
+
clientMetaTags.setMetaTags(state.activeRoute.meta.tags ?? []);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const title = state.activeRoute.meta.tags.find((tag) => tag.tagName === "title")?.inner;
|
|
95
|
+
if (title)
|
|
96
|
+
document.title = title;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
82
99
|
setRouterState(state);
|
|
83
100
|
};
|
|
101
|
+
// If a dynamic compojnent fails to load during a page transition, we need to reload the page
|
|
102
|
+
subscribers.add((event) => {
|
|
103
|
+
if (event.type === "error:component-load-failed") {
|
|
104
|
+
if (state?.pendingRoute) {
|
|
105
|
+
console.warn("Failed to load route component. May be a deployment mismatch.");
|
|
106
|
+
window.location.href = state.pendingRoute.uri;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
84
110
|
const internals = {
|
|
85
111
|
transitionEnded: null,
|
|
86
112
|
updateRoute: null,
|
|
@@ -181,11 +207,20 @@ export function BrowserRouter(props) {
|
|
|
181
207
|
});
|
|
182
208
|
if (cancelled)
|
|
183
209
|
return;
|
|
184
|
-
const data = await loader.loadRouteData(parseHrefPath(args.url))
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
210
|
+
const data = await loader.loadRouteData(parseHrefPath(args.url)).catch((err) => {
|
|
211
|
+
emitEvent({ type: "error", url: args.url, error: err, critical: true });
|
|
212
|
+
return {
|
|
213
|
+
view: "_error",
|
|
214
|
+
viewType: "react",
|
|
215
|
+
appData: loader.appData,
|
|
216
|
+
viewData: {
|
|
217
|
+
data: {
|
|
218
|
+
code: 500,
|
|
219
|
+
error: err,
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
});
|
|
189
224
|
const lazyComponent = loader.getRouteComponent(data.view);
|
|
190
225
|
if (!lazyComponent) {
|
|
191
226
|
console.error(`No component found for view: ${data.view}`);
|
|
@@ -196,11 +231,12 @@ export function BrowserRouter(props) {
|
|
|
196
231
|
hash: link.hash,
|
|
197
232
|
search: "",
|
|
198
233
|
query: link.query,
|
|
199
|
-
pathname: link.pathname,
|
|
234
|
+
pathname: data.canonical ?? link.pathname,
|
|
200
235
|
view: data.view,
|
|
201
236
|
props: data.viewData?.data ?? {},
|
|
202
237
|
component: lazyComponent,
|
|
203
238
|
returnState: args.restoreState ?? {},
|
|
239
|
+
meta: getRouteMeta(data),
|
|
204
240
|
});
|
|
205
241
|
setState({
|
|
206
242
|
pendingRoute: route,
|
|
@@ -229,6 +265,15 @@ export function BrowserRouter(props) {
|
|
|
229
265
|
lastRoute: currentRoute,
|
|
230
266
|
link,
|
|
231
267
|
});
|
|
268
|
+
$routeMetaStore.data = route.meta;
|
|
269
|
+
// Update the 'Edit Page' button, if there is one
|
|
270
|
+
if (route.meta.editLink) {
|
|
271
|
+
const button = document.querySelector("#wp-admin-bar-edit a");
|
|
272
|
+
if (button) {
|
|
273
|
+
button.setAttribute("href", route.meta.editLink);
|
|
274
|
+
button.innerHTML = "Edit Page";
|
|
275
|
+
}
|
|
276
|
+
}
|
|
232
277
|
};
|
|
233
278
|
startTransition(() => {
|
|
234
279
|
pendingRoute.current = route;
|
|
@@ -240,6 +285,7 @@ export function BrowserRouter(props) {
|
|
|
240
285
|
}
|
|
241
286
|
const api = {
|
|
242
287
|
loader: loader,
|
|
288
|
+
hostname: window?._PAGE_DATA?.hostname,
|
|
243
289
|
async navigate(url) {
|
|
244
290
|
doRouteTransition({
|
|
245
291
|
url: url,
|
|
@@ -247,6 +293,9 @@ export function BrowserRouter(props) {
|
|
|
247
293
|
goingBack: false,
|
|
248
294
|
});
|
|
249
295
|
},
|
|
296
|
+
getState() {
|
|
297
|
+
return state;
|
|
298
|
+
},
|
|
250
299
|
replaceHash(hash) {
|
|
251
300
|
replaceRoute({
|
|
252
301
|
...getActiveRoute(),
|
|
@@ -257,6 +306,7 @@ export function BrowserRouter(props) {
|
|
|
257
306
|
replaceRoute({
|
|
258
307
|
...getActiveRoute(),
|
|
259
308
|
query,
|
|
309
|
+
returnState: captureState(),
|
|
260
310
|
});
|
|
261
311
|
},
|
|
262
312
|
async prefetch(url) {
|
|
@@ -265,7 +315,7 @@ export function BrowserRouter(props) {
|
|
|
265
315
|
if (loader.hasRouteData(link.pathname))
|
|
266
316
|
return;
|
|
267
317
|
emitEvent({ type: "preload:start", currentRoute: getActiveRoute(), link });
|
|
268
|
-
|
|
318
|
+
await loader.loadRouteData(link.pathname).then((data) => {
|
|
269
319
|
emitEvent({ type: "preload:data-ready", currentRoute: getActiveRoute(), link, data });
|
|
270
320
|
});
|
|
271
321
|
}
|
|
@@ -297,9 +347,23 @@ export function BrowserRouter(props) {
|
|
|
297
347
|
subscribers.delete(fn);
|
|
298
348
|
};
|
|
299
349
|
},
|
|
300
|
-
handleClickEvent(e, originalHref) {
|
|
301
|
-
const { mode, href } = getLinkHandlerMode(e, originalHref);
|
|
302
|
-
|
|
350
|
+
handleClickEvent(e, originalHref, preferBack) {
|
|
351
|
+
const { mode, href, isSameUrl } = getLinkHandlerMode(e, originalHref, state.activeRoute);
|
|
352
|
+
let cancelled = false;
|
|
353
|
+
if (href) {
|
|
354
|
+
emitEvent({
|
|
355
|
+
type: "clicked",
|
|
356
|
+
currentRoute: getActiveRoute(),
|
|
357
|
+
link: parseRouteLink(href),
|
|
358
|
+
mode,
|
|
359
|
+
href,
|
|
360
|
+
isSameUrl,
|
|
361
|
+
cancel() {
|
|
362
|
+
cancelled = true;
|
|
363
|
+
},
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
if (mode === "ignore" || cancelled) {
|
|
303
367
|
e.preventDefault();
|
|
304
368
|
return;
|
|
305
369
|
}
|
|
@@ -308,10 +372,53 @@ export function BrowserRouter(props) {
|
|
|
308
372
|
}
|
|
309
373
|
else if (mode === "navigate" && href) {
|
|
310
374
|
e.preventDefault();
|
|
375
|
+
if (preferBack) {
|
|
376
|
+
const lastState = state.history.length > 1 && state.history[state.history.length - 2];
|
|
377
|
+
if (lastState) {
|
|
378
|
+
const doesMatch = preferBack === "exact" ? isEqual(href, lastState.uri) : isSamePathname(href, lastState.uri);
|
|
379
|
+
if (doesMatch) {
|
|
380
|
+
history.back();
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
311
385
|
api.navigate(href);
|
|
312
386
|
}
|
|
313
387
|
},
|
|
314
388
|
emitEvent,
|
|
389
|
+
restoreRoute(route) {
|
|
390
|
+
const stack = state.history;
|
|
391
|
+
// Is the route in our history stack? (going back)
|
|
392
|
+
const index = stack.findIndex((item) => item.id === route.id);
|
|
393
|
+
if (index >= 0) {
|
|
394
|
+
return doRouteTransition({
|
|
395
|
+
url: route.uri,
|
|
396
|
+
route,
|
|
397
|
+
goingBack: true,
|
|
398
|
+
history: stack.slice(0, index),
|
|
399
|
+
restoreState: route.returnState,
|
|
400
|
+
shouldPush: false,
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
// Is the route in our history _cache_? (probably going forward)
|
|
404
|
+
if (historyCache.has(route.id)) {
|
|
405
|
+
return doRouteTransition({
|
|
406
|
+
url: route.uri,
|
|
407
|
+
route,
|
|
408
|
+
goingBack: false,
|
|
409
|
+
history: stack,
|
|
410
|
+
restoreState: route.returnState,
|
|
411
|
+
shouldPush: false,
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
return doRouteTransition({
|
|
415
|
+
url: route.uri,
|
|
416
|
+
goingBack: false,
|
|
417
|
+
history: stack,
|
|
418
|
+
restoreState: route.returnState,
|
|
419
|
+
shouldPush: false,
|
|
420
|
+
});
|
|
421
|
+
},
|
|
315
422
|
};
|
|
316
423
|
return {
|
|
317
424
|
api,
|
|
@@ -340,6 +447,7 @@ export function BrowserRouter(props) {
|
|
|
340
447
|
// Handle popState
|
|
341
448
|
// const router = useRouterStore.getState()
|
|
342
449
|
const onPopState = (e) => {
|
|
450
|
+
// console.log("Popped", e.state)
|
|
343
451
|
internals.poppedState?.(document.location.href, e.state ?? {});
|
|
344
452
|
};
|
|
345
453
|
window.addEventListener("popstate", onPopState);
|
|
@@ -347,5 +455,12 @@ export function BrowserRouter(props) {
|
|
|
347
455
|
window.removeEventListener("popstate", onPopState);
|
|
348
456
|
};
|
|
349
457
|
}, []);
|
|
458
|
+
useEffect(() => {
|
|
459
|
+
props.onReady?.();
|
|
460
|
+
}, []);
|
|
461
|
+
clientRouter = {
|
|
462
|
+
state: routerState,
|
|
463
|
+
api,
|
|
464
|
+
};
|
|
350
465
|
return (_jsx(RouterContext.Provider, { value: api, children: _jsx(RouterStateContext.Provider, { value: routerState, children: _jsx(AppRenderer, {}) }) }));
|
|
351
466
|
}
|
|
@@ -8,5 +8,6 @@ type Props = PropsWithChildren<{
|
|
|
8
8
|
*
|
|
9
9
|
* The optional 'fallback' prop can be used to show a loading state or placeholder content while the client bundle is loading.
|
|
10
10
|
*/
|
|
11
|
-
export declare function ClientOnly(props: Props): string | number | boolean | import("react
|
|
11
|
+
export declare function ClientOnly(props: Props): string | number | boolean | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
|
|
12
12
|
export {};
|
|
13
|
+
//# sourceMappingURL=ClientOnly.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientOnly.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/ClientOnly.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAGnD,KAAK,KAAK,GAAG,iBAAiB,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAC,CAAA;AAEF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,oHAMtC"}
|
|
@@ -1,9 +1,25 @@
|
|
|
1
|
-
import { ComponentPropsWithRef, ElementType, ReactElement } from "react";
|
|
2
|
-
type Props<T extends ElementType = "a"> = NoInfer<Omit<ComponentPropsWithRef<T>, "href">> & {
|
|
1
|
+
import { ComponentPropsWithRef, ElementType, MouseEvent, ReactElement } from "react";
|
|
2
|
+
type Props<T extends ElementType = "a"> = NoInfer<Omit<ComponentPropsWithRef<T>, "href" | "target">> & {
|
|
3
3
|
href?: string | null;
|
|
4
4
|
target?: string | null;
|
|
5
5
|
as?: T;
|
|
6
|
+
preferBack?: boolean | "exact";
|
|
6
7
|
};
|
|
8
|
+
export declare function useLinkProps<T extends ElementType = "a">(props: Exclude<Props<T>, "as">, ref?: React.Ref<HTMLAnchorElement>): ({
|
|
9
|
+
ref: import("react").Ref<HTMLAnchorElement> | undefined;
|
|
10
|
+
} & Exclude<Props<T>, "as"> & {
|
|
11
|
+
href: string | undefined;
|
|
12
|
+
onClick: (e: MouseEvent) => void;
|
|
13
|
+
}) | ({
|
|
14
|
+
ref: import("react").Ref<HTMLAnchorElement> | undefined;
|
|
15
|
+
"data-active": boolean | "path" | "query" | "exact" | undefined;
|
|
16
|
+
"data-child-active": boolean | undefined;
|
|
17
|
+
"data-pending": "path" | "query" | "exact" | undefined;
|
|
18
|
+
} & Exclude<Props<T>, "as"> & {
|
|
19
|
+
href: string;
|
|
20
|
+
onMouseEnter: (e: MouseEvent) => void;
|
|
21
|
+
onClick: (e: MouseEvent) => void;
|
|
22
|
+
});
|
|
7
23
|
export declare const Link: <T extends ElementType = "a">(props: Props<T>) => ReactElement;
|
|
8
24
|
/**
|
|
9
25
|
* Provides information about the given href parameter, such as whether it is active, whether a child page is active, or whether it is loading.
|
|
@@ -24,3 +40,4 @@ export declare function useLinkState(href: string): {
|
|
|
24
40
|
pending: "path" | "query" | "exact" | undefined;
|
|
25
41
|
};
|
|
26
42
|
export {};
|
|
43
|
+
//# sourceMappingURL=Link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAsC,MAAM,OAAO,CAAA;AASxH,KAAK,KAAK,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG;IACrG,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,EAAE,CAAC,EAAE,CAAC,CAAA;IACN,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAC/B,CAAA;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EACtD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAC9B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;;;;iBAOjB,UAAU;;;;;;;;sBAgBP,UAAU;iBASf,UAAU;GAK1B;AAED,eAAO,MAAM,IAAI,EAIX,CAAC,CAA2B,SAAjB,WAAW,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,CAAA;AAKpE;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;EA6BxC"}
|
|
@@ -1,33 +1,50 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { forwardRef, useMemo } from "react";
|
|
1
|
+
import { createElement, forwardRef, useMemo } from "react";
|
|
3
2
|
import { parseURL, resolveURL, withoutTrailingSlash } from "ufo";
|
|
4
3
|
import { useIsSSR } from "../hooks/useIsSSR.js";
|
|
5
4
|
import { useRouter } from "../hooks/useRouter.js";
|
|
6
|
-
import { isSameOrigin } from "../utils.js";
|
|
5
|
+
import { addTrailingSlash, getLinkHandlerMode, isSameOrigin } from "../utils.js";
|
|
7
6
|
import { useRoute } from "../hooks/useRoute.js";
|
|
8
7
|
import { useRouterState } from "../hooks/useRouterState.js";
|
|
9
|
-
export
|
|
10
|
-
const Comp = props.as || "a";
|
|
8
|
+
export function useLinkProps(props, ref) {
|
|
11
9
|
if (env.admin) {
|
|
12
|
-
return
|
|
10
|
+
return {
|
|
11
|
+
ref: ref,
|
|
12
|
+
...props,
|
|
13
|
+
href: props.href ?? undefined,
|
|
14
|
+
onClick: (e) => {
|
|
13
15
|
props.onClick?.(e);
|
|
14
16
|
e.preventDefault();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
else {
|
|
18
|
-
const preload = useRouter((r) => r.preload);
|
|
19
|
-
const handleClickEvent = useRouter((r) => r.handleClickEvent);
|
|
20
|
-
const state = useLinkState(props.href ?? "");
|
|
21
|
-
return (_jsx(Comp, { ref: ref, "data-active": state.active ?? undefined, "data-child-active": state.childActive ?? undefined, "data-pending": state.pending ?? undefined, ...props, href: props.href ?? undefined, onMouseEnter: (e) => {
|
|
22
|
-
if (props.onMouseEnter) {
|
|
23
|
-
props.onMouseEnter(e);
|
|
24
|
-
}
|
|
25
|
-
preload(props.href);
|
|
26
|
-
}, onClick: (e) => {
|
|
27
|
-
props.onClick?.(e);
|
|
28
|
-
handleClickEvent(e, props.href ?? undefined);
|
|
29
|
-
} }));
|
|
17
|
+
},
|
|
18
|
+
};
|
|
30
19
|
}
|
|
20
|
+
const router = useRouter();
|
|
21
|
+
const state = useLinkState(props.href ?? "");
|
|
22
|
+
return {
|
|
23
|
+
ref: ref,
|
|
24
|
+
"data-active": state.active ?? undefined,
|
|
25
|
+
"data-child-active": state.childActive ?? undefined,
|
|
26
|
+
"data-pending": state.pending ?? undefined,
|
|
27
|
+
...props,
|
|
28
|
+
href: addTrailingSlash(props.href),
|
|
29
|
+
onMouseEnter: (e) => {
|
|
30
|
+
if (props.onMouseEnter) {
|
|
31
|
+
props.onMouseEnter(e);
|
|
32
|
+
}
|
|
33
|
+
const mode = getLinkHandlerMode(e, props.href);
|
|
34
|
+
if (mode.mode === "navigate") {
|
|
35
|
+
router.preload(props.href);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
onClick: (e) => {
|
|
39
|
+
props.onClick?.(e);
|
|
40
|
+
router.handleClickEvent(e, props.href ?? undefined, props.preferBack);
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export const Link = forwardRef(({ preferBack, as, ...props }, ref) => {
|
|
45
|
+
const Comp = as || "a";
|
|
46
|
+
const finalProps = useLinkProps(props, ref);
|
|
47
|
+
return createElement(Comp, finalProps);
|
|
31
48
|
});
|
|
32
49
|
// @ts-ignore
|
|
33
50
|
Link.displayName = "Link";
|
|
@@ -55,8 +72,8 @@ export function useLinkState(href) {
|
|
|
55
72
|
}
|
|
56
73
|
const hrefUrl = parseURL(resolveURL(href));
|
|
57
74
|
const active = route ? compareUri(route, hrefUrl) : undefined;
|
|
58
|
-
const childActive = !active && route ? isSubpath(hrefUrl.pathname, route.pathname) : undefined;
|
|
59
|
-
const pending = pendingRoute ? compareUri(pendingRoute, hrefUrl) : undefined;
|
|
75
|
+
const childActive = !active && route ? isSubpath(hrefUrl.pathname, route.pathname) || undefined : undefined;
|
|
76
|
+
const pending = pendingRoute ? compareUri(pendingRoute, hrefUrl) || undefined : undefined;
|
|
60
77
|
return {
|
|
61
78
|
active,
|
|
62
79
|
childActive,
|
|
@@ -84,6 +101,9 @@ function compareUri(route, href) {
|
|
|
84
101
|
}
|
|
85
102
|
}
|
|
86
103
|
function isSubpath(parentPath, childPath) {
|
|
104
|
+
if (parentPath === "/" || childPath === "/") {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
87
107
|
if (withoutTrailingSlash(parentPath) === withoutTrailingSlash(childPath)) {
|
|
88
108
|
return false;
|
|
89
109
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HTMLProps, JSX } from "react";
|
|
2
|
+
type Props<T extends keyof JSX.IntrinsicElements> = {
|
|
3
|
+
as?: T;
|
|
4
|
+
} & HTMLProps<T>;
|
|
5
|
+
/**
|
|
6
|
+
* Use this component to wrap any HTML element that contains <a> tags that are not already handled by the router.
|
|
7
|
+
*/
|
|
8
|
+
export declare function NativeLinkHandler<T extends keyof JSX.IntrinsicElements = "div">({ as, ...props }: Props<T>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=NativeLinkHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeLinkHandler.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/NativeLinkHandler.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAGtD,KAAK,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,IAAI;IAClD,EAAE,CAAC,EAAE,CAAC,CAAA;CACP,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AAEhB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,2CAqB1G"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRouter } from "../hooks/useRouter";
|
|
3
|
+
/**
|
|
4
|
+
* Use this component to wrap any HTML element that contains <a> tags that are not already handled by the router.
|
|
5
|
+
*/
|
|
6
|
+
export function NativeLinkHandler({ as, ...props }) {
|
|
7
|
+
const handleClickEvent = useRouter((r) => r.handleClickEvent);
|
|
8
|
+
const Comp = (as ?? "div");
|
|
9
|
+
return (_jsx(Comp, { ...props, onClick: (e) => {
|
|
10
|
+
if (props.onClick)
|
|
11
|
+
props.onClick(e);
|
|
12
|
+
if (e.target instanceof HTMLAnchorElement) {
|
|
13
|
+
const link = e.target;
|
|
14
|
+
handleClickEvent?.(e, link.href);
|
|
15
|
+
}
|
|
16
|
+
else if (e.target instanceof HTMLElement) {
|
|
17
|
+
const link = e.target.closest("a");
|
|
18
|
+
if (link) {
|
|
19
|
+
handleClickEvent?.(e, link.href);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
} }));
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/RouteRenderer.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAOxC,eAAO,MAAM,WAAW,oFAatB,CAAA;AAEF,wBAAgB,SAAS,4CAGxB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,2CA8BxD;yBA9Be,YAAY"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { memo,
|
|
2
|
+
import { memo, useMemo } from "react";
|
|
3
|
+
import { RouteErrorBoundary } from "../../../utils/RouteErrorBoundary.js";
|
|
3
4
|
import { RouteItemContext } from "../context.js";
|
|
4
5
|
import { useRouter } from "../hooks/useRouter.js";
|
|
5
6
|
import { useRouterState } from "../hooks/useRouterState.js";
|
|
@@ -9,7 +10,7 @@ export const AppRenderer = memo(() => {
|
|
|
9
10
|
const app = useMemo(() => {
|
|
10
11
|
return (_jsx(AppComponent, { ...appData, children: _jsx(MainRoute, {}) }));
|
|
11
12
|
}, [AppComponent, appData]);
|
|
12
|
-
return
|
|
13
|
+
return _jsx(RouteItemContext.Provider, { value: activeRoute, children: app });
|
|
13
14
|
});
|
|
14
15
|
export function MainRoute() {
|
|
15
16
|
const activeRoute = useRouterState((s) => s.activeRoute);
|
|
@@ -20,9 +21,22 @@ export function RouteDisplay(props) {
|
|
|
20
21
|
if (!Component) {
|
|
21
22
|
console.error("No component for route");
|
|
22
23
|
}
|
|
24
|
+
const router = useRouter();
|
|
23
25
|
return useMemo(() => {
|
|
24
26
|
let child = !!Component && _jsx(Component, { ...props.route.props });
|
|
25
|
-
|
|
27
|
+
if (router.isAI) {
|
|
28
|
+
child = _jsx("div", { id: "ai-page-contents", children: child });
|
|
29
|
+
}
|
|
30
|
+
return (_jsx(RouteErrorBoundary, { route: props.route, onError: (error, errorInfo) => {
|
|
31
|
+
if (env.client) {
|
|
32
|
+
if (error.message.includes("Failed to fetch dynamically imported module")) {
|
|
33
|
+
router.emitEvent({
|
|
34
|
+
type: "error:component-load-failed",
|
|
35
|
+
error,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}, children: _jsx(RouteItemContext.Provider, { value: props.route, children: child }) }));
|
|
26
40
|
}, [Component, props.route, props.route]);
|
|
27
41
|
}
|
|
28
42
|
RouteDisplay.displayName = "RouteDisplay";
|
|
@@ -2,8 +2,11 @@ import { PropsWithChildren } from "react";
|
|
|
2
2
|
import { RouteLoader } from "../loader.js";
|
|
3
3
|
import { RouteState } from "../types.js";
|
|
4
4
|
type Props = PropsWithChildren<{
|
|
5
|
+
hostname?: string;
|
|
5
6
|
route: RouteState;
|
|
6
7
|
loader: RouteLoader;
|
|
8
|
+
isAI?: boolean;
|
|
7
9
|
}>;
|
|
8
10
|
export declare function SSRRouter(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
9
11
|
export {};
|
|
12
|
+
//# sourceMappingURL=SSRRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SSRRouter.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/SSRRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,MAAM,OAAO,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,KAAK,KAAK,GAAG,iBAAiB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAC,CAAA;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,2CAiBrC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Suspense } from "react";
|
|
3
2
|
import { RouterContext, RouterStateContext } from "../context.js";
|
|
4
3
|
import { useRouter } from "../hooks/useRouter.js";
|
|
5
4
|
import { useRouterState } from "../hooks/useRouterState.js";
|
|
@@ -8,7 +7,9 @@ export function SSRRouter(props) {
|
|
|
8
7
|
const router = useRouter();
|
|
9
8
|
const routerState = useRouterState();
|
|
10
9
|
router.loader = props.loader;
|
|
10
|
+
router.hostname = props.hostname;
|
|
11
|
+
router.isAI = props.isAI;
|
|
11
12
|
routerState.history = [props.route];
|
|
12
13
|
routerState.activeRoute = props.route;
|
|
13
|
-
return (_jsx(
|
|
14
|
+
return (_jsx(RouterContext.Provider, { value: router, children: _jsx(RouterStateContext.Provider, { value: routerState, children: _jsx(AppRenderer, {}) }) }));
|
|
14
15
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollRestoration.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/ScrollRestoration.tsx"],"names":[],"mappings":"AAEA,KAAK,KAAK,GAAG;IACX,2FAA2F;IAC3F,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,IAAI,CAAA;IACxF,4CAA4C;IAC5C,SAAS,CAAC,EAAE,cAAc,CAAA;CAC3B,CAAA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,QAiC7C"}
|
|
@@ -11,7 +11,10 @@ export function ScrollRestoration(props) {
|
|
|
11
11
|
}));
|
|
12
12
|
useRouterEvents((event) => {
|
|
13
13
|
if (event.type === "navigate:changed") {
|
|
14
|
-
//
|
|
14
|
+
// If the pathname and search term are the same, then we're on the same page
|
|
15
|
+
const isSameRoute = event.currentRoute.pathname === event.lastRoute.pathname && event.currentRoute.search === event.lastRoute.search;
|
|
16
|
+
if (isSameRoute)
|
|
17
|
+
return;
|
|
15
18
|
if (event.currentRoute.returnState) {
|
|
16
19
|
restore({
|
|
17
20
|
top: event.currentRoute.returnState.scrollTop ?? 0,
|