polen 0.10.0-next.14 → 0.10.0-next.4

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 (525) hide show
  1. package/README.md +1 -2
  2. package/build/api/builder/builder.js +1 -1
  3. package/build/api/builder/builder.js.map +1 -1
  4. package/build/api/config/load.js +6 -6
  5. package/build/api/config/load.js.map +1 -1
  6. package/build/api/config-resolver/resolve.js +2 -2
  7. package/build/api/config-resolver/resolve.js.map +1 -1
  8. package/build/api/schema/data-sources/schema-directory/schema-directory.js +1 -1
  9. package/build/api/schema/data-sources/schema-directory/schema-directory.js.map +1 -1
  10. package/build/api/vite/plugins/branding/index.js +4 -4
  11. package/build/api/vite/plugins/branding/index.js.map +1 -1
  12. package/build/api/vite/plugins/build.d.ts.map +1 -1
  13. package/build/api/vite/plugins/build.js +4 -12
  14. package/build/api/vite/plugins/build.js.map +1 -1
  15. package/build/api/vite/plugins/core.d.ts +2 -2
  16. package/build/api/vite/plugins/core.d.ts.map +1 -1
  17. package/build/api/vite/plugins/core.js +13 -13
  18. package/build/api/vite/plugins/core.js.map +1 -1
  19. package/build/api/vite/plugins/pages.d.ts +14 -8
  20. package/build/api/vite/plugins/pages.d.ts.map +1 -1
  21. package/build/api/vite/plugins/pages.js +185 -111
  22. package/build/api/vite/plugins/pages.js.map +1 -1
  23. package/build/api/vite/plugins/serve.d.ts.map +1 -1
  24. package/build/api/vite/plugins/serve.js +12 -52
  25. package/build/api/vite/plugins/serve.js.map +1 -1
  26. package/build/cli/_/self-contained-mode.js +5 -5
  27. package/build/cli/_/self-contained-mode.js.map +1 -1
  28. package/build/lib/demos/config-schema.d.ts +20 -20
  29. package/build/lib/file-router/diagnostic-reporter.js +2 -2
  30. package/build/lib/file-router/diagnostic-reporter.js.map +1 -1
  31. package/build/lib/file-router/file-router.d.ts +2 -0
  32. package/build/lib/file-router/file-router.d.ts.map +1 -1
  33. package/build/lib/file-router/file-router.js +2 -0
  34. package/build/lib/file-router/file-router.js.map +1 -1
  35. package/build/lib/file-router/route.d.ts +0 -2
  36. package/build/lib/file-router/route.d.ts.map +1 -1
  37. package/build/lib/file-router/route.js.map +1 -1
  38. package/build/lib/file-router/scan-tree.d.ts +20 -0
  39. package/build/lib/file-router/scan-tree.d.ts.map +1 -0
  40. package/build/lib/file-router/scan-tree.js +158 -0
  41. package/build/lib/file-router/scan-tree.js.map +1 -0
  42. package/build/lib/file-router/scan.d.ts.map +1 -1
  43. package/build/lib/file-router/scan.js +13 -22
  44. package/build/lib/file-router/scan.js.map +1 -1
  45. package/build/lib/file-router/sidebar/index.d.ts +3 -0
  46. package/build/lib/file-router/sidebar/index.d.ts.map +1 -0
  47. package/build/lib/file-router/sidebar/index.js +4 -0
  48. package/build/lib/file-router/sidebar/index.js.map +1 -0
  49. package/build/lib/file-router/sidebar/sidebar-tree.d.ts +9 -0
  50. package/build/lib/file-router/sidebar/sidebar-tree.d.ts.map +1 -0
  51. package/build/lib/file-router/sidebar/sidebar-tree.js +85 -0
  52. package/build/lib/file-router/sidebar/sidebar-tree.js.map +1 -0
  53. package/build/lib/file-router/sidebar/types.d.ts +17 -0
  54. package/build/lib/file-router/sidebar/types.d.ts.map +1 -0
  55. package/build/lib/file-router/sidebar/types.js.map +1 -0
  56. package/build/lib/github-actions/runner.js +2 -2
  57. package/build/lib/github-actions/runner.js.map +1 -1
  58. package/build/lib/github-actions/schemas/context.d.ts +2 -2
  59. package/build/lib/kit-temp.d.ts +0 -103
  60. package/build/lib/kit-temp.d.ts.map +1 -1
  61. package/build/lib/kit-temp.js +3 -239
  62. package/build/lib/kit-temp.js.map +1 -1
  63. package/build/lib/tree/index.d.ts +3 -0
  64. package/build/lib/tree/index.d.ts.map +1 -0
  65. package/build/lib/tree/index.js +2 -0
  66. package/build/lib/tree/index.js.map +1 -0
  67. package/build/lib/tree/tree.d.ts +62 -0
  68. package/build/lib/tree/tree.d.ts.map +1 -0
  69. package/build/lib/tree/tree.js +134 -0
  70. package/build/lib/tree/tree.js.map +1 -0
  71. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts +8 -1
  72. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts.map +1 -1
  73. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js +53 -48
  74. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js.map +1 -1
  75. package/build/package-paths.js +3 -3
  76. package/build/package-paths.js.map +1 -1
  77. package/build/sandbox.js +2 -17
  78. package/build/sandbox.js.map +1 -1
  79. package/build/singletons/debug.d.ts +1 -1
  80. package/build/singletons/debug.d.ts.map +1 -1
  81. package/build/singletons/debug.js +1 -1
  82. package/build/singletons/debug.js.map +1 -1
  83. package/build/template/components/ArgumentAnnotation.jsx +16 -0
  84. package/build/template/components/ArgumentAnnotation.jsx.map +1 -0
  85. package/build/template/components/ArgumentList.jsx +16 -0
  86. package/build/template/components/ArgumentList.jsx.map +1 -0
  87. package/build/template/components/ArgumentListAnnotation.jsx +23 -0
  88. package/build/template/components/ArgumentListAnnotation.jsx.map +1 -0
  89. package/build/template/components/Changelog.jsx +68 -0
  90. package/build/template/components/Changelog.jsx.map +1 -0
  91. package/build/template/components/{CodeBlock.js → CodeBlock.jsx} +5 -4
  92. package/build/template/components/{CodeBlock.js.map → CodeBlock.jsx.map} +1 -1
  93. package/build/template/components/DeprecationReason.jsx +10 -0
  94. package/build/template/components/DeprecationReason.jsx.map +1 -0
  95. package/build/template/components/Description.jsx +10 -0
  96. package/build/template/components/Description.jsx.map +1 -0
  97. package/build/template/components/Field.jsx +22 -0
  98. package/build/template/components/Field.jsx.map +1 -0
  99. package/build/template/components/{FieldList.js → FieldList.jsx} +5 -4
  100. package/build/template/components/FieldList.jsx.map +1 -0
  101. package/build/template/components/{FieldListSection.js → FieldListSection.jsx} +6 -4
  102. package/build/template/components/FieldListSection.jsx.map +1 -0
  103. package/build/template/components/Link.d.ts +2 -2
  104. package/build/template/components/Link.d.ts.map +1 -1
  105. package/build/template/components/{Link.js → Link.jsx} +9 -17
  106. package/build/template/components/Link.jsx.map +1 -0
  107. package/build/template/components/Logo.jsx +29 -0
  108. package/build/template/components/Logo.jsx.map +1 -0
  109. package/build/template/components/{Markdown.js → Markdown.jsx} +2 -3
  110. package/build/template/components/Markdown.jsx.map +1 -0
  111. package/build/template/components/MissingSchema.d.ts +1 -1
  112. package/build/template/components/MissingSchema.d.ts.map +1 -1
  113. package/build/template/components/MissingSchema.jsx +4 -0
  114. package/build/template/components/MissingSchema.jsx.map +1 -0
  115. package/build/template/components/NamedType.jsx +17 -0
  116. package/build/template/components/NamedType.jsx.map +1 -0
  117. package/build/template/components/{RadixLink.js → RadixLink.jsx} +1 -1
  118. package/build/template/components/RadixLink.jsx.map +1 -0
  119. package/build/template/components/Texts/{MinorHeading.js → MinorHeading.jsx} +3 -4
  120. package/build/template/components/Texts/MinorHeading.jsx.map +1 -0
  121. package/build/template/components/Texts/texts.js +1 -1
  122. package/build/template/components/Texts/texts.js.map +1 -1
  123. package/build/template/components/{TypeAnnotation.js → TypeAnnotation.jsx} +18 -8
  124. package/build/template/components/TypeAnnotation.jsx.map +1 -0
  125. package/build/template/components/TypeFieldsLinkList.jsx +17 -0
  126. package/build/template/components/TypeFieldsLinkList.jsx.map +1 -0
  127. package/build/template/components/TypeIndex.jsx +27 -0
  128. package/build/template/components/TypeIndex.jsx.map +1 -0
  129. package/build/template/components/graphql/graphql.d.ts +2 -2
  130. package/build/template/components/graphql/graphql.jsx +3 -0
  131. package/build/template/components/graphql/graphql.jsx.map +1 -0
  132. package/build/template/components/graphql/index.d.ts +1 -1
  133. package/build/template/components/graphql/index.js +1 -1
  134. package/build/template/components/graphql/index.js.map +1 -1
  135. package/build/template/components/graphql/{type-kind-icon.js → type-kind-icon.jsx} +2 -3
  136. package/build/template/components/graphql/type-kind-icon.jsx.map +1 -0
  137. package/build/template/components/graphql/type-link.jsx +16 -0
  138. package/build/template/components/graphql/type-link.jsx.map +1 -0
  139. package/build/template/components/sidebar/Sidebar.d.ts +3 -3
  140. package/build/template/components/sidebar/Sidebar.d.ts.map +1 -1
  141. package/build/template/components/sidebar/Sidebar.jsx +15 -0
  142. package/build/template/components/sidebar/Sidebar.jsx.map +1 -0
  143. package/build/template/components/sidebar/SidebarItem.d.ts +3 -3
  144. package/build/template/components/sidebar/SidebarItem.d.ts.map +1 -1
  145. package/build/template/components/sidebar/{SidebarItem.js → SidebarItem.jsx} +35 -18
  146. package/build/template/components/sidebar/SidebarItem.jsx.map +1 -0
  147. package/build/template/components/sidebar/ToggleButton.d.ts +1 -1
  148. package/build/template/components/sidebar/ToggleButton.d.ts.map +1 -1
  149. package/build/template/components/sidebar/ToggleButton.jsx +6 -0
  150. package/build/template/components/sidebar/ToggleButton.jsx.map +1 -0
  151. package/build/template/entry.client.d.ts +0 -1
  152. package/build/template/entry.client.d.ts.map +1 -1
  153. package/build/template/{entry.client.js → entry.client.jsx} +9 -5
  154. package/build/template/entry.client.jsx.map +1 -0
  155. package/build/template/routes/changelog.d.ts +1 -1
  156. package/build/template/routes/{changelog.js → changelog.jsx} +4 -5
  157. package/build/template/routes/changelog.jsx.map +1 -0
  158. package/build/template/routes/{index.js → index.jsx} +2 -3
  159. package/build/template/routes/index.jsx.map +1 -0
  160. package/build/template/routes/reference.$type.$field.d.ts +1 -1
  161. package/build/template/routes/{reference.$type.$field.js → reference.$type.$field.jsx} +5 -6
  162. package/build/template/routes/reference.$type.$field.jsx.map +1 -0
  163. package/build/template/routes/reference.$type.d.ts +1 -1
  164. package/build/template/routes/{reference.$type.js → reference.$type.jsx} +5 -6
  165. package/build/template/routes/reference.$type.jsx.map +1 -0
  166. package/build/template/routes/reference.d.ts +2 -2
  167. package/build/template/routes/reference.d.ts.map +1 -1
  168. package/build/template/routes/{reference.js → reference.jsx} +12 -7
  169. package/build/template/routes/reference.jsx.map +1 -0
  170. package/build/template/routes/root.d.ts +2 -2
  171. package/build/template/routes/root.d.ts.map +1 -1
  172. package/build/template/routes/root.jsx +188 -0
  173. package/build/template/routes/root.jsx.map +1 -0
  174. package/build/template/routes.jsx +5 -0
  175. package/build/template/routes.jsx.map +1 -0
  176. package/build/template/server/app.d.ts +1 -8
  177. package/build/template/server/app.d.ts.map +1 -1
  178. package/build/template/server/app.js +21 -21
  179. package/build/template/server/app.js.map +1 -1
  180. package/build/template/server/main.js +1 -2
  181. package/build/template/server/main.js.map +1 -1
  182. package/build/template/server/render-page.d.ts +3 -0
  183. package/build/template/server/render-page.d.ts.map +1 -0
  184. package/build/template/server/{create-page-html-response.js → render-page.jsx} +17 -11
  185. package/build/template/server/render-page.jsx.map +1 -0
  186. package/build/template/server/ssg/generate.d.ts.map +1 -1
  187. package/build/template/server/ssg/generate.js +34 -33
  188. package/build/template/server/ssg/generate.js.map +1 -1
  189. package/build/template/server/ssg/get-route-paths.js +1 -1
  190. package/build/template/server/ssg/get-route-paths.js.map +1 -1
  191. package/build/template/server/view.js +1 -1
  192. package/build/template/server/view.js.map +1 -1
  193. package/package.json +9 -66
  194. package/src/api/config/load.ts +5 -5
  195. package/src/api/config-resolver/resolve.ts +2 -2
  196. package/src/api/schema/data-sources/schema-directory/schema-directory.ts +1 -1
  197. package/src/api/singletons/markdown/markdown.test.ts +1 -1
  198. package/src/api/vite/plugins/branding/index.ts +4 -4
  199. package/src/api/vite/plugins/build.ts +89 -97
  200. package/src/api/vite/plugins/core.ts +16 -18
  201. package/src/api/vite/plugins/pages.ts +209 -135
  202. package/src/api/vite/plugins/serve.ts +14 -67
  203. package/src/cli/_/self-contained-mode.ts +5 -5
  204. package/src/lib/deployment/$$.ts +1 -1
  205. package/src/lib/deployment/$.test.ts +3 -3
  206. package/src/lib/deployment/$.ts +1 -1
  207. package/src/lib/file-router/diagnostic-reporter.ts +2 -2
  208. package/src/lib/file-router/file-router.ts +2 -0
  209. package/src/lib/file-router/linter.test.ts +0 -2
  210. package/src/lib/file-router/route.ts +0 -2
  211. package/src/lib/file-router/scan-tree.test.ts +189 -0
  212. package/src/lib/file-router/scan-tree.ts +205 -0
  213. package/src/lib/file-router/scan.ts +14 -26
  214. package/src/lib/file-router/sidebar/index.ts +3 -0
  215. package/src/lib/file-router/sidebar/sidebar-tree.test.ts +123 -0
  216. package/src/lib/file-router/sidebar/sidebar-tree.ts +110 -0
  217. package/src/lib/file-router/sidebar/types.ts +19 -0
  218. package/src/lib/kit-temp.test.ts +7 -19
  219. package/src/lib/kit-temp.ts +5 -307
  220. package/src/lib/task/$.test.ts +3 -3
  221. package/src/lib/tree/index.ts +2 -0
  222. package/src/lib/tree/tree.test.ts +117 -0
  223. package/src/lib/tree/tree.ts +183 -0
  224. package/src/lib/version-history/index.test.ts +4 -12
  225. package/src/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.ts +58 -52
  226. package/src/package-paths.ts +3 -3
  227. package/src/sandbox.ts +1 -20
  228. package/src/singletons/debug.ts +1 -1
  229. package/src/template/components/ArgumentAnnotation.tsx +1 -1
  230. package/src/template/components/ArgumentList.tsx +1 -1
  231. package/src/template/components/ArgumentListAnnotation.tsx +2 -2
  232. package/src/template/components/DeprecationReason.tsx +1 -1
  233. package/src/template/components/Description.tsx +1 -1
  234. package/src/template/components/Field.tsx +4 -4
  235. package/src/template/components/FieldList.tsx +1 -1
  236. package/src/template/components/FieldListSection.tsx +1 -1
  237. package/src/template/components/Link.tsx +14 -22
  238. package/src/template/components/NamedType.tsx +2 -2
  239. package/src/template/components/TypeAnnotation.tsx +1 -1
  240. package/src/template/components/TypeFieldsLinkList.tsx +1 -1
  241. package/src/template/components/TypeIndex.tsx +1 -1
  242. package/src/template/components/graphql/graphql.tsx +2 -2
  243. package/src/template/components/graphql/index.ts +1 -1
  244. package/src/template/components/graphql/type-link.tsx +2 -2
  245. package/src/template/components/sidebar/Sidebar.tsx +2 -2
  246. package/src/template/components/sidebar/SidebarItem.tsx +14 -14
  247. package/src/template/entry.client.tsx +5 -2
  248. package/src/template/routes/changelog.tsx +1 -1
  249. package/src/template/routes/reference.$type.$field.tsx +3 -3
  250. package/src/template/routes/reference.$type.tsx +3 -3
  251. package/src/template/routes/reference.tsx +10 -6
  252. package/src/template/routes/root.tsx +108 -112
  253. package/src/template/routes.tsx +1 -1
  254. package/src/template/server/app.ts +23 -33
  255. package/src/template/server/main.ts +1 -2
  256. package/src/template/server/{create-page-html-response.ts → render-page.tsx} +16 -19
  257. package/src/template/server/ssg/generate.ts +72 -68
  258. package/src/template/server/ssg/get-route-paths.ts +1 -1
  259. package/src/template/server/view.ts +1 -1
  260. package/src/template/styles/code-block.css +0 -32
  261. package/build/api/content/$$.d.ts +0 -7
  262. package/build/api/content/$$.d.ts.map +0 -1
  263. package/build/api/content/$$.js +0 -7
  264. package/build/api/content/$$.js.map +0 -1
  265. package/build/api/content/$.d.ts +0 -2
  266. package/build/api/content/$.d.ts.map +0 -1
  267. package/build/api/content/$.js +0 -2
  268. package/build/api/content/$.js.map +0 -1
  269. package/build/api/content/metadata.d.ts +0 -10
  270. package/build/api/content/metadata.d.ts.map +0 -1
  271. package/build/api/content/metadata.js +0 -9
  272. package/build/api/content/metadata.js.map +0 -1
  273. package/build/api/content/navbar.d.ts +0 -10
  274. package/build/api/content/navbar.d.ts.map +0 -1
  275. package/build/api/content/navbar.js +0 -45
  276. package/build/api/content/navbar.js.map +0 -1
  277. package/build/api/content/page.d.ts +0 -11
  278. package/build/api/content/page.d.ts.map +0 -1
  279. package/build/api/content/page.js +0 -2
  280. package/build/api/content/page.js.map +0 -1
  281. package/build/api/content/scan.d.ts +0 -19
  282. package/build/api/content/scan.d.ts.map +0 -1
  283. package/build/api/content/scan.js +0 -90
  284. package/build/api/content/scan.js.map +0 -1
  285. package/build/api/content/sidebar.d.ts +0 -104
  286. package/build/api/content/sidebar.d.ts.map +0 -1
  287. package/build/api/content/sidebar.js +0 -166
  288. package/build/api/content/sidebar.js.map +0 -1
  289. package/build/api/content/utils.d.ts +0 -5
  290. package/build/api/content/utils.d.ts.map +0 -1
  291. package/build/api/content/utils.js +0 -8
  292. package/build/api/content/utils.js.map +0 -1
  293. package/build/exports/components.d.ts +0 -5
  294. package/build/exports/components.d.ts.map +0 -1
  295. package/build/exports/components.js +0 -5
  296. package/build/exports/components.js.map +0 -1
  297. package/build/lib/graphql-document/$$.d.ts +0 -5
  298. package/build/lib/graphql-document/$$.d.ts.map +0 -1
  299. package/build/lib/graphql-document/$$.js +0 -5
  300. package/build/lib/graphql-document/$$.js.map +0 -1
  301. package/build/lib/graphql-document/$.d.ts +0 -2
  302. package/build/lib/graphql-document/$.d.ts.map +0 -1
  303. package/build/lib/graphql-document/$.js +0 -2
  304. package/build/lib/graphql-document/$.js.map +0 -1
  305. package/build/lib/graphql-document/analysis.d.ts +0 -44
  306. package/build/lib/graphql-document/analysis.d.ts.map +0 -1
  307. package/build/lib/graphql-document/analysis.js +0 -361
  308. package/build/lib/graphql-document/analysis.js.map +0 -1
  309. package/build/lib/graphql-document/components/CopyButton.d.ts +0 -19
  310. package/build/lib/graphql-document/components/CopyButton.d.ts.map +0 -1
  311. package/build/lib/graphql-document/components/CopyButton.js +0 -43
  312. package/build/lib/graphql-document/components/CopyButton.js.map +0 -1
  313. package/build/lib/graphql-document/components/GraphQLDocument.d.ts +0 -38
  314. package/build/lib/graphql-document/components/GraphQLDocument.d.ts.map +0 -1
  315. package/build/lib/graphql-document/components/GraphQLDocument.js +0 -142
  316. package/build/lib/graphql-document/components/GraphQLDocument.js.map +0 -1
  317. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts +0 -7
  318. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts.map +0 -1
  319. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js +0 -45
  320. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js.map +0 -1
  321. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts +0 -33
  322. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts.map +0 -1
  323. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js +0 -48
  324. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js.map +0 -1
  325. package/build/lib/graphql-document/components/IdentifierLink.d.ts +0 -39
  326. package/build/lib/graphql-document/components/IdentifierLink.d.ts.map +0 -1
  327. package/build/lib/graphql-document/components/IdentifierLink.js +0 -75
  328. package/build/lib/graphql-document/components/IdentifierLink.js.map +0 -1
  329. package/build/lib/graphql-document/components/graphql-document-styles.d.ts +0 -5
  330. package/build/lib/graphql-document/components/graphql-document-styles.d.ts.map +0 -1
  331. package/build/lib/graphql-document/components/graphql-document-styles.js +0 -167
  332. package/build/lib/graphql-document/components/graphql-document-styles.js.map +0 -1
  333. package/build/lib/graphql-document/components/index.d.ts +0 -6
  334. package/build/lib/graphql-document/components/index.d.ts.map +0 -1
  335. package/build/lib/graphql-document/components/index.js +0 -6
  336. package/build/lib/graphql-document/components/index.js.map +0 -1
  337. package/build/lib/graphql-document/example.d.ts +0 -25
  338. package/build/lib/graphql-document/example.d.ts.map +0 -1
  339. package/build/lib/graphql-document/example.js +0 -140
  340. package/build/lib/graphql-document/example.js.map +0 -1
  341. package/build/lib/graphql-document/graphql-document.d.ts +0 -35
  342. package/build/lib/graphql-document/graphql-document.d.ts.map +0 -1
  343. package/build/lib/graphql-document/graphql-document.js +0 -36
  344. package/build/lib/graphql-document/graphql-document.js.map +0 -1
  345. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts +0 -43
  346. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts.map +0 -1
  347. package/build/lib/graphql-document/hooks/use-tooltip-state.js +0 -132
  348. package/build/lib/graphql-document/hooks/use-tooltip-state.js.map +0 -1
  349. package/build/lib/graphql-document/positioning-simple.d.ts +0 -63
  350. package/build/lib/graphql-document/positioning-simple.d.ts.map +0 -1
  351. package/build/lib/graphql-document/positioning-simple.js +0 -185
  352. package/build/lib/graphql-document/positioning-simple.js.map +0 -1
  353. package/build/lib/graphql-document/schema-context.d.ts +0 -8
  354. package/build/lib/graphql-document/schema-context.d.ts.map +0 -1
  355. package/build/lib/graphql-document/schema-context.js +0 -11
  356. package/build/lib/graphql-document/schema-context.js.map +0 -1
  357. package/build/lib/graphql-document/schema-integration-example.d.ts +0 -27
  358. package/build/lib/graphql-document/schema-integration-example.d.ts.map +0 -1
  359. package/build/lib/graphql-document/schema-integration-example.js +0 -297
  360. package/build/lib/graphql-document/schema-integration-example.js.map +0 -1
  361. package/build/lib/graphql-document/schema-integration.d.ts +0 -135
  362. package/build/lib/graphql-document/schema-integration.d.ts.map +0 -1
  363. package/build/lib/graphql-document/schema-integration.js +0 -328
  364. package/build/lib/graphql-document/schema-integration.js.map +0 -1
  365. package/build/lib/graphql-document/types.d.ts +0 -117
  366. package/build/lib/graphql-document/types.d.ts.map +0 -1
  367. package/build/lib/graphql-document/types.js.map +0 -1
  368. package/build/template/components/ArgumentAnnotation.js +0 -10
  369. package/build/template/components/ArgumentAnnotation.js.map +0 -1
  370. package/build/template/components/ArgumentList.js +0 -9
  371. package/build/template/components/ArgumentList.js.map +0 -1
  372. package/build/template/components/ArgumentListAnnotation.js +0 -15
  373. package/build/template/components/ArgumentListAnnotation.js.map +0 -1
  374. package/build/template/components/Changelog.js +0 -44
  375. package/build/template/components/Changelog.js.map +0 -1
  376. package/build/template/components/CodeBlockEnhancer.d.ts +0 -2
  377. package/build/template/components/CodeBlockEnhancer.d.ts.map +0 -1
  378. package/build/template/components/CodeBlockEnhancer.js +0 -175
  379. package/build/template/components/CodeBlockEnhancer.js.map +0 -1
  380. package/build/template/components/DeprecationReason.js +0 -9
  381. package/build/template/components/DeprecationReason.js.map +0 -1
  382. package/build/template/components/Description.js +0 -9
  383. package/build/template/components/Description.js.map +0 -1
  384. package/build/template/components/Field.js +0 -14
  385. package/build/template/components/Field.js.map +0 -1
  386. package/build/template/components/FieldList.js.map +0 -1
  387. package/build/template/components/FieldListSection.js.map +0 -1
  388. package/build/template/components/HamburgerMenu.d.ts +0 -9
  389. package/build/template/components/HamburgerMenu.d.ts.map +0 -1
  390. package/build/template/components/HamburgerMenu.js +0 -30
  391. package/build/template/components/HamburgerMenu.js.map +0 -1
  392. package/build/template/components/Link.js.map +0 -1
  393. package/build/template/components/Logo.js +0 -20
  394. package/build/template/components/Logo.js.map +0 -1
  395. package/build/template/components/MDXComponents.d.ts +0 -11
  396. package/build/template/components/MDXComponents.d.ts.map +0 -1
  397. package/build/template/components/MDXComponents.js +0 -70
  398. package/build/template/components/MDXComponents.js.map +0 -1
  399. package/build/template/components/Markdown.js.map +0 -1
  400. package/build/template/components/MissingSchema.js +0 -5
  401. package/build/template/components/MissingSchema.js.map +0 -1
  402. package/build/template/components/NamedType.js +0 -12
  403. package/build/template/components/NamedType.js.map +0 -1
  404. package/build/template/components/NotFound.d.ts +0 -2
  405. package/build/template/components/NotFound.d.ts.map +0 -1
  406. package/build/template/components/NotFound.js +0 -7
  407. package/build/template/components/NotFound.js.map +0 -1
  408. package/build/template/components/RadixLink.js.map +0 -1
  409. package/build/template/components/TestComponent.d.ts +0 -5
  410. package/build/template/components/TestComponent.d.ts.map +0 -1
  411. package/build/template/components/TestComponent.js +0 -7
  412. package/build/template/components/TestComponent.js.map +0 -1
  413. package/build/template/components/Texts/MinorHeading.js.map +0 -1
  414. package/build/template/components/ThemeToggle.d.ts +0 -3
  415. package/build/template/components/ThemeToggle.d.ts.map +0 -1
  416. package/build/template/components/ThemeToggle.js +0 -9
  417. package/build/template/components/ThemeToggle.js.map +0 -1
  418. package/build/template/components/TypeAnnotation.js.map +0 -1
  419. package/build/template/components/TypeFieldsLinkList.js +0 -9
  420. package/build/template/components/TypeFieldsLinkList.js.map +0 -1
  421. package/build/template/components/TypeIndex.js +0 -17
  422. package/build/template/components/TypeIndex.js.map +0 -1
  423. package/build/template/components/content/$$.d.ts +0 -3
  424. package/build/template/components/content/$$.d.ts.map +0 -1
  425. package/build/template/components/content/$$.js +0 -3
  426. package/build/template/components/content/$$.js.map +0 -1
  427. package/build/template/components/content/GraphQLDocumentWithSchema.d.ts +0 -8
  428. package/build/template/components/content/GraphQLDocumentWithSchema.d.ts.map +0 -1
  429. package/build/template/components/content/GraphQLDocumentWithSchema.js +0 -13
  430. package/build/template/components/content/GraphQLDocumentWithSchema.js.map +0 -1
  431. package/build/template/components/content/GraphQLDocumentWrapper.d.ts +0 -7
  432. package/build/template/components/content/GraphQLDocumentWrapper.d.ts.map +0 -1
  433. package/build/template/components/content/GraphQLDocumentWrapper.js +0 -63
  434. package/build/template/components/content/GraphQLDocumentWrapper.js.map +0 -1
  435. package/build/template/components/graphql/graphql.js +0 -3
  436. package/build/template/components/graphql/graphql.js.map +0 -1
  437. package/build/template/components/graphql/type-kind-icon.js.map +0 -1
  438. package/build/template/components/graphql/type-link.js +0 -11
  439. package/build/template/components/graphql/type-link.js.map +0 -1
  440. package/build/template/components/sidebar/Sidebar.js +0 -11
  441. package/build/template/components/sidebar/Sidebar.js.map +0 -1
  442. package/build/template/components/sidebar/SidebarItem.js.map +0 -1
  443. package/build/template/components/sidebar/ToggleButton.js +0 -5
  444. package/build/template/components/sidebar/ToggleButton.js.map +0 -1
  445. package/build/template/contexts/ThemeContext.d.ts +0 -12
  446. package/build/template/contexts/ThemeContext.d.ts.map +0 -1
  447. package/build/template/contexts/ThemeContext.js +0 -40
  448. package/build/template/contexts/ThemeContext.js.map +0 -1
  449. package/build/template/entry.client.js.map +0 -1
  450. package/build/template/hooks/useClientOnly.d.ts +0 -9
  451. package/build/template/hooks/useClientOnly.d.ts.map +0 -1
  452. package/build/template/hooks/useClientOnly.js +0 -16
  453. package/build/template/hooks/useClientOnly.js.map +0 -1
  454. package/build/template/routes/changelog.js.map +0 -1
  455. package/build/template/routes/index.js.map +0 -1
  456. package/build/template/routes/reference.$type.$field.js.map +0 -1
  457. package/build/template/routes/reference.$type.js.map +0 -1
  458. package/build/template/routes/reference.js.map +0 -1
  459. package/build/template/routes/root.js +0 -138
  460. package/build/template/routes/root.js.map +0 -1
  461. package/build/template/routes.js +0 -5
  462. package/build/template/routes.js.map +0 -1
  463. package/build/template/server/create-page-html-response.d.ts +0 -7
  464. package/build/template/server/create-page-html-response.d.ts.map +0 -1
  465. package/build/template/server/create-page-html-response.js.map +0 -1
  466. package/build/template/server/middleware/page.d.ts +0 -4
  467. package/build/template/server/middleware/page.d.ts.map +0 -1
  468. package/build/template/server/middleware/page.js +0 -15
  469. package/build/template/server/middleware/page.js.map +0 -1
  470. package/build/template/server/middleware/unsupported-assets.d.ts +0 -10
  471. package/build/template/server/middleware/unsupported-assets.d.ts.map +0 -1
  472. package/build/template/server/middleware/unsupported-assets.js +0 -21
  473. package/build/template/server/middleware/unsupported-assets.js.map +0 -1
  474. package/build/template/styles/code-block.css +0 -218
  475. package/src/api/content/$$.ts +0 -6
  476. package/src/api/content/$.test.ts +0 -72
  477. package/src/api/content/$.ts +0 -1
  478. package/src/api/content/metadata.ts +0 -11
  479. package/src/api/content/navbar.test.ts +0 -55
  480. package/src/api/content/navbar.ts +0 -61
  481. package/src/api/content/page.ts +0 -12
  482. package/src/api/content/scan.ts +0 -117
  483. package/src/api/content/sidebar.test.ts +0 -297
  484. package/src/api/content/sidebar.ts +0 -283
  485. package/src/api/content/utils.ts +0 -7
  486. package/src/exports/components.ts +0 -4
  487. package/src/lib/graphql-document/$$.ts +0 -4
  488. package/src/lib/graphql-document/$.test.ts +0 -132
  489. package/src/lib/graphql-document/$.ts +0 -1
  490. package/src/lib/graphql-document/README.md +0 -102
  491. package/src/lib/graphql-document/analysis.ts +0 -415
  492. package/src/lib/graphql-document/components/CopyButton.tsx +0 -76
  493. package/src/lib/graphql-document/components/GraphQLDocument.tsx +0 -262
  494. package/src/lib/graphql-document/components/GraphQLDocument.unit.test.ts +0 -188
  495. package/src/lib/graphql-document/components/GraphQLDocumentWithSchema.tsx +0 -70
  496. package/src/lib/graphql-document/components/GraphQLIdentifierPopover.tsx +0 -197
  497. package/src/lib/graphql-document/components/IdentifierLink.tsx +0 -160
  498. package/src/lib/graphql-document/components/graphql-document-styles.ts +0 -167
  499. package/src/lib/graphql-document/components/index.ts +0 -5
  500. package/src/lib/graphql-document/demo.md +0 -155
  501. package/src/lib/graphql-document/example.ts +0 -163
  502. package/src/lib/graphql-document/graphql-document.ts +0 -37
  503. package/src/lib/graphql-document/hooks/use-tooltip-state.test.ts +0 -76
  504. package/src/lib/graphql-document/hooks/use-tooltip-state.ts +0 -191
  505. package/src/lib/graphql-document/positioning-simple.test.ts +0 -248
  506. package/src/lib/graphql-document/positioning-simple.ts +0 -260
  507. package/src/lib/graphql-document/schema-context.tsx +0 -20
  508. package/src/lib/graphql-document/schema-integration-example.ts +0 -341
  509. package/src/lib/graphql-document/schema-integration.test.ts +0 -365
  510. package/src/lib/graphql-document/schema-integration.ts +0 -497
  511. package/src/lib/graphql-document/types.ts +0 -129
  512. package/src/template/components/CodeBlockEnhancer.tsx +0 -192
  513. package/src/template/components/HamburgerMenu.tsx +0 -96
  514. package/src/template/components/MDXComponents.tsx +0 -101
  515. package/src/template/components/NotFound.tsx +0 -28
  516. package/src/template/components/TestComponent.tsx +0 -6
  517. package/src/template/components/ThemeToggle.tsx +0 -21
  518. package/src/template/components/content/$$.ts +0 -2
  519. package/src/template/components/content/GraphQLDocumentWithSchema.tsx +0 -13
  520. package/src/template/components/content/GraphQLDocumentWrapper.tsx +0 -89
  521. package/src/template/contexts/ThemeContext.tsx +0 -60
  522. package/src/template/hooks/useClientOnly.ts +0 -21
  523. package/src/template/server/middleware/page.ts +0 -19
  524. package/src/template/server/middleware/unsupported-assets.ts +0 -25
  525. /package/build/lib/{graphql-document → file-router/sidebar}/types.js +0 -0
