eddev 2.0.0-beta.24 → 2.0.0-beta.241

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 (461) 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 +2 -0
  6. package/dist/app/entry/MetaTags.d.ts.map +1 -0
  7. package/dist/app/entry/MetaTags.js +27 -14
  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 +1 -0
  18. package/dist/app/entry/ssr-root-client.d.ts.map +1 -0
  19. package/dist/app/entry/ssr-root-client.js +16 -11
  20. package/dist/app/entry/ssr-root.d.ts +4 -3
  21. package/dist/app/entry/ssr-root.d.ts.map +1 -0
  22. package/dist/app/entry/ssr-root.js +15 -17
  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 +1 -0
  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 +1394 -349
  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} +96 -29
  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 +1 -0
  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 +7 -1
  168. package/dist/app/lib/routing/components/BrowserRouter.d.ts.map +1 -0
  169. package/dist/app/lib/routing/components/BrowserRouter.js +168 -31
  170. package/dist/app/lib/routing/components/ClientOnly.d.ts +1 -0
  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 +15 -1
  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 +2 -0
  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 +11 -0
  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 +1 -0
  200. package/dist/app/lib/routing/hooks/useRouteMeta.d.ts.map +1 -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 +5 -1
  213. package/dist/app/lib/routing/index.d.ts.map +1 -0
  214. package/dist/app/lib/routing/index.js +4 -1
  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 +61 -8
  219. package/dist/app/lib/routing/types.d.ts.map +1 -0
  220. package/dist/app/lib/routing/utils.d.ts +5 -1
  221. package/dist/app/lib/routing/utils.d.ts.map +1 -0
  222. package/dist/app/lib/routing/utils.js +36 -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 +45 -12
  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 +102 -0
  245. package/dist/app/server/render-ssr-page.d.ts +32 -3
  246. package/dist/app/server/render-ssr-page.d.ts.map +1 -0
  247. package/dist/app/server/render-ssr-page.js +229 -10
  248. package/dist/app/server/rpc.d.ts +52 -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 +48 -8
  252. package/dist/app/server/server-context.d.ts.map +1 -0
  253. package/dist/app/server/server-context.js +366 -45
  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 +3 -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/cache-config.d.ts +3 -0
  346. package/dist/node/compiler/cache-config.d.ts.map +1 -0
  347. package/dist/node/compiler/cache-config.js +16 -0
  348. package/dist/node/compiler/dev-server.d.ts +4 -1
  349. package/dist/node/compiler/dev-server.d.ts.map +1 -0
  350. package/dist/node/compiler/dev-server.js +34 -11
  351. package/dist/node/compiler/get-vite-config.d.ts +12 -1
  352. package/dist/node/compiler/get-vite-config.d.ts.map +1 -0
  353. package/dist/node/compiler/get-vite-config.js +176 -42
  354. package/dist/node/compiler/vinxi-app.d.ts +4 -0
  355. package/dist/node/compiler/vinxi-app.d.ts.map +1 -0
  356. package/dist/node/compiler/vinxi-app.js +137 -37
  357. package/dist/node/compiler/vinxi-codegen.d.ts +1 -0
  358. package/dist/node/compiler/vinxi-codegen.d.ts.map +1 -0
  359. package/dist/node/compiler/vinxi-codegen.js +362 -116
  360. package/dist/node/graphql/graphql-codegen.d.ts +12 -1
  361. package/dist/node/graphql/graphql-codegen.d.ts.map +1 -0
  362. package/dist/node/graphql/graphql-codegen.js +239 -37
  363. package/dist/node/graphql/graphql-schema-loader.d.ts +3 -1
  364. package/dist/node/graphql/graphql-schema-loader.d.ts.map +1 -0
  365. package/dist/node/graphql/graphql-schema-loader.js +5 -16
  366. package/dist/node/graphql/plugins/gql-plugin-files.d.ts +3 -1
  367. package/dist/node/graphql/plugins/gql-plugin-files.d.ts.map +1 -0
  368. package/dist/node/graphql/plugins/gql-plugin-files.js +3 -2
  369. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts +1 -0
  370. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts.map +1 -0
  371. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts +1 -0
  372. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts.map +1 -0
  373. package/dist/node/graphql/plugins/gql-plugin-queries.js +2 -2
  374. package/dist/node/graphql/query-files-loader.d.ts +4 -0
  375. package/dist/node/graphql/query-files-loader.d.ts.map +1 -0
  376. package/dist/node/graphql/query-files-loader.js +5 -0
  377. package/dist/node/graphql/wp-info-query.d.ts +1 -0
  378. package/dist/node/graphql/wp-info-query.d.ts.map +1 -0
  379. package/dist/node/project/config.d.ts +260 -69
  380. package/dist/node/project/config.d.ts.map +1 -0
  381. package/dist/node/project/config.js +100 -21
  382. package/dist/node/project/eddev-build-file.d.ts +1 -0
  383. package/dist/node/project/eddev-build-file.d.ts.map +1 -0
  384. package/dist/node/project/eddev-build-file.js +4 -2
  385. package/dist/node/project/env.d.ts +5 -0
  386. package/dist/node/project/env.d.ts.map +1 -0
  387. package/dist/node/project/env.js +1 -0
  388. package/dist/node/project/favicons.d.ts +1 -0
  389. package/dist/node/project/favicons.d.ts.map +1 -0
  390. package/dist/node/project/manifest/block-manifest.d.ts +1 -0
  391. package/dist/node/project/manifest/block-manifest.d.ts.map +1 -0
  392. package/dist/node/project/manifest/block-manifest.js +6 -2
  393. package/dist/node/project/manifest/field-manifest.d.ts +1 -0
  394. package/dist/node/project/manifest/field-manifest.d.ts.map +1 -0
  395. package/dist/node/project/manifest/manifest.d.ts +2 -0
  396. package/dist/node/project/manifest/manifest.d.ts.map +1 -0
  397. package/dist/node/project/manifest/manifest.js +14 -10
  398. package/dist/node/project/manifest/routes-manifest.d.ts +21 -0
  399. package/dist/node/project/manifest/routes-manifest.d.ts.map +1 -0
  400. package/dist/node/project/manifest/routes-manifest.js +74 -0
  401. package/dist/node/project/manifest/view-manifest.d.ts +1 -0
  402. package/dist/node/project/manifest/view-manifest.d.ts.map +1 -0
  403. package/dist/node/project/manifest/widget-manifest.d.ts +1 -0
  404. package/dist/node/project/manifest/widget-manifest.d.ts.map +1 -0
  405. package/dist/node/project/project.d.ts +12 -0
  406. package/dist/node/project/project.d.ts.map +1 -0
  407. package/dist/node/project/project.js +55 -1
  408. package/dist/node/project/wp-info.d.ts +3 -0
  409. package/dist/node/project/wp-info.d.ts.map +1 -0
  410. package/dist/node/project/wp-info.js +10 -1
  411. package/dist/node/storybook/index.d.ts +3 -0
  412. package/dist/node/storybook/index.d.ts.map +1 -0
  413. package/dist/node/storybook/index.js +13 -0
  414. package/dist/node/types/block-type.d.ts +39 -7
  415. package/dist/node/types/block-type.d.ts.map +1 -0
  416. package/dist/node/types/block-type.js +4 -1
  417. package/dist/node/types/view-type.d.ts +1 -0
  418. package/dist/node/types/view-type.d.ts.map +1 -0
  419. package/dist/node/utils/fetch-wp.d.ts +2 -0
  420. package/dist/node/utils/fetch-wp.d.ts.map +1 -0
  421. package/dist/node/utils/fetch-wp.js +28 -0
  422. package/dist/node/utils/format-zod-error.d.ts +1 -0
  423. package/dist/node/utils/format-zod-error.d.ts.map +1 -0
  424. package/dist/node/utils/fs-codegen.d.ts +4 -0
  425. package/dist/node/utils/fs-codegen.d.ts.map +1 -0
  426. package/dist/node/utils/fs-codegen.js +10 -2
  427. package/dist/node/utils/fs.d.ts +6 -1
  428. package/dist/node/utils/fs.d.ts.map +1 -0
  429. package/dist/node/utils/get-repo-info.d.ts +1 -0
  430. package/dist/node/utils/get-repo-info.d.ts.map +1 -0
  431. package/dist/node/utils/helpers.d.ts +1 -0
  432. package/dist/node/utils/helpers.d.ts.map +1 -0
  433. package/dist/node/utils/highlight-code.d.ts +1 -0
  434. package/dist/node/utils/highlight-code.d.ts.map +1 -0
  435. package/dist/node/utils/is-deploying.d.ts +1 -0
  436. package/dist/node/utils/is-deploying.d.ts.map +1 -0
  437. package/dist/node/utils/is-deploying.js +1 -1
  438. package/dist/node/utils/report-builder.d.ts +7 -6
  439. package/dist/node/utils/report-builder.d.ts.map +1 -0
  440. package/dist/node/utils/self-signed-cert.d.ts +5 -0
  441. package/dist/node/utils/self-signed-cert.d.ts.map +1 -0
  442. package/dist/node/utils/self-signed-cert.js +28 -4
  443. package/dist/node/utils/stateful-log.d.ts +1 -0
  444. package/dist/node/utils/stateful-log.d.ts.map +1 -0
  445. package/dist/node/utils/stateful-log.js +2 -0
  446. package/dist/node/utils/ts-export-extractor.d.ts +1 -0
  447. package/dist/node/utils/ts-export-extractor.d.ts.map +1 -0
  448. package/dist/node/utils/watch-file-tree.d.ts +18 -3
  449. package/dist/node/utils/watch-file-tree.d.ts.map +1 -0
  450. package/dist/node/utils/watch-file-tree.js +12 -5
  451. package/package.json +39 -24
  452. package/tsconfig.app.json +8 -3
  453. package/tsconfig.node.json +1 -0
  454. package/types.app.d.ts +2 -0
  455. package/types.env.d.ts +3 -0
  456. package/types.meta.d.ts +449 -136
  457. package/dist/app/lib/blocks/ErrorBoundaryFrontend.d.ts +0 -15
  458. package/dist/app/lib/blocks/ErrorBoundaryFrontend.js +0 -35
  459. package/dist/app/lib/hooks/apiConfig.js +0 -4
  460. package/dist/app/lib/hooks/usePageLoad.d.ts +0 -6
  461. package/dist/app/lib/hooks/usePageLoad.js +0 -5
