eddev 2.0.0-beta.23 → 2.0.0-beta.231

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.
Files changed (463) hide show
  1. package/css/editor-styles.css +4 -0
  2. package/dist/app/entry/HydrationOverlay.d.ts +2 -0
  3. package/dist/app/entry/HydrationOverlay.d.ts.map +1 -0
  4. package/dist/app/entry/HydrationOverlay.js +2 -0
  5. package/dist/app/entry/MetaTags.d.ts +8 -0
  6. package/dist/app/entry/MetaTags.d.ts.map +1 -0
  7. package/dist/app/entry/MetaTags.js +30 -0
  8. package/dist/app/entry/boot-admin.d.ts +1 -0
  9. package/dist/app/entry/boot-admin.d.ts.map +1 -0
  10. package/dist/app/entry/boot-admin.js +7 -3
  11. package/dist/app/entry/hydration-script.d.ts +2 -0
  12. package/dist/app/entry/hydration-script.d.ts.map +1 -0
  13. package/dist/app/entry/hydration-script.js +18 -0
  14. package/dist/app/entry/spa-root.d.ts +1 -0
  15. package/dist/app/entry/spa-root.d.ts.map +1 -0
  16. package/dist/app/entry/spa-root.js +3 -5
  17. package/dist/app/entry/ssr-root-client.d.ts +4 -1
  18. package/dist/app/entry/ssr-root-client.d.ts.map +1 -0
  19. package/dist/app/entry/ssr-root-client.js +18 -6
  20. package/dist/app/entry/ssr-root.d.ts +6 -4
  21. package/dist/app/entry/ssr-root.d.ts.map +1 -0
  22. package/dist/app/entry/ssr-root.js +20 -19
  23. package/dist/app/lib/admin/defineField.d.ts +1 -0
  24. package/dist/app/lib/admin/defineField.d.ts.map +1 -0
  25. package/dist/app/lib/admin/defineWidget.d.ts +1 -0
  26. package/dist/app/lib/admin/defineWidget.d.ts.map +1 -0
  27. package/dist/app/lib/admin/index.d.ts +1 -0
  28. package/dist/app/lib/admin/index.d.ts.map +1 -0
  29. package/dist/app/lib/admin/installFieldTypes.d.ts +1 -0
  30. package/dist/app/lib/admin/installFieldTypes.d.ts.map +1 -0
  31. package/dist/app/lib/admin/installFieldTypes.js +2 -0
  32. package/dist/app/lib/admin/runWidgets.d.ts +1 -0
  33. package/dist/app/lib/admin/runWidgets.d.ts.map +1 -0
  34. package/dist/app/lib/admin/runWidgets.js +7 -2
  35. package/dist/app/lib/blocks/ContentBlocks.d.ts +8 -5
  36. package/dist/app/lib/blocks/ContentBlocks.d.ts.map +1 -0
  37. package/dist/app/lib/blocks/ContentBlocks.js +16 -3
  38. package/dist/app/lib/blocks/EditableText.d.ts +30 -5
  39. package/dist/app/lib/blocks/EditableText.d.ts.map +1 -0
  40. package/dist/app/lib/blocks/EditableText.js +34 -5
  41. package/dist/app/lib/blocks/InnerBlocks.d.ts +21 -6
  42. package/dist/app/lib/blocks/InnerBlocks.d.ts.map +1 -0
  43. package/dist/app/lib/blocks/InnerBlocks.js +73 -25
  44. package/dist/app/lib/blocks/SlotBlocks.d.ts +8 -0
  45. package/dist/app/lib/blocks/SlotBlocks.d.ts.map +1 -0
  46. package/dist/app/lib/blocks/SlotBlocks.js +46 -0
  47. package/dist/app/lib/blocks/block-utils.d.ts +2 -1
  48. package/dist/app/lib/blocks/block-utils.d.ts.map +1 -0
  49. package/dist/app/lib/blocks/block-utils.js +3 -1
  50. package/dist/app/lib/blocks/builtin-blocks.d.ts +2 -0
  51. package/dist/app/lib/blocks/builtin-blocks.d.ts.map +1 -0
  52. package/dist/app/lib/blocks/builtin-blocks.js +55 -0
  53. package/dist/app/lib/blocks/defineBlock.d.ts +4 -0
  54. package/dist/app/lib/blocks/defineBlock.d.ts.map +1 -0
  55. package/dist/app/lib/blocks/defineBlock.js +9 -0
  56. package/dist/app/lib/blocks/editor/EditorHighlights.d.ts +8 -0
  57. package/dist/app/lib/blocks/editor/EditorHighlights.d.ts.map +1 -0
  58. package/dist/app/lib/blocks/editor/EditorHighlights.js +164 -0
  59. package/dist/app/lib/blocks/editor/EditorSupport.d.ts +1 -0
  60. package/dist/app/lib/blocks/editor/EditorSupport.d.ts.map +1 -0
  61. package/dist/app/lib/blocks/editor/EditorSupport.js +17 -10
  62. package/dist/app/lib/blocks/editor/ErrorBoundaryEditor.d.ts +2 -1
  63. package/dist/app/lib/blocks/editor/ErrorBoundaryEditor.d.ts.map +1 -0
  64. package/dist/app/lib/blocks/editor/block-templates.d.ts +8 -1
  65. package/dist/app/lib/blocks/editor/block-templates.d.ts.map +1 -0
  66. package/dist/app/lib/blocks/editor/block-templates.js +71 -2
  67. package/dist/app/lib/blocks/editor/blocks-by-tag.d.ts +1 -0
  68. package/dist/app/lib/blocks/editor/blocks-by-tag.d.ts.map +1 -0
  69. package/dist/app/lib/blocks/editor/controls.d.ts +1 -0
  70. package/dist/app/lib/blocks/editor/controls.d.ts.map +1 -0
  71. package/dist/app/lib/blocks/editor/create-block.d.ts +10 -0
  72. package/dist/app/lib/blocks/editor/create-block.d.ts.map +1 -0
  73. package/dist/app/lib/blocks/editor/create-block.js +13 -0
  74. package/dist/app/lib/blocks/editor/editor-config.d.ts +77 -8
  75. package/dist/app/lib/blocks/editor/editor-config.d.ts.map +1 -0
  76. package/dist/app/lib/blocks/editor/editor-config.js +29 -62
  77. package/dist/app/lib/blocks/editor/installGutenbergHooks.d.ts +4 -0
  78. package/dist/app/lib/blocks/editor/installGutenbergHooks.d.ts.map +1 -0
  79. package/dist/app/lib/blocks/editor/installGutenbergHooks.js +126 -21
  80. package/dist/app/lib/blocks/editor/root-blocks.d.ts +7 -0
  81. package/dist/app/lib/blocks/editor/root-blocks.d.ts.map +1 -0
  82. package/dist/app/lib/blocks/editor/root-blocks.js +30 -0
  83. package/dist/app/lib/blocks/editor/usePostEditor.d.ts +12 -1
  84. package/dist/app/lib/blocks/editor/usePostEditor.d.ts.map +1 -0
  85. package/dist/app/lib/blocks/editor/usePostEditor.js +33 -13
  86. package/dist/app/lib/blocks/index.d.ts +8 -5
  87. package/dist/app/lib/blocks/index.d.ts.map +1 -0
  88. package/dist/app/lib/blocks/index.js +7 -5
  89. package/dist/app/lib/blocks/inline-editing.d.ts +10 -0
  90. package/dist/app/lib/blocks/inline-editing.d.ts.map +1 -0
  91. package/dist/app/lib/blocks/inline-editing.js +12 -2
  92. package/dist/app/lib/devtools/components/BreakpointIndicator.d.ts +1 -0
  93. package/dist/app/lib/devtools/components/BreakpointIndicator.d.ts.map +1 -0
  94. package/dist/app/lib/devtools/components/BreakpointIndicator.js +2 -2
  95. package/dist/app/lib/devtools/components/DevUI.d.ts +1 -0
  96. package/dist/app/lib/devtools/components/DevUI.d.ts.map +1 -0
  97. package/dist/app/lib/devtools/components/DevUI.js +3 -2
  98. package/dist/app/lib/devtools/components/GridIndicator.d.ts +2 -0
  99. package/dist/app/lib/devtools/components/GridIndicator.d.ts.map +1 -0
  100. package/dist/app/lib/devtools/components/GridIndicator.js +29 -0
  101. package/dist/app/lib/devtools/dev-tools-store.d.ts +1 -0
  102. package/dist/app/lib/devtools/dev-tools-store.d.ts.map +1 -0
  103. package/dist/app/lib/devtools/hooks/usePersistState.d.ts +2 -1
  104. package/dist/app/lib/devtools/hooks/usePersistState.d.ts.map +1 -0
  105. package/dist/app/lib/devtools/hooks/usePersistState.js +11 -2
  106. package/dist/app/lib/devtools/hooks/useTailwind.d.ts +1378 -333
  107. package/dist/app/lib/devtools/hooks/useTailwind.d.ts.map +1 -0
  108. package/dist/app/lib/devtools/index.d.ts +1 -0
  109. package/dist/app/lib/devtools/index.d.ts.map +1 -0
  110. package/dist/app/lib/devtools/loader.d.ts +1 -0
  111. package/dist/app/lib/devtools/loader.d.ts.map +1 -0
  112. package/dist/app/lib/devtools/loader.js +8 -7
  113. package/dist/app/lib/devtools/tailwind.config.d.ts +1 -0
  114. package/dist/app/lib/devtools/tailwind.config.d.ts.map +1 -0
  115. package/dist/app/lib/devtools/useQueryDebug.d.ts +8 -1
  116. package/dist/app/lib/devtools/useQueryDebug.d.ts.map +1 -0
  117. package/dist/app/lib/devtools/useQueryDebug.js +5 -8
  118. package/dist/app/lib/dynamic/dynamic.d.ts +2 -1
  119. package/dist/app/lib/dynamic/dynamic.d.ts.map +1 -0
  120. package/dist/app/lib/dynamic/dynamic.js +5 -1
  121. package/dist/app/lib/dynamic/index.d.ts +1 -0
  122. package/dist/app/lib/dynamic/index.d.ts.map +1 -0
  123. package/dist/app/lib/hooks/index.d.ts +3 -3
  124. package/dist/app/lib/hooks/index.d.ts.map +1 -0
  125. package/dist/app/lib/hooks/index.js +2 -3
  126. package/dist/app/lib/hooks/{queryUtils.d.ts → query-hooks.d.ts} +42 -3
  127. package/dist/app/lib/hooks/query-hooks.d.ts.map +1 -0
  128. package/dist/app/lib/hooks/{queryUtils.js → query-hooks.js} +90 -28
  129. package/dist/app/lib/hooks/useAppData.d.ts +1 -0
  130. package/dist/app/lib/hooks/useAppData.d.ts.map +1 -0
  131. package/dist/app/lib/hooks/useAppData.js +11 -0
  132. package/dist/app/lib/hooks/useRPC.d.ts +1 -4
  133. package/dist/app/lib/hooks/useRPC.d.ts.map +1 -0
  134. package/dist/app/lib/hooks/useRPC.js +0 -8
  135. package/dist/app/lib/integrations/gravityforms/index.d.ts +3 -0
  136. package/dist/app/lib/integrations/gravityforms/index.d.ts.map +1 -0
  137. package/dist/app/lib/integrations/gravityforms/index.js +2 -0
  138. package/dist/app/lib/integrations/gravityforms/types.d.ts +145 -0
  139. package/dist/app/lib/integrations/gravityforms/types.d.ts.map +1 -0
  140. package/dist/app/lib/integrations/gravityforms/types.js +1 -0
  141. package/dist/app/lib/integrations/gravityforms/useGravityForm.d.ts +31 -0
  142. package/dist/app/lib/integrations/gravityforms/useGravityForm.d.ts.map +1 -0
  143. package/dist/app/lib/integrations/gravityforms/useGravityForm.js +295 -0
  144. package/dist/app/lib/internal/finalize-rpc.d.ts +18 -0
  145. package/dist/app/lib/internal/finalize-rpc.d.ts.map +1 -0
  146. package/dist/app/lib/internal/finalize-rpc.js +3 -0
  147. package/dist/app/lib/internal/index.d.ts +2 -0
  148. package/dist/app/lib/internal/index.d.ts.map +1 -0
  149. package/dist/app/lib/internal/index.js +1 -0
  150. package/dist/app/lib/internal/internal-store.d.ts +1 -0
  151. package/dist/app/lib/internal/internal-store.d.ts.map +1 -0
  152. package/dist/app/lib/internal/read-admin-manifest.d.ts +1 -0
  153. package/dist/app/lib/internal/read-admin-manifest.d.ts.map +1 -0
  154. package/dist/app/lib/internal/read-block-manifest.d.ts +2 -0
  155. package/dist/app/lib/internal/read-block-manifest.d.ts.map +1 -0
  156. package/dist/app/lib/internal/read-block-manifest.js +7 -0
  157. package/dist/app/lib/internal/read-view-manifest.d.ts +7 -4
  158. package/dist/app/lib/internal/read-view-manifest.d.ts.map +1 -0
  159. package/dist/app/lib/internal/read-view-manifest.js +18 -0
  160. package/dist/app/lib/legacy-stitches/createStitches.d.ts +510 -1
  161. package/dist/app/lib/legacy-stitches/createStitches.d.ts.map +1 -0
  162. package/dist/app/lib/legacy-stitches/index.d.ts +1 -0
  163. package/dist/app/lib/legacy-stitches/index.d.ts.map +1 -0
  164. package/dist/app/lib/routing/components/BackButton.d.ts +50 -0
  165. package/dist/app/lib/routing/components/BackButton.d.ts.map +1 -0
  166. package/dist/app/lib/routing/components/BackButton.js +47 -0
  167. package/dist/app/lib/routing/components/BrowserRouter.d.ts +10 -1
  168. package/dist/app/lib/routing/components/BrowserRouter.d.ts.map +1 -0
  169. package/dist/app/lib/routing/components/BrowserRouter.js +170 -25
  170. package/dist/app/lib/routing/components/ClientOnly.d.ts +2 -1
  171. package/dist/app/lib/routing/components/ClientOnly.d.ts.map +1 -0
  172. package/dist/app/lib/routing/components/ClientOnly.js +3 -3
  173. package/dist/app/lib/routing/components/Link.d.ts +22 -2
  174. package/dist/app/lib/routing/components/Link.d.ts.map +1 -0
  175. package/dist/app/lib/routing/components/Link.js +53 -25
  176. package/dist/app/lib/routing/components/NativeLinkHandler.d.ts +10 -0
  177. package/dist/app/lib/routing/components/NativeLinkHandler.d.ts.map +1 -0
  178. package/dist/app/lib/routing/components/NativeLinkHandler.js +23 -0
  179. package/dist/app/lib/routing/components/RouteRenderer.d.ts +1 -0
  180. package/dist/app/lib/routing/components/RouteRenderer.d.ts.map +1 -0
  181. package/dist/app/lib/routing/components/RouteRenderer.js +17 -3
  182. package/dist/app/lib/routing/components/SSRRouter.d.ts +3 -0
  183. package/dist/app/lib/routing/components/SSRRouter.d.ts.map +1 -0
  184. package/dist/app/lib/routing/components/SSRRouter.js +3 -2
  185. package/dist/app/lib/routing/components/ScrollRestoration.d.ts +1 -0
  186. package/dist/app/lib/routing/components/ScrollRestoration.d.ts.map +1 -0
  187. package/dist/app/lib/routing/components/ScrollRestoration.js +4 -1
  188. package/dist/app/lib/routing/context.d.ts +9 -5
  189. package/dist/app/lib/routing/context.d.ts.map +1 -0
  190. package/dist/app/lib/routing/context.js +12 -95
  191. package/dist/app/lib/routing/hooks/{useIsSSR.d.ts → useHydrating.d.ts} +7 -0
  192. package/dist/app/lib/routing/hooks/useHydrating.d.ts.map +1 -0
  193. package/dist/app/lib/routing/hooks/{useIsSSR.js → useHydrating.js} +9 -1
  194. package/dist/app/lib/routing/hooks/useRestorableState.d.ts +3 -1
  195. package/dist/app/lib/routing/hooks/useRestorableState.d.ts.map +1 -0
  196. package/dist/app/lib/routing/hooks/useRoute.d.ts +16 -0
  197. package/dist/app/lib/routing/hooks/useRoute.d.ts.map +1 -0
  198. package/dist/app/lib/routing/hooks/useRoute.js +21 -0
  199. package/dist/app/lib/routing/hooks/useRouteMeta.d.ts +6 -0
  200. package/dist/app/lib/routing/hooks/useRouteMeta.d.ts.map +1 -0
  201. package/dist/app/lib/routing/hooks/useRouteMeta.js +9 -0
  202. package/dist/app/lib/routing/hooks/useRouteTransition.d.ts +1 -0
  203. package/dist/app/lib/routing/hooks/useRouteTransition.d.ts.map +1 -0
  204. package/dist/app/lib/routing/hooks/useRouter.d.ts +1 -0
  205. package/dist/app/lib/routing/hooks/useRouter.d.ts.map +1 -0
  206. package/dist/app/lib/routing/hooks/useRouterEvents.d.ts +1 -0
  207. package/dist/app/lib/routing/hooks/useRouterEvents.d.ts.map +1 -0
  208. package/dist/app/lib/routing/hooks/useRouterState.d.ts +1 -0
  209. package/dist/app/lib/routing/hooks/useRouterState.d.ts.map +1 -0
  210. package/dist/app/lib/routing/hooks/useSearchParams.d.ts +78 -6
  211. package/dist/app/lib/routing/hooks/useSearchParams.d.ts.map +1 -0
  212. package/dist/app/lib/routing/hooks/useSearchParams.js +75 -15
  213. package/dist/app/lib/routing/index.d.ts +5 -1
  214. package/dist/app/lib/routing/index.d.ts.map +1 -0
  215. package/dist/app/lib/routing/index.js +4 -1
  216. package/dist/app/lib/routing/loader.d.ts +1 -0
  217. package/dist/app/lib/routing/loader.d.ts.map +1 -0
  218. package/dist/app/lib/routing/loader.js +19 -10
  219. package/dist/app/lib/routing/types.d.ts +73 -13
  220. package/dist/app/lib/routing/types.d.ts.map +1 -0
  221. package/dist/app/lib/routing/utils.d.ts +7 -2
  222. package/dist/app/lib/routing/utils.d.ts.map +1 -0
  223. package/dist/app/lib/routing/utils.js +41 -4
  224. package/dist/app/lib/{hooks → runtime}/apiConfig.d.ts +11 -2
  225. package/dist/app/lib/runtime/apiConfig.d.ts.map +1 -0
  226. package/dist/app/lib/runtime/apiConfig.js +6 -0
  227. package/dist/app/lib/runtime/errorHandling.d.ts +40 -0
  228. package/dist/app/lib/runtime/errorHandling.d.ts.map +1 -0
  229. package/dist/app/lib/runtime/errorHandling.js +6 -0
  230. package/dist/app/lib/runtime/index.d.ts +3 -0
  231. package/dist/app/lib/runtime/index.d.ts.map +1 -0
  232. package/dist/app/lib/runtime/index.js +2 -0
  233. package/dist/app/lib/views/defineView.d.ts +2 -1
  234. package/dist/app/lib/views/defineView.d.ts.map +1 -0
  235. package/dist/app/lib/views/index.d.ts +1 -0
  236. package/dist/app/lib/views/index.d.ts.map +1 -0
  237. package/dist/app/server/index.d.ts +4 -1
  238. package/dist/app/server/index.d.ts.map +1 -0
  239. package/dist/app/server/index.js +3 -1
  240. package/dist/app/server/proxy-wp-admin.d.ts +2 -2
  241. package/dist/app/server/proxy-wp-admin.d.ts.map +1 -0
  242. package/dist/app/server/proxy-wp-admin.js +46 -13
  243. package/dist/app/server/render-ai-page.d.ts +13 -0
  244. package/dist/app/server/render-ai-page.d.ts.map +1 -0
  245. package/dist/app/server/render-ai-page.js +102 -0
  246. package/dist/app/server/render-ssr-page.d.ts +32 -3
  247. package/dist/app/server/render-ssr-page.d.ts.map +1 -0
  248. package/dist/app/server/render-ssr-page.js +237 -10
  249. package/dist/app/server/rpc.d.ts +52 -0
  250. package/dist/app/server/rpc.d.ts.map +1 -0
  251. package/dist/app/server/rpc.js +18 -0
  252. package/dist/app/server/server-context.d.ts +53 -7
  253. package/dist/app/server/server-context.d.ts.map +1 -0
  254. package/dist/app/server/server-context.js +375 -37
  255. package/dist/app/server/server-custom-config.d.ts +3 -0
  256. package/dist/app/server/server-custom-config.d.ts.map +1 -0
  257. package/dist/app/server/server-custom-config.js +1 -0
  258. package/dist/app/server/utils/content-security.d.ts +26 -0
  259. package/dist/app/server/utils/content-security.d.ts.map +1 -0
  260. package/dist/app/server/utils/content-security.js +124 -0
  261. package/dist/app/server/utils/headers.d.ts +1 -0
  262. package/dist/app/server/utils/headers.d.ts.map +1 -0
  263. package/dist/app/server/utils/replace-host.d.ts +2 -1
  264. package/dist/app/server/utils/replace-host.d.ts.map +1 -0
  265. package/dist/app/server/utils/replace-host.js +10 -2
  266. package/dist/app/server/utils/swr-cache.d.ts +5 -0
  267. package/dist/app/server/utils/swr-cache.d.ts.map +1 -0
  268. package/dist/app/server/utils/swr-cache.js +31 -0
  269. package/dist/app/utils/APIProvider.d.ts +3 -0
  270. package/dist/app/utils/APIProvider.d.ts.map +1 -0
  271. package/dist/app/utils/APIProvider.js +5 -0
  272. package/dist/app/utils/BlockErrorBoundary.d.ts +20 -0
  273. package/dist/app/utils/BlockErrorBoundary.d.ts.map +1 -0
  274. package/dist/app/utils/BlockErrorBoundary.js +38 -0
  275. package/dist/app/utils/ErrorMessage.d.ts +6 -0
  276. package/dist/app/utils/ErrorMessage.d.ts.map +1 -0
  277. package/dist/app/utils/ErrorMessage.js +14 -0
  278. package/dist/app/utils/RouteErrorBoundary.d.ts +20 -0
  279. package/dist/app/utils/RouteErrorBoundary.d.ts.map +1 -0
  280. package/dist/app/utils/RouteErrorBoundary.js +41 -0
  281. package/dist/app/utils/asset-capture.d.ts +3 -0
  282. package/dist/app/utils/asset-capture.d.ts.map +1 -0
  283. package/dist/app/utils/asset-capture.js +5 -0
  284. package/dist/app/utils/hydration-debugger.d.ts +14 -0
  285. package/dist/app/utils/hydration-debugger.d.ts.map +1 -0
  286. package/dist/app/utils/hydration-debugger.js +11 -0
  287. package/dist/app/utils/query-client.d.ts +3 -0
  288. package/dist/app/utils/query-client.d.ts.map +1 -0
  289. package/dist/app/utils/query-client.js +5 -1
  290. package/dist/app/utils/query-monitor.d.ts +27 -0
  291. package/dist/app/utils/query-monitor.d.ts.map +1 -0
  292. package/dist/app/utils/query-monitor.js +7 -0
  293. package/dist/app/utils/trpc-client.d.ts +3 -0
  294. package/dist/app/utils/trpc-client.d.ts.map +1 -0
  295. package/dist/app/utils/trpc-client.js +39 -0
  296. package/dist/app/utils/wp.d.ts +11 -10
  297. package/dist/app/utils/wp.d.ts.map +1 -0
  298. package/dist/node/cli/cli-mode.d.ts +1 -0
  299. package/dist/node/cli/cli-mode.d.ts.map +1 -0
  300. package/dist/node/cli/cli-worker.d.ts +1 -0
  301. package/dist/node/cli/cli-worker.d.ts.map +1 -0
  302. package/dist/node/cli/cli-worker.js +7 -3
  303. package/dist/node/cli/cli.d.ts +1 -0
  304. package/dist/node/cli/cli.d.ts.map +1 -0
  305. package/dist/node/cli/cli.js +120 -7
  306. package/dist/node/cli/display/CLIApp.d.ts +1 -0
  307. package/dist/node/cli/display/CLIApp.d.ts.map +1 -0
  308. package/dist/node/cli/display/CLIApp.js +1 -1
  309. package/dist/node/cli/display/boot-cli-app.d.ts +1 -0
  310. package/dist/node/cli/display/boot-cli-app.d.ts.map +1 -0
  311. package/dist/node/cli/display/boot-cli-app.js +1 -1
  312. package/dist/node/cli/display/components/Fullscreen.d.ts +1 -0
  313. package/dist/node/cli/display/components/Fullscreen.d.ts.map +1 -0
  314. package/dist/node/cli/display/components/LogEntries.d.ts +1 -0
  315. package/dist/node/cli/display/components/LogEntries.d.ts.map +1 -0
  316. package/dist/node/cli/display/components/MenuItem.d.ts +1 -0
  317. package/dist/node/cli/display/components/MenuItem.d.ts.map +1 -0
  318. package/dist/node/cli/display/components/TextInput.d.ts +1 -0
  319. package/dist/node/cli/display/components/TextInput.d.ts.map +1 -0
  320. package/dist/node/cli/display/hooks/useManifest.d.ts +1 -0
  321. package/dist/node/cli/display/hooks/useManifest.d.ts.map +1 -0
  322. package/dist/node/cli/display/hooks/useStatefulLog.d.ts +1 -0
  323. package/dist/node/cli/display/hooks/useStatefulLog.d.ts.map +1 -0
  324. package/dist/node/cli/display/tools/BlockList.d.ts +1 -0
  325. package/dist/node/cli/display/tools/BlockList.d.ts.map +1 -0
  326. package/dist/node/cli/display/tools/CreateBlock.d.ts +1 -0
  327. package/dist/node/cli/display/tools/CreateBlock.d.ts.map +1 -0
  328. package/dist/node/cli/display/tools/cli-tool-list.d.ts +1 -0
  329. package/dist/node/cli/display/tools/cli-tool-list.d.ts.map +1 -0
  330. package/dist/node/cli/display/tools/cli-tools.d.ts +1 -0
  331. package/dist/node/cli/display/tools/cli-tools.d.ts.map +1 -0
  332. package/dist/node/cli/display/util/colors.d.ts +1 -0
  333. package/dist/node/cli/display/util/colors.d.ts.map +1 -0
  334. package/dist/node/cli/version.d.ts +2 -1
  335. package/dist/node/cli/version.d.ts.map +1 -0
  336. package/dist/node/cli/version.js +1 -1
  337. package/dist/node/compiler/build-vinxi.d.ts +1 -0
  338. package/dist/node/compiler/build-vinxi.d.ts.map +1 -0
  339. package/dist/node/compiler/build-vinxi.js +2 -1
  340. package/dist/node/compiler/bundler.admin.d.ts +1 -0
  341. package/dist/node/compiler/bundler.admin.d.ts.map +1 -0
  342. package/dist/node/compiler/bundler.admin.js +1 -0
  343. package/dist/node/compiler/bundler.frontend.d.ts +2 -0
  344. package/dist/node/compiler/bundler.frontend.d.ts.map +1 -0
  345. package/dist/node/compiler/bundler.frontend.js +26 -11
  346. package/dist/node/compiler/cache-config.d.ts +3 -0
  347. package/dist/node/compiler/cache-config.d.ts.map +1 -0
  348. package/dist/node/compiler/cache-config.js +16 -0
  349. package/dist/node/compiler/dev-server.d.ts +4 -1
  350. package/dist/node/compiler/dev-server.d.ts.map +1 -0
  351. package/dist/node/compiler/dev-server.js +34 -11
  352. package/dist/node/compiler/get-vite-config.d.ts +12 -1
  353. package/dist/node/compiler/get-vite-config.d.ts.map +1 -0
  354. package/dist/node/compiler/get-vite-config.js +176 -42
  355. package/dist/node/compiler/vinxi-app.d.ts +13 -0
  356. package/dist/node/compiler/vinxi-app.d.ts.map +1 -0
  357. package/dist/node/compiler/vinxi-app.js +151 -32
  358. package/dist/node/compiler/vinxi-codegen.d.ts +1 -0
  359. package/dist/node/compiler/vinxi-codegen.d.ts.map +1 -0
  360. package/dist/node/compiler/vinxi-codegen.js +394 -108
  361. package/dist/node/graphql/graphql-codegen.d.ts +12 -1
  362. package/dist/node/graphql/graphql-codegen.d.ts.map +1 -0
  363. package/dist/node/graphql/graphql-codegen.js +239 -37
  364. package/dist/node/graphql/graphql-schema-loader.d.ts +3 -1
  365. package/dist/node/graphql/graphql-schema-loader.d.ts.map +1 -0
  366. package/dist/node/graphql/graphql-schema-loader.js +5 -16
  367. package/dist/node/graphql/plugins/gql-plugin-files.d.ts +3 -1
  368. package/dist/node/graphql/plugins/gql-plugin-files.d.ts.map +1 -0
  369. package/dist/node/graphql/plugins/gql-plugin-files.js +3 -2
  370. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts +1 -0
  371. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts.map +1 -0
  372. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts +1 -0
  373. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts.map +1 -0
  374. package/dist/node/graphql/plugins/gql-plugin-queries.js +2 -2
  375. package/dist/node/graphql/query-files-loader.d.ts +4 -0
  376. package/dist/node/graphql/query-files-loader.d.ts.map +1 -0
  377. package/dist/node/graphql/query-files-loader.js +5 -0
  378. package/dist/node/graphql/wp-info-query.d.ts +1 -0
  379. package/dist/node/graphql/wp-info-query.d.ts.map +1 -0
  380. package/dist/node/project/config.d.ts +260 -69
  381. package/dist/node/project/config.d.ts.map +1 -0
  382. package/dist/node/project/config.js +100 -21
  383. package/dist/node/project/eddev-build-file.d.ts +1 -0
  384. package/dist/node/project/eddev-build-file.d.ts.map +1 -0
  385. package/dist/node/project/eddev-build-file.js +4 -2
  386. package/dist/node/project/env.d.ts +5 -0
  387. package/dist/node/project/env.d.ts.map +1 -0
  388. package/dist/node/project/env.js +1 -0
  389. package/dist/node/project/favicons.d.ts +1 -1
  390. package/dist/node/project/favicons.d.ts.map +1 -0
  391. package/dist/node/project/favicons.js +1 -1
  392. package/dist/node/project/manifest/block-manifest.d.ts +1 -0
  393. package/dist/node/project/manifest/block-manifest.d.ts.map +1 -0
  394. package/dist/node/project/manifest/block-manifest.js +6 -2
  395. package/dist/node/project/manifest/field-manifest.d.ts +1 -0
  396. package/dist/node/project/manifest/field-manifest.d.ts.map +1 -0
  397. package/dist/node/project/manifest/manifest.d.ts +2 -0
  398. package/dist/node/project/manifest/manifest.d.ts.map +1 -0
  399. package/dist/node/project/manifest/manifest.js +14 -10
  400. package/dist/node/project/manifest/routes-manifest.d.ts +21 -0
  401. package/dist/node/project/manifest/routes-manifest.d.ts.map +1 -0
  402. package/dist/node/project/manifest/routes-manifest.js +74 -0
  403. package/dist/node/project/manifest/view-manifest.d.ts +1 -0
  404. package/dist/node/project/manifest/view-manifest.d.ts.map +1 -0
  405. package/dist/node/project/manifest/widget-manifest.d.ts +1 -0
  406. package/dist/node/project/manifest/widget-manifest.d.ts.map +1 -0
  407. package/dist/node/project/project.d.ts +12 -0
  408. package/dist/node/project/project.d.ts.map +1 -0
  409. package/dist/node/project/project.js +55 -1
  410. package/dist/node/project/wp-info.d.ts +3 -0
  411. package/dist/node/project/wp-info.d.ts.map +1 -0
  412. package/dist/node/project/wp-info.js +10 -1
  413. package/dist/node/storybook/index.d.ts +3 -0
  414. package/dist/node/storybook/index.d.ts.map +1 -0
  415. package/dist/node/storybook/index.js +13 -0
  416. package/dist/node/types/block-type.d.ts +37 -5
  417. package/dist/node/types/block-type.d.ts.map +1 -0
  418. package/dist/node/types/block-type.js +4 -1
  419. package/dist/node/types/view-type.d.ts +1 -0
  420. package/dist/node/types/view-type.d.ts.map +1 -0
  421. package/dist/node/utils/fetch-wp.d.ts +2 -0
  422. package/dist/node/utils/fetch-wp.d.ts.map +1 -0
  423. package/dist/node/utils/fetch-wp.js +28 -0
  424. package/dist/node/utils/format-zod-error.d.ts +1 -0
  425. package/dist/node/utils/format-zod-error.d.ts.map +1 -0
  426. package/dist/node/utils/fs-codegen.d.ts +4 -0
  427. package/dist/node/utils/fs-codegen.d.ts.map +1 -0
  428. package/dist/node/utils/fs-codegen.js +10 -2
  429. package/dist/node/utils/fs.d.ts +6 -1
  430. package/dist/node/utils/fs.d.ts.map +1 -0
  431. package/dist/node/utils/get-repo-info.d.ts +1 -0
  432. package/dist/node/utils/get-repo-info.d.ts.map +1 -0
  433. package/dist/node/utils/helpers.d.ts +1 -0
  434. package/dist/node/utils/helpers.d.ts.map +1 -0
  435. package/dist/node/utils/highlight-code.d.ts +1 -0
  436. package/dist/node/utils/highlight-code.d.ts.map +1 -0
  437. package/dist/node/utils/is-deploying.d.ts +1 -0
  438. package/dist/node/utils/is-deploying.d.ts.map +1 -0
  439. package/dist/node/utils/is-deploying.js +1 -1
  440. package/dist/node/utils/report-builder.d.ts +7 -6
  441. package/dist/node/utils/report-builder.d.ts.map +1 -0
  442. package/dist/node/utils/self-signed-cert.d.ts +5 -0
  443. package/dist/node/utils/self-signed-cert.d.ts.map +1 -0
  444. package/dist/node/utils/self-signed-cert.js +28 -4
  445. package/dist/node/utils/stateful-log.d.ts +1 -0
  446. package/dist/node/utils/stateful-log.d.ts.map +1 -0
  447. package/dist/node/utils/stateful-log.js +2 -0
  448. package/dist/node/utils/ts-export-extractor.d.ts +1 -0
  449. package/dist/node/utils/ts-export-extractor.d.ts.map +1 -0
  450. package/dist/node/utils/watch-file-tree.d.ts +18 -3
  451. package/dist/node/utils/watch-file-tree.d.ts.map +1 -0
  452. package/dist/node/utils/watch-file-tree.js +12 -5
  453. package/package.json +40 -24
  454. package/tsconfig.app.json +10 -5
  455. package/tsconfig.node.json +3 -2
  456. package/types.app.d.ts +2 -0
  457. package/types.env.d.ts +3 -0
  458. package/types.meta.d.ts +449 -136
  459. package/dist/app/lib/blocks/ErrorBoundaryFrontend.d.ts +0 -15
  460. package/dist/app/lib/blocks/ErrorBoundaryFrontend.js +0 -35
  461. package/dist/app/lib/hooks/apiConfig.js +0 -4
  462. package/dist/app/lib/hooks/usePageLoad.d.ts +0 -6
  463. 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 Props = PropsWithChildren<{}>;
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,EAGL,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,2CAgezC"}
@@ -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,19 @@ function historyStateForRoute(route) {
54
66
  state: route.returnState,
55
67
  };