@@ -1,163 +0,0 @@
1
- /**
2
- * Example usage of the GraphQL Document Analysis library
3
- *
4
- * This demonstrates how to use the foundational layer for extracting
5
- * identifiers and context from GraphQL documents - the building block
6
- * for the interactive GraphQL Document Component.
7
- */
8
-
9
- import { GraphQLDocument } from './$.ts'
10
-
11
- // Example GraphQL query with various constructs
12
- const exampleQuery = `
13
- query GetPokemonWithAbilities($id: ID!, $limit: Int = 10) {
14
- pokemon(id: $id) {
15
- name
16
- abilities(first: $limit) {
17
- name
18
- isHidden
19
- pokemon {
20
- name
21
- }
22
- }
23
- ... on ElectricPokemon {
24
- voltage
25
- }
26
- }
27
- }
28
-
29
- fragment PokemonBasics on Pokemon {
30
- name
31
- type
32
- level
33
- }
34
- `
35
-
36
- /**
37
- * Demonstrate basic analysis
38
- */
39
- export const analyzeExample = () => {
40
- console.log('🔍 Analyzing GraphQL Document...\n')
41
-
42
- const result = GraphQLDocument.analyze(exampleQuery)
43
-
44
- console.log(`✅ Valid: ${result.isValid}`)
45
- console.log(`📊 Total identifiers: ${result.identifiers.all.length}`)
46
- console.log(`🚨 Errors: ${result.errors.length}\n`)
47
-
48
- // Show identifiers by kind
49
- for (const [kind, identifiers] of result.identifiers.byKind) {
50
- console.log(`${getKindEmoji(kind)} ${kind} (${identifiers.length}):`)
51
- for (const identifier of identifiers) {
52
- const pos = `${identifier.position.line}:${identifier.position.column}`
53
- const path = identifier.schemaPath.join(' → ')
54
- const parent = identifier.parentType ? ` (in ${identifier.parentType})` : ''
55
- console.log(` • ${identifier.name}${parent} → ${path} @ ${pos}`)
56
- }
57
- console.log()
58
- }
59
-
60
- return result
61
- }
62
-
63
- /**
64
- * Demonstrate identifier lookup by position
65
- */
66
- export const demonstratePositionLookup = () => {
67
- console.log('📍 Position-based Identifier Lookup...\n')
68
-
69
- const identifiers = GraphQLDocument.extractIdentifiers(exampleQuery)
70
-
71
- // Find identifier at a specific position (e.g., cursor position in an editor)
72
- const targetPosition = 180 // Approximate position of "abilities" field
73
-
74
- // Find the closest identifier to this position
75
- let closestIdentifier = null
76
- let closestDistance = Infinity
77
-
78
- for (const identifier of identifiers.all) {
79
- const distance = Math.abs(identifier.position.start - targetPosition)
80
- if (distance < closestDistance) {
81
- closestDistance = distance
82
- closestIdentifier = identifier
83
- }
84
- }
85
-
86
- if (closestIdentifier) {
87
- console.log(`🎯 Identifier near position ${targetPosition}:`)
88
- console.log(` Name: ${closestIdentifier.name}`)
89
- console.log(` Kind: ${closestIdentifier.kind}`)
90
- console.log(` Schema Path: ${closestIdentifier.schemaPath.join(' → ')}`)
91
- console.log(` Context: ${JSON.stringify(closestIdentifier.context, null, 2)}`)
92
- }
93
- }
94
-
95
- /**
96
- * Demonstrate how this enables hyperlink generation
97
- */
98
- export const demonstrateHyperlinkGeneration = () => {
99
- console.log('🔗 Hyperlink Generation Preview...\n')
100
-
101
- const identifiers = GraphQLDocument.extractIdentifiers(exampleQuery)
102
-
103
- // Show how each identifier could become a hyperlink
104
- const typeIdentifiers = identifiers.byKind.get('Type') || []
105
- const fieldIdentifiers = identifiers.byKind.get('Field') || []
106
-
107
- console.log('📝 Type References → Schema Links:')
108
- for (const identifier of typeIdentifiers) {
109
- const referenceUrl = `/reference/${identifier.name}`
110
- console.log(` ${identifier.name} → ${referenceUrl}`)
111
- }
112
-
113
- console.log('\n📝 Field References → Schema Links:')
114
- for (const identifier of fieldIdentifiers.slice(0, 5)) { // Show first 5
115
- const referenceUrl = identifier.parentType
116
- ? `/reference/${identifier.parentType}#${identifier.name}`
117
- : `/reference/${identifier.name}`
118
- console.log(` ${identifier.name} → ${referenceUrl}`)
119
- }
120
- }
121
-
122
- /**
123
- * Show the foundation for hover tooltips
124
- */
125
- export const demonstrateTooltipFoundation = () => {
126
- console.log('💬 Tooltip Foundation...\n')
127
-
128
- const identifiers = GraphQLDocument.extractIdentifiers(exampleQuery)
129
-
130
- // Show context information that would be displayed in tooltips
131
- const fieldIdentifiers = identifiers.byKind.get('Field') || []
132
-
133
- for (const identifier of fieldIdentifiers.slice(0, 3)) { // Show first 3
134
- console.log(`🏷️ ${identifier.name}:`)
135
- console.log(` Position: Line ${identifier.position.line}, Column ${identifier.position.column}`)
136
- console.log(` Schema Path: ${identifier.schemaPath.join(' → ')}`)
137
- console.log(` Parent Type: ${identifier.parentType || 'Root'}`)
138
- console.log(` Operation: ${identifier.context.operationType || 'None'}`)
139
- console.log(` Selection Path: ${identifier.context.selectionPath.join(' → ')}`)
140
- console.log()
141
- }
142
- }
143
-
144
- // Helper function
145
- function getKindEmoji(kind: string): string {
146
- const emojis: Record<string, string> = {
147
- 'Type': '🏷️',
148
- 'Field': '📋',
149
- 'Argument': '⚙️',
150
- 'Variable': '💰',
151
- 'Directive': '🎯',
152
- 'Fragment': '🧩',
153
- }
154
- return emojis[kind] || '❓'
155
- }
156
-
157
- // Run example if executed directly
158
- if (import.meta.url === `file://${process.argv[1]}`) {
159
- analyzeExample()
160
- demonstratePositionLookup()
161
- demonstrateHyperlinkGeneration()
162
- demonstrateTooltipFoundation()
163
- }
@@ -1,37 +0,0 @@
1
- /**
2
- * GraphQL Document Component Library
3
- *
4
- * Transform static GraphQL code blocks into interactive documentation with
5
- * hyperlinks, tooltips, and schema validation.
6
- *
7
- * ## Features
8
- * - Hyperlinked identifiers that navigate to reference documentation
9
- * - Hover tooltips showing type information and descriptions
10
- * - Schema validation with error highlighting
11
- * - Build-time GraphQL validation
12
- * - Support for all GraphQL operations (queries, mutations, subscriptions, fragments)
13
- *
14
- * ## Usage
15
- * ```typescript
16
- * import { GraphQLDocument } from 'polen/lib/graphql-document'
17
- *
18
- * <GraphQLDocument schema={schema}>
19
- * {`query { user { name } }`}
20
- * </GraphQLDocument>
21
- * ```
22
- *
23
- * @see {@link GraphQLDocumentWithSchema} for MDX integration
24
- * @see {@link GraphQLDocument} for the main React component
25
- */
26
-
27
- export * from './analysis.ts'
28
- export * from './components/index.ts'
29
- export * from './positioning-simple.ts'
30
- export * from './schema-integration.ts'
31
- export * from './types.ts'
32
-
33
- // Re-export key functions for convenience
34
- export { analyze, analyzer, extractIdentifiers } from './analysis.ts'
35
- export { GraphQLDocument } from './components/GraphQLDocument.tsx'
36
- export { createSimpleOverlay, createSimplePositionCalculator } from './positioning-simple.ts'
37
- export { analyzeWithSchema, createPolenSchemaResolver } from './schema-integration.ts'
@@ -1,76 +0,0 @@
1
- /**
2
- * Unit tests for tooltip state management hook
3
- *
4
- * @vitest-environment jsdom
5
- */
6
-
7
- import { act, renderHook } from '@testing-library/react'
8
- import { describe, expect, it, vi } from 'vitest'
9
- import { useTooltipState } from './use-tooltip-state.ts'
10
-
11
- describe('useTooltipState', () => {
12
- it('shows tooltip after hover delay', () => {
13
- vi.useFakeTimers()
14
- const { result } = renderHook(() => useTooltipState({ showDelay: 300 }))
15
-
16
- act(() => {
17
- result.current.onHoverStart('field-1')
18
- })
19
- expect(result.current.isOpen('field-1')).toBe(false)
20
-
21
- act(() => {
22
- vi.advanceTimersByTime(300)
23
- })
24
- expect(result.current.isOpen('field-1')).toBe(true)
25
- vi.useRealTimers()
26
- })
27
-
28
- it('hides tooltip after hover end delay', () => {
29
- vi.useFakeTimers()
30
- const { result } = renderHook(() => useTooltipState())
31
-
32
- // Show tooltip
33
- act(() => {
34
- result.current.onHoverStart('field-1')
35
- vi.advanceTimersByTime(300)
36
- })
37
-
38
- // Trigger hide
39
- act(() => {
40
- result.current.onHoverEnd('field-1')
41
- })
42
- expect(result.current.isOpen('field-1')).toBe(true) // Still open during delay
43
-
44
- act(() => {
45
- vi.advanceTimersByTime(200)
46
- })
47
- expect(result.current.isOpen('field-1')).toBe(false)
48
- vi.useRealTimers()
49
- })
50
-
51
- it('pins and unpins tooltip on toggle', () => {
52
- const { result } = renderHook(() => useTooltipState())
53
-
54
- act(() => {
55
- result.current.onTogglePin('field-1')
56
- })
57
- expect(result.current.isPinned('field-1')).toBe(true)
58
-
59
- act(() => {
60
- result.current.onTogglePin('field-1')
61
- })
62
- expect(result.current.isPinned('field-1')).toBe(false)
63
- })
64
-
65
- it('allows multiple pins when enabled', () => {
66
- const { result } = renderHook(() => useTooltipState())
67
-
68
- act(() => {
69
- result.current.onTogglePin('field-1')
70
- result.current.onTogglePin('field-2')
71
- })
72
-
73
- expect(result.current.isPinned('field-1')).toBe(true)
74
- expect(result.current.isPinned('field-2')).toBe(true)
75
- })
76
- })
@@ -1,191 +0,0 @@
1
- /**
2
- * State management for GraphQL document tooltips
3
- *
4
- * Handles hover delays, pinning, and multiple tooltip coordination
5
- */
6
-
7
- import { React } from '#dep/react/index'
8
-
9
- export interface TooltipState {
10
- /** Currently visible tooltip (via hover) */
11
- hoveredId: string | null
12
- /** Set of pinned tooltip IDs */
13
- pinnedIds: Set<string>
14
- /** ID pending show (waiting for delay) */
15
- pendingShowId: string | null
16
- /** ID pending hide (waiting for grace period) */
17
- pendingHideId: string | null
18
- }
19
-
20
- export interface UseTooltipStateOptions {
21
- /** Delay before showing tooltip on hover (ms) */
22
- showDelay?: number
23
- /** Delay before hiding tooltip on mouse leave (ms) */
24
- hideDelay?: number
25
- /** Whether to allow multiple pinned tooltips */
26
- allowMultiplePins?: boolean
27
- }
28
-
29
- export interface UseTooltipStateReturn {
30
- /** Check if a tooltip should be visible */
31
- isOpen: (id: string) => boolean
32
- /** Check if a tooltip is pinned */
33
- isPinned: (id: string) => boolean
34
- /** Handle hover start */
35
- onHoverStart: (id: string) => void
36
- /** Handle hover end */
37
- onHoverEnd: (id: string) => void
38
- /** Handle click (toggle pin) */
39
- onTogglePin: (id: string) => void
40
- /** Handle tooltip content hover (cancels hide) */
41
- onTooltipHover: (id: string) => void
42
- /** Unpin a specific tooltip */
43
- unpin: (id: string) => void
44
- /** Unpin all tooltips */
45
- unpinAll: () => void
46
- }
47
-
48
- export const useTooltipState = (options: UseTooltipStateOptions = {}): UseTooltipStateReturn => {
49
- const {
50
- showDelay = 300,
51
- hideDelay = 200,
52
- allowMultiplePins = true,
53
- } = options
54
-
55
- const [hoveredId, setHoveredId] = React.useState<string | null>(null)
56
- const [pinnedIds, setPinnedIds] = React.useState<Set<string>>(new Set())
57
- const [pendingShowId, setPendingShowId] = React.useState<string | null>(null)
58
- const [pendingHideId, setPendingHideId] = React.useState<string | null>(null)
59
-
60
- // Timer refs
61
- const showTimerRef = React.useRef<NodeJS.Timeout | null>(null)
62
- const hideTimerRef = React.useRef<NodeJS.Timeout | null>(null)
63
-
64
- // Clear any pending timers
65
- const clearTimers = React.useCallback(() => {
66
- if (showTimerRef.current) {
67
- clearTimeout(showTimerRef.current)
68
- showTimerRef.current = null
69
- }
70
- if (hideTimerRef.current) {
71
- clearTimeout(hideTimerRef.current)
72
- hideTimerRef.current = null
73
- }
74
- setPendingShowId(null)
75
- setPendingHideId(null)
76
- }, [])
77
-
78
- // Check if tooltip should be visible
79
- const isOpen = React.useCallback((id: string): boolean => {
80
- return hoveredId === id || pinnedIds.has(id)
81
- }, [hoveredId, pinnedIds])
82
-
83
- // Check if tooltip is pinned
84
- const isPinned = React.useCallback((id: string): boolean => {
85
- return pinnedIds.has(id)
86
- }, [pinnedIds])
87
-
88
- // Handle hover start
89
- const onHoverStart = React.useCallback((id: string) => {
90
- // Don't show if already pinned
91
- if (pinnedIds.has(id)) return
92
-
93
- // Cancel any pending hide for this ID
94
- if (pendingHideId === id) {
95
- clearTimeout(hideTimerRef.current!)
96
- hideTimerRef.current = null
97
- setPendingHideId(null)
98
- return
99
- }
100
-
101
- // Clear any other pending operations
102
- clearTimers()
103
-
104
- // Schedule show
105
- setPendingShowId(id)
106
- showTimerRef.current = setTimeout(() => {
107
- setHoveredId(id)
108
- setPendingShowId(null)
109
- }, showDelay)
110
- }, [pinnedIds, pendingHideId, clearTimers, showDelay])
111
-
112
- // Handle hover end
113
- const onHoverEnd = React.useCallback((id: string) => {
114
- // Don't hide if pinned
115
- if (pinnedIds.has(id)) return
116
-
117
- // Cancel pending show if still waiting
118
- if (pendingShowId === id) {
119
- clearTimeout(showTimerRef.current!)
120
- showTimerRef.current = null
121
- setPendingShowId(null)
122
- return
123
- }
124
-
125
- // Only hide if currently showing this tooltip
126
- if (hoveredId === id) {
127
- setPendingHideId(id)
128
- hideTimerRef.current = setTimeout(() => {
129
- // First set hovered to null to trigger close animation
130
- setHoveredId(null)
131
- setPendingHideId(null)
132
- }, hideDelay)
133
- }
134
- }, [pinnedIds, pendingShowId, hoveredId, hideDelay])
135
-
136
- // Handle tooltip content hover (cancels hide)
137
- const onTooltipHover = React.useCallback((id: string) => {
138
- if (pendingHideId === id) {
139
- clearTimeout(hideTimerRef.current!)
140
- hideTimerRef.current = null
141
- setPendingHideId(null)
142
- }
143
- }, [pendingHideId])
144
-
145
- // Toggle pin state
146
- const onTogglePin = React.useCallback((id: string) => {
147
- clearTimers()
148
-
149
- setPinnedIds((prev: Set<string>) => {
150
- const next = new Set(prev)
151
- if (next.has(id)) {
152
- // Unpin
153
- next.delete(id)
154
- setHoveredId(null) // Also clear hover state
155
- } else {
156
- // Pin
157
- if (!allowMultiplePins) {
158
- next.clear() // Clear other pins
159
- }
160
- next.add(id)
161
- setHoveredId(null) // Clear hover state since it's now pinned
162
- }
163
- return next
164
- })
165
- }, [clearTimers, allowMultiplePins])
166
-
167
- // Unpin specific tooltip
168
- const unpin = React.useCallback((id: string) => {
169
- setPinnedIds((prev: Set<string>) => {
170
- const next = new Set(prev)
171
- next.delete(id)
172
- return next
173
- })
174
- }, [])
175
-
176
- // Unpin all tooltips
177
- const unpinAll = React.useCallback(() => {
178
- setPinnedIds(new Set())
179
- }, [])
180
-
181
- return {
182
- isOpen,
183
- isPinned,
184
- onHoverStart,
185
- onHoverEnd,
186
- onTogglePin,
187
- onTooltipHover,
188
- unpin,
189
- unpinAll,
190
- }
191
- }