eddev 2.0.0-beta.16 → 2.0.0-beta.161

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 (453) 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 +5 -4
  21. package/dist/app/entry/ssr-root.d.ts.map +1 -0
  22. package/dist/app/entry/ssr-root.js +19 -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 +3 -2
  38. package/dist/app/lib/blocks/EditableText.d.ts +22 -2
  39. package/dist/app/lib/blocks/EditableText.d.ts.map +1 -0
  40. package/dist/app/lib/blocks/EditableText.js +29 -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 +74 -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 +40 -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 +1 -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 +34 -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 +15 -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 +7 -0
  65. package/dist/app/lib/blocks/editor/block-templates.d.ts.map +1 -0
  66. package/dist/app/lib/blocks/editor/block-templates.js +64 -0
  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 +73 -6
  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 +104 -20
  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 +1385 -340
  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} +38 -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} +82 -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 +141 -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 +285 -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 +1 -0
  155. package/dist/app/lib/internal/read-block-manifest.d.ts.map +1 -0
  156. package/dist/app/lib/internal/read-view-manifest.d.ts +1 -0
  157. package/dist/app/lib/internal/read-view-manifest.d.ts.map +1 -0
  158. package/dist/app/lib/legacy-stitches/createStitches.d.ts +510 -1
  159. package/dist/app/lib/legacy-stitches/createStitches.d.ts.map +1 -0
  160. package/dist/app/lib/legacy-stitches/index.d.ts +1 -0
  161. package/dist/app/lib/legacy-stitches/index.d.ts.map +1 -0
  162. package/dist/app/lib/routing/components/BackButton.d.ts +50 -0
  163. package/dist/app/lib/routing/components/BackButton.d.ts.map +1 -0
  164. package/dist/app/lib/routing/components/BackButton.js +47 -0
  165. package/dist/app/lib/routing/components/BrowserRouter.d.ts +6 -1
  166. package/dist/app/lib/routing/components/BrowserRouter.d.ts.map +1 -0
  167. package/dist/app/lib/routing/components/BrowserRouter.js +121 -18
  168. package/dist/app/lib/routing/components/ClientOnly.d.ts +2 -1
  169. package/dist/app/lib/routing/components/ClientOnly.d.ts.map +1 -0
  170. package/dist/app/lib/routing/components/ClientOnly.js +1 -1
  171. package/dist/app/lib/routing/components/Link.d.ts +18 -1
  172. package/dist/app/lib/routing/components/Link.d.ts.map +1 -0
  173. package/dist/app/lib/routing/components/Link.js +38 -21
  174. package/dist/app/lib/routing/components/NativeLinkHandler.d.ts +10 -0
  175. package/dist/app/lib/routing/components/NativeLinkHandler.d.ts.map +1 -0
  176. package/dist/app/lib/routing/components/NativeLinkHandler.js +23 -0
  177. package/dist/app/lib/routing/components/RouteRenderer.d.ts +1 -0
  178. package/dist/app/lib/routing/components/RouteRenderer.d.ts.map +1 -0
  179. package/dist/app/lib/routing/components/RouteRenderer.js +4 -3
  180. package/dist/app/lib/routing/components/SSRRouter.d.ts +2 -0
  181. package/dist/app/lib/routing/components/SSRRouter.d.ts.map +1 -0
  182. package/dist/app/lib/routing/components/SSRRouter.js +2 -2
  183. package/dist/app/lib/routing/components/ScrollRestoration.d.ts +1 -0
  184. package/dist/app/lib/routing/components/ScrollRestoration.d.ts.map +1 -0
  185. package/dist/app/lib/routing/components/ScrollRestoration.js +4 -1
  186. package/dist/app/lib/routing/context.d.ts +9 -5
  187. package/dist/app/lib/routing/context.d.ts.map +1 -0
  188. package/dist/app/lib/routing/context.js +12 -95
  189. package/dist/app/lib/routing/hooks/useIsSSR.d.ts +1 -0
  190. package/dist/app/lib/routing/hooks/useIsSSR.d.ts.map +1 -0
  191. package/dist/app/lib/routing/hooks/useRestorableState.d.ts +3 -1
  192. package/dist/app/lib/routing/hooks/useRestorableState.d.ts.map +1 -0
  193. package/dist/app/lib/routing/hooks/useRoute.d.ts +16 -0
  194. package/dist/app/lib/routing/hooks/useRoute.d.ts.map +1 -0
  195. package/dist/app/lib/routing/hooks/useRoute.js +21 -0
  196. package/dist/app/lib/routing/hooks/useRouteMeta.d.ts +6 -0
  197. package/dist/app/lib/routing/hooks/useRouteMeta.d.ts.map +1 -0
  198. package/dist/app/lib/routing/hooks/useRouteMeta.js +9 -0
  199. package/dist/app/lib/routing/hooks/useRouteTransition.d.ts +1 -0
  200. package/dist/app/lib/routing/hooks/useRouteTransition.d.ts.map +1 -0
  201. package/dist/app/lib/routing/hooks/useRouter.d.ts +1 -0
  202. package/dist/app/lib/routing/hooks/useRouter.d.ts.map +1 -0
  203. package/dist/app/lib/routing/hooks/useRouterEvents.d.ts +1 -0
  204. package/dist/app/lib/routing/hooks/useRouterEvents.d.ts.map +1 -0
  205. package/dist/app/lib/routing/hooks/useRouterState.d.ts +1 -0
  206. package/dist/app/lib/routing/hooks/useRouterState.d.ts.map +1 -0
  207. package/dist/app/lib/routing/hooks/useSearchParams.d.ts +76 -4
  208. package/dist/app/lib/routing/hooks/useSearchParams.d.ts.map +1 -0
  209. package/dist/app/lib/routing/hooks/useSearchParams.js +70 -11
  210. package/dist/app/lib/routing/index.d.ts +3 -0
  211. package/dist/app/lib/routing/index.d.ts.map +1 -0
  212. package/dist/app/lib/routing/index.js +2 -0
  213. package/dist/app/lib/routing/loader.d.ts +1 -0
  214. package/dist/app/lib/routing/loader.d.ts.map +1 -0
  215. package/dist/app/lib/routing/loader.js +19 -10
  216. package/dist/app/lib/routing/types.d.ts +54 -12
  217. package/dist/app/lib/routing/types.d.ts.map +1 -0
  218. package/dist/app/lib/routing/utils.d.ts +7 -2
  219. package/dist/app/lib/routing/utils.d.ts.map +1 -0
  220. package/dist/app/lib/routing/utils.js +38 -4
  221. package/dist/app/lib/{hooks → runtime}/apiConfig.d.ts +11 -2
  222. package/dist/app/lib/runtime/apiConfig.d.ts.map +1 -0
  223. package/dist/app/lib/runtime/apiConfig.js +6 -0
  224. package/dist/app/lib/runtime/errorHandling.d.ts +40 -0
  225. package/dist/app/lib/runtime/errorHandling.d.ts.map +1 -0
  226. package/dist/app/lib/runtime/errorHandling.js +6 -0
  227. package/dist/app/lib/runtime/index.d.ts +3 -0
  228. package/dist/app/lib/runtime/index.d.ts.map +1 -0
  229. package/dist/app/lib/runtime/index.js +2 -0
  230. package/dist/app/lib/views/defineView.d.ts +2 -1
  231. package/dist/app/lib/views/defineView.d.ts.map +1 -0
  232. package/dist/app/lib/views/index.d.ts +1 -0
  233. package/dist/app/lib/views/index.d.ts.map +1 -0
  234. package/dist/app/server/index.d.ts +2 -0
  235. package/dist/app/server/index.d.ts.map +1 -0
  236. package/dist/app/server/index.js +1 -0
  237. package/dist/app/server/proxy-wp-admin.d.ts +2 -2
  238. package/dist/app/server/proxy-wp-admin.d.ts.map +1 -0
  239. package/dist/app/server/proxy-wp-admin.js +46 -13
  240. package/dist/app/server/render-ssr-page.d.ts +31 -3
  241. package/dist/app/server/render-ssr-page.d.ts.map +1 -0
  242. package/dist/app/server/render-ssr-page.js +227 -11
  243. package/dist/app/server/rpc.d.ts +49 -0
  244. package/dist/app/server/rpc.d.ts.map +1 -0
  245. package/dist/app/server/rpc.js +18 -0
  246. package/dist/app/server/server-context.d.ts +44 -6
  247. package/dist/app/server/server-context.d.ts.map +1 -0
  248. package/dist/app/server/server-context.js +330 -35
  249. package/dist/app/server/server-custom-config.d.ts +3 -0
  250. package/dist/app/server/server-custom-config.d.ts.map +1 -0
  251. package/dist/app/server/server-custom-config.js +1 -0
  252. package/dist/app/server/utils/content-security.d.ts +26 -0
  253. package/dist/app/server/utils/content-security.d.ts.map +1 -0
  254. package/dist/app/server/utils/content-security.js +124 -0
  255. package/dist/app/server/utils/headers.d.ts +1 -0
  256. package/dist/app/server/utils/headers.d.ts.map +1 -0
  257. package/dist/app/server/utils/replace-host.d.ts +2 -1
  258. package/dist/app/server/utils/replace-host.d.ts.map +1 -0
  259. package/dist/app/server/utils/replace-host.js +10 -2
  260. package/dist/app/server/utils/swr-cache.d.ts +5 -0
  261. package/dist/app/server/utils/swr-cache.d.ts.map +1 -0
  262. package/dist/app/server/utils/swr-cache.js +31 -0
  263. package/dist/app/utils/APIProvider.d.ts +3 -0
  264. package/dist/app/utils/APIProvider.d.ts.map +1 -0
  265. package/dist/app/utils/APIProvider.js +5 -0
  266. package/dist/app/utils/BlockErrorBoundary.d.ts +20 -0
  267. package/dist/app/utils/BlockErrorBoundary.d.ts.map +1 -0
  268. package/dist/app/utils/BlockErrorBoundary.js +38 -0
  269. package/dist/app/utils/ErrorMessage.d.ts +6 -0
  270. package/dist/app/utils/ErrorMessage.d.ts.map +1 -0
  271. package/dist/app/utils/ErrorMessage.js +14 -0
  272. package/dist/app/utils/RouteErrorBoundary.d.ts +19 -0
  273. package/dist/app/utils/RouteErrorBoundary.d.ts.map +1 -0
  274. package/dist/app/utils/RouteErrorBoundary.js +38 -0
  275. package/dist/app/utils/asset-capture.d.ts +3 -0
  276. package/dist/app/utils/asset-capture.d.ts.map +1 -0
  277. package/dist/app/utils/asset-capture.js +5 -0
  278. package/dist/app/utils/hydration-debugger.d.ts +14 -0
  279. package/dist/app/utils/hydration-debugger.d.ts.map +1 -0
  280. package/dist/app/utils/hydration-debugger.js +11 -0
  281. package/dist/app/utils/query-client.d.ts +3 -0
  282. package/dist/app/utils/query-client.d.ts.map +1 -0
  283. package/dist/app/utils/query-client.js +5 -1
  284. package/dist/app/utils/query-monitor.d.ts +27 -0
  285. package/dist/app/utils/query-monitor.d.ts.map +1 -0
  286. package/dist/app/utils/query-monitor.js +7 -0
  287. package/dist/app/utils/trpc-client.d.ts +3 -0
  288. package/dist/app/utils/trpc-client.d.ts.map +1 -0
  289. package/dist/app/utils/trpc-client.js +39 -0
  290. package/dist/app/utils/wp.d.ts +11 -10
  291. package/dist/app/utils/wp.d.ts.map +1 -0
  292. package/dist/node/cli/cli-mode.d.ts +1 -0
  293. package/dist/node/cli/cli-mode.d.ts.map +1 -0
  294. package/dist/node/cli/cli-worker.d.ts +1 -0
  295. package/dist/node/cli/cli-worker.d.ts.map +1 -0
  296. package/dist/node/cli/cli-worker.js +11 -5
  297. package/dist/node/cli/cli.d.ts +1 -0
  298. package/dist/node/cli/cli.d.ts.map +1 -0
  299. package/dist/node/cli/cli.js +85 -11
  300. package/dist/node/cli/display/CLIApp.d.ts +1 -0
  301. package/dist/node/cli/display/CLIApp.d.ts.map +1 -0
  302. package/dist/node/cli/display/CLIApp.js +1 -1
  303. package/dist/node/cli/display/boot-cli-app.d.ts +1 -0
  304. package/dist/node/cli/display/boot-cli-app.d.ts.map +1 -0
  305. package/dist/node/cli/display/boot-cli-app.js +1 -1
  306. package/dist/node/cli/display/components/Fullscreen.d.ts +1 -0
  307. package/dist/node/cli/display/components/Fullscreen.d.ts.map +1 -0
  308. package/dist/node/cli/display/components/LogEntries.d.ts +1 -0
  309. package/dist/node/cli/display/components/LogEntries.d.ts.map +1 -0
  310. package/dist/node/cli/display/components/MenuItem.d.ts +1 -0
  311. package/dist/node/cli/display/components/MenuItem.d.ts.map +1 -0
  312. package/dist/node/cli/display/components/TextInput.d.ts +1 -0
  313. package/dist/node/cli/display/components/TextInput.d.ts.map +1 -0
  314. package/dist/node/cli/display/hooks/useManifest.d.ts +1 -0
  315. package/dist/node/cli/display/hooks/useManifest.d.ts.map +1 -0
  316. package/dist/node/cli/display/hooks/useStatefulLog.d.ts +1 -0
  317. package/dist/node/cli/display/hooks/useStatefulLog.d.ts.map +1 -0
  318. package/dist/node/cli/display/tools/BlockList.d.ts +1 -0
  319. package/dist/node/cli/display/tools/BlockList.d.ts.map +1 -0
  320. package/dist/node/cli/display/tools/CreateBlock.d.ts +1 -0
  321. package/dist/node/cli/display/tools/CreateBlock.d.ts.map +1 -0
  322. package/dist/node/cli/display/tools/cli-tool-list.d.ts +1 -0
  323. package/dist/node/cli/display/tools/cli-tool-list.d.ts.map +1 -0
  324. package/dist/node/cli/display/tools/cli-tools.d.ts +1 -0
  325. package/dist/node/cli/display/tools/cli-tools.d.ts.map +1 -0
  326. package/dist/node/cli/display/util/colors.d.ts +1 -0
  327. package/dist/node/cli/display/util/colors.d.ts.map +1 -0
  328. package/dist/node/cli/version.d.ts +2 -1
  329. package/dist/node/cli/version.d.ts.map +1 -0
  330. package/dist/node/cli/version.js +1 -1
  331. package/dist/node/compiler/build-vinxi.d.ts +1 -0
  332. package/dist/node/compiler/build-vinxi.d.ts.map +1 -0
  333. package/dist/node/compiler/build-vinxi.js +2 -1
  334. package/dist/node/compiler/bundler.admin.d.ts +2 -1
  335. package/dist/node/compiler/bundler.admin.d.ts.map +1 -0
  336. package/dist/node/compiler/bundler.admin.js +1 -1
  337. package/dist/node/compiler/bundler.frontend.d.ts +1 -0
  338. package/dist/node/compiler/bundler.frontend.d.ts.map +1 -0
  339. package/dist/node/compiler/bundler.frontend.js +1 -1
  340. package/dist/node/compiler/dev-server.d.ts +1 -0
  341. package/dist/node/compiler/dev-server.d.ts.map +1 -0
  342. package/dist/node/compiler/dev-server.js +17 -1
  343. package/dist/node/compiler/get-vite-config.d.ts +12 -1
  344. package/dist/node/compiler/get-vite-config.d.ts.map +1 -0
  345. package/dist/node/compiler/get-vite-config.js +180 -48
  346. package/dist/node/compiler/vinxi-app.d.ts +13 -0
  347. package/dist/node/compiler/vinxi-app.d.ts.map +1 -0
  348. package/dist/node/compiler/vinxi-app.js +140 -32
  349. package/dist/node/compiler/vinxi-codegen.d.ts +1 -0
  350. package/dist/node/compiler/vinxi-codegen.d.ts.map +1 -0
  351. package/dist/node/compiler/vinxi-codegen.js +353 -101
  352. package/dist/node/graphql/graphql-codegen.d.ts +12 -1
  353. package/dist/node/graphql/graphql-codegen.d.ts.map +1 -0
  354. package/dist/node/graphql/graphql-codegen.js +216 -34
  355. package/dist/node/graphql/graphql-schema-loader.d.ts +3 -1
  356. package/dist/node/graphql/graphql-schema-loader.d.ts.map +1 -0
  357. package/dist/node/graphql/graphql-schema-loader.js +5 -16
  358. package/dist/node/graphql/plugins/gql-plugin-files.d.ts +2 -0
  359. package/dist/node/graphql/plugins/gql-plugin-files.d.ts.map +1 -0
  360. package/dist/node/graphql/plugins/gql-plugin-files.js +1 -0
  361. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts +1 -0
  362. package/dist/node/graphql/plugins/gql-plugin-no-duplicates.d.ts.map +1 -0
  363. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts +1 -0
  364. package/dist/node/graphql/plugins/gql-plugin-queries.d.ts.map +1 -0
  365. package/dist/node/graphql/plugins/gql-plugin-queries.js +1 -1
  366. package/dist/node/graphql/query-files-loader.d.ts +4 -0
  367. package/dist/node/graphql/query-files-loader.d.ts.map +1 -0
  368. package/dist/node/graphql/query-files-loader.js +5 -0
  369. package/dist/node/graphql/wp-info-query.d.ts +1 -0
  370. package/dist/node/graphql/wp-info-query.d.ts.map +1 -0
  371. package/dist/node/project/config.d.ts +207 -73
  372. package/dist/node/project/config.d.ts.map +1 -0
  373. package/dist/node/project/config.js +94 -20
  374. package/dist/node/project/eddev-build-file.d.ts +1 -0
  375. package/dist/node/project/eddev-build-file.d.ts.map +1 -0
  376. package/dist/node/project/eddev-build-file.js +2 -2
  377. package/dist/node/project/env.d.ts +5 -0
  378. package/dist/node/project/env.d.ts.map +1 -0
  379. package/dist/node/project/env.js +1 -0
  380. package/dist/node/project/favicons.d.ts +1 -1
  381. package/dist/node/project/favicons.d.ts.map +1 -0
  382. package/dist/node/project/favicons.js +1 -1
  383. package/dist/node/project/manifest/block-manifest.d.ts +1 -0
  384. package/dist/node/project/manifest/block-manifest.d.ts.map +1 -0
  385. package/dist/node/project/manifest/block-manifest.js +3 -1
  386. package/dist/node/project/manifest/field-manifest.d.ts +1 -0
  387. package/dist/node/project/manifest/field-manifest.d.ts.map +1 -0
  388. package/dist/node/project/manifest/manifest.d.ts +2 -0
  389. package/dist/node/project/manifest/manifest.d.ts.map +1 -0
  390. package/dist/node/project/manifest/manifest.js +14 -10
  391. package/dist/node/project/manifest/routes-manifest.d.ts +21 -0
  392. package/dist/node/project/manifest/routes-manifest.d.ts.map +1 -0
  393. package/dist/node/project/manifest/routes-manifest.js +74 -0
  394. package/dist/node/project/manifest/view-manifest.d.ts +1 -0
  395. package/dist/node/project/manifest/view-manifest.d.ts.map +1 -0
  396. package/dist/node/project/manifest/widget-manifest.d.ts +1 -0
  397. package/dist/node/project/manifest/widget-manifest.d.ts.map +1 -0
  398. package/dist/node/project/project.d.ts +11 -0
  399. package/dist/node/project/project.d.ts.map +1 -0
  400. package/dist/node/project/project.js +57 -3
  401. package/dist/node/project/wp-info.d.ts +2 -0
  402. package/dist/node/project/wp-info.d.ts.map +1 -0
  403. package/dist/node/project/wp-info.js +13 -1
  404. package/dist/node/storybook/index.d.ts +3 -0
  405. package/dist/node/storybook/index.d.ts.map +1 -0
  406. package/dist/node/storybook/index.js +13 -0
  407. package/dist/node/types/block-type.d.ts +28 -22
  408. package/dist/node/types/block-type.d.ts.map +1 -0
  409. package/dist/node/types/block-type.js +1 -0
  410. package/dist/node/types/view-type.d.ts +8 -7
  411. package/dist/node/types/view-type.d.ts.map +1 -0
  412. package/dist/node/utils/fetch-wp.d.ts +2 -0
  413. package/dist/node/utils/fetch-wp.d.ts.map +1 -0
  414. package/dist/node/utils/fetch-wp.js +27 -0
  415. package/dist/node/utils/format-zod-error.d.ts +1 -0
  416. package/dist/node/utils/format-zod-error.d.ts.map +1 -0
  417. package/dist/node/utils/fs-codegen.d.ts +4 -0
  418. package/dist/node/utils/fs-codegen.d.ts.map +1 -0
  419. package/dist/node/utils/fs-codegen.js +10 -2
  420. package/dist/node/utils/fs.d.ts +5 -0
  421. package/dist/node/utils/fs.d.ts.map +1 -0
  422. package/dist/node/utils/get-repo-info.d.ts +1 -0
  423. package/dist/node/utils/get-repo-info.d.ts.map +1 -0
  424. package/dist/node/utils/helpers.d.ts +1 -0
  425. package/dist/node/utils/helpers.d.ts.map +1 -0
  426. package/dist/node/utils/highlight-code.d.ts +1 -0
  427. package/dist/node/utils/highlight-code.d.ts.map +1 -0
  428. package/dist/node/utils/is-deploying.d.ts +1 -0
  429. package/dist/node/utils/is-deploying.d.ts.map +1 -0
  430. package/dist/node/utils/is-deploying.js +1 -1
  431. package/dist/node/utils/report-builder.d.ts +7 -6
  432. package/dist/node/utils/report-builder.d.ts.map +1 -0
  433. package/dist/node/utils/self-signed-cert.d.ts +5 -0
  434. package/dist/node/utils/self-signed-cert.d.ts.map +1 -0
  435. package/dist/node/utils/self-signed-cert.js +28 -4
  436. package/dist/node/utils/stateful-log.d.ts +1 -0
  437. package/dist/node/utils/stateful-log.d.ts.map +1 -0
  438. package/dist/node/utils/stateful-log.js +2 -0
  439. package/dist/node/utils/ts-export-extractor.d.ts +1 -0
  440. package/dist/node/utils/ts-export-extractor.d.ts.map +1 -0
  441. package/dist/node/utils/watch-file-tree.d.ts +18 -3
  442. package/dist/node/utils/watch-file-tree.d.ts.map +1 -0
  443. package/dist/node/utils/watch-file-tree.js +12 -5
  444. package/package.json +39 -25
  445. package/tsconfig.app.json +10 -5
  446. package/tsconfig.node.json +3 -2
  447. package/types.app.d.ts +2 -0
  448. package/types.meta.d.ts +116 -0
  449. package/dist/app/lib/blocks/ErrorBoundaryFrontend.d.ts +0 -15
  450. package/dist/app/lib/blocks/ErrorBoundaryFrontend.js +0 -35
  451. package/dist/app/lib/hooks/apiConfig.js +0 -4
  452. package/dist/app/lib/hooks/usePageLoad.d.ts +0 -6
  453. 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,9 @@