@@ -0,0 +1,50 @@
1
+ import { ReactNode } from "react";
2
+ import { RouteState } from "../types";
3
+ type BackButtonProps = {
4
+ /**
5
+ * An optional matching function, which will stop the render button from appearing unless the function returns true.
6
+ *
7
+ * The below example will only render a back button if the last route was a project archive.
8
+ *
9
+ * eg. `filter={(route) => route.view === 'archive-projects'}`
10
+ *
11
+ * @param route The last route in the history stack.
12
+ */
13
+ filter?: (route: RouteState) => boolean;
14
+ /**
15
+ * Whether to use the top-most "global" route, or the "context" route.
16
+ *
17
+ * The "global" route is the top-most route, reflected in the URL bar.
18
+ *
19
+ * The "context" route will be the route that is currently being rendered, which may be different to the global route when using modals/overlays/route stacks/transitions.
20
+ *
21
+ * @default "context"
22
+ */
23
+ mode?: "global" | "context";
24
+ /**
25
+ * An optional href, which will be used if no back route is found.
26
+ *
27
+ * When used, the back button will always render.
28
+ */
29
+ fallbackHref?: string;
30
+ /**
31
+ * A function to render the back button, if one should be rendered.
32
+ *
33
+ * Receives a `route` prop to further inspect the route, and an `onClick` function to navigate back.
34
+ *
35
+ * @param props
36
+ * @returns
37
+ */
38
+ render: (props: {
39
+ route: RouteState;
40
+ onClick: (e?: any) => void;
41
+ }) => ReactNode;
42
+ };
43
+ /**
44
+ * Display a back button that will navigate to the previous page in the router's history.
45
+ *
46
+ * 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.
47
+ */
48
+ export declare function BackButton(props: BackButtonProps): ReactNode;
49
+ export {};
50
+ //# sourceMappingURL=BackButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackButton.d.ts","sourceRoot":"","sources":["../../../../../src/app/lib/routing/components/BackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAW,MAAM,OAAO,CAAA;AAI1C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGrC,KAAK,eAAe,GAAG;IACrB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;IACvC;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;OAOG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;KAAE,KAAK,SAAS,CAAA;CAChF,CAAA;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,aAmChD"}
@@ -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,7 +1,13 @@
1
1
  import { PropsWithChildren } from "react";
