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.
Files changed (458) 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 +7 -4
  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 +28 -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 +77 -76
  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 +6 -5
  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 +136 -21
  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 +1 -1
  173. package/dist/app/lib/routing/components/Link.d.ts +19 -2
  174. package/dist/app/lib/routing/components/Link.d.ts.map +1 -0
  175. package/dist/app/lib/routing/components/Link.js +43 -23
  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 +1 -0
  192. package/dist/app/lib/routing/hooks/useIsSSR.d.ts.map +1 -0
  193. package/dist/app/lib/routing/hooks/useRestorableState.d.ts +3 -1
  194. package/dist/app/lib/routing/hooks/useRestorableState.d.ts.map +1 -0
  195. package/dist/app/lib/routing/hooks/useRoute.d.ts +16 -0
  196. package/dist/app/lib/routing/hooks/useRoute.d.ts.map +1 -0
  197. package/dist/app/lib/routing/hooks/useRoute.js +21 -0
  198. package/dist/app/lib/routing/hooks/useRouteMeta.d.ts +6 -0
  199. package/dist/app/lib/routing/hooks/useRouteMeta.d.ts.map +1 -0
  200. package/dist/app/lib/routing/hooks/useRouteMeta.js +9 -0
  201. package/dist/app/lib/routing/hooks/useRouteTransition.d.ts +1 -0
  202. package/dist/app/lib/routing/hooks/useRouteTransition.d.ts.map +1 -0
  203. package/dist/app/lib/routing/hooks/useRouter.d.ts +1 -0
  204. package/dist/app/lib/routing/hooks/useRouter.d.ts.map +1 -0
  205. package/dist/app/lib/routing/hooks/useRouterEvents.d.ts +1 -0
  206. package/dist/app/lib/routing/hooks/useRouterEvents.d.ts.map +1 -0
  207. package/dist/app/lib/routing/hooks/useRouterState.d.ts +1 -0
  208. package/dist/app/lib/routing/hooks/useRouterState.d.ts.map +1 -0
  209. package/dist/app/lib/routing/hooks/useSearchParams.d.ts +78 -6
  210. package/dist/app/lib/routing/hooks/useSearchParams.d.ts.map +1 -0
  211. package/dist/app/lib/routing/hooks/useSearchParams.js +75 -15
  212. package/dist/app/lib/routing/index.d.ts +3 -0
  213. package/dist/app/lib/routing/index.d.ts.map +1 -0
  214. package/dist/app/lib/routing/index.js +2 -0
  215. package/dist/app/lib/routing/loader.d.ts +1 -0
  216. package/dist/app/lib/routing/loader.d.ts.map +1 -0
  217. package/dist/app/lib/routing/loader.js +19 -10
  218. package/dist/app/lib/routing/types.d.ts +60 -12
  219. package/dist/app/lib/routing/types.d.ts.map +1 -0
  220. package/dist/app/lib/routing/utils.d.ts +7 -2
  221. package/dist/app/lib/routing/utils.d.ts.map +1 -0
  222. package/dist/app/lib/routing/utils.js +41 -4
  223. package/dist/app/lib/{hooks → runtime}/apiConfig.d.ts +11 -2
  224. package/dist/app/lib/runtime/apiConfig.d.ts.map +1 -0
  225. package/dist/app/lib/runtime/apiConfig.js +6 -0
  226. package/dist/app/lib/runtime/errorHandling.d.ts +40 -0
  227. package/dist/app/lib/runtime/errorHandling.d.ts.map +1 -0
  228. package/dist/app/lib/runtime/errorHandling.js +6 -0
  229. package/dist/app/lib/runtime/index.d.ts +3 -0
  230. package/dist/app/lib/runtime/index.d.ts.map +1 -0
  231. package/dist/app/lib/runtime/index.js +2 -0
  232. package/dist/app/lib/views/defineView.d.ts +2 -1
  233. package/dist/app/lib/views/defineView.d.ts.map +1 -0
  234. package/dist/app/lib/views/index.d.ts +1 -0
  235. package/dist/app/lib/views/index.d.ts.map +1 -0
  236. package/dist/app/server/index.d.ts +4 -1
  237. package/dist/app/server/index.d.ts.map +1 -0
  238. package/dist/app/server/index.js +3 -1
  239. package/dist/app/server/proxy-wp-admin.d.ts +2 -2
  240. package/dist/app/server/proxy-wp-admin.d.ts.map +1 -0
  241. package/dist/app/server/proxy-wp-admin.js +46 -13
  242. package/dist/app/server/render-ai-page.d.ts +13 -0
  243. package/dist/app/server/render-ai-page.d.ts.map +1 -0
  244. package/dist/app/server/render-ai-page.js +100 -0
  245. package/dist/app/server/render-ssr-page.d.ts +31 -3
  246. package/dist/app/server/render-ssr-page.d.ts.map +1 -0
  247. package/dist/app/server/render-ssr-page.js +226 -10
  248. package/dist/app/server/rpc.d.ts +60 -0
  249. package/dist/app/server/rpc.d.ts.map +1 -0
  250. package/dist/app/server/rpc.js +18 -0
  251. package/dist/app/server/server-context.d.ts +44 -6
  252. package/dist/app/server/server-context.d.ts.map +1 -0
  253. package/dist/app/server/server-context.js +334 -37
  254. package/dist/app/server/server-custom-config.d.ts +3 -0
  255. package/dist/app/server/server-custom-config.d.ts.map +1 -0
  256. package/dist/app/server/server-custom-config.js +1 -0
  257. package/dist/app/server/utils/content-security.d.ts +26 -0
  258. package/dist/app/server/utils/content-security.d.ts.map +1 -0
  259. package/dist/app/server/utils/content-security.js +124 -0
  260. package/dist/app/server/utils/headers.d.ts +1 -0
  261. package/dist/app/server/utils/headers.d.ts.map +1 -0
  262. package/dist/app/server/utils/replace-host.d.ts +2 -1
  263. package/dist/app/server/utils/replace-host.d.ts.map +1 -0
  264. package/dist/app/server/utils/replace-host.js +10 -2
  265. package/dist/app/server/utils/swr-cache.d.ts +5 -0
  266. package/dist/app/server/utils/swr-cache.d.ts.map +1 -0
  267. package/dist/app/server/utils/swr-cache.js +31 -0
  268. package/dist/app/utils/APIProvider.d.ts +3 -0
  269. package/dist/app/utils/APIProvider.d.ts.map +1 -0
  270. package/dist/app/utils/APIProvider.js +5 -0
  271. package/dist/app/utils/BlockErrorBoundary.d.ts +20 -0
  272. package/dist/app/utils/BlockErrorBoundary.d.ts.map +1 -0
  273. package/dist/app/utils/BlockErrorBoundary.js +38 -0
  274. package/dist/app/utils/ErrorMessage.d.ts +6 -0
  275. package/dist/app/utils/ErrorMessage.d.ts.map +1 -0
  276. package/dist/app/utils/ErrorMessage.js +14 -0
  277. package/dist/app/utils/RouteErrorBoundary.d.ts +20 -0
  278. package/dist/app/utils/RouteErrorBoundary.d.ts.map +1 -0
  279. package/dist/app/utils/RouteErrorBoundary.js +41 -0
  280. package/dist/app/utils/asset-capture.d.ts +3 -0
  281. package/dist/app/utils/asset-capture.d.ts.map +1 -0
  282. package/dist/app/utils/asset-capture.js +5 -0
  283. package/dist/app/utils/hydration-debugger.d.ts +14 -0
  284. package/dist/app/utils/hydration-debugger.d.ts.map +1 -0
  285. package/dist/app/utils/hydration-debugger.js +11 -0
  286. package/dist/app/utils/query-client.d.ts +3 -0
  287. package/dist/app/utils/query-client.d.ts.map +1 -0
  288. package/dist/app/utils/query-client.js +5 -1
  289. package/dist/app/utils/query-monitor.d.ts +27 -0
  290. package/dist/app/utils/query-monitor.d.ts.map +1 -0
  291. package/dist/app/utils/query-monitor.js +7 -0
  292. package/dist/app/utils/trpc-client.d.ts +3 -0
  293. package/dist/app/utils/trpc-client.d.ts.map +1 -0
  294. package/dist/app/utils/trpc-client.js +39 -0
  295. package/dist/app/utils/wp.d.ts +11 -10
  296. package/dist/app/utils/wp.d.ts.map +1 -0
  297. package/dist/node/cli/cli-mode.d.ts +1 -0
  298. package/dist/node/cli/cli-mode.d.ts.map +1 -0
  299. package/dist/node/cli/cli-worker.d.ts +1 -0
  300. package/dist/node/cli/cli-worker.d.ts.map +1 -0
  301. package/dist/node/cli/cli-worker.js +7 -3
  302. package/dist/node/cli/cli.d.ts +1 -0
  303. package/dist/node/cli/cli.d.ts.map +1 -0
  304. package/dist/node/cli/cli.js +120 -7
  305. package/dist/node/cli/display/CLIApp.d.ts +1 -0
  306. package/dist/node/cli/display/CLIApp.d.ts.map +1 -0
  307. package/dist/node/cli/display/CLIApp.js +1 -1
  308. package/dist/node/cli/display/boot-cli-app.d.ts +1 -0
  309. package/dist/node/cli/display/boot-cli-app.d.ts.map +1 -0
  310. package/dist/node/cli/display/boot-cli-app.js +1 -1
  311. package/dist/node/cli/display/components/Fullscreen.d.ts +1 -0
  312. package/dist/node/cli/display/components/Fullscreen.d.ts.map +1 -0
  313. package/dist/node/cli/display/components/LogEntries.d.ts +1 -0
  314. package/dist/node/cli/display/components/LogEntries.d.ts.map +1 -0
  315. package/dist/node/cli/display/components/MenuItem.d.ts +1 -0
  316. package/dist/node/cli/display/components/MenuItem.d.ts.map +1 -0
  317. package/dist/node/cli/display/components/TextInput.d.ts +1 -0
  318. package/dist/node/cli/display/components/TextInput.d.ts.map +1 -0
  319. package/dist/node/cli/display/hooks/useManifest.d.ts +1 -0
  320. package/dist/node/cli/display/hooks/useManifest.d.ts.map +1 -0
  321. package/dist/node/cli/display/hooks/useStatefulLog.d.ts +1 -0
  322. package/dist/node/cli/display/hooks/useStatefulLog.d.ts.map +1 -0
  323. package/dist/node/cli/display/tools/BlockList.d.ts +1 -0
  324. package/dist/node/cli/display/tools/BlockList.d.ts.map +1 -0
  325. package/dist/node/cli/display/tools/CreateBlock.d.ts +1 -0
  326. package/dist/node/cli/display/tools/CreateBlock.d.ts.map +1 -0
  327. package/dist/node/cli/display/tools/cli-tool-list.d.ts +1 -0
  328. package/dist/node/cli/display/tools/cli-tool-list.d.ts.map +1 -0
  329. package/dist/node/cli/display/tools/cli-tools.d.ts +1 -0
  330. package/dist/node/cli/display/tools/cli-tools.d.ts.map +1 -0
  331. package/dist/node/cli/display/util/colors.d.ts +1 -0
  332. package/dist/node/cli/display/util/colors.d.ts.map +1 -0
  333. package/dist/node/cli/version.d.ts +2 -1
  334. package/dist/node/cli/version.d.ts.map +1 -0
  335. package/dist/node/cli/version.js +1 -1
  336. package/dist/node/compiler/build-vinxi.d.ts +1 -0
  337. package/dist/node/compiler/build-vinxi.d.ts.map +1 -0
  338. package/dist/node/compiler/build-vinxi.js +2 -1
  339. package/dist/node/compiler/bundler.admin.d.ts +1 -0
  340. package/dist/node/compiler/bundler.admin.d.ts.map +1 -0
  341. package/dist/node/compiler/bundler.admin.js +1 -0
  342. package/dist/node/compiler/bundler.frontend.d.ts +2 -0
  343. package/dist/node/compiler/bundler.frontend.d.ts.map +1 -0
  344. package/dist/node/compiler/bundler.frontend.js +26 -11
  345. package/dist/node/compiler/dev-server.d.ts +1 -0
  346. package/dist/node/compiler/dev-server.d.ts.map +1 -0
  347. package/dist/node/compiler/dev-server.js +17 -1
  348. package/dist/node/compiler/get-vite-config.d.ts +12 -1
  349. package/dist/node/compiler/get-vite-config.d.ts.map +1 -0
  350. package/dist/node/compiler/get-vite-config.js +173 -42
  351. package/dist/node/compiler/vinxi-app.d.ts +13 -0
  352. package/dist/node/compiler/vinxi-app.d.ts.map +1 -0
  353. package/dist/node/compiler/vinxi-app.js +142 -32
  354. package/dist/node/compiler/vinxi-codegen.d.ts +1 -0
  355. package/dist/node/compiler/vinxi-codegen.d.ts.map +1 -0
  356. package/dist/node/compiler/vinxi-codegen.js +371 -108
  357. package/dist/node/graphql/graphql-codegen.d.ts +12 -1
  358. package/dist/node/graphql/graphql-codegen.d.ts.map +1 -0
  359. package/dist/node/graphql/graphql-codegen.js +239 -37
  360. package/dist/node/graphql/graphql-schema-loader.d.ts +3 -1
  361. package/dist/node/graphql/graphql-schema-loader.d.ts.map +1 -0
  362. package/dist/node/graphql/graphql-schema-loader.js +5 -16
  363. package/dist/node/graphql/plugins/gql-plugin-files.d.ts +3 -1
  364. package/dist/node/graphql/plugins/gql-plugin-files.d.ts.map +1 -0
  365. package/dist/node/graphql/plugins/gql-plugin-files.js +3 -2
  366. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts +1 -0
  367. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts.map +1 -0
  368. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts +1 -0
  369. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts.map +1 -0
  370. package/dist/node/graphql/plugins/gql-plugin-queries.js +2 -2
  371. package/dist/node/graphql/query-files-loader.d.ts +4 -0
  372. package/dist/node/graphql/query-files-loader.d.ts.map +1 -0
  373. package/dist/node/graphql/query-files-loader.js +5 -0
  374. package/dist/node/graphql/wp-info-query.d.ts +1 -0
  375. package/dist/node/graphql/wp-info-query.d.ts.map +1 -0
  376. package/dist/node/project/config.d.ts +207 -73
  377. package/dist/node/project/config.d.ts.map +1 -0
  378. package/dist/node/project/config.js +94 -20
  379. package/dist/node/project/eddev-build-file.d.ts +1 -0
  380. package/dist/node/project/eddev-build-file.d.ts.map +1 -0
  381. package/dist/node/project/eddev-build-file.js +4 -2
  382. package/dist/node/project/env.d.ts +5 -0
  383. package/dist/node/project/env.d.ts.map +1 -0
  384. package/dist/node/project/env.js +1 -0
  385. package/dist/node/project/favicons.d.ts +1 -1
  386. package/dist/node/project/favicons.d.ts.map +1 -0
  387. package/dist/node/project/favicons.js +1 -1
  388. package/dist/node/project/manifest/block-manifest.d.ts +1 -0
  389. package/dist/node/project/manifest/block-manifest.d.ts.map +1 -0
  390. package/dist/node/project/manifest/block-manifest.js +6 -2
  391. package/dist/node/project/manifest/field-manifest.d.ts +1 -0
  392. package/dist/node/project/manifest/field-manifest.d.ts.map +1 -0
  393. package/dist/node/project/manifest/manifest.d.ts +2 -0
  394. package/dist/node/project/manifest/manifest.d.ts.map +1 -0
  395. package/dist/node/project/manifest/manifest.js +14 -10
  396. package/dist/node/project/manifest/routes-manifest.d.ts +21 -0
  397. package/dist/node/project/manifest/routes-manifest.d.ts.map +1 -0
  398. package/dist/node/project/manifest/routes-manifest.js +74 -0
  399. package/dist/node/project/manifest/view-manifest.d.ts +1 -0
  400. package/dist/node/project/manifest/view-manifest.d.ts.map +1 -0
  401. package/dist/node/project/manifest/widget-manifest.d.ts +1 -0
  402. package/dist/node/project/manifest/widget-manifest.d.ts.map +1 -0
  403. package/dist/node/project/project.d.ts +12 -0
  404. package/dist/node/project/project.d.ts.map +1 -0
  405. package/dist/node/project/project.js +57 -3
  406. package/dist/node/project/wp-info.d.ts +3 -0
  407. package/dist/node/project/wp-info.d.ts.map +1 -0
  408. package/dist/node/project/wp-info.js +13 -1
  409. package/dist/node/storybook/index.d.ts +3 -0
  410. package/dist/node/storybook/index.d.ts.map +1 -0
  411. package/dist/node/storybook/index.js +13 -0
  412. package/dist/node/types/block-type.d.ts +57 -25
  413. package/dist/node/types/block-type.d.ts.map +1 -0
  414. package/dist/node/types/block-type.js +4 -1
  415. package/dist/node/types/view-type.d.ts +8 -7
  416. package/dist/node/types/view-type.d.ts.map +1 -0
  417. package/dist/node/utils/fetch-wp.d.ts +2 -0
  418. package/dist/node/utils/fetch-wp.d.ts.map +1 -0
  419. package/dist/node/utils/fetch-wp.js +28 -0
  420. package/dist/node/utils/format-zod-error.d.ts +1 -0
  421. package/dist/node/utils/format-zod-error.d.ts.map +1 -0
  422. package/dist/node/utils/fs-codegen.d.ts +4 -0
  423. package/dist/node/utils/fs-codegen.d.ts.map +1 -0
  424. package/dist/node/utils/fs-codegen.js +10 -2
  425. package/dist/node/utils/fs.d.ts +5 -0
  426. package/dist/node/utils/fs.d.ts.map +1 -0
  427. package/dist/node/utils/get-repo-info.d.ts +1 -0
  428. package/dist/node/utils/get-repo-info.d.ts.map +1 -0
  429. package/dist/node/utils/helpers.d.ts +1 -0
  430. package/dist/node/utils/helpers.d.ts.map +1 -0
  431. package/dist/node/utils/highlight-code.d.ts +1 -0
  432. package/dist/node/utils/highlight-code.d.ts.map +1 -0
  433. package/dist/node/utils/is-deploying.d.ts +1 -0
  434. package/dist/node/utils/is-deploying.d.ts.map +1 -0
  435. package/dist/node/utils/is-deploying.js +1 -1
  436. package/dist/node/utils/report-builder.d.ts +1 -0
  437. package/dist/node/utils/report-builder.d.ts.map +1 -0
  438. package/dist/node/utils/self-signed-cert.d.ts +5 -0
  439. package/dist/node/utils/self-signed-cert.d.ts.map +1 -0
  440. package/dist/node/utils/self-signed-cert.js +28 -4
  441. package/dist/node/utils/stateful-log.d.ts +1 -0
  442. package/dist/node/utils/stateful-log.d.ts.map +1 -0
  443. package/dist/node/utils/stateful-log.js +2 -0
  444. package/dist/node/utils/ts-export-extractor.d.ts +1 -0
  445. package/dist/node/utils/ts-export-extractor.d.ts.map +1 -0
  446. package/dist/node/utils/watch-file-tree.d.ts +18 -3
  447. package/dist/node/utils/watch-file-tree.d.ts.map +1 -0
  448. package/dist/node/utils/watch-file-tree.js +12 -5
  449. package/package.json +42 -25
  450. package/tsconfig.app.json +10 -5
  451. package/tsconfig.node.json +3 -2
  452. package/types.app.d.ts +2 -0
  453. package/types.meta.d.ts +449 -136
  454. package/dist/app/lib/blocks/ErrorBoundaryFrontend.d.ts +0 -15
  455. package/dist/app/lib/blocks/ErrorBoundaryFrontend.js +0 -35
  456. package/dist/app/lib/hooks/apiConfig.js +0 -4
  457. package/dist/app/lib/hooks/usePageLoad.d.ts +0 -6
  458. 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,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 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();
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
- if (!data.view) {
186
- console.error("No `view` property in route data");
187
- return;
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
- const data = await loader.loadRouteData(link.pathname).then((data) => {
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
- if (mode === "ignore") {
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/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"}
@@ -8,7 +8,7 @@ import { useIsSSR } from "../hooks/useIsSSR.js";
8
8
  */
9
9
  export function ClientOnly(props) {
10
10
  const mounted = useIsSSR();
11
- if (!mounted)
11
+ if (mounted)
12
12
  return props.fallback ?? null;
13
13
  return _jsx(Fragment, { children: props.children });
14
14
  }
@@ -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 { 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
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 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
+ 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
+ }
@@ -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"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { memo, Suspense, useMemo } from "react";
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 (_jsx(Suspense, { children: _jsx(RouteItemContext.Provider, { value: activeRoute, children: app }) }));
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
- return _jsx(RouteItemContext.Provider, { value: props.route, children: child });
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(Suspense, { children: _jsx(RouterContext.Provider, { value: router, children: _jsx(RouterStateContext.Provider, { value: routerState, children: _jsx(AppRenderer, {}) }) }) }));
14
+ return (_jsx(RouterContext.Provider, { value: router, children: _jsx(RouterStateContext.Provider, { value: routerState, children: _jsx(AppRenderer, {}) }) }));
14
15
  }
@@ -13,3 +13,4 @@ type Props = {
13
13
  */
14
14
  export declare function ScrollRestoration(props: Props): null;
15
15
  export {};
16
+ //# sourceMappingURL=ScrollRestoration.d.ts.map
@@ -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
- // console.log("Changed! Restoring scroll", event.currentRoute)
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,