1
1
  import { PropsWithChildren } from "react";
2
- type Props = PropsWithChildren<{}>;
2
+ import { type RouterAPI } from "../types.js";
3
+ type Props = PropsWithChildren<{
4
+ routerRef?: React.MutableRefObject<RouterAPI | null>;
5
+ onReady?: () => void;
6
+ }>;
3
7
  export declare function BrowserRouter(props: Props): import("react/jsx-runtime").JSX.Element;
4
8
  export {};
9
+ //# 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,EAML,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,aAAa,CAAC,KAAK,EAAE,KAAK,2CAobzC"}
@@ -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,14 +66,9 @@ function historyStateForRoute(route) {
54
66
  state: route.returnState,
55
67
  };
56
68
  }
57
- let index = 0;
58
- function getHistoryId() {
59
- return String(index++);
60
- }
61
69
  let lastRouterState = null;
62
70
  export function BrowserRouter(props) {
63
71
  const pendingRoute = useRef(null);
64
- // const [activeRoute, setActiveRoute] = useState<RouteState>(initialRoute)
65
72
  const [transitioning, startTransition] = useTransition();
66
73
  const [routerState, setRouterState] = useState(() => ({
67
74
  activeRoute: initialRoute,
@@ -79,6 +86,16 @@ 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
  };
84
101
  const internals = {
@@ -181,11 +198,20 @@ export function BrowserRouter(props) {
181
198
  });
182
199
  if (cancelled)
183
200
  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
- }
201
+ const data = await loader.loadRouteData(parseHrefPath(args.url)).catch((err) => {
202
+ emitEvent({ type: "error", url: args.url, error: err, critical: true });
203
+ return {
204
+ view: "_error",
205
+ viewType: "react",
206
+ appData: loader.appData,
207
+ viewData: {
208
+ data: {
209
+ code: 500,
210
+ error: err,
211
+ },
212
+ },
213
+ };
214
+ });
189
215
  const lazyComponent = loader.getRouteComponent(data.view);
190
216
  if (!lazyComponent) {
191
217
  console.error(`No component found for view: ${data.view}`);
@@ -196,11 +222,12 @@ export function BrowserRouter(props) {
196
222
  hash: link.hash,
197
223
  search: "",
198
224
  query: link.query,
199
- pathname: link.pathname,
225
+ pathname: data.canonical ?? link.pathname,
200
226
  view: data.view,
201
227
  props: data.viewData?.data ?? {},
202
228
  component: lazyComponent,
203
229
  returnState: args.restoreState ?? {},
230
+ meta: getRouteMeta(data),
204
231
  });
205
232
  setState({
206
233
  pendingRoute: route,
@@ -229,6 +256,15 @@ export function BrowserRouter(props) {
229
256
  lastRoute: currentRoute,
230
257
  link,
231
258
  });
259
+ $routeMetaStore.data = route.meta;
260
+ // Update the 'Edit Page' button, if there is one
261
+ if (route.meta.editLink) {
262
+ const button = document.querySelector("#wp-admin-bar-edit a");
263
+ if (button) {
264
+ button.setAttribute("href", route.meta.editLink);
265
+ button.innerHTML = "Edit Page";
266
+ }
267
+ }
232
268
  };
233
269
  startTransition(() => {
234
270
  pendingRoute.current = route;
@@ -240,6 +276,7 @@ export function BrowserRouter(props) {
240
276
  }
241
277
  const api = {
242
278
  loader: loader,
279
+ hostname: window?._PAGE_DATA?.hostname,
243
280
  async navigate(url) {
244
281
  doRouteTransition({
245
282
  url: url,
@@ -247,6 +284,9 @@ export function BrowserRouter(props) {
247
284
  goingBack: false,
248
285
  });
249
286
  },
287
+ getState() {
288
+ return state;
289
+ },
250
290
  replaceHash(hash) {
251
291
  replaceRoute({
252
292
  ...getActiveRoute(),
@@ -257,6 +297,7 @@ export function BrowserRouter(props) {
257
297
  replaceRoute({
258
298
  ...getActiveRoute(),
259
299
  query,
300
+ returnState: captureState(),
260
301
  });
261
302
  },
262
303
  async prefetch(url) {
@@ -265,7 +306,7 @@ export function BrowserRouter(props) {
265
306
  if (loader.hasRouteData(link.pathname))
266
307
  return;
267
308
  emitEvent({ type: "preload:start", currentRoute: getActiveRoute(), link });
268
- const data = await loader.loadRouteData(link.pathname).then((data) => {
309
+ await loader.loadRouteData(link.pathname).then((data) => {
269
310
  emitEvent({ type: "preload:data-ready", currentRoute: getActiveRoute(), link, data });
270
311
  });
271
312
  }
@@ -297,9 +338,24 @@ export function BrowserRouter(props) {
297
338
  subscribers.delete(fn);
298
339
  };
299
340
  },
300
- handleClickEvent(e, originalHref) {
301
- const { mode, href } = getLinkHandlerMode(e, originalHref);
302
- if (mode === "ignore") {
341
+ handleClickEvent(e, originalHref, preferBack) {
342
+ const { mode, href, isSameUrl } = getLinkHandlerMode(e, originalHref, state.activeRoute);
343
+ let cancelled = false;
344
+ if (href) {
345
+ emitEvent({
346
+ type: "clicked",
347
+ currentRoute: getActiveRoute(),
348
+ link: parseRouteLink(href),
349
+ mode,
350
+ href,
351
+ isSameUrl,
352
+ cancel() {
353
+ cancelled = true;
354
+ },
355
+ });
356
+ }
357
+ console.log(mode, href, isSameUrl);
358
+ if (mode === "ignore" || cancelled) {
303
359
  e.preventDefault();
304
360
  return;
305
361
  }
@@ -308,10 +364,53 @@ export function BrowserRouter(props) {
308
364
  }
309
365
  else if (mode === "navigate" && href) {
310
366
  e.preventDefault();
367
+ if (preferBack) {
368
+ const lastState = state.history.length > 1 && state.history[state.history.length - 2];
369
+ if (lastState) {
370
+ const doesMatch = preferBack === "exact" ? isEqual(href, lastState.uri) : isSamePathname(href, lastState.uri);
371
+ if (doesMatch) {
372
+ history.back();
373
+ return;
374
+ }
375
+ }
376
+ }
311
377
  api.navigate(href);
312
378
  }
313
379
  },
314
380
  emitEvent,
381
+ restoreRoute(route) {
382
+ const stack = state.history;
383
+ // Is the route in our history stack? (going back)
384
+ const index = stack.findIndex((item) => item.id === route.id);
385
+ if (index >= 0) {
386
+ return doRouteTransition({
387
+ url: route.uri,
388
+ route,
389
+ goingBack: true,
390
+ history: stack.slice(0, index),
391
+ restoreState: route.returnState,
392
+ shouldPush: false,
393
+ });
394
+ }
395
+ // Is the route in our history _cache_? (probably going forward)
396
+ if (historyCache.has(route.id)) {
397
+ return doRouteTransition({
398
+ url: route.uri,
399
+ route,
400
+ goingBack: false,
401
+ history: stack,
402
+ restoreState: route.returnState,
403
+ shouldPush: false,
404
+ });
405
+ }
406
+ return doRouteTransition({
407
+ url: route.uri,
408
+ goingBack: false,
409
+ history: stack,
410
+ restoreState: route.returnState,
411
+ shouldPush: false,
412
+ });
413
+ },
315
414
  };
316
415
  return {
317
416
  api,
@@ -340,6 +439,7 @@ export function BrowserRouter(props) {
340
439
  // Handle popState
341
440
  // const router = useRouterStore.getState()
342
441
  const onPopState = (e) => {
442
+ // console.log("Popped", e.state)
343
443
  internals.poppedState?.(document.location.href, e.state ?? {});
344
444
  };
345
445
  window.addEventListener("popstate", onPopState);
@@ -347,5 +447,8 @@ export function BrowserRouter(props) {
347
447
  window.removeEventListener("popstate", onPopState);
348
448
  };
349
449
  }, []);
450
+ useEffect(() => {
451
+ props.onReady?.();
452
+ }, []);
350
453
  return (_jsx(RouterContext.Provider, { value: api, children: _jsx(RouterStateContext.Provider, { value: routerState, children: _jsx(AppRenderer, {}) }) }));
351
454
  }
@@ -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";
1
+ import { ComponentPropsWithRef, ElementType, MouseEvent, ReactElement } from "react";
2
2
  type Props<T extends ElementType = "a"> = NoInfer<Omit<ComponentPropsWithRef<T>, "href">> & {
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,CAAC,CAAC,GAAG;IAC1F,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,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,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";
@@ -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,2CAcxD;yBAde,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);
@@ -22,7 +23,7 @@ export function RouteDisplay(props) {
22
23
  }
23
24
  return useMemo(() => {
24
25
  let child = !!Component && _jsx(Component, { ...props.route.props });
25
- return _jsx(RouteItemContext.Provider, { value: props.route, children: child });
26
+ return (_jsx(RouteErrorBoundary, { route: props.route, children: _jsx(RouteItemContext.Provider, { value: props.route, children: child }) }));
26
27
  }, [Component, props.route, props.route]);
27
28
  }
28
29
  RouteDisplay.displayName = "RouteDisplay";
@@ -2,8 +2,10 @@ 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;
7
8
  }>;
8
9
  export declare function SSRRouter(props: Props): import("react/jsx-runtime").JSX.Element;
9
10
  export {};
11
+ //# 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;CACpB,CAAC,CAAA;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,2CAgBrC"}
@@ -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,8 @@ 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
11
  routerState.history = [props.route];
12
12
  routerState.activeRoute = props.route;
13
- return (_jsx(Suspense, { children: _jsx(RouterContext.Provider, { value: router, children: _jsx(RouterStateContext.Provider, { value: routerState, children: _jsx(AppRenderer, {}) }) }) }));
13
+ return (_jsx(RouterContext.Provider, { value: router, children: _jsx(RouterStateContext.Provider, { value: routerState, children: _jsx(AppRenderer, {}) }) }));
14
14
  }
@@ -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,
@@ -1,5 +1,9 @@
1
- import { Context } from "react";
2
- import { RouterAPI, RouterAPIState } from "./types.js";
3
- export declare const RouterContext: Context<RouterAPI>;
4
- export declare const RouterStateContext: Context<RouterAPIState>;
5
- export declare const RouteItemContext: Context<import("./types.js").TypedRouteState<"_unknown", {}>>;
1
+ import { RouteMetaTag, RouterAPI, RouterAPIState } from "./types.js";
2
+ export declare const RouterContext: import("react").Context<RouterAPI>;
3
+ export declare const RouterStateContext: import("react").Context<RouterAPIState>;
4
+ export declare const RouteItemContext: import("react").Context<import("./types.js").TypedRouteState<"_unknown", {}>>;
5
+ export declare const clientMetaTags: {
6
+ tags: null | RouteMetaTag[];
7
+ setMetaTags(tags: RouteMetaTag[]): void;
8
+ };
9
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/app/lib/routing/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAc,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAkBhF,eAAO,MAAM,aAAa,oCAgBxB,CAAA;AAEF,eAAO,MAAM,kBAAkB,yCAI7B,CAAA;AAEF,eAAO,MAAM,gBAAgB,+EAAwC,CAAA;AAErE,eAAO,MAAM,cAAc;UACX,IAAI,GAAG,YAAY,EAAE;sBACjB,YAAY,EAAE;CAGhC,CAAA"}