one 1.2.57 → 1.2.58

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 (481) hide show
  1. package/dist/cjs/cli/buildPage.cjs +1 -1
  2. package/dist/cjs/cli/buildPage.js +1 -1
  3. package/dist/cjs/cli/buildPage.native.js +1 -1
  4. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  5. package/dist/cjs/cli/dev.cjs +4 -4
  6. package/dist/cjs/cli/dev.js +4 -4
  7. package/dist/cjs/cli/dev.js.map +1 -1
  8. package/dist/cjs/cli/dev.native.js +4 -4
  9. package/dist/cjs/cli/dev.native.js.map +1 -1
  10. package/dist/cjs/createApp.cjs +2 -1
  11. package/dist/cjs/createApp.js +2 -2
  12. package/dist/cjs/createApp.js.map +1 -1
  13. package/dist/cjs/createHandleRequest.test.js +3 -1
  14. package/dist/cjs/createHandleRequest.test.js.map +1 -1
  15. package/dist/cjs/createHandleRequest.test.native.js.map +1 -1
  16. package/dist/cjs/devtools/registry.cjs +30 -0
  17. package/dist/cjs/devtools/registry.js +25 -0
  18. package/dist/cjs/devtools/registry.js.map +6 -0
  19. package/dist/cjs/devtools/registry.native.js +33 -0
  20. package/dist/cjs/devtools/registry.native.js.map +1 -0
  21. package/dist/cjs/fork/createMemoryHistory.cjs +20 -9
  22. package/dist/cjs/fork/createMemoryHistory.js +22 -4
  23. package/dist/cjs/fork/createMemoryHistory.js.map +1 -1
  24. package/dist/cjs/fork/createMemoryHistory.native.js +20 -9
  25. package/dist/cjs/fork/createMemoryHistory.native.js.map +1 -1
  26. package/dist/cjs/fork/useLinking.cjs +11 -5
  27. package/dist/cjs/fork/useLinking.js +6 -6
  28. package/dist/cjs/fork/useLinking.js.map +1 -1
  29. package/dist/cjs/index.cjs +17 -1
  30. package/dist/cjs/index.js +12 -2
  31. package/dist/cjs/index.js.map +1 -1
  32. package/dist/cjs/index.native.js +17 -1
  33. package/dist/cjs/index.native.js.map +1 -1
  34. package/dist/cjs/layouts/withLayoutContext.cjs +34 -15
  35. package/dist/cjs/layouts/withLayoutContext.js +29 -13
  36. package/dist/cjs/layouts/withLayoutContext.js.map +1 -1
  37. package/dist/cjs/layouts/withLayoutContext.native.js +42 -19
  38. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  39. package/dist/cjs/link/Link.cjs +5 -2
  40. package/dist/cjs/link/Link.js +3 -2
  41. package/dist/cjs/link/Link.js.map +1 -1
  42. package/dist/cjs/link/Link.native.js +6 -1
  43. package/dist/cjs/link/Link.native.js.map +1 -1
  44. package/dist/cjs/link/useLinkTo.cjs +11 -3
  45. package/dist/cjs/link/useLinkTo.js +6 -3
  46. package/dist/cjs/link/useLinkTo.js.map +1 -1
  47. package/dist/cjs/link/useLinkTo.native.js +11 -3
  48. package/dist/cjs/link/useLinkTo.native.js.map +1 -1
  49. package/dist/cjs/router/Route.js.map +1 -1
  50. package/dist/cjs/router/Route.native.js.map +1 -1
  51. package/dist/cjs/router/findRouteNode.cjs +70 -0
  52. package/dist/cjs/router/findRouteNode.js +72 -0
  53. package/dist/cjs/router/findRouteNode.js.map +6 -0
  54. package/dist/cjs/router/findRouteNode.native.js +104 -0
  55. package/dist/cjs/router/findRouteNode.native.js.map +1 -0
  56. package/dist/cjs/router/router.cjs +160 -11
  57. package/dist/cjs/router/router.js +142 -7
  58. package/dist/cjs/router/router.js.map +2 -2
  59. package/dist/cjs/router/router.native.js +241 -57
  60. package/dist/cjs/router/router.native.js.map +1 -1
  61. package/dist/cjs/router/useScreens.cjs +1 -1
  62. package/dist/cjs/router/useScreens.js +1 -1
  63. package/dist/cjs/router/useScreens.js.map +1 -1
  64. package/dist/cjs/router/useScreens.native.js +5 -2
  65. package/dist/cjs/router/useScreens.native.js.map +1 -1
  66. package/dist/cjs/server/oneServe.js.map +1 -1
  67. package/dist/cjs/server/oneServe.native.js.map +1 -1
  68. package/dist/cjs/useBlocker.cjs +158 -0
  69. package/dist/cjs/useBlocker.js +145 -0
  70. package/dist/cjs/useBlocker.js.map +6 -0
  71. package/dist/cjs/useBlocker.native.js +89 -0
  72. package/dist/cjs/useBlocker.native.js.map +1 -0
  73. package/dist/cjs/useLoader.cjs +69 -3
  74. package/dist/cjs/useLoader.js +57 -4
  75. package/dist/cjs/useLoader.js.map +2 -2
  76. package/dist/cjs/useLoader.native.js +90 -6
  77. package/dist/cjs/useLoader.native.js.map +1 -1
  78. package/dist/cjs/useScrollGroup.cjs +37 -0
  79. package/dist/cjs/useScrollGroup.js +30 -0
  80. package/dist/cjs/useScrollGroup.js.map +6 -0
  81. package/dist/cjs/useScrollGroup.native.js +29 -0
  82. package/dist/cjs/useScrollGroup.native.js.map +1 -0
  83. package/dist/cjs/validateParams.cjs +80 -0
  84. package/dist/cjs/validateParams.js +84 -0
  85. package/dist/cjs/validateParams.js.map +6 -0
  86. package/dist/cjs/validateParams.native.js +180 -0
  87. package/dist/cjs/validateParams.native.js.map +1 -0
  88. package/dist/cjs/validateSearch.cjs +104 -0
  89. package/dist/cjs/validateSearch.js +99 -0
  90. package/dist/cjs/validateSearch.js.map +6 -0
  91. package/dist/cjs/validateSearch.native.js +202 -0
  92. package/dist/cjs/validateSearch.native.js.map +1 -0
  93. package/dist/cjs/views/ErrorBoundary.cjs +293 -10
  94. package/dist/cjs/views/ErrorBoundary.js +328 -8
  95. package/dist/cjs/views/ErrorBoundary.js.map +2 -2
  96. package/dist/cjs/views/ErrorBoundary.native.js +159 -4
  97. package/dist/cjs/views/ErrorBoundary.native.js.map +1 -1
  98. package/dist/cjs/views/Navigator.cjs +10 -3
  99. package/dist/cjs/views/Navigator.js +7 -3
  100. package/dist/cjs/views/Navigator.js.map +1 -1
  101. package/dist/cjs/views/Navigator.native.js +12 -3
  102. package/dist/cjs/views/Navigator.native.js.map +1 -1
  103. package/dist/cjs/views/Protected.cjs +36 -0
  104. package/dist/cjs/views/Protected.js +27 -0
  105. package/dist/cjs/views/Protected.js.map +6 -0
  106. package/dist/cjs/views/Protected.native.js +44 -0
  107. package/dist/cjs/views/Protected.native.js.map +1 -0
  108. package/dist/cjs/views/RootErrorBoundary.cjs +193 -8
  109. package/dist/cjs/views/RootErrorBoundary.js +213 -8
  110. package/dist/cjs/views/RootErrorBoundary.js.map +1 -1
  111. package/dist/cjs/views/RootErrorBoundary.native.js +192 -8
  112. package/dist/cjs/views/RootErrorBoundary.native.js.map +1 -1
  113. package/dist/cjs/views/ScrollBehavior.cjs +49 -11
  114. package/dist/cjs/views/ScrollBehavior.js +47 -11
  115. package/dist/cjs/views/ScrollBehavior.js.map +1 -1
  116. package/dist/cjs/views/ScrollBehavior.native.js +68 -10
  117. package/dist/cjs/views/ScrollBehavior.native.js.map +1 -1
  118. package/dist/cjs/views/SourceInspector.cjs +28 -0
  119. package/dist/cjs/views/SourceInspector.js +23 -0
  120. package/dist/cjs/views/SourceInspector.js.map +6 -0
  121. package/dist/cjs/views/SourceInspector.native.js +32 -0
  122. package/dist/cjs/views/SourceInspector.native.js.map +1 -0
  123. package/dist/cjs/views/Try.cjs +40 -7
  124. package/dist/cjs/views/Try.js +38 -4
  125. package/dist/cjs/views/Try.js.map +1 -1
  126. package/dist/cjs/views/Try.native.js +42 -7
  127. package/dist/cjs/views/Try.native.js.map +1 -1
  128. package/dist/cjs/vite/DevHead.cjs +797 -43
  129. package/dist/cjs/vite/DevHead.js +802 -51
  130. package/dist/cjs/vite/DevHead.js.map +1 -1
  131. package/dist/cjs/vite/DevHead.native.js +783 -1
  132. package/dist/cjs/vite/DevHead.native.js.map +1 -1
  133. package/dist/cjs/vite/one.cjs +7 -1
  134. package/dist/cjs/vite/one.js +7 -2
  135. package/dist/cjs/vite/one.js.map +1 -1
  136. package/dist/cjs/vite/one.native.js +11 -1
  137. package/dist/cjs/vite/one.native.js.map +1 -1
  138. package/dist/cjs/vite/plugins/SSRCSSPlugin.cjs +44 -4
  139. package/dist/cjs/vite/plugins/SSRCSSPlugin.js +48 -4
  140. package/dist/cjs/vite/plugins/SSRCSSPlugin.js.map +1 -1
  141. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js +62 -5
  142. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  143. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +6 -3
  144. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  145. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  146. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.cjs +5 -1
  147. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js +11 -6
  148. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
  149. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +1 -0
  150. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
  151. package/dist/cjs/vite/plugins/sourceInspectorPlugin.cjs +155 -0
  152. package/dist/cjs/vite/plugins/sourceInspectorPlugin.js +148 -0
  153. package/dist/cjs/vite/plugins/sourceInspectorPlugin.js.map +6 -0
  154. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js +231 -0
  155. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js.map +1 -0
  156. package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +25 -6
  157. package/dist/cjs/vite/plugins/virtualEntryPlugin.js +16 -6
  158. package/dist/cjs/vite/plugins/virtualEntryPlugin.js.map +1 -1
  159. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +26 -7
  160. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  161. package/dist/esm/cli/buildPage.js +1 -1
  162. package/dist/esm/cli/buildPage.mjs +1 -1
  163. package/dist/esm/cli/buildPage.mjs.map +1 -1
  164. package/dist/esm/cli/buildPage.native.js +1 -1
  165. package/dist/esm/cli/buildPage.native.js.map +1 -1
  166. package/dist/esm/cli/dev.js +4 -4
  167. package/dist/esm/cli/dev.js.map +1 -1
  168. package/dist/esm/cli/dev.mjs +4 -4
  169. package/dist/esm/cli/dev.mjs.map +1 -1
  170. package/dist/esm/cli/dev.native.js +4 -4
  171. package/dist/esm/cli/dev.native.js.map +1 -1
  172. package/dist/esm/createApp.js +2 -2
  173. package/dist/esm/createApp.js.map +1 -1
  174. package/dist/esm/createApp.mjs +2 -1
  175. package/dist/esm/createApp.mjs.map +1 -1
  176. package/dist/esm/createHandleRequest.test.js +3 -1
  177. package/dist/esm/createHandleRequest.test.js.map +1 -1
  178. package/dist/esm/createHandleRequest.test.mjs.map +1 -1
  179. package/dist/esm/createHandleRequest.test.native.js.map +1 -1
  180. package/dist/esm/devtools/registry.js +9 -0
  181. package/dist/esm/devtools/registry.js.map +6 -0
  182. package/dist/esm/devtools/registry.mjs +6 -0
  183. package/dist/esm/devtools/registry.mjs.map +1 -0
  184. package/dist/esm/devtools/registry.native.js +6 -0
  185. package/dist/esm/devtools/registry.native.js.map +1 -0
  186. package/dist/esm/fork/createMemoryHistory.js +22 -4
  187. package/dist/esm/fork/createMemoryHistory.js.map +1 -1
  188. package/dist/esm/fork/createMemoryHistory.mjs +20 -9
  189. package/dist/esm/fork/createMemoryHistory.mjs.map +1 -1
  190. package/dist/esm/fork/createMemoryHistory.native.js +20 -9
  191. package/dist/esm/fork/createMemoryHistory.native.js.map +1 -1
  192. package/dist/esm/fork/useLinking.js +6 -5
  193. package/dist/esm/fork/useLinking.js.map +1 -1
  194. package/dist/esm/fork/useLinking.mjs +11 -5
  195. package/dist/esm/fork/useLinking.mjs.map +1 -1
  196. package/dist/esm/index.js +30 -2
  197. package/dist/esm/index.js.map +1 -1
  198. package/dist/esm/index.mjs +8 -2
  199. package/dist/esm/index.mjs.map +1 -1
  200. package/dist/esm/index.native.js +8 -2
  201. package/dist/esm/index.native.js.map +1 -1
  202. package/dist/esm/layouts/withLayoutContext.js +30 -12
  203. package/dist/esm/layouts/withLayoutContext.js.map +1 -1
  204. package/dist/esm/layouts/withLayoutContext.mjs +34 -15
  205. package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
  206. package/dist/esm/layouts/withLayoutContext.native.js +42 -19
  207. package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
  208. package/dist/esm/link/Link.js +3 -2
  209. package/dist/esm/link/Link.js.map +1 -1
  210. package/dist/esm/link/Link.mjs +5 -2
  211. package/dist/esm/link/Link.mjs.map +1 -1
  212. package/dist/esm/link/Link.native.js +6 -1
  213. package/dist/esm/link/Link.native.js.map +1 -1
  214. package/dist/esm/link/useLinkTo.js +6 -3
  215. package/dist/esm/link/useLinkTo.js.map +1 -1
  216. package/dist/esm/link/useLinkTo.mjs +11 -3
  217. package/dist/esm/link/useLinkTo.mjs.map +1 -1
  218. package/dist/esm/link/useLinkTo.native.js +11 -3
  219. package/dist/esm/link/useLinkTo.native.js.map +1 -1
  220. package/dist/esm/router/Route.js.map +1 -1
  221. package/dist/esm/router/Route.mjs.map +1 -1
  222. package/dist/esm/router/Route.native.js.map +1 -1
  223. package/dist/esm/router/findRouteNode.js +56 -0
  224. package/dist/esm/router/findRouteNode.js.map +6 -0
  225. package/dist/esm/router/findRouteNode.mjs +44 -0
  226. package/dist/esm/router/findRouteNode.mjs.map +1 -0
  227. package/dist/esm/router/findRouteNode.native.js +75 -0
  228. package/dist/esm/router/findRouteNode.native.js.map +1 -0
  229. package/dist/esm/router/router.js +154 -6
  230. package/dist/esm/router/router.js.map +1 -1
  231. package/dist/esm/router/router.mjs +151 -10
  232. package/dist/esm/router/router.mjs.map +1 -1
  233. package/dist/esm/router/router.native.js +232 -56
  234. package/dist/esm/router/router.native.js.map +1 -1
  235. package/dist/esm/router/useScreens.js +1 -1
  236. package/dist/esm/router/useScreens.js.map +1 -1
  237. package/dist/esm/router/useScreens.mjs +1 -1
  238. package/dist/esm/router/useScreens.mjs.map +1 -1
  239. package/dist/esm/router/useScreens.native.js +5 -2
  240. package/dist/esm/router/useScreens.native.js.map +1 -1
  241. package/dist/esm/server/oneServe.js.map +1 -1
  242. package/dist/esm/server/oneServe.mjs.map +1 -1
  243. package/dist/esm/server/oneServe.native.js.map +1 -1
  244. package/dist/esm/useBlocker.js +122 -0
  245. package/dist/esm/useBlocker.js.map +6 -0
  246. package/dist/esm/useBlocker.mjs +123 -0
  247. package/dist/esm/useBlocker.mjs.map +1 -0
  248. package/dist/esm/useBlocker.native.js +51 -0
  249. package/dist/esm/useBlocker.native.js.map +1 -0
  250. package/dist/esm/useLoader.js +57 -3
  251. package/dist/esm/useLoader.js.map +2 -2
  252. package/dist/esm/useLoader.mjs +69 -4
  253. package/dist/esm/useLoader.mjs.map +1 -1
  254. package/dist/esm/useLoader.native.js +90 -7
  255. package/dist/esm/useLoader.native.js.map +1 -1
  256. package/dist/esm/useScrollGroup.js +16 -0
  257. package/dist/esm/useScrollGroup.js.map +6 -0
  258. package/dist/esm/useScrollGroup.mjs +14 -0
  259. package/dist/esm/useScrollGroup.mjs.map +1 -0
  260. package/dist/esm/useScrollGroup.native.js +3 -0
  261. package/dist/esm/useScrollGroup.native.js.map +1 -0
  262. package/dist/esm/validateParams.js +68 -0
  263. package/dist/esm/validateParams.js.map +6 -0
  264. package/dist/esm/validateParams.mjs +54 -0
  265. package/dist/esm/validateParams.mjs.map +1 -0
  266. package/dist/esm/validateParams.native.js +151 -0
  267. package/dist/esm/validateParams.native.js.map +1 -0
  268. package/dist/esm/validateSearch.js +83 -0
  269. package/dist/esm/validateSearch.js.map +6 -0
  270. package/dist/esm/validateSearch.mjs +77 -0
  271. package/dist/esm/validateSearch.mjs.map +1 -0
  272. package/dist/esm/validateSearch.native.js +172 -0
  273. package/dist/esm/validateSearch.native.js.map +1 -0
  274. package/dist/esm/views/ErrorBoundary.js +325 -7
  275. package/dist/esm/views/ErrorBoundary.js.map +2 -2
  276. package/dist/esm/views/ErrorBoundary.mjs +289 -6
  277. package/dist/esm/views/ErrorBoundary.mjs.map +1 -1
  278. package/dist/esm/views/ErrorBoundary.native.js +159 -4
  279. package/dist/esm/views/ErrorBoundary.native.js.map +1 -1
  280. package/dist/esm/views/Navigator.js +7 -2
  281. package/dist/esm/views/Navigator.js.map +1 -1
  282. package/dist/esm/views/Navigator.mjs +10 -3
  283. package/dist/esm/views/Navigator.mjs.map +1 -1
  284. package/dist/esm/views/Navigator.native.js +12 -3
  285. package/dist/esm/views/Navigator.native.js.map +1 -1
  286. package/dist/esm/views/Protected.js +14 -0
  287. package/dist/esm/views/Protected.js.map +6 -0
  288. package/dist/esm/views/Protected.mjs +11 -0
  289. package/dist/esm/views/Protected.mjs.map +1 -0
  290. package/dist/esm/views/Protected.native.js +16 -0
  291. package/dist/esm/views/Protected.native.js.map +1 -0
  292. package/dist/esm/views/RootErrorBoundary.js +214 -7
  293. package/dist/esm/views/RootErrorBoundary.js.map +1 -1
  294. package/dist/esm/views/RootErrorBoundary.mjs +192 -7
  295. package/dist/esm/views/RootErrorBoundary.mjs.map +1 -1
  296. package/dist/esm/views/RootErrorBoundary.native.js +191 -7
  297. package/dist/esm/views/RootErrorBoundary.native.js.map +1 -1
  298. package/dist/esm/views/ScrollBehavior.js +47 -11
  299. package/dist/esm/views/ScrollBehavior.js.map +1 -1
  300. package/dist/esm/views/ScrollBehavior.mjs +48 -11
  301. package/dist/esm/views/ScrollBehavior.mjs.map +1 -1
  302. package/dist/esm/views/ScrollBehavior.native.js +67 -10
  303. package/dist/esm/views/ScrollBehavior.native.js.map +1 -1
  304. package/dist/esm/views/SourceInspector.js +7 -0
  305. package/dist/esm/views/SourceInspector.js.map +6 -0
  306. package/dist/esm/views/SourceInspector.mjs +5 -0
  307. package/dist/esm/views/SourceInspector.mjs.map +1 -0
  308. package/dist/esm/views/SourceInspector.native.js +6 -0
  309. package/dist/esm/views/SourceInspector.native.js.map +1 -0
  310. package/dist/esm/views/Try.js +38 -4
  311. package/dist/esm/views/Try.js.map +1 -1
  312. package/dist/esm/views/Try.mjs +40 -7
  313. package/dist/esm/views/Try.mjs.map +1 -1
  314. package/dist/esm/views/Try.native.js +42 -7
  315. package/dist/esm/views/Try.native.js.map +1 -1
  316. package/dist/esm/vite/DevHead.js +802 -51
  317. package/dist/esm/vite/DevHead.js.map +1 -1
  318. package/dist/esm/vite/DevHead.mjs +797 -43
  319. package/dist/esm/vite/DevHead.mjs.map +1 -1
  320. package/dist/esm/vite/DevHead.native.js +782 -0
  321. package/dist/esm/vite/DevHead.native.js.map +1 -1
  322. package/dist/esm/vite/one.js +7 -1
  323. package/dist/esm/vite/one.js.map +1 -1
  324. package/dist/esm/vite/one.mjs +7 -1
  325. package/dist/esm/vite/one.mjs.map +1 -1
  326. package/dist/esm/vite/one.native.js +11 -1
  327. package/dist/esm/vite/one.native.js.map +1 -1
  328. package/dist/esm/vite/plugins/SSRCSSPlugin.js +48 -4
  329. package/dist/esm/vite/plugins/SSRCSSPlugin.js.map +1 -1
  330. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs +44 -4
  331. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs.map +1 -1
  332. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js +61 -4
  333. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  334. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +6 -3
  335. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  336. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  337. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  338. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js +11 -6
  339. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
  340. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs +5 -1
  341. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs.map +1 -1
  342. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +1 -0
  343. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
  344. package/dist/esm/vite/plugins/sourceInspectorPlugin.js +126 -0
  345. package/dist/esm/vite/plugins/sourceInspectorPlugin.js.map +6 -0
  346. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs +121 -0
  347. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs.map +1 -0
  348. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js +194 -0
  349. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js.map +1 -0
  350. package/dist/esm/vite/plugins/virtualEntryPlugin.js +16 -6
  351. package/dist/esm/vite/plugins/virtualEntryPlugin.js.map +1 -1
  352. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +25 -6
  353. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
  354. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +26 -7
  355. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  356. package/package.json +11 -9
  357. package/src/cli/buildPage.ts +1 -1
  358. package/src/cli/dev.ts +4 -4
  359. package/src/createApp.tsx +11 -1
  360. package/src/createHandleRequest.test.ts +3 -1
  361. package/src/devtools/registry.ts +21 -0
  362. package/src/fork/createMemoryHistory.tsx +43 -11
  363. package/src/fork/useLinking.ts +14 -4
  364. package/src/index.ts +34 -1
  365. package/src/interfaces/router.ts +48 -0
  366. package/src/layouts/withLayoutContext.tsx +48 -8
  367. package/src/link/Link.tsx +7 -2
  368. package/src/link/useLinkTo.tsx +7 -3
  369. package/src/router/Route.tsx +32 -3
  370. package/src/router/findRouteNode.ts +127 -0
  371. package/src/router/router.ts +286 -2
  372. package/src/router/useScreens.tsx +9 -3
  373. package/src/useBlocker.native.ts +153 -0
  374. package/src/useBlocker.ts +340 -0
  375. package/src/useLoader.ts +139 -1
  376. package/src/useScrollGroup.native.ts +7 -0
  377. package/src/useScrollGroup.ts +44 -0
  378. package/src/validateParams.ts +196 -0
  379. package/src/validateSearch.ts +241 -0
  380. package/src/views/ErrorBoundary.tsx +154 -156
  381. package/src/views/ErrorBoundary.web.tsx +321 -0
  382. package/src/views/Navigator.tsx +14 -2
  383. package/src/views/Protected.tsx +62 -0
  384. package/src/views/RootErrorBoundary.tsx +214 -17
  385. package/src/views/ScrollBehavior.tsx +82 -3
  386. package/src/views/SourceInspector.tsx +39 -0
  387. package/src/views/Try.tsx +81 -12
  388. package/src/vite/DevHead.tsx +819 -54
  389. package/src/vite/one.ts +13 -0
  390. package/src/vite/plugins/SSRCSSPlugin.ts +104 -0
  391. package/src/vite/plugins/fileSystemRouterPlugin.tsx +11 -8
  392. package/src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx +4 -0
  393. package/src/vite/plugins/sourceInspectorPlugin.ts +246 -0
  394. package/src/vite/plugins/virtualEntryPlugin.ts +35 -10
  395. package/src/vite/types.ts +28 -0
  396. package/types/Route.d.ts.map +1 -0
  397. package/types/cleanUrl.d.ts.map +1 -0
  398. package/types/cli/run.d.ts.map +1 -0
  399. package/types/createApp.d.ts +5 -0
  400. package/types/createApp.d.ts.map +1 -1
  401. package/types/createRoute.d.ts.map +1 -0
  402. package/types/devtools/registry.d.ts +15 -0
  403. package/types/devtools/registry.d.ts.map +1 -0
  404. package/types/fork/NavigationContainer.native.d.ts.map +1 -0
  405. package/types/fork/createMemoryHistory.d.ts +8 -3
  406. package/types/fork/createMemoryHistory.d.ts.map +1 -1
  407. package/types/fork/useLinking.d.ts.map +1 -1
  408. package/types/getLinkingConfig.d.ts.map +1 -0
  409. package/types/getRoutes.d.ts.map +1 -0
  410. package/types/imperative-api.d.ts.map +1 -0
  411. package/types/index.d.ts +8 -1
  412. package/types/index.d.ts.map +1 -1
  413. package/types/interfaces/router.d.ts +47 -0
  414. package/types/interfaces/router.d.ts.map +1 -1
  415. package/types/layouts/withLayoutContext.d.ts +2 -1
  416. package/types/layouts/withLayoutContext.d.ts.map +1 -1
  417. package/types/link/Link.d.ts.map +1 -1
  418. package/types/link/useLinkTo.d.ts +1 -0
  419. package/types/link/useLinkTo.d.ts.map +1 -1
  420. package/types/matchers.d.ts.map +1 -0
  421. package/types/platform.d.ts.map +1 -0
  422. package/types/router/Route.d.ts +32 -3
  423. package/types/router/Route.d.ts.map +1 -1
  424. package/types/router/findRouteNode.d.ts +31 -0
  425. package/types/router/findRouteNode.d.ts.map +1 -0
  426. package/types/router/router.d.ts +35 -0
  427. package/types/router/router.d.ts.map +1 -1
  428. package/types/router/useScreens.d.ts +2 -0
  429. package/types/router/useScreens.d.ts.map +1 -1
  430. package/types/server/oneServe.d.ts.map +1 -1
  431. package/types/sortRoutes.d.ts.map +1 -0
  432. package/types/useBlocker.d.ts +72 -0
  433. package/types/useBlocker.d.ts.map +1 -0
  434. package/types/useBlocker.native.d.ts +60 -0
  435. package/types/useBlocker.native.d.ts.map +1 -0
  436. package/types/useLoader.d.ts +10 -0
  437. package/types/useLoader.d.ts.map +1 -1
  438. package/types/useNavigation.d.ts.map +1 -0
  439. package/types/useScreens.d.ts.map +1 -0
  440. package/types/useScrollGroup.d.ts +27 -0
  441. package/types/useScrollGroup.d.ts.map +1 -0
  442. package/types/useScrollGroup.native.d.ts +6 -0
  443. package/types/useScrollGroup.native.d.ts.map +1 -0
  444. package/types/useSearch.d.ts.map +1 -0
  445. package/types/useViteRoutes.d.ts.map +1 -0
  446. package/types/validateParams.d.ts +85 -0
  447. package/types/validateParams.d.ts.map +1 -0
  448. package/types/validateSearch.d.ts +107 -0
  449. package/types/validateSearch.d.ts.map +1 -0
  450. package/types/views/ErrorBoundary.d.ts +11 -1
  451. package/types/views/ErrorBoundary.d.ts.map +1 -1
  452. package/types/views/ErrorBoundary.web.d.ts +13 -0
  453. package/types/views/ErrorBoundary.web.d.ts.map +1 -0
  454. package/types/views/Navigator.d.ts.map +1 -1
  455. package/types/views/Protected.d.ts +39 -0
  456. package/types/views/Protected.d.ts.map +1 -0
  457. package/types/views/RootErrorBoundary.d.ts +14 -8
  458. package/types/views/RootErrorBoundary.d.ts.map +1 -1
  459. package/types/views/ScrollBehavior.d.ts +8 -0
  460. package/types/views/ScrollBehavior.d.ts.map +1 -1
  461. package/types/views/ScrollRestoration.d.ts.map +1 -0
  462. package/types/views/SourceInspector.d.ts +35 -0
  463. package/types/views/SourceInspector.d.ts.map +1 -0
  464. package/types/views/Try.d.ts +29 -6
  465. package/types/views/Try.d.ts.map +1 -1
  466. package/types/vite/DevHead.d.ts.map +1 -1
  467. package/types/vite/build.d.ts.map +1 -0
  468. package/types/vite/headers.d.ts.map +1 -0
  469. package/types/vite/headers.native.d.ts.map +1 -0
  470. package/types/vite/one.d.ts.map +1 -1
  471. package/types/vite/plugins/SSRCSSPlugin.d.ts.map +1 -1
  472. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
  473. package/types/vite/plugins/generateFileSystemRouteTypesPlugin.d.ts.map +1 -1
  474. package/types/vite/plugins/seoPreviewPlugin.d.ts.map +1 -0
  475. package/types/vite/plugins/sourceInspectorPlugin.d.ts +3 -0
  476. package/types/vite/plugins/sourceInspectorPlugin.d.ts.map +1 -0
  477. package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
  478. package/types/vite/resolveAPIRequest.d.ts.map +1 -0
  479. package/types/vite/server.d.ts.map +1 -0
  480. package/types/vite/types.d.ts +24 -0
  481. package/types/vite/types.d.ts.map +1 -1