2
- import { type RouterAPI } from "../types.js";
2
+ import { RouterAPIState, type RouterAPI } from "../types.js";
3
3
  type Props = PropsWithChildren<{
4
4
  routerRef?: React.MutableRefObject<RouterAPI | null>;
5
+ onReady?: () => void;
5
6
  }>;
7
+ export declare function getClientRouter(): {
8
+ state: RouterAPIState;
9
+ api: RouterAPI;
10
+ } | null;
6
11
  export declare function BrowserRouter(props: Props): import("react/jsx-runtime").JSX.Element;
7
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,12 +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, getRouteMeta, normalizeRoute, parseQuery, stringifyRouteLink } from "../utils.js";
7
+ import { getLinkHandlerMode, getRouteMeta, isSamePathname, normalizeRoute, parseQuery, stringifyRouteLink, } from "../utils.js";
7
8
  import { AppRenderer } from "./RouteRenderer.js";
8
- import { $routeMetaStore } from "../hooks/useRouteMeta.js";
9
+ // Create a global RouteLoader instance
9
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
10
18
  let initialRoute;
11
19
  let initialRouteHydrated = false;
12
20
  if (env.client && !env.admin) {
@@ -24,10 +32,9 @@ if (env.client && !env.admin) {
24
32
  search: "",
25
33
  query: {},
26
34
  view: initialData.view,
27
- meta: {
28
- tags: initialData.meta?.head,
29
- },
35
+ meta: getRouteMeta(initialData),
30
36
  });