56
68
  }
57
- let index = 0;
58
- function getHistoryId() {
59
- return String(index++);
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();
76
+ const pendingNavigationClick = useRef(null);
66
77
  const [routerState, setRouterState] = useState(() => ({
67
78
  activeRoute: initialRoute,
68
79
  history: [initialRoute],
69
80
  blockers: [],
70
81
  }));
71
- if (lastRouterState !== routerState) {
72
- lastRouterState = routerState;
73
- }
74
82
  const { internals, api } = useMemo(() => {
75
83
  let subscribers = new Set();
76
84
  let state = routerState;
@@ -79,8 +87,27 @@ export function BrowserRouter(props) {
79
87
  ...state,
80
88
  ...update,
81
89
  };
90
+ if (state?.activeRoute?.meta?.tags) {
91
+ if (env.serverless) {
92
+ clientMetaTags.setMetaTags(state.activeRoute.meta.tags ?? []);
93
+ }
94
+ else {
95
+ const title = state.activeRoute.meta.tags.find((tag) => tag.tagName === "title")?.inner;
96
+ if (title)
97
+ document.title = title;
98
+ }
99
+ }
82
100
  setRouterState(state);
83
101
  };
102
+ // If a dynamic compojnent fails to load during a page transition, we need to reload the page
103
+ subscribers.add((event) => {
104
+ if (event.type === "error:component-load-failed") {
105
+ if (state?.pendingRoute) {
106
+ console.warn("Failed to load route component. May be a deployment mismatch.");
107
+ window.location.href = state.pendingRoute.uri;
108
+ }
109
+ }
110
+ });
84
111
  const internals = {
85
112
  transitionEnded: null,
86
113
  updateRoute: null,
@@ -172,6 +199,7 @@ export function BrowserRouter(props) {
172
199
  emitEvent({
173
200
  type: "navigate:start",
174
201
  link,
202
+ linkData: args.linkData,
175
203
  currentRoute: currentRoute,
176
204
  hasPreloadedData: hasRouteData,
177
205
  goingBack: !!args.goingBack,
@@ -181,11 +209,26 @@ export function BrowserRouter(props) {
181
209
  });
182
210
  if (cancelled)
183
211
  return;
184
- const data = await loader.loadRouteData(parseHrefPath(args.url));
185
- if (!data.view) {
186
- console.error("No `view` property in route data");
187
- return;
188
- }
212
+ const data = await loader.loadRouteData(parseHrefPath(args.url)).catch((err) => {
213
+ emitEvent({
214
+ type: "error",
215
+ url: args.url,
216
+ error: err,
217
+ critical: true,
218
+ linkData: args.linkData,
219
+ });
220
+ return {
221
+ view: "_error",
222
+ viewType: "react",
223
+ appData: loader.appData,
224
+ viewData: {
225
+ data: {
226
+ code: 500,
227
+ error: err,
228
+ },
229
+ },
230
+ };
231
+ });
189
232
  const lazyComponent = loader.getRouteComponent(data.view);
190
233
  if (!lazyComponent) {
191
234
  console.error(`No component found for view: ${data.view}`);
@@ -196,11 +239,13 @@ export function BrowserRouter(props) {
196
239
  hash: link.hash,
197
240
  search: "",
198
241
  query: link.query,
199
- pathname: link.pathname,
242
+ pathname: data.canonical ?? link.pathname,
200
243
  view: data.view,
201
244
  props: data.viewData?.data ?? {},
202
245
  component: lazyComponent,
203
246
  returnState: args.restoreState ?? {},
247
+ meta: getRouteMeta(data),
248
+ linkData: args.linkData,
204
249
  });
205
250
  setState({
206
251
  pendingRoute: route,
@@ -210,12 +255,14 @@ export function BrowserRouter(props) {
210
255
  currentRoute,
211
256
  loadedRoute: route,
212
257
  link,
258
+ linkData: args.linkData,
213
259
  });
214
260
  emitEvent({
215
261
  type: "navigate:will-change",
216
262
  currentRoute,
217
263
  loadedRoute: route,
218
264
  link,
265
+ linkData: args.linkData,
219
266
  });
220
267
  internals.transitionEnded = () => {
221
268
  internals.transitionEnded = null;
@@ -228,7 +275,18 @@ export function BrowserRouter(props) {
228
275
  currentRoute: route,
229
276
  lastRoute: currentRoute,
230
277
  link,
278
+ linkData: args.linkData,
231
279
  });
280
+ $routeMetaStore.data = route.meta;
281
+ pendingNavigationClick.current = null;
282
+ // Update the 'Edit Page' button, if there is one
283
+ if (route.meta.editLink) {
284
+ const button = document.querySelector("#wp-admin-bar-edit a");
285
+ if (button) {
286
+ button.setAttribute("href", route.meta.editLink);
287
+ button.innerHTML = "Edit Page";
288
+ }
289
+ }
232
290
  };
233
291
  startTransition(() => {
234
292
  pendingRoute.current = route;
@@ -240,13 +298,18 @@ export function BrowserRouter(props) {
240
298
  }
241
299
  const api = {
242
300
  loader: loader,
243
- async navigate(url) {
301
+ hostname: window?._PAGE_DATA?.hostname,
302
+ async navigate(url, args) {
244
303
  doRouteTransition({
245
304
  url: url,
246
305
  shouldPush: true,
247
306
  goingBack: false,
307
+ linkData: args?.linkData,
248
308
  });
249
309
  },
310
+ getState() {
311
+ return state;
312
+ },
250
313
  replaceHash(hash) {
251
314
  replaceRoute({
252
315
  ...getActiveRoute(),
@@ -257,6 +320,7 @@ export function BrowserRouter(props) {
257
320
  replaceRoute({
258
321
  ...getActiveRoute(),
259
322
  query,
323
+ returnState: captureState(),
260
324
  });
261
325
  },
262
326
  async prefetch(url) {
@@ -265,12 +329,12 @@ export function BrowserRouter(props) {
265
329
  if (loader.hasRouteData(link.pathname))
266
330
  return;
267
331
  emitEvent({ type: "preload:start", currentRoute: getActiveRoute(), link });
268
- const data = await loader.loadRouteData(link.pathname).then((data) => {
332
+ await loader.loadRouteData(link.pathname).then((data) => {
269
333
  emitEvent({ type: "preload:data-ready", currentRoute: getActiveRoute(), link, data });
270
334
  });
271
335
  }
272
336
  catch (err) {
273
- emitEvent({ type: "error", error: err, critical: false });
337
+ emitEvent({ type: "error", error: err, critical: false, linkData: undefined });
274
338
  }
275
339
  },
276
340
  async preload(url) {
@@ -288,7 +352,7 @@ export function BrowserRouter(props) {
288
352
  }
289
353
  }
290
354
  catch (err) {
291
- emitEvent({ type: "error", error: err, critical: false });
355
+ emitEvent({ type: "error", error: err, critical: false, linkData: undefined });
292
356
  }
293
357
  },
294
358
  subscribe(fn) {
@@ -297,9 +361,37 @@ export function BrowserRouter(props) {
297
361
  subscribers.delete(fn);
298
362
  };
299
363
  },
300
- handleClickEvent(e, originalHref) {
301
- const { mode, href } = getLinkHandlerMode(e, originalHref);
302
- if (mode === "ignore") {
364
+ handleClickEvent(e, originalHref, preferBack, eventTarget, linkData) {
365
+ const { mode, href, isSameUrl } = getLinkHandlerMode(e, originalHref, state.activeRoute);
366
+ let cancelled = false;
367
+ // If the same link has only just been clicked very recently, ignore it.
368
+ // Likely this is a double-click, or the page has taken a bit longer to load than the user expected.
369
+ if (pendingNavigationClick.current && pendingNavigationClick.current.href === href) {
370
+ const pendingAge = Date.now() - pendingNavigationClick.current.startTime;
371
+ if (pendingAge < 1000) {
372
+ e.preventDefault();
373
+ return;
374
+ }
375
+ }
376
+ else {
377
+ pendingNavigationClick.current = { startTime: Date.now(), href: href };
378
+ }
379
+ if (href) {
380
+ emitEvent({
381
+ type: "clicked",
382
+ currentRoute: getActiveRoute(),
383
+ link: parseRouteLink(href),
384
+ linkData,
385
+ mode,
386
+ href,
387
+ isSameUrl,
388
+ target: (eventTarget || e.currentTarget || e.target),
389
+ cancel() {
390
+ cancelled = true;
391
+ },
392
+ });
393
+ }
394
+ if (mode === "ignore" || cancelled) {
303
395
  e.preventDefault();
304
396
  return;
305
397
  }
@@ -308,10 +400,55 @@ export function BrowserRouter(props) {
308
400
  }
309
401
  else if (mode === "navigate" && href) {
310
402
  e.preventDefault();
311
- api.navigate(href);
403
+ if (preferBack) {
404
+ const lastState = state.history.length > 1 && state.history[state.history.length - 2];
405
+ if (lastState) {
406
+ const doesMatch = preferBack === "exact" ? isEqual(href, lastState.uri) : isSamePathname(href, lastState.uri);
407
+ if (doesMatch) {
408
+ history.back();
409
+ return;
410
+ }
411
+ }
412
+ }
413
+ api.navigate(href, {
414
+ linkData,
415
+ });
312
416
  }
313
417
  },
314
418
  emitEvent,
419
+ restoreRoute(route) {
420
+ const stack = state.history;
421
+ // Is the route in our history stack? (going back)
422
+ const index = stack.findIndex((item) => item.id === route.id);
423
+ if (index >= 0) {
424
+ return doRouteTransition({
425
+ url: route.uri,
426
+ route,
427
+ goingBack: true,
428
+ history: stack.slice(0, index),
429
+ restoreState: route.returnState,
430
+ shouldPush: false,
431
+ });
432
+ }
433
+ // Is the route in our history _cache_? (probably going forward)
434
+ if (historyCache.has(route.id)) {
435
+ return doRouteTransition({
436
+ url: route.uri,
437
+ route,
438
+ goingBack: false,
439
+ history: stack,
440
+ restoreState: route.returnState,
441
+ shouldPush: false,
442
+ });
443
+ }
444
+ return doRouteTransition({
445
+ url: route.uri,
446
+ goingBack: false,
447
+ history: stack,
448
+ restoreState: route.returnState,
449
+ shouldPush: false,
450
+ });
451
+ },
315
452
  };
316
453
  return {
317
454
  api,
@@ -340,6 +477,7 @@ export function BrowserRouter(props) {
340
477
  // Handle popState
341
478
  // const router = useRouterStore.getState()
342
479
  const onPopState = (e) => {
480
+ // console.log("Popped", e.state)
343
481
  internals.poppedState?.(document.location.href, e.state ?? {});
344
482
  };
345
483
  window.addEventListener("popstate", onPopState);
@@ -347,5 +485,12 @@ export function BrowserRouter(props) {
347
485
  window.removeEventListener("popstate", onPopState);
348
486
  };
349
487
  }, []);
488
+ useEffect(() => {
489
+ props.onReady?.();
490
+ }, []);
491
+ clientRouter = {
492
+ state: routerState,
493
+ api,
494
+ };
350
495
  return (_jsx(RouterContext.Provider, { value: api, children: _jsx(RouterStateContext.Provider, { value: routerState, children: _jsx(AppRenderer, {}) }) }));
351
496
  }
@@ -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/jsx-runtime").JSX.Element | Iterable<import("react").ReactNode> | null;
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,14 +1,14 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Fragment } from "react";
3
- import { useIsSSR } from "../hooks/useIsSSR.js";
3
+ import { useHydrating } from "../hooks/useHydrating.js";
4
4
  /**
5
5
  * Renders children, but only on the client.
6
6
  *
7
7
  * The optional 'fallback' prop can be used to show a loading state or placeholder content while the client bundle is loading.
8
8
  */
9
9
  export function ClientOnly(props) {
10
- const mounted = useIsSSR();
11
- if (!mounted)
10
+ const mounted = useHydrating();
11
+ if (mounted)
12
12
  return props.fallback ?? null;
13
13
  return _jsx(Fragment, { children: props.children });
14
14
  }
@@ -1,9 +1,28 @@
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
+ import { LinkClickData } from "../types.js";
3
+ type Props<T extends ElementType = "a"> = NoInfer<Omit<ComponentPropsWithRef<T>, "href" | "target">> & {
3
4
  href?: string | null;
4
5
  target?: string | null;
5
6
  as?: T;
7
+ preferBack?: boolean | "exact";
8
+ linkData?: LinkClickData;
6
9
  };
10
+ export declare function useLinkProps<T extends ElementType = "a">(props: Exclude<Props<T>, "as">, ref?: React.Ref<HTMLAnchorElement>): ({
11
+ ref: import("react").Ref<HTMLAnchorElement> | undefined;
12
+ "data-active": boolean | "path" | "query" | "exact" | undefined;
13
+ "data-child-active": boolean | undefined;
14
+ "data-pending": "path" | "query" | "exact" | undefined;
15
+ } & Exclude<Props<T>, "as"> & {
16
+ href: string;
17
+ onMouseEnter: (e: MouseEvent) => void;
18
+ onPointerDown: (e: PointerEvent) => void;
19
+ onClick: (e: MouseEvent) => void;
20
+ }) | ({
21
+ ref: import("react").Ref<HTMLAnchorElement> | undefined;
22
+ } & Exclude<Props<T>, "as"> & {
23
+ href: string | undefined;
24
+ onClick: (e: MouseEvent) => void;
25
+ });
7
26
  export declare const Link: <T extends ElementType = "a">(props: Props<T>) => ReactElement;
8
27
  /**
9
28
  * 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 +43,4 @@ export declare function useLinkState(href: string): {
24
43
  pending: "path" | "query" | "exact" | undefined;
25
44
  };
26
45
  export {};
46
+ //# 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;AAIxH,OAAO,EAAE,aAAa,EAAc,MAAM,aAAa,CAAA;AAKvD,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;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAA;CACzB,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;;;;;;;sBAuBd,UAAU;uBAOT,YAAY;iBAOlB,UAAU;;;;;iBA9BR,UAAU;GAwC5B;AAED,eAAO,MAAM,IAAI,EAIX,CAAC,CAAC,SAAS,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,58 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { forwardRef, useMemo } from "react";
1
+ import { createElement, forwardRef, useMemo } from "react";
3
2
  import { parseURL, resolveURL, withoutTrailingSlash } from "ufo";
4
- import { useIsSSR } from "../hooks/useIsSSR.js";
3
+ import { useHydrating } from "../hooks/useHydrating.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 const Link = forwardRef((props, ref) => {
10
- const Comp = props.as || "a";
8
+ export function useLinkProps(props, ref) {
11
9
  if (env.admin) {
12
- return (_jsx(Comp, { ref: ref, ...props, href: props.href ?? undefined, onClick: (e) => {
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
+ const finalProps = {
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
+ props.onMouseEnter?.(e);
31
+ const mode = getLinkHandlerMode(e, props.href);
32
+ if (mode.mode === "navigate") {
33
+ router.preload(props.href);
34
+ }
35
+ },
36
+ onPointerDown: (e) => {
37
+ props.onPointerDown?.(e);
38
+ const mode = getLinkHandlerMode(e, props.href);
39
+ if (mode.mode === "navigate") {
40
+ router.preload(props.href);
41
+ }
42
+ },
43
+ onClick: (e) => {
44
+ props.onClick?.(e);
45
+ router.handleClickEvent(e, props.href ?? undefined, props.preferBack, undefined, props.linkData);
46
+ },
47
+ };
48
+ delete finalProps.preferBack;
49
+ delete finalProps.linkData;
50
+ return finalProps;
51
+ }
52
+ export const Link = forwardRef(({ as, ...props }, ref) => {
53
+ const Comp = as || "a";
54
+ const finalProps = useLinkProps(props, ref);
55
+ return createElement(Comp, finalProps);
31
56
  });
32
57
  // @ts-ignore
33
58
  Link.displayName = "Link";
@@ -39,7 +64,7 @@ Link.displayName = "Link";
39
64
  export function useLinkState(href) {
40
65
  const route = useRoute();
41
66
  const pendingRoute = useRouterState((r) => r.pendingRoute);
42
- const isSSR = useIsSSR();
67
+ const isSSR = useHydrating();
43
68
  const state = useMemo(() => {
44
69
  // If we're in SSR mode, do a quick and dirty check, which relies on the href being relative.
45
70
  if (isSSR) {
@@ -55,8 +80,8 @@ export function useLinkState(href) {
55
80
  }
56
81
  const hrefUrl = parseURL(resolveURL(href));
57
82
  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;
83
+ const childActive = !active && route ? isSubpath(hrefUrl.pathname, route.pathname) || undefined : undefined;
84
+ const pending = pendingRoute ? compareUri(pendingRoute, hrefUrl) || undefined : undefined;
60
85
  return {
61
86
  active,
62
87
  childActive,
@@ -84,6 +109,9 @@ function compareUri(route, href) {
84
109
  }
85
110
  }
86
111
  function isSubpath(parentPath, childPath) {
112
+ if (parentPath === "/" || childPath === "/") {
113
+ return false;
114
+ }
87
115
  if (withoutTrailingSlash(parentPath) === withoutTrailingSlash(childPath)) {
88
116
  return false;
89
117
  }
@@ -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, false, link);
15
+ }
16
+ else if (e.target instanceof HTMLElement) {
17
+ const link = e.target.closest("a");
18
+ if (link) {
19
+ handleClickEvent?.(e, link.href, false, link);
20
+ }
21
+ }
22
+ } }));
23
+ }
@@ -7,3 +7,4 @@ export declare function RouteDisplay(props: {
7
7
  export declare namespace RouteDisplay {
8
8
  var displayName: string;
9
9
  }
10
+ //# sourceMappingURL=RouteRenderer.d.ts.map
@@ -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"}