@@ -1,82 +1,833 @@
1
1
  import { VIRTUAL_SSR_CSS_HREF } from "../constants";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ const ROUTE_HMR_SCRIPT = 'import { createHotContext } from "/@vite/client"; const hot = createHotContext("/__one_route_hmr"); hot.on("one:route-update", (data) => { if (window.__oneRouteCache) { if (data?.file) { window.__oneRouteCache.clearFile(data.file); } else { window.__oneRouteCache.clear(); } } window.dispatchEvent(new CustomEvent("one-hmr-update")); });', LOADER_HMR_SCRIPT = 'import { createHotContext } from "/@vite/client"; const hot = createHotContext("/__one_loader_hmr"); hot.on("one:loader-data-update", async (data) => { if (data?.routePaths && window.__oneRefetchLoader) { const currentPath = window.location.pathname.replace(/\\/$/, "") || "/"; for (const routePath of data.routePaths) { if (routePath === currentPath) { try { await window.__oneRefetchLoader(routePath); } catch (err) { console.error("[one] Error refetching loader:", err); } } } } });', REACT_REFRESH_SCRIPT = 'import { injectIntoGlobalHook } from "/@react-refresh"; injectIntoGlobalHook(window); window.$RefreshReg$ = () => {}; window.$RefreshSig$ = () => (type) => type;', ONE_DEVTOOLS_SCRIPT = `
4
+ (function() {
5
+ try {
6
+ var host = null;
7
+ var shadow = null;
8
+ var spotlight = null;
9
+ var panel = null;
10
+ var activeTab = 'seo';
11
+ var isDragging = false;
12
+ var dragOffset = { x: 0, y: 0 };
13
+ var panelPos = { x: 20, y: 20 };
14
+ var snappedEdge = { h: null, v: null };
15
+
16
+ var LOGO_SVG = '<svg width="24" height="24" viewBox="0 0 100 100"><circle cx="50" cy="50" r="48" fill="#FCD34D" stroke="#222" stroke-width="2"/><circle cx="50" cy="35" r="16" fill="white"/><text x="50" y="41" text-anchor="middle" font-family="system-ui" font-size="16" font-weight="bold" fill="#222">1</text></svg>';
17
+
18
+ function escapeHtml(str) {
19
+ if (!str) return '';
20
+ return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
21
+ }
22
+
23
+ function createHost() {
24
+ if (host) return;
25
+ host = document.createElement('div');
26
+ host.id = 'one-devtools';
27
+ shadow = host.attachShadow({ mode: 'open' });
28
+
29
+ var css = \`
30
+ * { box-sizing: border-box; margin: 0; padding: 0; }
31
+
32
+ .spotlight {
33
+ position: fixed;
34
+ inset: 0;
35
+ z-index: 100000;
36
+ display: none;
37
+ align-items: center;
38
+ justify-content: center;
39
+ backdrop-filter: blur(8px);
40
+ background: rgba(0,0,0,0.4);
41
+ opacity: 0;
42
+ transition: opacity 0.12s ease-out;
43
+ }
44
+ .spotlight.visible { display: flex; opacity: 1; }
45
+
46
+ .spotlight-box {
47
+ background: #1a1a1a;
48
+ border-radius: 12px;
49
+ width: 320px;
50
+ max-width: 90vw;
51
+ overflow: hidden;
52
+ box-shadow: 0 16px 48px rgba(0,0,0,0.5);
53
+ transform: scale(0.96);
54
+ opacity: 0;
55
+ transition: transform 0.12s ease-out, opacity 0.12s ease-out;
56
+ }
57
+ .spotlight.visible .spotlight-box { transform: scale(1); opacity: 1; }
58
+
59
+ .spotlight-header {
60
+ display: flex;
61
+ align-items: center;
62
+ padding: 12px 16px;
63
+ border-bottom: 1px solid #252525;
64
+ gap: 10px;
65
+ }
66
+ .spotlight-header svg { width: 20px; height: 20px; flex-shrink: 0; }
67
+ .spotlight-header-title { font: 13px system-ui, sans-serif; color: #ccc; flex: 1; }
68
+ .spotlight-header-version { font: 11px system-ui, sans-serif; color: #666; }
69
+
70
+ .spotlight-item {
71
+ display: flex;
72
+ align-items: center;
73
+ gap: 12px;
74
+ padding: 12px 16px;
75
+ color: #ccc;
76
+ font: 13px system-ui, sans-serif;
77
+ cursor: pointer;
78
+ transition: background 0.1s;
79
+ border-bottom: 1px solid #252525;
80
+ }
81
+ .spotlight-item:last-child { border-bottom: none; }
82
+ .spotlight-item:hover { background: #252525; color: #fff; }
83
+ .spotlight-item .key {
84
+ background: #333;
85
+ color: #888;
86
+ padding: 2px 6px;
87
+ border-radius: 4px;
88
+ font-size: 11px;
89
+ margin-left: auto;
90
+ }
91
+
92
+ .panel {
93
+ position: fixed;
94
+ width: 420px;
95
+ max-width: calc(100vw - 40px);
96
+ max-height: calc(100vh - 40px);
97
+ background: #161616;
98
+ border-radius: 10px;
99
+ box-shadow: 0 8px 32px rgba(0,0,0,0.4);
100
+ z-index: 99998;
101
+ display: none;
102
+ flex-direction: column;
103
+ overflow: hidden;
104
+ font: 13px system-ui, sans-serif;
105
+ color: #ccc;
106
+ }
107
+ .panel.visible { display: flex; }
108
+
109
+ .panel-header {
110
+ display: flex;
111
+ align-items: center;
112
+ padding: 8px 12px;
113
+ background: #1a1a1a;
114
+ cursor: grab;
115
+ user-select: none;
116
+ gap: 8px;
117
+ }
118
+ .panel-header:active { cursor: grabbing; }
119
+ .panel-header svg { width: 18px; height: 18px; }
120
+ .panel-title { font-weight: 500; color: #999; font-size: 12px; flex: 1; }
121
+ .panel-close {
122
+ background: none;
123
+ border: none;
124
+ color: #666;
125
+ cursor: pointer;
126
+ padding: 4px;
127
+ font-size: 16px;
128
+ line-height: 1;
129
+ }
130
+ .panel-close:hover { color: #fff; }
131
+
132
+ .tabs {
133
+ display: flex;
134
+ background: #1a1a1a;
135
+ padding: 0 8px;
136
+ gap: 2px;
137
+ overflow-x: auto;
138
+ }
139
+ .tab {
140
+ padding: 8px 12px;
141
+ background: none;
142
+ border: none;
143
+ color: #666;
144
+ font: 12px system-ui, sans-serif;
145
+ cursor: pointer;
146
+ border-bottom: 2px solid transparent;
147
+ transition: all 0.1s;
148
+ }
149
+ .tab:hover { color: #999; }
150
+ .tab.active { color: #fff; border-bottom-color: #666; }
151
+
152
+ .content {
153
+ flex: 1;
154
+ overflow-y: auto;
155
+ padding: 12px;
156
+ min-height: 200px;
157
+ max-height: calc(100vh - 140px);
158
+ }
159
+
160
+ .section { margin-bottom: 12px; }
161
+ .section-title { font-size: 11px; color: #666; margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px; }
162
+
163
+ .info-row {
164
+ display: flex;
165
+ gap: 12px;
166
+ padding: 8px 0;
167
+ border-bottom: 1px solid #222;
168
+ }
169
+ .info-row:last-child { border-bottom: none; }
170
+ .info-label { color: #666; font-size: 11px; width: 90px; flex-shrink: 0; padding-top: 1px; }
171
+ .info-value { color: #ccc; font-family: monospace; font-size: 12px; word-break: break-word; line-height: 1.4; flex: 1; }
172
+
173
+ .badge {
174
+ display: inline-block;
175
+ padding: 2px 6px;
176
+ border-radius: 4px;
177
+ font-size: 10px;
178
+ text-transform: uppercase;
179
+ }
180
+ .badge-error { background: #3a2020; color: #f87171; }
181
+ .badge-warn { background: #3a3520; color: #fbbf24; }
182
+ .badge-info { background: #202a3a; color: #60a5fa; }
183
+ .badge-success { background: #1a3a20; color: #4ade80; }
184
+
185
+ .empty { text-align: center; color: #555; padding: 24px; }
186
+
187
+ .error-item {
188
+ background: #1e1e1e;
189
+ border-radius: 6px;
190
+ padding: 10px;
191
+ margin-bottom: 8px;
192
+ border-left: 3px solid #666;
193
+ }
194
+ .error-item.error { border-left-color: #f87171; }
195
+ .error-msg { color: #f87171; font-family: monospace; font-size: 12px; margin-top: 6px; }
196
+
197
+ .timing-bar {
198
+ height: 16px;
199
+ background: #252525;
200
+ border-radius: 4px;
201
+ overflow: hidden;
202
+ display: flex;
203
+ margin: 4px 0;
204
+ }
205
+ .timing-segment { height: 100%; display: flex; align-items: center; justify-content: center; font-size: 9px; color: #fff; }
206
+ .timing-module { background: #555; }
207
+ .timing-exec { background: #888; }
208
+
209
+ .preview-card {
210
+ background: #1e1e1e;
211
+ border-radius: 6px;
212
+ padding: 10px;
213
+ margin-bottom: 10px;
214
+ }
215
+ .preview-title { font-size: 11px; color: #666; margin-bottom: 6px; }
216
+
217
+ .issue-item {
218
+ display: flex;
219
+ align-items: center;
220
+ gap: 8px;
221
+ padding: 6px 0;
222
+ font-size: 12px;
223
+ }
224
+ .issue-icon { font-size: 10px; }
225
+ \`;
226
+
227
+ shadow.innerHTML = '<style>' + css + '</style><div class="spotlight" id="spotlight"><div class="spotlight-box" id="spotlight-box"></div></div><div class="panel" id="panel"></div>';
228
+ document.body.appendChild(host);
229
+
230
+ setupSpotlight();
231
+ setupPanel();
232
+ setupKeyboard();
233
+ }
234
+
235
+ function setupSpotlight() {
236
+ spotlight = shadow.getElementById('spotlight');
237
+ var box = shadow.getElementById('spotlight-box');
238
+
239
+ var items = [
240
+ { id: 'seo', name: 'SEO Preview', key: '\u2325S' },
241
+ { id: 'route', name: 'Route Info', key: '\u2325R' },
242
+ { id: 'loader', name: 'Loader Timing', key: '\u2325L' },
243
+ { id: 'errors', name: 'Errors', key: '\u2325E' },
244
+ ];
245
+
246
+ var header = '<div class="spotlight-header">' + LOGO_SVG + '<span class="spotlight-header-title">Dev Tools</span><span class="spotlight-header-version">v1.2.57</span></div>';
247
+ box.innerHTML = header + items.map(function(item) {
248
+ return '<div class="spotlight-item" data-tab="' + item.id + '"><span>' + item.name + '</span><span class="key">' + item.key + '</span></div>';
249
+ }).join('');
250
+
251
+ box.addEventListener('click', function(e) {
252
+ var item = e.target.closest('.spotlight-item');
253
+ if (item) {
254
+ activeTab = item.dataset.tab;
255
+ hideSpotlight();
256
+ showPanel();
257
+ }
258
+ });
259
+
260
+ spotlight.addEventListener('click', function(e) {
261
+ if (e.target === spotlight) hideSpotlight();
262
+ });
263
+ }
264
+
265
+ function setupPanel() {
266
+ panel = shadow.getElementById('panel');
267
+ panel.innerHTML = '<div class="panel-header" id="panel-header">' + LOGO_SVG + '<span class="panel-title">DevTools</span><button class="panel-close" id="panel-close">\xD7</button></div><div class="tabs" id="tabs"><button class="tab active" data-tab="seo">SEO</button><button class="tab" data-tab="route">Route</button><button class="tab" data-tab="loader">Loader</button><button class="tab" data-tab="errors">Errors</button></div><div class="content" id="content"></div>';
268
+
269
+ shadow.getElementById('panel-close').addEventListener('click', hidePanel);
270
+
271
+ var tabs = shadow.getElementById('tabs');
272
+ tabs.addEventListener('click', function(e) {
273
+ var tab = e.target.closest('.tab');
274
+ if (tab) {
275
+ activeTab = tab.dataset.tab;
276
+ updateTabs();
277
+ updateContent();
278
+ }
279
+ });
280
+
281
+ setupDrag();
282
+ }
283
+
284
+ function setupDrag() {
285
+ var header = shadow.getElementById('panel-header');
286
+
287
+ header.addEventListener('mousedown', function(e) {
288
+ if (e.target.closest('.panel-close')) return;
289
+ isDragging = true;
290
+ var rect = panel.getBoundingClientRect();
291
+ dragOffset.x = e.clientX - rect.left;
292
+ dragOffset.y = e.clientY - rect.top;
293
+ // Store current position before resetting snap state
294
+ panelPos.x = rect.left;
295
+ panelPos.y = rect.top;
296
+ snappedEdge = { h: null, v: null };
297
+ });
298
+
299
+ document.addEventListener('mousemove', function(e) {
300
+ if (!isDragging) return;
301
+ var x = e.clientX - dragOffset.x;
302
+ var y = e.clientY - dragOffset.y;
303
+ var snapDist = 20;
304
+ var w = window.innerWidth;
305
+ var h = window.innerHeight;
306
+ var pw = panel.offsetWidth;
307
+ var ph = panel.offsetHeight;
308
+ var pad = 10;
309
+
310
+ var snapH = null;
311
+ var snapV = null;
312
+
313
+ if (x < snapDist) { snapH = 'left'; }
314
+ else if (x + pw > w - snapDist) { snapH = 'right'; }
315
+ if (y < snapDist) { snapV = 'top'; }
316
+ else if (y + ph > h - snapDist) { snapV = 'bottom'; }
317
+
318
+ snappedEdge = { h: snapH, v: snapV };
319
+
320
+ // Apply horizontal positioning
321
+ if (snapH === 'left') {
322
+ panel.style.left = pad + 'px';
323
+ panel.style.right = 'auto';
324
+ } else if (snapH === 'right') {
325
+ panel.style.left = 'auto';
326
+ panel.style.right = pad + 'px';
327
+ } else {
328
+ panel.style.left = x + 'px';
329
+ panel.style.right = 'auto';
330
+ panelPos.x = x;
331
+ }
332
+
333
+ // Apply vertical positioning
334
+ if (snapV === 'top') {
335
+ panel.style.top = pad + 'px';
336
+ panel.style.bottom = 'auto';
337
+ } else if (snapV === 'bottom') {
338
+ panel.style.top = 'auto';
339
+ panel.style.bottom = pad + 'px';
340
+ } else {
341
+ panel.style.top = y + 'px';
342
+ panel.style.bottom = 'auto';
343
+ panelPos.y = y;
344
+ }
345
+ });
346
+
347
+ document.addEventListener('mouseup', function() {
348
+ isDragging = false;
349
+ });
350
+ }
351
+
352
+ function setupKeyboard() {
353
+ document.addEventListener('keydown', function(e) {
354
+ if (e.altKey && e.code === 'Space') {
355
+ e.preventDefault();
356
+ toggleSpotlight();
357
+ } else if (e.altKey) {
358
+ var tabMap = { KeyS: 'seo', KeyR: 'route', KeyL: 'loader', KeyE: 'errors' };
359
+ var tab = tabMap[e.code];
360
+ if (tab) {
361
+ e.preventDefault();
362
+ activeTab = tab;
363
+ hideSpotlight();
364
+ showPanel();
365
+ }
366
+ } else if (e.code === 'Escape') {
367
+ if (spotlight.classList.contains('visible')) hideSpotlight();
368
+ else if (panel.classList.contains('visible')) hidePanel();
369
+ }
370
+ });
371
+ }
372
+
373
+ function toggleSpotlight() {
374
+ if (spotlight.classList.contains('visible')) hideSpotlight();
375
+ else showSpotlight();
376
+ }
377
+
378
+ function showSpotlight() {
379
+ if (!host) createHost();
380
+ spotlight.classList.add('visible');
381
+ }
382
+
383
+ function hideSpotlight() {
384
+ spotlight.classList.remove('visible');
385
+ }
386
+
387
+ function showPanel() {
388
+ if (!host) createHost();
389
+ var pad = 10;
390
+ // Apply horizontal positioning based on snap state
391
+ if (snappedEdge.h === 'left') {
392
+ panel.style.left = pad + 'px';
393
+ panel.style.right = 'auto';
394
+ } else if (snappedEdge.h === 'right') {
395
+ panel.style.left = 'auto';
396
+ panel.style.right = pad + 'px';
397
+ } else {
398
+ panel.style.left = panelPos.x + 'px';
399
+ panel.style.right = 'auto';
400
+ }
401
+ // Apply vertical positioning based on snap state
402
+ if (snappedEdge.v === 'top') {
403
+ panel.style.top = pad + 'px';
404
+ panel.style.bottom = 'auto';
405
+ } else if (snappedEdge.v === 'bottom') {
406
+ panel.style.top = 'auto';
407
+ panel.style.bottom = pad + 'px';
408
+ } else {
409
+ panel.style.top = panelPos.y + 'px';
410
+ panel.style.bottom = 'auto';
411
+ }
412
+ panel.classList.add('visible');
413
+ updateTabs();
414
+ updateContent();
415
+ }
416
+
417
+ function hidePanel() {
418
+ panel.classList.remove('visible');
419
+ }
420
+
421
+ function updateTabs() {
422
+ shadow.querySelectorAll('.tab').forEach(function(t) {
423
+ t.classList.toggle('active', t.dataset.tab === activeTab);
424
+ });
425
+ }
426
+
427
+ function updateContent() {
428
+ var content = shadow.getElementById('content');
429
+ if (activeTab === 'seo') content.innerHTML = getSeoContent();
430
+ else if (activeTab === 'route') content.innerHTML = getRouteContent();
431
+ else if (activeTab === 'loader') content.innerHTML = getLoaderContent();
432
+ else if (activeTab === 'errors') content.innerHTML = getErrorsContent();
433
+ }
434
+
435
+ function getSeoContent() {
436
+ var title = document.title || '';
437
+ var desc = document.querySelector('meta[name="description"]')?.content || '';
438
+ var ogTitle = document.querySelector('meta[property="og:title"]')?.content || '';
439
+ var ogDesc = document.querySelector('meta[property="og:description"]')?.content || '';
440
+ var ogImage = document.querySelector('meta[property="og:image"]')?.content || '';
441
+
442
+ var issues = [];
443
+ if (!title) issues.push({ type: 'error', msg: 'Missing title' });
444
+ else if (title.length > 60) issues.push({ type: 'warn', msg: 'Title too long (>60)' });
445
+ if (!desc) issues.push({ type: 'error', msg: 'Missing description' });
446
+ else if (desc.length > 160) issues.push({ type: 'warn', msg: 'Description too long (>160)' });
447
+ if (!ogTitle) issues.push({ type: 'warn', msg: 'Missing og:title' });
448
+ if (!ogImage) issues.push({ type: 'warn', msg: 'Missing og:image' });
449
+
450
+ var html = '';
451
+ if (issues.length) {
452
+ html += '<div class="section"><div class="section-title">Issues</div>';
453
+ issues.forEach(function(i) {
454
+ html += '<div class="issue-item"><span class="issue-icon">' + (i.type === 'error' ? '\u2716' : '\u26A0') + '</span><span>' + escapeHtml(i.msg) + '</span></div>';
455
+ });
456
+ html += '</div>';
457
+ }
458
+
459
+ html += '<div class="section"><div class="section-title">Google Preview</div><div class="preview-card" style="background:#fff;color:#202124;padding:12px;border-radius:8px;">';
460
+ html += '<div style="font-size:12px;color:#202124;margin-bottom:2px;">' + escapeHtml(location.hostname) + '</div>';
461
+ html += '<div style="font-size:16px;color:#1a0dab;margin-bottom:4px;">' + escapeHtml(title || 'No title') + '</div>';
462
+ html += '<div style="font-size:13px;color:#4d5156;">' + escapeHtml(desc ? desc.slice(0,160) : 'No description') + '</div>';
463
+ html += '</div></div>';
464
+
465
+ html += '<div class="section"><div class="section-title">Meta Tags</div>';
466
+ html += '<div class="info-row"><div class="info-label">title</div><div class="info-value">' + escapeHtml(title || '-') + '</div></div>';
467
+ html += '<div class="info-row"><div class="info-label">description</div><div class="info-value">' + escapeHtml(desc || '-') + '</div></div>';
468
+ html += '<div class="info-row"><div class="info-label">og:title</div><div class="info-value">' + escapeHtml(ogTitle || '-') + '</div></div>';
469
+ html += '<div class="info-row"><div class="info-label">og:description</div><div class="info-value">' + escapeHtml(ogDesc || '-') + '</div></div>';
470
+ html += '<div class="info-row"><div class="info-label">og:image</div><div class="info-value">' + escapeHtml(ogImage || '-') + '</div></div>';
471
+ html += '</div>';
472
+
473
+ return html;
474
+ }
475
+
476
+ function getRouteContent() {
477
+ var pathname = location.pathname;
478
+ var segments = pathname.split('/').filter(Boolean);
479
+ var search = location.search;
480
+ var hash = location.hash;
481
+ var devtools = window.__oneDevtools || {};
482
+ var routeInfo = devtools.routeInfo || {};
483
+ var params = routeInfo.params || {};
484
+
485
+ var html = '<div class="section"><div class="section-title">Current Route</div>';
486
+ html += '<div class="info-row"><span class="info-label">pathname</span><span class="info-value">' + escapeHtml(pathname) + '</span></div>';
487
+ html += '<div class="info-row"><span class="info-label">segments</span><span class="info-value">' + (segments.length ? segments.map(function(s) { return '<span style="background:#252525;padding:2px 6px;border-radius:4px;margin-right:4px;">' + escapeHtml(s) + '</span>'; }).join('') : '/') + '</span></div>';
488
+ if (search) html += '<div class="info-row"><span class="info-label">search</span><span class="info-value">' + escapeHtml(search) + '</span></div>';
489
+ if (hash) html += '<div class="info-row"><span class="info-label">hash</span><span class="info-value">' + escapeHtml(hash) + '</span></div>';
490
+ html += '</div>';
491
+
492
+ if (Object.keys(params).length) {
493
+ html += '<div class="section"><div class="section-title">Route Params</div>';
494
+ Object.entries(params).forEach(function(kv) {
495
+ html += '<div class="info-row"><span class="info-label">' + escapeHtml(kv[0]) + '</span><span class="info-value">' + escapeHtml(String(kv[1])) + '</span></div>';
496
+ });
497
+ html += '</div>';
498
+ }
499
+
500
+ html += '<div class="section"><div class="section-title">Full URL</div>';
501
+ html += '<div style="font-family:monospace;font-size:11px;color:#666;word-break:break-all;">' + escapeHtml(location.href) + '</div>';
502
+ html += '</div>';
503
+
504
+ return html;
505
+ }
506
+
507
+ function getLoaderContent() {
508
+ var devtools = window.__oneDevtools || {};
509
+ var history = typeof devtools.getLoaderTimingHistory === 'function' ? devtools.getLoaderTimingHistory() || [] : [];
510
+
511
+ if (!history.length) {
512
+ return '<div class="empty">No loader timings recorded yet</div>';
513
+ }
514
+
515
+ var maxTime = Math.max.apply(null, history.map(function(t) { return t.totalTime || 0; }));
516
+ var html = '';
517
+
518
+ history.forEach(function(t) {
519
+ var modPct = t.moduleLoadTime && t.totalTime ? (t.moduleLoadTime / t.totalTime) * 100 : 0;
520
+ var execPct = t.executionTime && t.totalTime ? (t.executionTime / t.totalTime) * 100 : 0;
521
+ var widthPct = t.totalTime && maxTime ? (t.totalTime / maxTime) * 100 : 0;
522
+
523
+ html += '<div class="error-item' + (t.error ? ' error' : '') + '">';
524
+ html += '<div style="display:flex;justify-content:space-between;align-items:center;">';
525
+ html += '<span style="font-family:monospace;font-size:11px;">' + escapeHtml(t.path) + '</span>';
526
+ html += '<span class="badge badge-' + (t.error ? 'error' : 'success') + '">' + (t.totalTime ? Math.round(t.totalTime) + 'ms' : '-') + '</span>';
527
+ html += '</div>';
528
+ if (!t.error) {
529
+ html += '<div class="timing-bar" style="width:' + Math.max(20, widthPct) + '%;">';
530
+ html += '<div class="timing-segment timing-module" style="width:' + modPct + '%;" title="Module: ' + Math.round(t.moduleLoadTime || 0) + 'ms"></div>';
531
+ html += '<div class="timing-segment timing-exec" style="width:' + execPct + '%;" title="Exec: ' + Math.round(t.executionTime || 0) + 'ms"></div>';
532
+ html += '</div>';
533
+ }
534
+ if (t.error) html += '<div class="error-msg">' + escapeHtml(t.error) + '</div>';
535
+ html += '</div>';
536
+ });
537
+
538
+ return html;
539
+ }
540
+
541
+ function getErrorsContent() {
542
+ var devtools = window.__oneDevtools || {};
543
+ var errors = devtools.errorHistory || [];
544
+
545
+ if (!errors.length) {
546
+ return '<div class="empty">\u2713 No errors recorded</div>';
547
+ }
548
+
549
+ var html = '';
550
+ errors.forEach(function(err) {
551
+ html += '<div class="error-item error">';
552
+ html += '<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;">';
553
+ html += '<span class="badge badge-error">' + escapeHtml(err.type || 'error') + '</span>';
554
+ html += '<span style="font-size:11px;color:#666;">' + new Date(err.timestamp).toLocaleTimeString() + '</span>';
555
+ html += '</div>';
556
+ html += '<div class="error-msg">' + escapeHtml(err.error?.message || 'Unknown error') + '</div>';
557
+ html += '</div>';
558
+ });
559
+
560
+ return html;
561
+ }
562
+
563
+ // Initialize
564
+ createHost();
565
+
566
+ // Listen for events
567
+ window.addEventListener('one-loader-timing', function() {
568
+ if (panel && panel.classList.contains('visible') && activeTab === 'loader') updateContent();
569
+ });
570
+ window.addEventListener('one-error', function(e) {
571
+ var devtools = window.__oneDevtools = window.__oneDevtools || {};
572
+ devtools.errorHistory = devtools.errorHistory || [];
573
+ devtools.errorHistory.unshift(e.detail);
574
+ if (devtools.errorHistory.length > 20) devtools.errorHistory = devtools.errorHistory.slice(0, 20);
575
+ if (panel && panel.classList.contains('visible') && activeTab === 'errors') updateContent();
576
+ });
577
+
578
+ // Update on navigation
579
+ function onNavigate() {
580
+ if (panel && panel.classList.contains('visible')) updateContent();
581
+ }
582
+ window.addEventListener('popstate', onNavigate);
583
+ window.addEventListener('one-hmr-update', onNavigate);
584
+ // Also catch pushState/replaceState
585
+ var origPushState = history.pushState;
586
+ var origReplaceState = history.replaceState;
587
+ history.pushState = function() {
588
+ origPushState.apply(this, arguments);
589
+ setTimeout(onNavigate, 0);
590
+ };
591
+ history.replaceState = function() {
592
+ origReplaceState.apply(this, arguments);
593
+ setTimeout(onNavigate, 0);
594
+ };
595
+
596
+ } catch (e) {
597
+ console.error('[One DevTools] Failed to initialize:', e);
598
+ }
599
+ })();
600
+ `, SOURCE_INSPECTOR_SCRIPT = `
601
+ (function() {
602
+ try {
603
+ var active = false;
604
+ var host = null;
605
+ var shadow = null;
606
+ var overlay = null;
607
+ var tag = null;
608
+ var holdTimer = null;
609
+ var holdDelay = 500;
610
+ var mousePos = { x: 0, y: 0 };
611
+
612
+ function createHost() {
613
+ if (host) return;
614
+ host = document.createElement('div');
615
+ host.id = 'one-source-inspector';
616
+ shadow = host.attachShadow({ mode: 'open' });
617
+ shadow.innerHTML = \`
618
+ <style>
619
+ * { box-sizing: border-box; margin: 0; padding: 0; }
620
+ .overlay {
621
+ position: fixed;
622
+ pointer-events: none;
623
+ z-index: 100000;
624
+ background: rgba(100,100,100,0.2);
625
+ border: 2px solid rgba(100,100,100,0.6);
626
+ border-radius: 2px;
627
+ transition: all 0.05s;
628
+ display: none;
629
+ }
630
+ .tag {
631
+ position: fixed;
632
+ pointer-events: none;
633
+ z-index: 100001;
634
+ background: rgba(60,60,60,0.95);
635
+ color: white;
636
+ padding: 4px 8px;
637
+ font-size: 12px;
638
+ font-family: system-ui, -apple-system, sans-serif;
639
+ border-radius: 4px;
640
+ white-space: nowrap;
641
+ box-shadow: 0 2px 8px rgba(0,0,0,0.3);
642
+ display: none;
643
+ }
644
+ </style>
645
+ <div class="overlay"></div>
646
+ <div class="tag"></div>
647
+ \`;
648
+ document.body.appendChild(host);
649
+ overlay = shadow.querySelector('.overlay');
650
+ tag = shadow.querySelector('.tag');
651
+ }
652
+
653
+ function hideOverlay() {
654
+ if (overlay) overlay.style.display = 'none';
655
+ if (tag) tag.style.display = 'none';
656
+ }
657
+
658
+ function showOverlay(el, source) {
659
+ if (!host) createHost();
660
+ var rect = el.getBoundingClientRect();
661
+ overlay.style.display = 'block';
662
+ overlay.style.top = rect.top + 'px';
663
+ overlay.style.left = rect.left + 'px';
664
+ overlay.style.width = rect.width + 'px';
665
+ overlay.style.height = rect.height + 'px';
666
+ tag.style.display = 'block';
667
+ tag.textContent = source;
668
+ var top = rect.top - 28;
669
+ if (top < 0) top = rect.bottom + 4;
670
+ tag.style.top = top + 'px';
671
+ tag.style.left = Math.max(4, Math.min(rect.left, window.innerWidth - 200)) + 'px';
672
+ }
673
+
674
+ function cancelHold() {
675
+ clearTimeout(holdTimer);
676
+ holdTimer = null;
677
+ }
678
+
679
+ function updateOverlayAtPosition(x, y) {
680
+ // Use elementsFromPoint to get all elements at position, ordered from topmost/innermost to bottom
681
+ var allElements = document.elementsFromPoint(x, y);
682
+ // Find the first (innermost) element with data-one-source
683
+ var el = null;
684
+ for (var i = 0; i < allElements.length; i++) {
685
+ if (allElements[i].hasAttribute('data-one-source')) {
686
+ el = allElements[i];
687
+ break;
688
+ }
689
+ }
690
+ if (el) {
691
+ var source = el.getAttribute('data-one-source');
692
+ var lastColon = source.lastIndexOf(':');
693
+ var filePath = source.slice(0, lastColon);
694
+ var idx = source.slice(lastColon + 1);
695
+ var info = window.__oneSourceInfo && window.__oneSourceInfo[filePath];
696
+ var lineCol = info && info[idx];
697
+ var displaySource = lineCol ? filePath + ':' + lineCol[0] + ':' + lineCol[1] : source;
698
+ showOverlay(el, displaySource);
699
+ } else {
700
+ hideOverlay();
701
+ }
702
+ }
703
+
704
+ function activate() {
705
+ active = true;
706
+ // Immediately show overlay at current mouse position
707
+ updateOverlayAtPosition(mousePos.x, mousePos.y);
708
+ }
709
+
710
+ function deactivate() {
711
+ cancelHold();
712
+ active = false;
713
+ hideOverlay();
714
+ }
715
+
716
+ window.addEventListener('keydown', function(e) {
717
+ // Only trigger on Alt/Option key held alone
718
+ if (e.key !== 'Alt') {
719
+ cancelHold();
720
+ return;
721
+ }
722
+ // Ignore if other modifier keys are pressed
723
+ if (e.metaKey || e.ctrlKey || e.shiftKey) {
724
+ cancelHold();
725
+ return;
726
+ }
727
+ if (e.defaultPrevented) return;
728
+ if (holdTimer) return; // already waiting
729
+ holdTimer = setTimeout(activate, holdDelay);
730
+ });
731
+
732
+ window.addEventListener('keyup', function(e) {
733
+ if (e.defaultPrevented) return;
734
+ deactivate();
735
+ });
736
+
737
+ window.addEventListener('blur', deactivate);
738
+
739
+ document.addEventListener('mousemove', function(e) {
740
+ // Always track mouse position
741
+ mousePos.x = e.clientX;
742
+ mousePos.y = e.clientY;
743
+ if (!active) return;
744
+ updateOverlayAtPosition(e.clientX, e.clientY);
745
+ });
746
+
747
+ document.addEventListener('click', function(e) {
748
+ if (!active) return;
749
+ // Use elementsFromPoint to find innermost sourced element
750
+ var allElements = document.elementsFromPoint(e.clientX, e.clientY);
751
+ var el = null;
752
+ for (var i = 0; i < allElements.length; i++) {
753
+ if (allElements[i].hasAttribute('data-one-source')) {
754
+ el = allElements[i];
755
+ break;
756
+ }
757
+ }
758
+ if (el) {
759
+ e.preventDefault();
760
+ e.stopPropagation();
761
+ var source = el.getAttribute('data-one-source');
762
+ // Parse source: "/path/to/file.tsx:index"
763
+ var lastColon = source.lastIndexOf(':');
764
+ var filePath = source.slice(0, lastColon);
765
+ var idx = source.slice(lastColon + 1);
766
+ // Look up actual line/column from source info
767
+ var info = window.__oneSourceInfo && window.__oneSourceInfo[filePath];
768
+ var lineCol = info && info[idx];
769
+ var url = '/__one/open-source?source=' + encodeURIComponent(source);
770
+ if (lineCol) {
771
+ url += '&line=' + lineCol[0] + '&column=' + lineCol[1];
772
+ }
773
+ fetch(url);
774
+ }
775
+ }, true);
776
+ } catch (e) {
777
+ console.error('[Source Inspector] Failed to initialize:', e);
778
+ }
779
+ })();
780
+ `;
3
781
  function DevHead() {
4
782
  return process.env.NODE_ENV === "development" ? /* @__PURE__ */ jsxs(Fragment, { children: [
5
783
  /* @__PURE__ */ jsx("link", { rel: "preload", href: VIRTUAL_SSR_CSS_HREF, as: "style" }),
6
- /* @__PURE__ */ jsx("link", { rel: "stylesheet", href: VIRTUAL_SSR_CSS_HREF, "data-ssr-css": !0 }),
784
+ /* @__PURE__ */ jsx(
785
+ "link",
786
+ {
787
+ rel: "stylesheet",
788
+ href: VIRTUAL_SSR_CSS_HREF,
789
+ "data-ssr-css": !0,
790
+ suppressHydrationWarning: !0
791
+ }
792
+ ),
7
793
  /* @__PURE__ */ jsx(
8
794
  "script",
9
795
  {
10
796
  type: "module",
11
- dangerouslySetInnerHTML: {
12
- __html: `import { createHotContext } from "/@vite/client";
13
- const hot = createHotContext("/__clear_ssr_css");
14
- hot.on("vite:afterUpdate", () => {
15
- document
16
- .querySelectorAll("[data-ssr-css]")
17
- .forEach(node => node.remove());
18
- });`
19
- }
797
+ suppressHydrationWarning: !0,
798
+ dangerouslySetInnerHTML: { __html: ROUTE_HMR_SCRIPT }
20
799
  }
21
800
  ),
22
801
  /* @__PURE__ */ jsx(
23
802
  "script",
24
803
  {
25
804
  type: "module",
26
- dangerouslySetInnerHTML: {
27
- __html: `import { createHotContext } from "/@vite/client";
28
- const hot = createHotContext("/__one_route_hmr");
29
- hot.on("one:route-update", (data) => {
30
- // Clear only the specific file's cache if provided, otherwise clear all
31
- if (window.__oneRouteCache) {
32
- if (data?.file) {
33
- window.__oneRouteCache.clearFile(data.file);
34
- } else {
35
- window.__oneRouteCache.clear();
36
- }
37
- }
38
- // Dispatch a window event that triggers re-render in route components
39
- window.dispatchEvent(new CustomEvent('one-hmr-update'));
40
- });`
41
- }
805
+ suppressHydrationWarning: !0,
806
+ dangerouslySetInnerHTML: { __html: LOADER_HMR_SCRIPT }
42
807
  }
43
808
  ),
44
809
  /* @__PURE__ */ jsx(
45
810
  "script",
46
811
  {
47
812
  type: "module",
48
- dangerouslySetInnerHTML: {
49
- __html: `import { createHotContext } from "/@vite/client";
50
- const hot = createHotContext("/__one_loader_hmr");
51
- hot.on("one:loader-data-update", async (data) => {
52
- // Refetch loader data for all affected routes (no full page reload)
53
- if (data?.routePaths && window.__oneRefetchLoader) {
54
- const currentPath = window.location.pathname.replace(/\\/$/, '') || '/';
55
- for (const routePath of data.routePaths) {
56
- // Only refetch if we're on an affected route
57
- if (routePath === currentPath) {
58
- try {
59
- await window.__oneRefetchLoader(routePath);
60
- } catch (err) {
61
- console.error('[one] Error refetching loader:', err);
62
- }
63
- }
813
+ suppressHydrationWarning: !0,
814
+ dangerouslySetInnerHTML: { __html: REACT_REFRESH_SCRIPT }
64
815
  }
65
- }
66
- });`
67
- }
816
+ ),
817
+ /* @__PURE__ */ jsx(
818
+ "script",
819
+ {
820
+ type: "module",
821
+ suppressHydrationWarning: !0,
822
+ dangerouslySetInnerHTML: { __html: ONE_DEVTOOLS_SCRIPT }
68
823
  }
69
824
  ),
70
825
  /* @__PURE__ */ jsx(
71
826
  "script",
72
827
  {
73
828
  type: "module",
74
- dangerouslySetInnerHTML: {
75
- __html: `import { injectIntoGlobalHook } from "/@react-refresh";
76
- injectIntoGlobalHook(window);
77
- window.$RefreshReg$ = () => {};
78
- window.$RefreshSig$ = () => (type) => type;`
79
- }
829
+ suppressHydrationWarning: !0,
830
+ dangerouslySetInnerHTML: { __html: SOURCE_INSPECTOR_SCRIPT }
80
831
  }
81
832
  )
82
833
  ] }) : null;