37
+ history.replaceState(historyStateForRoute(initialRoute), "", document.location.href);
31
38
  $routeMetaStore.data = getRouteMeta(initialData);
32
39
  }
33
40
  function parseHrefPath(url) {
@@ -59,22 +66,19 @@ function historyStateForRoute(route) {
59
66
  state: route.returnState,
60
67
  };
61
68
  }
62
- let index = 0;
63
- function getHistoryId() {
64
- return String(index++);
69
+ let clientRouter = null;
70
+ export function getClientRouter() {
71
+ return clientRouter;
65
72
  }
66
- let lastRouterState = null;
67
73
  export function BrowserRouter(props) {
68
74
  const pendingRoute = useRef(null);
69
75
  const [transitioning, startTransition] = useTransition();
76
+ const pendingNavigationClick = useRef(null);
70
77
  const [routerState, setRouterState] = useState(() => ({
71
78
  activeRoute: initialRoute,
72
79
  history: [initialRoute],
73
80
  blockers: [],
74
81
  }));
75
- if (lastRouterState !== routerState) {
76
- lastRouterState = routerState;
77
- }
78
82
  const { internals, api } = useMemo(() => {
79
83
  let subscribers = new Set();
80
84
  let state = routerState;
@@ -83,8 +87,27 @@ export function BrowserRouter(props) {
83
87
  ...state,
84
88
  ...update,
85
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
+ }
86
100
  setRouterState(state);
87
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
+ });
88
111
  const internals = {
89
112
  transitionEnded: null,
90
113
  updateRoute: null,
@@ -176,6 +199,7 @@ export function BrowserRouter(props) {
176
199
  emitEvent({
177
200
  type: "navigate:start",
178
201
  link,
202
+ linkData: args.linkData,
179
203
  currentRoute: currentRoute,
180
204
  hasPreloadedData: hasRouteData,
181
205
  goingBack: !!args.goingBack,
@@ -185,11 +209,26 @@ export function BrowserRouter(props) {
185
209
  });
186
210
  if (cancelled)
187
211
  return;
188
- const data = await loader.loadRouteData(parseHrefPath(args.url));
189
- if (!data.view) {
190
- console.error("No `view` property in route data");
191
- return;
192
- }
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
+ });
193
232
  const lazyComponent = loader.getRouteComponent(data.view);
194
233
  if (!lazyComponent) {
195
234
  console.error(`No component found for view: ${data.view}`);
@@ -200,14 +239,13 @@ export function BrowserRouter(props) {
200
239
  hash: link.hash,
201
240
  search: "",
202
241
  query: link.query,
203
- pathname: link.pathname,
242
+ pathname: data.canonical ?? link.pathname,
204
243
  view: data.view,
205
244
  props: data.viewData?.data ?? {},
206
245
  component: lazyComponent,
207
246
  returnState: args.restoreState ?? {},
208
- meta: {
209
- tags: data.meta?.head,
210
- },
247
+ meta: getRouteMeta(data),
248
+ linkData: args.linkData,
211
249
  });
212
250
  setState({
213
251
  pendingRoute: route,
@@ -217,12 +255,14 @@ export function BrowserRouter(props) {
217
255
  currentRoute,
218
256
  loadedRoute: route,
219
257
  link,
258
+ linkData: args.linkData,
220
259
  });
221
260
  emitEvent({
222
261
  type: "navigate:will-change",
223
262
  currentRoute,
224
263
  loadedRoute: route,
225
264
  link,
265
+ linkData: args.linkData,
226
266
  });
227
267
  internals.transitionEnded = () => {
228
268
  internals.transitionEnded = null;
@@ -235,8 +275,18 @@ export function BrowserRouter(props) {
235
275
  currentRoute: route,
236
276
  lastRoute: currentRoute,
237
277
  link,
278
+ linkData: args.linkData,
238
279
  });
239
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
+ }
240
290
  };
241
291
  startTransition(() => {
242
292
  pendingRoute.current = route;
@@ -248,13 +298,18 @@ export function BrowserRouter(props) {
248
298
  }
249
299
  const api = {
250
300
  loader: loader,
251
- async navigate(url) {
301
+ hostname: window?._PAGE_DATA?.hostname,
302
+ async navigate(url, args) {
252
303
  doRouteTransition({
253
304
  url: url,
254
305
  shouldPush: true,
255
306
  goingBack: false,
307
+ linkData: args?.linkData,
256
308
  });
257
309
  },
310
+ getState() {
311
+ return state;
312
+ },
258
313
  replaceHash(hash) {
259
314
  replaceRoute({
260
315
  ...getActiveRoute(),
@@ -265,6 +320,7 @@ export function BrowserRouter(props) {
265
320
  replaceRoute({
266
321
  ...getActiveRoute(),
267
322
  query,
323
+ returnState: captureState(),
268
324
  });
269
325
  },
270
326
  async prefetch(url) {
@@ -273,12 +329,12 @@ export function BrowserRouter(props) {
273
329
  if (loader.hasRouteData(link.pathname))
274
330
  return;
275
331
  emitEvent({ type: "preload:start", currentRoute: getActiveRoute(), link });
276
- const data = await loader.loadRouteData(link.pathname).then((data) => {
332
+ await loader.loadRouteData(link.pathname).then((data) => {
277
333
  emitEvent({ type: "preload:data-ready", currentRoute: getActiveRoute(), link, data });
278
334
  });
279
335
  }
280
336
  catch (err) {
281
- emitEvent({ type: "error", error: err, critical: false });
337
+ emitEvent({ type: "error", error: err, critical: false, linkData: undefined });
282
338
  }
283
339
  },
284
340
  async preload(url) {
@@ -296,7 +352,7 @@ export function BrowserRouter(props) {
296
352
  }
297
353
  }
298
354
  catch (err) {
299
- emitEvent({ type: "error", error: err, critical: false });
355
+ emitEvent({ type: "error", error: err, critical: false, linkData: undefined });
300
356
  }
301
357
  },
302
358
  subscribe(fn) {
@@ -305,9 +361,37 @@ export function BrowserRouter(props) {
305
361
  subscribers.delete(fn);
306
362
  };
307
363
  },
308
- handleClickEvent(e, originalHref) {
309
- const { mode, href } = getLinkHandlerMode(e, originalHref);
310
- 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) {
311
395
  e.preventDefault();
312
396
  return;
313
397
  }
@@ -316,10 +400,55 @@ export function BrowserRouter(props) {
316
400
  }
317
401
  else if (mode === "navigate" && href) {
318
402
  e.preventDefault();
319
- 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
+ });
320
416
  }
321
417
  },
322
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
+ },
323
452
  };
324
453
  return {
325
454
  api,
@@ -348,6 +477,7 @@ export function BrowserRouter(props) {
348
477
  // Handle popState
349
478
  // const router = useRouterStore.getState()
350
479
  const onPopState = (e) => {
480
+ // console.log("Popped", e.state)
351
481
  internals.poppedState?.(document.location.href, e.state ?? {});
352
482
  };
353
483
  window.addEventListener("popstate", onPopState);
@@ -355,5 +485,12 @@ export function BrowserRouter(props) {
355
485
  window.removeEventListener("popstate", onPopState);
356
486
  };
357
487
  }, []);
488
+ useEffect(() => {
489
+ props.onReady?.();
490
+ }, []);
491
+ clientRouter = {
492
+ state: routerState,
493
+ api,
494
+ };
358
495
  return (_jsx(RouterContext.Provider, { value: api, children: _jsx(RouterStateContext.Provider, { value: routerState, children: _jsx(AppRenderer, {}) }) }));
359
496
  }
@@ -10,3 +10,4 @@ type Props = PropsWithChildren<{
10
10
  */
11
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"}