zudoku 0.0.0-fix-firebase-export.2e421fda → 0.0.0-monetization-standalone.z07361713

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 (410) hide show
  1. package/dist/app/main.d.ts +6 -6
  2. package/dist/cli/common/version-check.js +12 -3
  3. package/dist/cli/common/version-check.js.map +1 -1
  4. package/dist/config/create-plugin.d.ts +2 -0
  5. package/dist/config/create-plugin.js +30 -0
  6. package/dist/config/create-plugin.js.map +1 -0
  7. package/dist/config/loader.js +3 -1
  8. package/dist/config/loader.js.map +1 -1
  9. package/dist/config/validators/InputNavigationSchema.d.ts +77 -75
  10. package/dist/config/validators/InputNavigationSchema.js +1 -0
  11. package/dist/config/validators/InputNavigationSchema.js.map +1 -1
  12. package/dist/config/validators/NavigationSchema.js +6 -1
  13. package/dist/config/validators/NavigationSchema.js.map +1 -1
  14. package/dist/config/validators/ProtectedRoutesSchema.d.ts +1 -1
  15. package/dist/config/validators/validate.d.ts +61 -15
  16. package/dist/config/validators/validate.js +9 -5
  17. package/dist/config/validators/validate.js.map +1 -1
  18. package/dist/flat-config.d.ts +30 -27
  19. package/dist/index.d.ts +3 -1
  20. package/dist/index.js +3 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/auth/issuer.js +1 -1
  23. package/dist/lib/auth/issuer.js.map +1 -1
  24. package/dist/lib/authentication/authentication.d.ts +3 -2
  25. package/dist/lib/authentication/components/CallbackHandler.js +1 -1
  26. package/dist/lib/authentication/components/CallbackHandler.js.map +1 -1
  27. package/dist/lib/authentication/components/SignIn.js +4 -2
  28. package/dist/lib/authentication/components/SignIn.js.map +1 -1
  29. package/dist/lib/authentication/components/SignUp.js +4 -2
  30. package/dist/lib/authentication/components/SignUp.js.map +1 -1
  31. package/dist/lib/authentication/hook.d.ts +2 -0
  32. package/dist/lib/authentication/hook.js +10 -0
  33. package/dist/lib/authentication/hook.js.map +1 -1
  34. package/dist/lib/authentication/providers/auth0.js +11 -7
  35. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  36. package/dist/lib/authentication/providers/clerk.js +0 -22
  37. package/dist/lib/authentication/providers/clerk.js.map +1 -1
  38. package/dist/lib/authentication/providers/firebase.js +67 -9
  39. package/dist/lib/authentication/providers/firebase.js.map +1 -1
  40. package/dist/lib/authentication/providers/supabase.js +6 -15
  41. package/dist/lib/authentication/providers/supabase.js.map +1 -1
  42. package/dist/lib/authentication/ui/EmailVerificationUi.d.ts +4 -0
  43. package/dist/lib/authentication/ui/EmailVerificationUi.js +34 -0
  44. package/dist/lib/authentication/ui/EmailVerificationUi.js.map +1 -0
  45. package/dist/lib/authentication/ui/ZudokuAuthUi.d.ts +7 -2
  46. package/dist/lib/authentication/ui/ZudokuAuthUi.js +48 -12
  47. package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -1
  48. package/dist/lib/authentication/utils/relativeRedirectUrl.d.ts +1 -0
  49. package/dist/lib/authentication/utils/relativeRedirectUrl.js +8 -0
  50. package/dist/lib/authentication/utils/relativeRedirectUrl.js.map +1 -0
  51. package/dist/lib/components/Bootstrap.js +1 -2
  52. package/dist/lib/components/Bootstrap.js.map +1 -1
  53. package/dist/lib/components/Pagination.js +2 -2
  54. package/dist/lib/components/Pagination.js.map +1 -1
  55. package/dist/lib/components/Zudoku.js +2 -5
  56. package/dist/lib/components/Zudoku.js.map +1 -1
  57. package/dist/lib/components/context/ZudokuContext.d.ts +2 -4
  58. package/dist/lib/components/context/ZudokuContext.js +2 -2
  59. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  60. package/dist/lib/components/context/ZudokuProvider.js +1 -1
  61. package/dist/lib/components/context/ZudokuProvider.js.map +1 -1
  62. package/dist/lib/components/context/ZudokuReactContext.d.ts +11 -0
  63. package/dist/lib/components/context/ZudokuReactContext.js +4 -0
  64. package/dist/lib/components/context/ZudokuReactContext.js.map +1 -0
  65. package/dist/lib/components/index.d.ts +5 -0
  66. package/dist/lib/components/index.js +4 -0
  67. package/dist/lib/components/index.js.map +1 -1
  68. package/dist/lib/components/navigation/NavigationItem.js +2 -2
  69. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  70. package/dist/lib/core/RouteGuard.js +12 -7
  71. package/dist/lib/core/RouteGuard.js.map +1 -1
  72. package/dist/lib/core/plugins.d.ts +11 -1
  73. package/dist/lib/core/plugins.js +1 -0
  74. package/dist/lib/core/plugins.js.map +1 -1
  75. package/dist/lib/core/react-query.d.ts +1 -0
  76. package/dist/lib/core/react-query.js +2 -0
  77. package/dist/lib/core/react-query.js.map +1 -0
  78. package/dist/lib/core/transform-config.d.ts +2 -0
  79. package/dist/lib/core/transform-config.js +22 -0
  80. package/dist/lib/core/transform-config.js.map +1 -0
  81. package/dist/lib/errors/ErrorAlert.js +1 -2
  82. package/dist/lib/errors/ErrorAlert.js.map +1 -1
  83. package/dist/lib/errors/ErrorMessage.d.ts +3 -0
  84. package/dist/lib/errors/ErrorMessage.js +16 -0
  85. package/dist/lib/errors/ErrorMessage.js.map +1 -0
  86. package/dist/lib/hooks/index.d.ts +2 -0
  87. package/dist/lib/oas/graphql/circular.d.ts +2 -0
  88. package/dist/lib/oas/graphql/circular.js +32 -10
  89. package/dist/lib/oas/graphql/circular.js.map +1 -1
  90. package/dist/lib/oas/graphql/circular.test.d.ts +1 -0
  91. package/dist/lib/oas/graphql/circular.test.js +152 -0
  92. package/dist/lib/oas/graphql/circular.test.js.map +1 -0
  93. package/dist/lib/oas/graphql/index.js +7 -3
  94. package/dist/lib/oas/graphql/index.js.map +1 -1
  95. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +9 -172
  96. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  97. package/dist/lib/plugins/api-keys/index.d.ts +11 -4
  98. package/dist/lib/plugins/api-keys/index.js +36 -22
  99. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  100. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.d.ts +12 -0
  101. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js +133 -0
  102. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js.map +1 -0
  103. package/dist/lib/plugins/api-keys/settings/ApiKeyList.d.ts +4 -0
  104. package/dist/lib/plugins/api-keys/settings/ApiKeyList.js +33 -0
  105. package/dist/lib/plugins/api-keys/settings/ApiKeyList.js.map +1 -0
  106. package/dist/lib/plugins/api-keys/settings/RevealApiKey.d.ts +6 -0
  107. package/dist/lib/plugins/api-keys/settings/RevealApiKey.js +39 -0
  108. package/dist/lib/plugins/api-keys/settings/RevealApiKey.js.map +1 -0
  109. package/dist/lib/plugins/openapi/OasProvider.js +6 -2
  110. package/dist/lib/plugins/openapi/OasProvider.js.map +1 -1
  111. package/dist/lib/plugins/openapi/OperationList.js +4 -4
  112. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  113. package/dist/lib/plugins/openapi/ParamInfos.js +1 -0
  114. package/dist/lib/plugins/openapi/ParamInfos.js.map +1 -1
  115. package/dist/lib/plugins/openapi/Sidecar.js +3 -2
  116. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  117. package/dist/lib/plugins/openapi/interfaces.d.ts +3 -0
  118. package/dist/lib/plugins/openapi/schema/SchemaView.js +1 -1
  119. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  120. package/dist/lib/plugins/openapi/schema/utils.js +11 -3
  121. package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
  122. package/dist/lib/plugins/openapi/util/createHttpSnippet.js +24 -1
  123. package/dist/lib/plugins/openapi/util/createHttpSnippet.js.map +1 -1
  124. package/dist/lib/plugins/openapi/util/getRoutes.d.ts +3 -0
  125. package/dist/lib/plugins/openapi/util/getRoutes.js +2 -1
  126. package/dist/lib/plugins/openapi/util/getRoutes.js.map +1 -1
  127. package/dist/lib/ui/Button.js +1 -1
  128. package/dist/lib/ui/Button.js.map +1 -1
  129. package/dist/lib/ui/Command.d.ts +3 -3
  130. package/dist/lib/ui/Secret.js +2 -2
  131. package/dist/lib/ui/Secret.js.map +1 -1
  132. package/dist/lib/util/invariant.d.ts +1 -1
  133. package/dist/lib/util/invariant.js +2 -2
  134. package/dist/lib/util/invariant.js.map +1 -1
  135. package/dist/vite/api/SchemaManager.d.ts +12 -1
  136. package/dist/vite/api/SchemaManager.js +31 -14
  137. package/dist/vite/api/SchemaManager.js.map +1 -1
  138. package/dist/vite/api/SchemaManager.test.js +44 -0
  139. package/dist/vite/api/SchemaManager.test.js.map +1 -1
  140. package/dist/vite/config.js +10 -4
  141. package/dist/vite/config.js.map +1 -1
  142. package/dist/vite/error-handler.js +1 -5
  143. package/dist/vite/error-handler.js.map +1 -1
  144. package/dist/vite/mdx/remark-link-rewrite.js +1 -1
  145. package/dist/vite/plugin-api-keys.js +5 -1
  146. package/dist/vite/plugin-api-keys.js.map +1 -1
  147. package/dist/vite/plugin-api.js +5 -3
  148. package/dist/vite/plugin-api.js.map +1 -1
  149. package/dist/vite/plugin-markdown-export.js +1 -1
  150. package/dist/vite/plugin-markdown-export.js.map +1 -1
  151. package/dist/vite/plugin-theme.js +2 -1
  152. package/dist/vite/plugin-theme.js.map +1 -1
  153. package/dist/vite/prerender/utils.js +9 -3
  154. package/dist/vite/prerender/utils.js.map +1 -1
  155. package/dist/vite/prerender/worker.js +3 -0
  156. package/dist/vite/prerender/worker.js.map +1 -1
  157. package/dist/vite/zuplo.d.ts +13 -0
  158. package/dist/vite/zuplo.js +15 -0
  159. package/dist/vite/zuplo.js.map +1 -0
  160. package/lib/{ActionButton-DUgvSylL.js → ActionButton-B0CXL1Lq.js} +3 -3
  161. package/lib/{ActionButton-DUgvSylL.js.map → ActionButton-B0CXL1Lq.js.map} +1 -1
  162. package/lib/{Button-CynVW1JV.js → Button-GUVe7pmt.js} +8 -7
  163. package/lib/{Button-CynVW1JV.js.map → Button-GUVe7pmt.js.map} +1 -1
  164. package/lib/{Card-KFniaZn5.js → Card-DCdq37aA.js} +2 -2
  165. package/lib/{Card-KFniaZn5.js.map → Card-DCdq37aA.js.map} +1 -1
  166. package/lib/{ClaudeLogo-B4Xxt-x_.js → ClaudeLogo-CUaQXKLK.js} +22 -22
  167. package/lib/ClaudeLogo-CUaQXKLK.js.map +1 -0
  168. package/lib/{Command-BpT1iBE6.js → Command-N6VujV30.js} +3 -3
  169. package/lib/{Command-BpT1iBE6.js.map → Command-N6VujV30.js.map} +1 -1
  170. package/lib/{Dialog-BQciPiHN.js → Dialog-hlvmmQ_c.js} +2 -2
  171. package/lib/{Dialog-BQciPiHN.js.map → Dialog-hlvmmQ_c.js.map} +1 -1
  172. package/lib/{Drawer-Ci7XwhqT.js → Drawer-Ch7927PF.js} +7 -7
  173. package/lib/{Drawer-Ci7XwhqT.js.map → Drawer-Ch7927PF.js.map} +1 -1
  174. package/lib/{DropdownMenu-C8SX_-S_.js → DropdownMenu-DN0jNrjj.js} +2 -2
  175. package/lib/{DropdownMenu-C8SX_-S_.js.map → DropdownMenu-DN0jNrjj.js.map} +1 -1
  176. package/lib/Frame-DKlOmSkU.js +205 -0
  177. package/lib/Frame-DKlOmSkU.js.map +1 -0
  178. package/lib/HydrationBoundary-CNF2ZV3E.js +601 -0
  179. package/lib/HydrationBoundary-CNF2ZV3E.js.map +1 -0
  180. package/lib/{IndexingDialog-B5zCiUKr.js → IndexingDialog-D0YdGfbn.js} +3 -3
  181. package/lib/{IndexingDialog-B5zCiUKr.js.map → IndexingDialog-D0YdGfbn.js.map} +1 -1
  182. package/lib/Input-Cx-GeKoF.js +22 -0
  183. package/lib/Input-Cx-GeKoF.js.map +1 -0
  184. package/lib/{MdxPage-BagO2c-n.js → MdxPage-BiAVpP8K.js} +11 -11
  185. package/lib/{MdxPage-BagO2c-n.js.map → MdxPage-BiAVpP8K.js.map} +1 -1
  186. package/lib/{Mermaid-D_VSX7_Q.js → Mermaid-DEztDKFw.js} +4 -4
  187. package/lib/{Mermaid-D_VSX7_Q.js.map → Mermaid-DEztDKFw.js.map} +1 -1
  188. package/lib/{OAuthErrorPage-Fq54RLgt.js → OAuthErrorPage-DhJo-O2B.js} +15 -15
  189. package/lib/OAuthErrorPage-DhJo-O2B.js.map +1 -0
  190. package/lib/OasProvider-DFMZwyNn.js +48 -0
  191. package/lib/OasProvider-DFMZwyNn.js.map +1 -0
  192. package/lib/{OperationList-C0jiEaG5.js → OperationList-CnmLfOuu.js} +1560 -1545
  193. package/lib/{OperationList-C0jiEaG5.js.map → OperationList-CnmLfOuu.js.map} +1 -1
  194. package/lib/RouteGuard-CZuPjknT.js +77 -0
  195. package/lib/RouteGuard-CZuPjknT.js.map +1 -0
  196. package/lib/{SchemaList-BU0zCHn9.js → SchemaList-B5ikunUd.js} +9 -9
  197. package/lib/{SchemaList-BU0zCHn9.js.map → SchemaList-B5ikunUd.js.map} +1 -1
  198. package/lib/SchemaView-rjji7zMf.js +438 -0
  199. package/lib/SchemaView-rjji7zMf.js.map +1 -0
  200. package/lib/{Select-CkxXP5I7.js → Secret-BE7V0Vb5.js} +159 -139
  201. package/lib/Secret-BE7V0Vb5.js.map +1 -0
  202. package/lib/{Separator-CTPSeW1S.js → Separator-BXt1LYnm.js} +2 -2
  203. package/lib/{Separator-CTPSeW1S.js.map → Separator-BXt1LYnm.js.map} +1 -1
  204. package/lib/SignUp-DHWDXat-.js +50 -0
  205. package/lib/SignUp-DHWDXat-.js.map +1 -0
  206. package/lib/{SyntaxHighlight-Kdyskw3C.js → SyntaxHighlight-paLQ8NP8.js} +1751 -1725
  207. package/lib/SyntaxHighlight-paLQ8NP8.js.map +1 -0
  208. package/lib/{Toc-DJxFPfcS.js → Toc-vMbSQCkj.js} +3 -3
  209. package/lib/{Toc-DJxFPfcS.js.map → Toc-vMbSQCkj.js.map} +1 -1
  210. package/lib/ZudokuContext-CnEI8jPU.js +389 -0
  211. package/lib/ZudokuContext-CnEI8jPU.js.map +1 -0
  212. package/lib/{___vite-browser-external_commonjs-proxy-Cga3HsWk.js → ___vite-browser-external_commonjs-proxy-BttVsNON.js} +2 -2
  213. package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js.map +1 -0
  214. package/lib/chunk-EPOLDU6W-C6C8jAwd.js +8558 -0
  215. package/lib/chunk-EPOLDU6W-C6C8jAwd.js.map +1 -0
  216. package/lib/{circular-CzWF1hj5.js → circular-CLhJAE3S.js} +771 -749
  217. package/lib/{circular-CzWF1hj5.js.map → circular-CLhJAE3S.js.map} +1 -1
  218. package/lib/{cn-dYga0KKN.js → cn-5-Gd1Dss.js} +531 -498
  219. package/lib/cn-5-Gd1Dss.js.map +1 -0
  220. package/lib/{createServer-BIr2_tGn.js → createServer-BYtu5Pcr.js} +12 -12
  221. package/lib/{createServer-BIr2_tGn.js.map → createServer-BYtu5Pcr.js.map} +1 -1
  222. package/lib/createVariantComponent-Dc0vtOvr.js +18 -0
  223. package/lib/createVariantComponent-Dc0vtOvr.js.map +1 -0
  224. package/lib/{errors-Bs4duWDy.js → errors-DkJIl45d.js} +3 -3
  225. package/lib/{errors-Bs4duWDy.js.map → errors-DkJIl45d.js.map} +1 -1
  226. package/lib/{firebase-Cax7HPzn.js → firebase-CmsW0j7-.js} +1579 -1325
  227. package/lib/firebase-CmsW0j7-.js.map +1 -0
  228. package/lib/hook-Da8QTnPd.js +52 -0
  229. package/lib/hook-Da8QTnPd.js.map +1 -0
  230. package/lib/{index-Css56y3F.js → index-Ba6RP577.js} +4 -4
  231. package/lib/{index-Css56y3F.js.map → index-Ba6RP577.js.map} +1 -1
  232. package/lib/index-CrcNWbel.js.map +1 -1
  233. package/lib/{index-Bh-MffiL.js → index-D35F-SCL.js} +2 -2
  234. package/lib/{index-Bh-MffiL.js.map → index-D35F-SCL.js.map} +1 -1
  235. package/lib/{index-0oT9beQN.js → index-k0PVZBYl.js} +155 -151
  236. package/lib/{index-0oT9beQN.js.map → index-k0PVZBYl.js.map} +1 -1
  237. package/lib/{ErrorAlert-DrOR8w3f.js → index-ofqkdEjL.js} +5457 -4444
  238. package/lib/index-ofqkdEjL.js.map +1 -0
  239. package/lib/index.esm-BYObtETB.js.map +1 -1
  240. package/lib/{index.esm-DtzT_KoE.js → index.esm-B_0dvNjB.js} +2 -2
  241. package/lib/{index.esm-DtzT_KoE.js.map → index.esm-B_0dvNjB.js.map} +1 -1
  242. package/lib/{index.esm-DDENMN4y.js → index.esm-DFzsB75P.js} +16 -14
  243. package/lib/index.esm-DFzsB75P.js.map +1 -0
  244. package/lib/{invariant-CGOLuIIz.js → invariant-BJAl77rw.js} +4 -4
  245. package/lib/invariant-BJAl77rw.js.map +1 -0
  246. package/lib/jsx-runtime-BzflLqGi.js.map +1 -1
  247. package/lib/{mutation-BoVlx8yA.js → mutation-BISOc7OM.js} +70 -44
  248. package/lib/mutation-BISOc7OM.js.map +1 -0
  249. package/lib/ui/Accordion.js +1 -1
  250. package/lib/ui/ActionButton.js +2 -2
  251. package/lib/ui/Alert.js +1 -1
  252. package/lib/ui/AlertDialog.js +1 -1
  253. package/lib/ui/Badge.js +1 -1
  254. package/lib/ui/Breadcrumb.js +1 -1
  255. package/lib/ui/Button.js +7 -6
  256. package/lib/ui/Button.js.map +1 -1
  257. package/lib/ui/ButtonGroup.js +1 -1
  258. package/lib/ui/Callout.js +1 -1
  259. package/lib/ui/Card.js +1 -1
  260. package/lib/ui/Carousel.js +1 -1
  261. package/lib/ui/Carousel.js.map +1 -1
  262. package/lib/ui/Checkbox.js +1 -1
  263. package/lib/ui/CodeBlock.js +1 -1
  264. package/lib/ui/Command.js +2 -2
  265. package/lib/ui/Dialog.js +1 -1
  266. package/lib/ui/Drawer.js +3 -3
  267. package/lib/ui/DropdownMenu.js +1 -1
  268. package/lib/ui/EmbeddedCodeBlock.js +1 -1
  269. package/lib/ui/Form.js +1 -1
  270. package/lib/ui/Frame.js +1 -1
  271. package/lib/ui/HoverCard.js +1 -1
  272. package/lib/ui/Input.js +1 -1
  273. package/lib/ui/Item.js +1 -1
  274. package/lib/ui/Label.js +1 -1
  275. package/lib/ui/NativeSelect.js +1 -1
  276. package/lib/ui/Pagination.js +1 -1
  277. package/lib/ui/Popover.js +1 -1
  278. package/lib/ui/Progress.js +1 -1
  279. package/lib/ui/RadioGroup.js +1 -1
  280. package/lib/ui/ScrollArea.js +1 -1
  281. package/lib/ui/Secret.js +3 -3
  282. package/lib/ui/Secret.js.map +1 -1
  283. package/lib/ui/Separator.js +1 -1
  284. package/lib/ui/Skeleton.js +1 -1
  285. package/lib/ui/Slider.js +1 -1
  286. package/lib/ui/Switch.js +1 -1
  287. package/lib/ui/SyntaxHighlight.js +3 -3
  288. package/lib/ui/Tabs.js +1 -1
  289. package/lib/ui/Textarea.js +1 -1
  290. package/lib/ui/Toggle.js +1 -1
  291. package/lib/ui/ToggleGroup.js +1 -1
  292. package/lib/ui/Value.js +1 -1
  293. package/lib/ui/util.js +1 -1
  294. package/lib/{useMutation-C6RqWmTS.js → useMutation-CFMGlAMW.js} +39 -17
  295. package/lib/useMutation-CFMGlAMW.js.map +1 -0
  296. package/lib/useSuspenseQuery-CSB_rVek.js +1226 -0
  297. package/lib/useSuspenseQuery-CSB_rVek.js.map +1 -0
  298. package/lib/zudoku.__internal.js +826 -1325
  299. package/lib/zudoku.__internal.js.map +1 -1
  300. package/lib/zudoku.auth-auth0.js +16 -16
  301. package/lib/zudoku.auth-auth0.js.map +1 -1
  302. package/lib/zudoku.auth-azureb2c.js +4 -4
  303. package/lib/zudoku.auth-clerk.js +52 -75
  304. package/lib/zudoku.auth-clerk.js.map +1 -1
  305. package/lib/zudoku.auth-firebase.js +6 -5
  306. package/lib/zudoku.auth-firebase.js.map +1 -1
  307. package/lib/zudoku.auth-openid.js +5 -5
  308. package/lib/zudoku.auth-supabase.js +31 -40
  309. package/lib/zudoku.auth-supabase.js.map +1 -1
  310. package/lib/zudoku.components.js +23 -21
  311. package/lib/zudoku.hooks.js +3 -3
  312. package/lib/zudoku.mermaid.js +3 -3
  313. package/lib/zudoku.plugin-api-catalog.js +8 -8
  314. package/lib/zudoku.plugin-api-keys.js +607 -552
  315. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  316. package/lib/zudoku.plugin-custom-pages.js +1 -1
  317. package/lib/zudoku.plugin-markdown.js +1 -1
  318. package/lib/zudoku.plugin-openapi.js +3 -3
  319. package/lib/zudoku.plugin-redirect.js +1 -1
  320. package/lib/zudoku.plugin-search-pagefind.js +30 -29
  321. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  322. package/lib/zudoku.plugins.js +9 -8
  323. package/lib/zudoku.plugins.js.map +1 -1
  324. package/lib/zudoku.react-query.js +440 -0
  325. package/lib/zudoku.react-query.js.map +1 -0
  326. package/lib/zudoku.router.js +1130 -1404
  327. package/lib/zudoku.router.js.map +1 -1
  328. package/package.json +36 -22
  329. package/src/lib/auth/issuer.ts +1 -1
  330. package/src/lib/authentication/authentication.ts +8 -2
  331. package/src/lib/authentication/components/CallbackHandler.tsx +1 -1
  332. package/src/lib/authentication/components/SignIn.tsx +5 -2
  333. package/src/lib/authentication/components/SignUp.tsx +5 -2
  334. package/src/lib/authentication/hook.ts +16 -0
  335. package/src/lib/authentication/providers/auth0.tsx +15 -9
  336. package/src/lib/authentication/providers/clerk.tsx +0 -26
  337. package/src/lib/authentication/providers/firebase.tsx +98 -6
  338. package/src/lib/authentication/providers/supabase.tsx +6 -15
  339. package/src/lib/authentication/ui/EmailVerificationUi.tsx +129 -0
  340. package/src/lib/authentication/ui/ZudokuAuthUi.tsx +181 -39
  341. package/src/lib/authentication/utils/relativeRedirectUrl.ts +12 -0
  342. package/src/lib/components/Bootstrap.tsx +1 -4
  343. package/src/lib/components/Pagination.tsx +4 -5
  344. package/src/lib/components/Zudoku.tsx +5 -11
  345. package/src/lib/components/context/ZudokuContext.ts +2 -6
  346. package/src/lib/components/context/ZudokuProvider.tsx +1 -1
  347. package/src/lib/components/context/ZudokuReactContext.tsx +17 -0
  348. package/src/lib/components/index.ts +4 -0
  349. package/src/lib/components/navigation/NavigationItem.tsx +9 -3
  350. package/src/lib/core/RouteGuard.tsx +30 -24
  351. package/src/lib/core/plugins.ts +21 -1
  352. package/src/lib/core/react-query.ts +1 -0
  353. package/src/lib/core/transform-config.ts +29 -0
  354. package/src/lib/errors/ErrorAlert.tsx +1 -6
  355. package/src/lib/errors/ErrorMessage.tsx +38 -0
  356. package/src/lib/oas/graphql/circular.test.ts +186 -0
  357. package/src/lib/oas/graphql/circular.ts +49 -10
  358. package/src/lib/oas/graphql/index.ts +7 -3
  359. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +36 -476
  360. package/src/lib/plugins/api-keys/index.tsx +76 -32
  361. package/src/lib/plugins/api-keys/settings/ApiKeyItem.tsx +342 -0
  362. package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +67 -0
  363. package/src/lib/plugins/api-keys/settings/RevealApiKey.tsx +124 -0
  364. package/src/lib/plugins/openapi/OasProvider.tsx +10 -2
  365. package/src/lib/plugins/openapi/OperationList.tsx +4 -4
  366. package/src/lib/plugins/openapi/ParamInfos.tsx +1 -0
  367. package/src/lib/plugins/openapi/Sidecar.tsx +3 -2
  368. package/src/lib/plugins/openapi/interfaces.ts +6 -1
  369. package/src/lib/plugins/openapi/schema/SchemaView.tsx +6 -4
  370. package/src/lib/plugins/openapi/schema/utils.ts +15 -4
  371. package/src/lib/plugins/openapi/util/createHttpSnippet.ts +29 -1
  372. package/src/lib/plugins/openapi/util/getRoutes.tsx +4 -1
  373. package/src/lib/ui/Button.tsx +1 -0
  374. package/src/lib/ui/Secret.tsx +2 -2
  375. package/src/lib/util/invariant.ts +2 -1
  376. package/src/shiki/langs/c3.js +1 -0
  377. package/src/shiki/langs/gn.js +1 -0
  378. package/src/shiki/langs/moonbit.js +1 -0
  379. package/lib/ClaudeLogo-B4Xxt-x_.js.map +0 -1
  380. package/lib/ErrorAlert-DrOR8w3f.js.map +0 -1
  381. package/lib/OAuthErrorPage-Fq54RLgt.js.map +0 -1
  382. package/lib/OasProvider-DPH8mwDa.js +0 -40
  383. package/lib/OasProvider-DPH8mwDa.js.map +0 -1
  384. package/lib/RouteGuard-9wjejsKm.js +0 -77
  385. package/lib/RouteGuard-9wjejsKm.js.map +0 -1
  386. package/lib/RouterError-DSLXagd5.js +0 -42
  387. package/lib/RouterError-DSLXagd5.js.map +0 -1
  388. package/lib/SchemaView-DVae4RO2.js +0 -597
  389. package/lib/SchemaView-DVae4RO2.js.map +0 -1
  390. package/lib/Select-CkxXP5I7.js.map +0 -1
  391. package/lib/SignUp-BjS4ozA7.js +0 -50
  392. package/lib/SignUp-BjS4ozA7.js.map +0 -1
  393. package/lib/SyntaxHighlight-Kdyskw3C.js.map +0 -1
  394. package/lib/ZudokuContext-BXldanA8.js +0 -1508
  395. package/lib/ZudokuContext-BXldanA8.js.map +0 -1
  396. package/lib/___vite-browser-external_commonjs-proxy-Cga3HsWk.js.map +0 -1
  397. package/lib/chunk-PVWAREVJ-dLIqswPy.js +0 -7965
  398. package/lib/chunk-PVWAREVJ-dLIqswPy.js.map +0 -1
  399. package/lib/cn-dYga0KKN.js.map +0 -1
  400. package/lib/createVariantComponent-B9_dVBvu.js +0 -35
  401. package/lib/createVariantComponent-B9_dVBvu.js.map +0 -1
  402. package/lib/firebase-Cax7HPzn.js.map +0 -1
  403. package/lib/hook-BNxidGQq.js +0 -40
  404. package/lib/hook-BNxidGQq.js.map +0 -1
  405. package/lib/index-CCmMJp02.js +0 -1059
  406. package/lib/index-CCmMJp02.js.map +0 -1
  407. package/lib/index.esm-DDENMN4y.js.map +0 -1
  408. package/lib/invariant-CGOLuIIz.js.map +0 -1
  409. package/lib/mutation-BoVlx8yA.js.map +0 -1
  410. package/lib/useMutation-C6RqWmTS.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HydrationBoundary-CNF2ZV3E.js","sources":["../../../node_modules/.pnpm/@tanstack+query-core@5.90.12/node_modules/@tanstack/query-core/build/modern/hydration.js","../../../node_modules/.pnpm/@tanstack+query-core@5.90.12/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../node_modules/.pnpm/@tanstack+query-core@5.90.12/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.90.12/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.90.12/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../node_modules/.pnpm/@tanstack+react-query@5.90.12_react@19.2.3/node_modules/@tanstack/react-query/build/modern/HydrationBoundary.js"],"sourcesContent":["// src/hydration.ts\nimport { tryResolveSync } from \"./thenable.js\";\nimport { noop } from \"./utils.js\";\nfunction defaultTransformerFn(data) {\n return data;\n}\nfunction dehydrateMutation(mutation) {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...mutation.options.scope && { scope: mutation.options.scope },\n ...mutation.meta && { meta: mutation.meta }\n };\n}\nfunction dehydrateQuery(query, serializeData, shouldRedactErrors) {\n const dehydratePromise = () => {\n const promise = query.promise?.then(serializeData).catch((error) => {\n if (!shouldRedactErrors(error)) {\n return Promise.reject(error);\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `A query that was dehydrated as pending ended up rejecting. [${query.queryHash}]: ${error}; The error will be redacted in production builds`\n );\n }\n return Promise.reject(new Error(\"redacted\"));\n });\n promise?.catch(noop);\n return promise;\n };\n return {\n dehydratedAt: Date.now(),\n state: {\n ...query.state,\n ...query.state.data !== void 0 && {\n data: serializeData(query.state.data)\n }\n },\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...query.state.status === \"pending\" && {\n promise: dehydratePromise()\n },\n ...query.meta && { meta: query.meta }\n };\n}\nfunction defaultShouldDehydrateMutation(mutation) {\n return mutation.state.isPaused;\n}\nfunction defaultShouldDehydrateQuery(query) {\n return query.state.status === \"success\";\n}\nfunction defaultShouldRedactErrors(_) {\n return true;\n}\nfunction dehydrate(client, options = {}) {\n const filterMutation = options.shouldDehydrateMutation ?? client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ?? defaultShouldDehydrateMutation;\n const mutations = client.getMutationCache().getAll().flatMap(\n (mutation) => filterMutation(mutation) ? [dehydrateMutation(mutation)] : []\n );\n const filterQuery = options.shouldDehydrateQuery ?? client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ?? defaultShouldDehydrateQuery;\n const shouldRedactErrors = options.shouldRedactErrors ?? client.getDefaultOptions().dehydrate?.shouldRedactErrors ?? defaultShouldRedactErrors;\n const serializeData = options.serializeData ?? client.getDefaultOptions().dehydrate?.serializeData ?? defaultTransformerFn;\n const queries = client.getQueryCache().getAll().flatMap(\n (query) => filterQuery(query) ? [dehydrateQuery(query, serializeData, shouldRedactErrors)] : []\n );\n return { mutations, queries };\n}\nfunction hydrate(client, dehydratedState, options) {\n if (typeof dehydratedState !== \"object\" || dehydratedState === null) {\n return;\n }\n const mutationCache = client.getMutationCache();\n const queryCache = client.getQueryCache();\n const deserializeData = options?.defaultOptions?.deserializeData ?? client.getDefaultOptions().hydrate?.deserializeData ?? defaultTransformerFn;\n const mutations = dehydratedState.mutations || [];\n const queries = dehydratedState.queries || [];\n mutations.forEach(({ state, ...mutationOptions }) => {\n mutationCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.mutations,\n ...options?.defaultOptions?.mutations,\n ...mutationOptions\n },\n state\n );\n });\n queries.forEach(\n ({ queryKey, state, queryHash, meta, promise, dehydratedAt }) => {\n const syncData = promise ? tryResolveSync(promise) : void 0;\n const rawData = state.data === void 0 ? syncData?.data : state.data;\n const data = rawData === void 0 ? rawData : deserializeData(rawData);\n let query = queryCache.get(queryHash);\n const existingQueryIsPending = query?.state.status === \"pending\";\n const existingQueryIsFetching = query?.state.fetchStatus === \"fetching\";\n if (query) {\n const hasNewerSyncData = syncData && // We only need this undefined check to handle older dehydration\n // payloads that might not have dehydratedAt\n dehydratedAt !== void 0 && dehydratedAt > query.state.dataUpdatedAt;\n if (state.dataUpdatedAt > query.state.dataUpdatedAt || hasNewerSyncData) {\n const { fetchStatus: _ignored, ...serializedState } = state;\n query.setState({\n ...serializedState,\n data\n });\n }\n } else {\n query = queryCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.queries,\n ...options?.defaultOptions?.queries,\n queryKey,\n queryHash,\n meta\n },\n // Reset fetch status to idle to avoid\n // query being stuck in fetching state upon hydration\n {\n ...state,\n data,\n fetchStatus: \"idle\",\n status: data !== void 0 ? \"success\" : state.status\n }\n );\n }\n if (promise && !existingQueryIsPending && !existingQueryIsFetching && // Only hydrate if dehydration is newer than any existing data,\n // this is always true for new queries\n (dehydratedAt === void 0 || dehydratedAt > query.state.dataUpdatedAt)) {\n query.fetch(void 0, {\n // RSC transformed promises are not thenable\n initialPromise: Promise.resolve(promise).then(deserializeData)\n }).catch(noop);\n }\n }\n );\n}\nexport {\n defaultShouldDehydrateMutation,\n defaultShouldDehydrateQuery,\n dehydrate,\n hydrate\n};\n//# sourceMappingURL=hydration.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n let result = { pages: [], pageParams: [] };\n let currentPage = 0;\n const fetchFn = async () => {\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const createQueryFnContext = () => {\n const queryFnContext2 = {\n client: context.client,\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext2);\n return queryFnContext2;\n };\n const queryFnContext = createQueryFnContext();\n const page = await queryFn(queryFnContext);\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n const remainingPages = pages ?? oldPages.length;\n do {\n const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n if (currentPage > 0 && param == null) {\n break;\n }\n result = await fetchPage(result, param);\n currentPage++;\n } while (currentPage < remainingPages);\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n client: context.client,\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data) return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam) return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Set();\n this.#scopes = /* @__PURE__ */ new Map();\n this.#mutationId = 0;\n }\n #mutations;\n #scopes;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n client,\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n this.#mutations.add(mutation);\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n scopedMutations.push(mutation);\n } else {\n this.#scopes.set(scope, [mutation]);\n }\n }\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n if (this.#mutations.delete(mutation)) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n if (scopedMutations.length > 1) {\n const index = scopedMutations.indexOf(mutation);\n if (index !== -1) {\n scopedMutations.splice(index, 1);\n }\n } else if (scopedMutations[0] === mutation) {\n this.#scopes.delete(scope);\n }\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const mutationsWithSameScope = this.#scopes.get(scope);\n const firstPendingMutation = mutationsWithSameScope?.find(\n (m) => m.state.status === \"pending\"\n );\n return !firstPendingMutation || firstPendingMutation === mutation;\n } else {\n return true;\n }\n }\n runNext(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.notify({ type: \"removed\", mutation });\n });\n this.#mutations.clear();\n this.#scopes.clear();\n });\n }\n getAll() {\n return Array.from(this.#mutations);\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id;\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n client,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1) return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0) return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n /**\n * Imperative (non-reactive) way to retrieve data for a QueryKey.\n * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n *\n * Hint: Do not use this function inside a component, because it won't receive updates.\n * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n */\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n const cachedData = query.state.data;\n if (cachedData === void 0) {\n return this.fetchQuery(options);\n }\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(\n options.queryHash\n )?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(\n {\n type: \"active\",\n ...filters\n },\n options\n );\n });\n }\n cancelQueries(filters, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters?.refetchType === \"none\") {\n return Promise.resolve();\n }\n return this.refetchQueries(\n {\n ...filters,\n type: filters?.refetchType ?? filters?.type ?? \"active\"\n },\n options\n );\n });\n }\n refetchQueries(filters, options = {}) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n ensureInfiniteQueryData(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.ensureQueryData(options);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","\"use client\";\n\n// src/HydrationBoundary.tsx\nimport * as React from \"react\";\nimport { hydrate } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nvar HydrationBoundary = ({\n children,\n options = {},\n state,\n queryClient\n}) => {\n const client = useQueryClient(queryClient);\n const optionsRef = React.useRef(options);\n React.useEffect(() => {\n optionsRef.current = options;\n });\n const hydrationQueue = React.useMemo(() => {\n if (state) {\n if (typeof state !== \"object\") {\n return;\n }\n const queryCache = client.getQueryCache();\n const queries = state.queries || [];\n const newQueries = [];\n const existingQueries = [];\n for (const dehydratedQuery of queries) {\n const existingQuery = queryCache.get(dehydratedQuery.queryHash);\n if (!existingQuery) {\n newQueries.push(dehydratedQuery);\n } else {\n const hydrationIsNewer = dehydratedQuery.state.dataUpdatedAt > existingQuery.state.dataUpdatedAt || dehydratedQuery.promise && existingQuery.state.status !== \"pending\" && existingQuery.state.fetchStatus !== \"fetching\" && dehydratedQuery.dehydratedAt !== void 0 && dehydratedQuery.dehydratedAt > existingQuery.state.dataUpdatedAt;\n if (hydrationIsNewer) {\n existingQueries.push(dehydratedQuery);\n }\n }\n }\n if (newQueries.length > 0) {\n hydrate(client, { queries: newQueries }, optionsRef.current);\n }\n if (existingQueries.length > 0) {\n return existingQueries;\n }\n }\n return void 0;\n }, [client, state]);\n React.useEffect(() => {\n if (hydrationQueue) {\n hydrate(client, { queries: hydrationQueue }, optionsRef.current);\n }\n }, [client, hydrationQueue]);\n return children;\n};\nexport {\n HydrationBoundary\n};\n//# sourceMappingURL=HydrationBoundary.js.map"],"names":["defaultTransformerFn","data","dehydrateMutation","mutation","dehydrateQuery","query","serializeData","shouldRedactErrors","dehydratePromise","promise","error","noop","defaultShouldDehydrateMutation","defaultShouldDehydrateQuery","defaultShouldRedactErrors","_","dehydrate","client","options","filterMutation","mutations","filterQuery","queries","hydrate","dehydratedState","mutationCache","queryCache","deserializeData","state","mutationOptions","queryKey","queryHash","meta","dehydratedAt","syncData","tryResolveSync","rawData","existingQueryIsPending","existingQueryIsFetching","hasNewerSyncData","_ignored","serializedState","infiniteQueryBehavior","pages","context","direction","oldPages","oldPageParams","result","currentPage","fetchFn","cancelled","addSignalProperty","object","queryFn","ensureQueryFn","fetchPage","param","previous","queryFnContext","queryFnContext2","page","maxPages","addTo","addToStart","addToEnd","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","hasNextPage","hasPreviousPage","MutationCache","Subscribable","config","#mutations","#scopes","#mutationId","Mutation","scope","scopeFor","scopedMutations","index","firstPendingMutation","m","notifyManager","filters","defaultedFilters","matchMutation","event","listener","pausedMutations","x","QueryCache","#queries","hashQueryKeyByOptions","Query","queryInMap","matchQuery","QueryClient","#queryCache","#mutationCache","#defaultOptions","#queryDefaults","#mutationDefaults","#mountCount","#unsubscribeFocus","#unsubscribeOnline","focusManager","focused","onlineManager","online","defaultedOptions","cachedData","resolveStaleTime","updater","prevData","functionalUpdate","cancelOptions","defaultedCancelOptions","promises","fetchOptions","hashKey","defaults","queryDefault","partialMatchKey","mutationKey","skipToken","HydrationBoundary","children","queryClient","useQueryClient","optionsRef","React","hydrationQueue","newQueries","existingQueries","dehydratedQuery","existingQuery"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
@@ -1,8 +1,8 @@
1
1
  import { j as e } from "./jsx-runtime-BzflLqGi.js";
2
2
  import { DialogTrigger as c } from "@radix-ui/react-dialog";
3
3
  import { useState as u, useCallback as x, useEffect as m } from "react";
4
- import { B as d } from "./Button-CynVW1JV.js";
5
- import { D as g, a as p, b as h, c as f, d as j, e as D } from "./Dialog-BQciPiHN.js";
4
+ import { B as d } from "./Button-GUVe7pmt.js";
5
+ import { D as g, a as p, b as h, c as f, d as j, e as D } from "./Dialog-hlvmmQ_c.js";
6
6
  const C = ({
7
7
  total: i,
8
8
  current: s,
@@ -97,4 +97,4 @@ const C = ({
97
97
  export {
98
98
  F as default
99
99
  };
100
- //# sourceMappingURL=IndexingDialog-B5zCiUKr.js.map
100
+ //# sourceMappingURL=IndexingDialog-D0YdGfbn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IndexingDialog-B5zCiUKr.js","sources":["../src/lib/plugins/search-pagefind/IndexingDialog.tsx"],"sourcesContent":["import { DialogTrigger } from \"@radix-ui/react-dialog\";\nimport {\n type PropsWithChildren,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"zudoku/ui/Dialog.js\";\n\ntype IndexingState =\n | { status: \"idle\" }\n | { status: \"indexing\"; total: number; current: number; path: string }\n | { status: \"complete\"; indexed: number }\n | { status: \"error\"; message: string };\n\nconst ProgressBar = ({\n total,\n current,\n barLength = 25,\n emptyChar = \"░\",\n filledChar = \"█\",\n}: {\n total: number;\n current: number;\n barLength?: number;\n emptyChar?: string;\n filledChar?: string;\n}) => {\n const percent = Math.round((current / total) * 100);\n const filled = Math.round((percent / 100) * barLength);\n const empty = barLength - filled;\n\n return (\n <>\n {filledChar.repeat(filled)}\n {emptyChar.repeat(empty)} {percent}% ({current}/{total})\n </>\n );\n};\n\nconst IndexingDialog = ({ children }: PropsWithChildren) => {\n const [indexingState, setIndexingState] = useState<IndexingState>({\n status: \"idle\",\n });\n\n const startIndexing = useCallback(() => {\n setIndexingState({ status: \"indexing\", total: 0, current: 0, path: \"\" });\n\n const eventSource = new EventSource(\"/__z/pagefind-reindex\");\n\n eventSource.onmessage = (event) => {\n const data = JSON.parse(event.data);\n\n if (data.type === \"progress\") {\n setIndexingState({\n status: \"indexing\",\n total: data.total,\n current: data.current,\n path: data.path,\n });\n } else if (data.type === \"complete\") {\n eventSource.close();\n if (data.success) {\n setIndexingState({ status: \"complete\", indexed: data.indexed });\n } else {\n setIndexingState({\n status: \"error\",\n message: data.error ?? \"Indexing failed\",\n });\n }\n }\n };\n\n eventSource.onerror = () => {\n eventSource.close();\n setIndexingState({\n status: \"error\",\n message: \"Connection lost during indexing\",\n });\n };\n\n return () => eventSource.close();\n }, []);\n\n useEffect(() => {\n if (indexingState.status !== \"idle\") return;\n return startIndexing();\n }, [indexingState.status, startIndexing]);\n\n const handleDone = () => {\n if (indexingState.status !== \"complete\") return;\n window.location.reload();\n };\n\n return (\n <Dialog>\n <DialogTrigger asChild>{children}</DialogTrigger>\n <DialogContent\n className=\"max-w-sm! top-1/3\"\n showCloseButton={false}\n onInteractOutside={(e) => e.preventDefault()}\n >\n <DialogHeader>\n <DialogTitle>\n {indexingState.status === \"indexing\" && \"Building Search Index\"}\n {indexingState.status === \"complete\" && \"Indexing Complete\"}\n {indexingState.status === \"error\" && \"Indexing Failed\"}\n {indexingState.status === \"idle\" && \"Build Search Index\"}\n </DialogTitle>\n <DialogDescription>\n {indexingState.status === \"indexing\" && (\n <>\n {indexingState.total > 0 && (\n <div className=\"font-mono text-sm mb-2\">\n <ProgressBar {...indexingState} />\n </div>\n )}\n {indexingState.path && (\n <span className=\"block text-xs truncate\">\n {indexingState.path}\n </span>\n )}\n </>\n )}\n {indexingState.status === \"complete\" && (\n <>Successfully indexed {indexingState.indexed} pages.</>\n )}\n {indexingState.status === \"error\" && (\n <span className=\"text-destructive\">{indexingState.message}</span>\n )}\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <div className=\"flex justify-end gap-2\">\n {indexingState.status === \"complete\" && (\n <Button size=\"sm\" onClick={handleDone}>\n Close and reload\n </Button>\n )}\n {indexingState.status === \"error\" && (\n <>\n <Button variant=\"outline\" onClick={handleDone}>\n Cancel\n </Button>\n <Button onClick={startIndexing}>Retry</Button>\n </>\n )}\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default IndexingDialog;\n"],"names":["ProgressBar","total","current","barLength","emptyChar","filledChar","percent","filled","empty","jsxs","Fragment","IndexingDialog","children","indexingState","setIndexingState","useState","startIndexing","useCallback","eventSource","event","data","useEffect","handleDone","Dialog","jsx","DialogTrigger","DialogContent","e","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button"],"mappings":";;;;;AAuBA,MAAMA,IAAc,CAAC;AAAA,EACnB,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AAAA,EACZ,YAAAC,IAAa;AACf,MAMM;AACJ,QAAMC,IAAU,KAAK,MAAOJ,IAAUD,IAAS,GAAG,GAC5CM,IAAS,KAAK,MAAOD,IAAU,MAAOH,CAAS,GAC/CK,IAAQL,IAAYI;AAE1B,SACEE,gBAAAA,EAAAA,KAAAC,YAAA,EACG,UAAA;AAAA,IAAAL,EAAW,OAAOE,CAAM;AAAA,IACxBH,EAAU,OAAOI,CAAK;AAAA,IAAE;AAAA,IAAEF;AAAA,IAAQ;AAAA,IAAIJ;AAAA,IAAQ;AAAA,IAAED;AAAA,IAAM;AAAA,EAAA,GACzD;AAEJ,GAEMU,IAAiB,CAAC,EAAE,UAAAC,QAAkC;AAC1D,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAwB;AAAA,IAChE,QAAQ;AAAA,EAAA,CACT,GAEKC,IAAgBC,EAAY,MAAM;AACtC,IAAAH,EAAiB,EAAE,QAAQ,YAAY,OAAO,GAAG,SAAS,GAAG,MAAM,IAAI;AAEvE,UAAMI,IAAc,IAAI,YAAY,uBAAuB;AAE3D,WAAAA,EAAY,YAAY,CAACC,MAAU;AACjC,YAAMC,IAAO,KAAK,MAAMD,EAAM,IAAI;AAElC,MAAIC,EAAK,SAAS,aAChBN,EAAiB;AAAA,QACf,QAAQ;AAAA,QACR,OAAOM,EAAK;AAAA,QACZ,SAASA,EAAK;AAAA,QACd,MAAMA,EAAK;AAAA,MAAA,CACZ,IACQA,EAAK,SAAS,eACvBF,EAAY,MAAA,GACRE,EAAK,UACPN,EAAiB,EAAE,QAAQ,YAAY,SAASM,EAAK,SAAS,IAE9DN,EAAiB;AAAA,QACf,QAAQ;AAAA,QACR,SAASM,EAAK,SAAS;AAAA,MAAA,CACxB;AAAA,IAGP,GAEAF,EAAY,UAAU,MAAM;AAC1B,MAAAA,EAAY,MAAA,GACZJ,EAAiB;AAAA,QACf,QAAQ;AAAA,QACR,SAAS;AAAA,MAAA,CACV;AAAA,IACH,GAEO,MAAMI,EAAY,MAAA;AAAA,EAC3B,GAAG,CAAA,CAAE;AAEL,EAAAG,EAAU,MAAM;AACd,QAAIR,EAAc,WAAW;AAC7B,aAAOG,EAAA;AAAA,EACT,GAAG,CAACH,EAAc,QAAQG,CAAa,CAAC;AAExC,QAAMM,IAAa,MAAM;AACvB,IAAIT,EAAc,WAAW,cAC7B,OAAO,SAAS,OAAA;AAAA,EAClB;AAEA,gCACGU,GAAA,EACC,UAAA;AAAA,IAAAC,gBAAAA,EAAAA,IAACC,GAAA,EAAc,SAAO,IAAE,UAAAb,EAAA,CAAS;AAAA,IACjCH,gBAAAA,EAAAA;AAAAA,MAACiB;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,iBAAiB;AAAA,QACjB,mBAAmB,CAACC,MAAMA,EAAE,eAAA;AAAA,QAE5B,UAAA;AAAA,UAAAlB,gBAAAA,OAACmB,GAAA,EACC,UAAA;AAAA,YAAAnB,gBAAAA,OAACoB,GAAA,EACE,UAAA;AAAA,cAAAhB,EAAc,WAAW,cAAc;AAAA,cACvCA,EAAc,WAAW,cAAc;AAAA,cACvCA,EAAc,WAAW,WAAW;AAAA,cACpCA,EAAc,WAAW,UAAU;AAAA,YAAA,GACtC;AAAA,mCACCiB,GAAA,EACE,UAAA;AAAA,cAAAjB,EAAc,WAAW,cACxBJ,gBAAAA,EAAAA,KAAAC,EAAAA,UAAA,EACG,UAAA;AAAA,gBAAAG,EAAc,QAAQ,KACrBW,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,0BACb,UAAAA,gBAAAA,EAAAA,IAACxB,GAAA,EAAa,GAAGa,EAAA,CAAe,EAAA,CAClC;AAAA,gBAEDA,EAAc,QACbW,gBAAAA,EAAAA,IAAC,UAAK,WAAU,0BACb,YAAc,KAAA,CACjB;AAAA,cAAA,GAEJ;AAAA,cAEDX,EAAc,WAAW,cACxBJ,gBAAAA,EAAAA,KAAAC,EAAAA,UAAA,EAAE,UAAA;AAAA,gBAAA;AAAA,gBAAsBG,EAAc;AAAA,gBAAQ;AAAA,cAAA,GAAO;AAAA,cAEtDA,EAAc,WAAW,WACxBW,gBAAAA,EAAAA,IAAC,UAAK,WAAU,oBAAoB,YAAc,QAAA,CAAQ;AAAA,YAAA,EAAA,CAE9D;AAAA,UAAA,GACF;AAAA,UACAA,gBAAAA,MAACO,GAAA,EACC,UAAAtB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,0BACZ,UAAA;AAAA,YAAAI,EAAc,WAAW,cACxBW,gBAAAA,EAAAA,IAACQ,GAAA,EAAO,MAAK,MAAK,SAASV,GAAY,UAAA,mBAAA,CAEvC;AAAA,YAEDT,EAAc,WAAW,WACxBJ,gBAAAA,EAAAA,KAAAC,EAAAA,UAAA,EACE,UAAA;AAAA,cAAAc,gBAAAA,MAACQ,GAAA,EAAO,SAAQ,WAAU,SAASV,GAAY,UAAA,UAE/C;AAAA,cACAE,gBAAAA,EAAAA,IAACQ,GAAA,EAAO,SAAShB,GAAe,UAAA,QAAA,CAAK;AAAA,YAAA,EAAA,CACvC;AAAA,UAAA,EAAA,CAEJ,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
1
+ {"version":3,"file":"IndexingDialog-D0YdGfbn.js","sources":["../src/lib/plugins/search-pagefind/IndexingDialog.tsx"],"sourcesContent":["import { DialogTrigger } from \"@radix-ui/react-dialog\";\nimport {\n type PropsWithChildren,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"zudoku/ui/Dialog.js\";\n\ntype IndexingState =\n | { status: \"idle\" }\n | { status: \"indexing\"; total: number; current: number; path: string }\n | { status: \"complete\"; indexed: number }\n | { status: \"error\"; message: string };\n\nconst ProgressBar = ({\n total,\n current,\n barLength = 25,\n emptyChar = \"░\",\n filledChar = \"█\",\n}: {\n total: number;\n current: number;\n barLength?: number;\n emptyChar?: string;\n filledChar?: string;\n}) => {\n const percent = Math.round((current / total) * 100);\n const filled = Math.round((percent / 100) * barLength);\n const empty = barLength - filled;\n\n return (\n <>\n {filledChar.repeat(filled)}\n {emptyChar.repeat(empty)} {percent}% ({current}/{total})\n </>\n );\n};\n\nconst IndexingDialog = ({ children }: PropsWithChildren) => {\n const [indexingState, setIndexingState] = useState<IndexingState>({\n status: \"idle\",\n });\n\n const startIndexing = useCallback(() => {\n setIndexingState({ status: \"indexing\", total: 0, current: 0, path: \"\" });\n\n const eventSource = new EventSource(\"/__z/pagefind-reindex\");\n\n eventSource.onmessage = (event) => {\n const data = JSON.parse(event.data);\n\n if (data.type === \"progress\") {\n setIndexingState({\n status: \"indexing\",\n total: data.total,\n current: data.current,\n path: data.path,\n });\n } else if (data.type === \"complete\") {\n eventSource.close();\n if (data.success) {\n setIndexingState({ status: \"complete\", indexed: data.indexed });\n } else {\n setIndexingState({\n status: \"error\",\n message: data.error ?? \"Indexing failed\",\n });\n }\n }\n };\n\n eventSource.onerror = () => {\n eventSource.close();\n setIndexingState({\n status: \"error\",\n message: \"Connection lost during indexing\",\n });\n };\n\n return () => eventSource.close();\n }, []);\n\n useEffect(() => {\n if (indexingState.status !== \"idle\") return;\n return startIndexing();\n }, [indexingState.status, startIndexing]);\n\n const handleDone = () => {\n if (indexingState.status !== \"complete\") return;\n window.location.reload();\n };\n\n return (\n <Dialog>\n <DialogTrigger asChild>{children}</DialogTrigger>\n <DialogContent\n className=\"max-w-sm! top-1/3\"\n showCloseButton={false}\n onInteractOutside={(e) => e.preventDefault()}\n >\n <DialogHeader>\n <DialogTitle>\n {indexingState.status === \"indexing\" && \"Building Search Index\"}\n {indexingState.status === \"complete\" && \"Indexing Complete\"}\n {indexingState.status === \"error\" && \"Indexing Failed\"}\n {indexingState.status === \"idle\" && \"Build Search Index\"}\n </DialogTitle>\n <DialogDescription>\n {indexingState.status === \"indexing\" && (\n <>\n {indexingState.total > 0 && (\n <div className=\"font-mono text-sm mb-2\">\n <ProgressBar {...indexingState} />\n </div>\n )}\n {indexingState.path && (\n <span className=\"block text-xs truncate\">\n {indexingState.path}\n </span>\n )}\n </>\n )}\n {indexingState.status === \"complete\" && (\n <>Successfully indexed {indexingState.indexed} pages.</>\n )}\n {indexingState.status === \"error\" && (\n <span className=\"text-destructive\">{indexingState.message}</span>\n )}\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <div className=\"flex justify-end gap-2\">\n {indexingState.status === \"complete\" && (\n <Button size=\"sm\" onClick={handleDone}>\n Close and reload\n </Button>\n )}\n {indexingState.status === \"error\" && (\n <>\n <Button variant=\"outline\" onClick={handleDone}>\n Cancel\n </Button>\n <Button onClick={startIndexing}>Retry</Button>\n </>\n )}\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default IndexingDialog;\n"],"names":["ProgressBar","total","current","barLength","emptyChar","filledChar","percent","filled","empty","jsxs","Fragment","IndexingDialog","children","indexingState","setIndexingState","useState","startIndexing","useCallback","eventSource","event","data","useEffect","handleDone","Dialog","jsx","DialogTrigger","DialogContent","e","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button"],"mappings":";;;;;AAuBA,MAAMA,IAAc,CAAC;AAAA,EACnB,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,WAAAC,IAAY;AAAA,EACZ,YAAAC,IAAa;AACf,MAMM;AACJ,QAAMC,IAAU,KAAK,MAAOJ,IAAUD,IAAS,GAAG,GAC5CM,IAAS,KAAK,MAAOD,IAAU,MAAOH,CAAS,GAC/CK,IAAQL,IAAYI;AAE1B,SACEE,gBAAAA,EAAAA,KAAAC,YAAA,EACG,UAAA;AAAA,IAAAL,EAAW,OAAOE,CAAM;AAAA,IACxBH,EAAU,OAAOI,CAAK;AAAA,IAAE;AAAA,IAAEF;AAAA,IAAQ;AAAA,IAAIJ;AAAA,IAAQ;AAAA,IAAED;AAAA,IAAM;AAAA,EAAA,GACzD;AAEJ,GAEMU,IAAiB,CAAC,EAAE,UAAAC,QAAkC;AAC1D,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAwB;AAAA,IAChE,QAAQ;AAAA,EAAA,CACT,GAEKC,IAAgBC,EAAY,MAAM;AACtC,IAAAH,EAAiB,EAAE,QAAQ,YAAY,OAAO,GAAG,SAAS,GAAG,MAAM,IAAI;AAEvE,UAAMI,IAAc,IAAI,YAAY,uBAAuB;AAE3D,WAAAA,EAAY,YAAY,CAACC,MAAU;AACjC,YAAMC,IAAO,KAAK,MAAMD,EAAM,IAAI;AAElC,MAAIC,EAAK,SAAS,aAChBN,EAAiB;AAAA,QACf,QAAQ;AAAA,QACR,OAAOM,EAAK;AAAA,QACZ,SAASA,EAAK;AAAA,QACd,MAAMA,EAAK;AAAA,MAAA,CACZ,IACQA,EAAK,SAAS,eACvBF,EAAY,MAAA,GACRE,EAAK,UACPN,EAAiB,EAAE,QAAQ,YAAY,SAASM,EAAK,SAAS,IAE9DN,EAAiB;AAAA,QACf,QAAQ;AAAA,QACR,SAASM,EAAK,SAAS;AAAA,MAAA,CACxB;AAAA,IAGP,GAEAF,EAAY,UAAU,MAAM;AAC1B,MAAAA,EAAY,MAAA,GACZJ,EAAiB;AAAA,QACf,QAAQ;AAAA,QACR,SAAS;AAAA,MAAA,CACV;AAAA,IACH,GAEO,MAAMI,EAAY,MAAA;AAAA,EAC3B,GAAG,CAAA,CAAE;AAEL,EAAAG,EAAU,MAAM;AACd,QAAIR,EAAc,WAAW;AAC7B,aAAOG,EAAA;AAAA,EACT,GAAG,CAACH,EAAc,QAAQG,CAAa,CAAC;AAExC,QAAMM,IAAa,MAAM;AACvB,IAAIT,EAAc,WAAW,cAC7B,OAAO,SAAS,OAAA;AAAA,EAClB;AAEA,gCACGU,GAAA,EACC,UAAA;AAAA,IAAAC,gBAAAA,EAAAA,IAACC,GAAA,EAAc,SAAO,IAAE,UAAAb,EAAA,CAAS;AAAA,IACjCH,gBAAAA,EAAAA;AAAAA,MAACiB;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,iBAAiB;AAAA,QACjB,mBAAmB,CAACC,MAAMA,EAAE,eAAA;AAAA,QAE5B,UAAA;AAAA,UAAAlB,gBAAAA,OAACmB,GAAA,EACC,UAAA;AAAA,YAAAnB,gBAAAA,OAACoB,GAAA,EACE,UAAA;AAAA,cAAAhB,EAAc,WAAW,cAAc;AAAA,cACvCA,EAAc,WAAW,cAAc;AAAA,cACvCA,EAAc,WAAW,WAAW;AAAA,cACpCA,EAAc,WAAW,UAAU;AAAA,YAAA,GACtC;AAAA,mCACCiB,GAAA,EACE,UAAA;AAAA,cAAAjB,EAAc,WAAW,cACxBJ,gBAAAA,EAAAA,KAAAC,EAAAA,UAAA,EACG,UAAA;AAAA,gBAAAG,EAAc,QAAQ,KACrBW,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,0BACb,UAAAA,gBAAAA,EAAAA,IAACxB,GAAA,EAAa,GAAGa,EAAA,CAAe,EAAA,CAClC;AAAA,gBAEDA,EAAc,QACbW,gBAAAA,EAAAA,IAAC,UAAK,WAAU,0BACb,YAAc,KAAA,CACjB;AAAA,cAAA,GAEJ;AAAA,cAEDX,EAAc,WAAW,cACxBJ,gBAAAA,EAAAA,KAAAC,EAAAA,UAAA,EAAE,UAAA;AAAA,gBAAA;AAAA,gBAAsBG,EAAc;AAAA,gBAAQ;AAAA,cAAA,GAAO;AAAA,cAEtDA,EAAc,WAAW,WACxBW,gBAAAA,EAAAA,IAAC,UAAK,WAAU,oBAAoB,YAAc,QAAA,CAAQ;AAAA,YAAA,EAAA,CAE9D;AAAA,UAAA,GACF;AAAA,UACAA,gBAAAA,MAACO,GAAA,EACC,UAAAtB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,0BACZ,UAAA;AAAA,YAAAI,EAAc,WAAW,cACxBW,gBAAAA,EAAAA,IAACQ,GAAA,EAAO,MAAK,MAAK,SAASV,GAAY,UAAA,mBAAA,CAEvC;AAAA,YAEDT,EAAc,WAAW,WACxBJ,gBAAAA,EAAAA,KAAAC,EAAAA,UAAA,EACE,UAAA;AAAA,cAAAc,gBAAAA,MAACQ,GAAA,EAAO,SAAQ,WAAU,SAASV,GAAY,UAAA,UAE/C;AAAA,cACAE,gBAAAA,EAAAA,IAACQ,GAAA,EAAO,SAAShB,GAAe,UAAA,QAAA,CAAK;AAAA,YAAA,EAAA,CACvC;AAAA,UAAA,EAAA,CAEJ,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
@@ -0,0 +1,22 @@
1
+ import { j as i } from "./jsx-runtime-BzflLqGi.js";
2
+ import * as s from "react";
3
+ import { c as n } from "./cn-5-Gd1Dss.js";
4
+ const a = s.forwardRef(
5
+ ({ className: e, type: r, ...o }, t) => /* @__PURE__ */ i.jsx(
6
+ "input",
7
+ {
8
+ type: r,
9
+ className: n(
10
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
11
+ e
12
+ ),
13
+ ref: t,
14
+ ...o
15
+ }
16
+ )
17
+ );
18
+ a.displayName = "Input";
19
+ export {
20
+ a as I
21
+ };
22
+ //# sourceMappingURL=Input-Cx-GeKoF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input-Cx-GeKoF.js","sources":["../src/lib/ui/Input.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\ntype InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"names":["Input","React","className","type","props","ref","jsx","cn"],"mappings":";;;AAKA,MAAMA,IAAQC,EAAM;AAAA,EAClB,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,GAAGC,EAAA,GAASC,MAE5BC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAH;AAAA,MACA,WAAWI;AAAA,QACT;AAAA,QACAL;AAAA,MAAA;AAAA,MAEF,KAAAG;AAAA,MACC,GAAGD;AAAA,IAAA;AAAA,EAAA;AAIZ;AACAJ,EAAM,cAAc;"}
@@ -1,17 +1,17 @@
1
1
  import { j as e } from "./jsx-runtime-BzflLqGi.js";
2
- import { s as H } from "./index-Bh-MffiL.js";
3
- import { H as R } from "./index.esm-DtzT_KoE.js";
2
+ import { s as H } from "./index-D35F-SCL.js";
3
+ import { H as R } from "./index.esm-B_0dvNjB.js";
4
4
  import { CheckIcon as U, CopyIcon as _, ChevronDownIcon as $, Link2Icon as A, ExternalLinkIcon as q, EditIcon as B } from "lucide-react";
5
5
  import { useState as F, useEffect as G } from "react";
6
- import { a as V } from "./chunk-PVWAREVJ-dLIqswPy.js";
7
- import { B as j } from "./Button-CynVW1JV.js";
8
- import { D as W, a as X, b as J, c as l } from "./DropdownMenu-C8SX_-S_.js";
6
+ import { a as V } from "./chunk-EPOLDU6W-C6C8jAwd.js";
7
+ import { B as j } from "./Button-GUVe7pmt.js";
8
+ import { D as W, a as X, b as J, c as l } from "./DropdownMenu-DN0jNrjj.js";
9
9
  import { C as K } from "./CategoryHeading-DhmodDcq.js";
10
- import { T as O, H as f } from "./ErrorAlert-DrOR8w3f.js";
11
- import { T as Q } from "./Toc-DJxFPfcS.js";
12
- import { b as Y, j as Z, d as ee } from "./ZudokuContext-BXldanA8.js";
13
- import { C as se, a as oe, P as ie } from "./ClaudeLogo-B4Xxt-x_.js";
14
- import { u as ne } from "./index-Css56y3F.js";
10
+ import { T as O, H as f } from "./index-ofqkdEjL.js";
11
+ import { T as Q } from "./Toc-vMbSQCkj.js";
12
+ import { b as Y, j as Z, c as ee } from "./ZudokuContext-CnEI8jPU.js";
13
+ import { C as se, a as oe, P as ie } from "./ClaudeLogo-CUaQXKLK.js";
14
+ import { u as ne } from "./index-Ba6RP577.js";
15
15
  const ae = {
16
16
  h2: ({ children: i, id: n }) => /* @__PURE__ */ e.jsx(f, { level: 2, id: n, registerNavigationAnchor: !0, children: i }),
17
17
  h3: ({ children: i, id: n }) => /* @__PURE__ */ e.jsx(f, { level: 3, id: n, registerNavigationAnchor: !0, children: i })
@@ -207,4 +207,4 @@ const ae = {
207
207
  export {
208
208
  ve as MdxPage
209
209
  };
210
- //# sourceMappingURL=MdxPage-BagO2c-n.js.map
210
+ //# sourceMappingURL=MdxPage-BiAVpP8K.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MdxPage-BagO2c-n.js","sources":["../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["import { useMDXComponents } from \"@mdx-js/react\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n CopyIcon,\n EditIcon,\n ExternalLinkIcon,\n Link2Icon,\n} from \"lucide-react\";\nimport { type PropsWithChildren, useEffect, useState } from \"react\";\nimport { useLocation } from \"react-router\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Toc } from \"../../components/navigation/Toc.js\";\nimport {\n useCurrentItem,\n usePrevNext,\n} from \"../../components/navigation/utils.js\";\nimport { Pagination } from \"../../components/Pagination.js\";\nimport { Typography } from \"../../components/Typography.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { ChatGPTLogo } from \"./assets/ChatGPTLogo.js\";\nimport { ClaudeLogo } from \"./assets/ClaudeLogo.js\";\nimport type { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\ndeclare global {\n interface Window {\n __getReactRefreshIgnoredExports?: (args: {\n id: string;\n }) => string[] | undefined;\n }\n}\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n basePath,\n frontmatter = {},\n defaultOptions,\n __filepath,\n tableOfContents,\n excerpt,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n basePath: string;\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const categoryTitle = useCurrentItem()?.categoryLabel;\n const location = useLocation();\n const [isCopied, setIsCopied] = useState(false);\n\n const title = frontmatter.title;\n const description = frontmatter.description ?? excerpt;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n title ?? tableOfContents.find((item) => item.depth === 1)?.value;\n const hidePager =\n frontmatter.disable_pager ??\n frontmatter.disablePager ??\n defaultOptions?.disablePager ??\n false;\n\n const showLastModified =\n frontmatter.showLastModified ?? defaultOptions?.showLastModified ?? true;\n\n const lastModifiedDate = frontmatter.lastModifiedTime\n ? new Date(frontmatter.lastModifiedTime)\n : null;\n\n const editConfig =\n frontmatter.suggestEdit !== false &&\n (frontmatter.suggestEdit ?? defaultOptions?.suggestEdit);\n\n const editUrl = editConfig\n ? editConfig.url.replaceAll(\"{filePath}\", __filepath)\n : null;\n const editText = editConfig ? editConfig.text || \"Edit this page\" : null;\n\n const copyMarkdownConfig =\n frontmatter.copyPage !== false && defaultOptions?.copyPage !== false;\n\n const markdownUrl = joinUrl(basePath, `${location.pathname}.md`);\n\n const handleCopyMarkdown = async () => {\n const response = await fetch(markdownUrl);\n if (!response.ok) throw new Error(\"Failed to fetch markdown\");\n const markdown = await response.text();\n void navigator.clipboard.writeText(markdown);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n };\n\n const tocEntries =\n tableOfContents.find((item) => item.depth === 1)?.children ??\n // if `title` is provided by frontmatter it does not appear in the table of contents\n tableOfContents.filter((item) => item.depth === 2);\n\n const showToc = !hideToc && tocEntries.length > 0;\n\n const { prev, next } = usePrevNext();\n\n useEffect(() => {\n if (process.env.NODE_ENV === \"development\") {\n window.__getReactRefreshIgnoredExports = ({ id }) => {\n if (!id.endsWith(__filepath)) return;\n\n return [\"frontmatter\", \"tableOfContents\"];\n };\n\n return () => {\n window.__getReactRefreshIgnoredExports = undefined;\n };\n }\n }, [__filepath]);\n\n return (\n <div\n className=\"grid grid-cols-1 xl:grid-cols-(--sidecar-grid-cols) gap-8 justify-between\"\n data-pagefind-filter=\"section:markdown\"\n data-pagefind-meta=\"section:markdown\"\n >\n <Helmet>\n <title>{pageTitle}</title>\n {description && <meta name=\"description\" content={description} />}\n </Helmet>\n <Typography className=\"max-w-full xl:w-full xl:max-w-3xl flex-1 shrink pt-(--padding-content-top)\">\n {(category || title) && (\n <header className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1\">\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title)}>\n {title}\n </Heading>\n )}\n </div>\n {copyMarkdownConfig && (\n <div className=\"flex items-center border rounded-md\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleCopyMarkdown}\n className=\"rounded-r-none border-r gap-2 h-7\"\n >\n {isCopied ? (\n <CheckIcon size={14} className=\"text-emerald-600\" />\n ) : (\n <CopyIcon size={14} />\n )}\n <span>Copy page</span>\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n className=\"rounded-l-none\"\n >\n <ChevronDownIcon size={14} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() =>\n void navigator.clipboard.writeText(window.location.href)\n }\n >\n <Link2Icon className=\"size-4\" />\n Copy link to page\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\" asChild>\n <a\n href={markdownUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLinkIcon className=\"size-4\" />\n Open Markdown page\n </a>\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://claude.ai/new?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ClaudeLogo className=\"size-4\" />\n Open in Claude\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://chatgpt.com/?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ChatGPTLogo className=\"size-4\" />\n Open in ChatGPT\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )}\n </header>\n )}\n\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n <div className=\"h-16\" />\n {(showLastModified && lastModifiedDate) || editUrl ? (\n <div className=\"flex justify-between text-xs text-muted-foreground \">\n <div />\n <div className=\"flex items-center gap-2\">\n <div>\n {editUrl && (\n <Button asChild variant=\"ghost\" size=\"sm\">\n <a\n href={editUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1\"\n >\n <EditIcon size={12} />\n {editText}\n </a>\n </Button>\n )}\n </div>\n <div>\n {showLastModified && lastModifiedDate && (\n <div\n title={lastModifiedDate.toLocaleString(undefined, {\n dateStyle: \"full\",\n timeStyle: \"medium\",\n })}\n >\n Last modified on{\" \"}\n <time dateTime={lastModifiedDate.toISOString()}>\n {lastModifiedDate.toLocaleDateString(\"en-US\", {\n dateStyle: \"long\",\n })}\n </time>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null}\n {!hidePager && (\n <>\n <div className=\"h-px bg-border mt-2 mb-6\" />\n <Pagination\n prev={prev ? { to: prev.id, label: prev.label ?? \"\" } : undefined}\n next={next ? { to: next.id, label: next.label ?? \"\" } : undefined}\n className=\"mb-10\"\n />\n </>\n )}\n </Typography>\n <div className=\"hidden xl:block\" data-pagefind-ignore=\"all\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["MarkdownHeadings","children","id","jsx","Heading","MdxPage","MdxComponent","basePath","frontmatter","defaultOptions","__filepath","tableOfContents","excerpt","categoryTitle","useCurrentItem","location","useLocation","isCopied","setIsCopied","useState","title","description","category","hideToc","pageTitle","item","hidePager","showLastModified","lastModifiedDate","editConfig","editUrl","editText","copyMarkdownConfig","markdownUrl","joinUrl","handleCopyMarkdown","response","markdown","tocEntries","showToc","prev","next","usePrevNext","useEffect","jsxs","Helmet","Typography","CategoryHeading","slugify","Button","CheckIcon","CopyIcon","DropdownMenu","DropdownMenuTrigger","ChevronDownIcon","DropdownMenuContent","DropdownMenuItem","Link2Icon","ExternalLinkIcon","prompt","ClaudeLogo","ChatGPTLogo","useMDXComponents","EditIcon","Fragment","Pagination","Toc"],"mappings":"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"}
1
+ {"version":3,"file":"MdxPage-BiAVpP8K.js","sources":["../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["import { useMDXComponents } from \"@mdx-js/react\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n CopyIcon,\n EditIcon,\n ExternalLinkIcon,\n Link2Icon,\n} from \"lucide-react\";\nimport { type PropsWithChildren, useEffect, useState } from \"react\";\nimport { useLocation } from \"react-router\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Toc } from \"../../components/navigation/Toc.js\";\nimport {\n useCurrentItem,\n usePrevNext,\n} from \"../../components/navigation/utils.js\";\nimport { Pagination } from \"../../components/Pagination.js\";\nimport { Typography } from \"../../components/Typography.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { ChatGPTLogo } from \"./assets/ChatGPTLogo.js\";\nimport { ClaudeLogo } from \"./assets/ClaudeLogo.js\";\nimport type { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\ndeclare global {\n interface Window {\n __getReactRefreshIgnoredExports?: (args: {\n id: string;\n }) => string[] | undefined;\n }\n}\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n basePath,\n frontmatter = {},\n defaultOptions,\n __filepath,\n tableOfContents,\n excerpt,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n basePath: string;\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const categoryTitle = useCurrentItem()?.categoryLabel;\n const location = useLocation();\n const [isCopied, setIsCopied] = useState(false);\n\n const title = frontmatter.title;\n const description = frontmatter.description ?? excerpt;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n title ?? tableOfContents.find((item) => item.depth === 1)?.value;\n const hidePager =\n frontmatter.disable_pager ??\n frontmatter.disablePager ??\n defaultOptions?.disablePager ??\n false;\n\n const showLastModified =\n frontmatter.showLastModified ?? defaultOptions?.showLastModified ?? true;\n\n const lastModifiedDate = frontmatter.lastModifiedTime\n ? new Date(frontmatter.lastModifiedTime)\n : null;\n\n const editConfig =\n frontmatter.suggestEdit !== false &&\n (frontmatter.suggestEdit ?? defaultOptions?.suggestEdit);\n\n const editUrl = editConfig\n ? editConfig.url.replaceAll(\"{filePath}\", __filepath)\n : null;\n const editText = editConfig ? editConfig.text || \"Edit this page\" : null;\n\n const copyMarkdownConfig =\n frontmatter.copyPage !== false && defaultOptions?.copyPage !== false;\n\n const markdownUrl = joinUrl(basePath, `${location.pathname}.md`);\n\n const handleCopyMarkdown = async () => {\n const response = await fetch(markdownUrl);\n if (!response.ok) throw new Error(\"Failed to fetch markdown\");\n const markdown = await response.text();\n void navigator.clipboard.writeText(markdown);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n };\n\n const tocEntries =\n tableOfContents.find((item) => item.depth === 1)?.children ??\n // if `title` is provided by frontmatter it does not appear in the table of contents\n tableOfContents.filter((item) => item.depth === 2);\n\n const showToc = !hideToc && tocEntries.length > 0;\n\n const { prev, next } = usePrevNext();\n\n useEffect(() => {\n if (process.env.NODE_ENV === \"development\") {\n window.__getReactRefreshIgnoredExports = ({ id }) => {\n if (!id.endsWith(__filepath)) return;\n\n return [\"frontmatter\", \"tableOfContents\"];\n };\n\n return () => {\n window.__getReactRefreshIgnoredExports = undefined;\n };\n }\n }, [__filepath]);\n\n return (\n <div\n className=\"grid grid-cols-1 xl:grid-cols-(--sidecar-grid-cols) gap-8 justify-between\"\n data-pagefind-filter=\"section:markdown\"\n data-pagefind-meta=\"section:markdown\"\n >\n <Helmet>\n <title>{pageTitle}</title>\n {description && <meta name=\"description\" content={description} />}\n </Helmet>\n <Typography className=\"max-w-full xl:w-full xl:max-w-3xl flex-1 shrink pt-(--padding-content-top)\">\n {(category || title) && (\n <header className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1\">\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title)}>\n {title}\n </Heading>\n )}\n </div>\n {copyMarkdownConfig && (\n <div className=\"flex items-center border rounded-md\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleCopyMarkdown}\n className=\"rounded-r-none border-r gap-2 h-7\"\n >\n {isCopied ? (\n <CheckIcon size={14} className=\"text-emerald-600\" />\n ) : (\n <CopyIcon size={14} />\n )}\n <span>Copy page</span>\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n className=\"rounded-l-none\"\n >\n <ChevronDownIcon size={14} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() =>\n void navigator.clipboard.writeText(window.location.href)\n }\n >\n <Link2Icon className=\"size-4\" />\n Copy link to page\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\" asChild>\n <a\n href={markdownUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLinkIcon className=\"size-4\" />\n Open Markdown page\n </a>\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://claude.ai/new?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ClaudeLogo className=\"size-4\" />\n Open in Claude\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://chatgpt.com/?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ChatGPTLogo className=\"size-4\" />\n Open in ChatGPT\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )}\n </header>\n )}\n\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n <div className=\"h-16\" />\n {(showLastModified && lastModifiedDate) || editUrl ? (\n <div className=\"flex justify-between text-xs text-muted-foreground \">\n <div />\n <div className=\"flex items-center gap-2\">\n <div>\n {editUrl && (\n <Button asChild variant=\"ghost\" size=\"sm\">\n <a\n href={editUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1\"\n >\n <EditIcon size={12} />\n {editText}\n </a>\n </Button>\n )}\n </div>\n <div>\n {showLastModified && lastModifiedDate && (\n <div\n title={lastModifiedDate.toLocaleString(undefined, {\n dateStyle: \"full\",\n timeStyle: \"medium\",\n })}\n >\n Last modified on{\" \"}\n <time dateTime={lastModifiedDate.toISOString()}>\n {lastModifiedDate.toLocaleDateString(\"en-US\", {\n dateStyle: \"long\",\n })}\n </time>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null}\n {!hidePager && (\n <>\n <div className=\"h-px bg-border mt-2 mb-6\" />\n <Pagination\n prev={prev ? { to: prev.id, label: prev.label ?? \"\" } : undefined}\n next={next ? { to: next.id, label: next.label ?? \"\" } : undefined}\n className=\"mb-10\"\n />\n </>\n )}\n </Typography>\n <div className=\"hidden xl:block\" data-pagefind-ignore=\"all\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["MarkdownHeadings","children","id","jsx","Heading","MdxPage","MdxComponent","basePath","frontmatter","defaultOptions","__filepath","tableOfContents","excerpt","categoryTitle","useCurrentItem","location","useLocation","isCopied","setIsCopied","useState","title","description","category","hideToc","pageTitle","item","hidePager","showLastModified","lastModifiedDate","editConfig","editUrl","editText","copyMarkdownConfig","markdownUrl","joinUrl","handleCopyMarkdown","response","markdown","tocEntries","showToc","prev","next","usePrevNext","useEffect","jsxs","Helmet","Typography","CategoryHeading","slugify","Button","CheckIcon","CopyIcon","DropdownMenu","DropdownMenuTrigger","ChevronDownIcon","DropdownMenuContent","DropdownMenuItem","Link2Icon","ExternalLinkIcon","prompt","ClaudeLogo","ChatGPTLogo","useMDXComponents","EditIcon","Fragment","Pagination","Toc"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { j as r } from "./jsx-runtime-BzflLqGi.js";
2
- import { k as f } from "./ZudokuContext-BXldanA8.js";
2
+ import { e as f } from "./useSuspenseQuery-CSB_rVek.js";
3
3
  import { useId as p } from "react";
4
4
  import { c as g } from "./index-DI5SPFK9.js";
5
- import { c as i } from "./cn-dYga0KKN.js";
6
- import { a as v } from "./index-Css56y3F.js";
5
+ import { c as i } from "./cn-5-Gd1Dss.js";
6
+ import { a as v } from "./index-Ba6RP577.js";
7
7
  import { S as x } from "./Spinner-CI6bRyZw.js";
8
8
  const h = g(
9
9
  "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
@@ -99,4 +99,4 @@ export {
99
99
  y as a,
100
100
  j as b
101
101
  };
102
- //# sourceMappingURL=Mermaid-D_VSX7_Q.js.map
102
+ //# sourceMappingURL=Mermaid-DEztDKFw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Mermaid-D_VSX7_Q.js","sources":["../src/lib/ui/Alert.tsx","../src/lib/components/Mermaid.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n","import { useQuery } from \"@tanstack/react-query\";\nimport type { MermaidConfig } from \"mermaid\";\nimport type { ComponentProps } from \"react\";\nimport { useId } from \"react\";\nimport { Alert, AlertDescription, AlertTitle } from \"zudoku/ui/Alert.js\";\nimport { useTheme } from \"../hooks/index.js\";\nimport { Spinner } from \"./Spinner.js\";\n\nexport type MermaidProps = {\n chart: string;\n config?: MermaidConfig;\n} & ComponentProps<\"div\">;\n\nlet mermaidPromise: Promise<typeof import(\"mermaid\").default> | null = null;\n\nconst loadMermaid = () => {\n if (!mermaidPromise) {\n mermaidPromise = import(\"mermaid\")\n .then((mod) => mod.default)\n .catch((error) => {\n throw new Error(\n \"Mermaid is not installed. Please install it with: npm install mermaid\",\n { cause: error },\n );\n });\n }\n return mermaidPromise;\n};\n\nexport const Mermaid = ({ chart, config, ...props }: MermaidProps) => {\n const id = useId();\n const theme = useTheme();\n\n const {\n data: svg,\n error,\n isPending,\n } = useQuery({\n queryKey: [\"mermaid\", chart, config, theme.resolvedTheme],\n queryFn: async () => {\n const mermaid = await loadMermaid();\n mermaid.initialize({\n theme: theme.resolvedTheme === \"dark\" ? \"dark\" : \"base\",\n ...config,\n });\n\n const { svg } = await mermaid.render(id, chart);\n return svg;\n },\n enabled: typeof window !== \"undefined\",\n retry: false,\n });\n\n if (error)\n return (\n <Alert className=\"flex flex-col gap-2\" variant=\"destructive\">\n <AlertTitle>Mermaid Error</AlertTitle>\n <AlertDescription className=\"overflow-auto wrap-break-word whitespace-pre-wrap font-mono text-xs\">\n {error.message}\n </AlertDescription>\n </Alert>\n );\n\n if (isPending) return <Spinner />;\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: Mermaid generates valid SVG\n return <div {...props} dangerouslySetInnerHTML={{ __html: svg }} />;\n};\n"],"names":["alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription","mermaidPromise","loadMermaid","mod","error","Mermaid","chart","config","id","useId","theme","useTheme","svg","isPending","useQuery","mermaid","jsxs","Spinner"],"mappings":";;;;;;;AAIA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAqE;AACnE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAWC,EAAGP,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAW,EAAE,WAAAL,GAAW,GAAGE,KAAsC;AACxE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAiB;AAAA,EACxB,WAAAN;AAAA,EACA,GAAGE;AACL,GAAgC;AAC9B,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;ACjDA,IAAIK,IAAmE;AAEvE,MAAMC,IAAc,OACbD,MACHA,IAAiB,OAAO,SAAS,EAC9B,KAAK,CAACE,MAAQA,EAAI,OAAO,EACzB,MAAM,CAACC,MAAU;AAChB,QAAM,IAAI;AAAA,IACR;AAAA,IACA,EAAE,OAAOA,EAAA;AAAA,EAAM;AAEnB,CAAC,IAEEH,IAGII,IAAU,CAAC,EAAE,OAAAC,GAAO,QAAAC,GAAQ,GAAGX,QAA0B;AACpE,QAAMY,IAAKC,EAAA,GACLC,IAAQC,EAAA,GAER;AAAA,IACJ,MAAMC;AAAA,IACN,OAAAR;AAAA,IACA,WAAAS;AAAA,EAAA,IACEC,EAAS;AAAA,IACX,UAAU,CAAC,WAAWR,GAAOC,GAAQG,EAAM,aAAa;AAAA,IACxD,SAAS,YAAY;AACnB,YAAMK,IAAU,MAAMb,EAAA;AACtB,MAAAa,EAAQ,WAAW;AAAA,QACjB,OAAOL,EAAM,kBAAkB,SAAS,SAAS;AAAA,QACjD,GAAGH;AAAA,MAAA,CACJ;AAED,YAAM,EAAE,KAAAK,EAAAA,IAAQ,MAAMG,EAAQ,OAAOP,GAAIF,CAAK;AAC9C,aAAOM;AAAAA,IACT;AAAA,IACA,SAAS,OAAO,SAAW;AAAA,IAC3B,OAAO;AAAA,EAAA,CACR;AAED,SAAIR,IAEAY,gBAAAA,EAAAA,KAACvB,GAAA,EAAM,WAAU,uBAAsB,SAAQ,eAC7C,UAAA;AAAA,IAAAI,gBAAAA,EAAAA,IAACE,KAAW,UAAA,gBAAA,CAAa;AAAA,IACzBF,gBAAAA,EAAAA,IAACG,GAAA,EAAiB,WAAU,uEACzB,YAAM,QAAA,CACT;AAAA,EAAA,GACF,IAGAa,IAAkBhB,gBAAAA,MAACoB,GAAA,CAAA,CAAQ,IAGxBpB,gBAAAA,EAAAA,IAAC,SAAK,GAAGD,GAAO,yBAAyB,EAAE,QAAQgB,KAAO;AACnE;"}
1
+ {"version":3,"file":"Mermaid-DEztDKFw.js","sources":["../src/lib/ui/Alert.tsx","../src/lib/components/Mermaid.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n","import { useQuery } from \"@tanstack/react-query\";\nimport type { MermaidConfig } from \"mermaid\";\nimport type { ComponentProps } from \"react\";\nimport { useId } from \"react\";\nimport { Alert, AlertDescription, AlertTitle } from \"zudoku/ui/Alert.js\";\nimport { useTheme } from \"../hooks/index.js\";\nimport { Spinner } from \"./Spinner.js\";\n\nexport type MermaidProps = {\n chart: string;\n config?: MermaidConfig;\n} & ComponentProps<\"div\">;\n\nlet mermaidPromise: Promise<typeof import(\"mermaid\").default> | null = null;\n\nconst loadMermaid = () => {\n if (!mermaidPromise) {\n mermaidPromise = import(\"mermaid\")\n .then((mod) => mod.default)\n .catch((error) => {\n throw new Error(\n \"Mermaid is not installed. Please install it with: npm install mermaid\",\n { cause: error },\n );\n });\n }\n return mermaidPromise;\n};\n\nexport const Mermaid = ({ chart, config, ...props }: MermaidProps) => {\n const id = useId();\n const theme = useTheme();\n\n const {\n data: svg,\n error,\n isPending,\n } = useQuery({\n queryKey: [\"mermaid\", chart, config, theme.resolvedTheme],\n queryFn: async () => {\n const mermaid = await loadMermaid();\n mermaid.initialize({\n theme: theme.resolvedTheme === \"dark\" ? \"dark\" : \"base\",\n ...config,\n });\n\n const { svg } = await mermaid.render(id, chart);\n return svg;\n },\n enabled: typeof window !== \"undefined\",\n retry: false,\n });\n\n if (error)\n return (\n <Alert className=\"flex flex-col gap-2\" variant=\"destructive\">\n <AlertTitle>Mermaid Error</AlertTitle>\n <AlertDescription className=\"overflow-auto wrap-break-word whitespace-pre-wrap font-mono text-xs\">\n {error.message}\n </AlertDescription>\n </Alert>\n );\n\n if (isPending) return <Spinner />;\n\n // biome-ignore lint/security/noDangerouslySetInnerHtml: Mermaid generates valid SVG\n return <div {...props} dangerouslySetInnerHTML={{ __html: svg }} />;\n};\n"],"names":["alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription","mermaidPromise","loadMermaid","mod","error","Mermaid","chart","config","id","useId","theme","useTheme","svg","isPending","useQuery","mermaid","jsxs","Spinner"],"mappings":";;;;;;;AAIA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAqE;AACnE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAWC,EAAGP,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAW,EAAE,WAAAL,GAAW,GAAGE,KAAsC;AACxE,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAiB;AAAA,EACxB,WAAAN;AAAA,EACA,GAAGE;AACL,GAAgC;AAC9B,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;ACjDA,IAAIK,IAAmE;AAEvE,MAAMC,IAAc,OACbD,MACHA,IAAiB,OAAO,SAAS,EAC9B,KAAK,CAACE,MAAQA,EAAI,OAAO,EACzB,MAAM,CAACC,MAAU;AAChB,QAAM,IAAI;AAAA,IACR;AAAA,IACA,EAAE,OAAOA,EAAA;AAAA,EAAM;AAEnB,CAAC,IAEEH,IAGII,IAAU,CAAC,EAAE,OAAAC,GAAO,QAAAC,GAAQ,GAAGX,QAA0B;AACpE,QAAMY,IAAKC,EAAA,GACLC,IAAQC,EAAA,GAER;AAAA,IACJ,MAAMC;AAAA,IACN,OAAAR;AAAA,IACA,WAAAS;AAAA,EAAA,IACEC,EAAS;AAAA,IACX,UAAU,CAAC,WAAWR,GAAOC,GAAQG,EAAM,aAAa;AAAA,IACxD,SAAS,YAAY;AACnB,YAAMK,IAAU,MAAMb,EAAA;AACtB,MAAAa,EAAQ,WAAW;AAAA,QACjB,OAAOL,EAAM,kBAAkB,SAAS,SAAS;AAAA,QACjD,GAAGH;AAAA,MAAA,CACJ;AAED,YAAM,EAAE,KAAAK,EAAAA,IAAQ,MAAMG,EAAQ,OAAOP,GAAIF,CAAK;AAC9C,aAAOM;AAAAA,IACT;AAAA,IACA,SAAS,OAAO,SAAW;AAAA,IAC3B,OAAO;AAAA,EAAA,CACR;AAED,SAAIR,IAEAY,gBAAAA,EAAAA,KAACvB,GAAA,EAAM,WAAU,uBAAsB,SAAQ,eAC7C,UAAA;AAAA,IAAAI,gBAAAA,EAAAA,IAACE,KAAW,UAAA,gBAAA,CAAa;AAAA,IACzBF,gBAAAA,EAAAA,IAACG,GAAA,EAAiB,WAAU,uEACzB,YAAM,QAAA,CACT;AAAA,EAAA,GACF,IAGAa,IAAkBhB,gBAAAA,MAACoB,GAAA,CAAA,CAAQ,IAGxBpB,gBAAAA,EAAAA,IAAC,SAAK,GAAGD,GAAO,yBAAyB,EAAE,QAAQgB,KAAO;AACnE;"}
@@ -1,21 +1,21 @@
1
1
  import { j as e } from "./jsx-runtime-BzflLqGi.js";
2
- import { e as m, j as h } from "./ZudokuContext-BXldanA8.js";
3
- import { N as g, L as y } from "./chunk-PVWAREVJ-dLIqswPy.js";
4
- import { u as _ } from "./index-CCmMJp02.js";
5
- import { O as d } from "./errors-Bs4duWDy.js";
6
- import { HomeIcon as v } from "lucide-react";
7
- import { H as f, T as o } from "./ErrorAlert-DrOR8w3f.js";
2
+ import { u as m } from "./useSuspenseQuery-CSB_rVek.js";
3
+ import { N as h, L as g } from "./chunk-EPOLDU6W-C6C8jAwd.js";
4
+ import { a as y, H as _, T as o } from "./index-ofqkdEjL.js";
5
+ import { j as v } from "./ZudokuContext-CnEI8jPU.js";
6
+ import { O as d } from "./errors-DkJIl45d.js";
7
+ import { HomeIcon as f } from "lucide-react";
8
8
  import { Button as c } from "./ui/Button.js";
9
- import { u as x } from "./hook-BNxidGQq.js";
9
+ import { u as x } from "./hook-Da8QTnPd.js";
10
10
  function w(r, i, n = "/") {
11
11
  return r.startsWith(i) ? n !== "/" && r.startsWith(i + n) ? r.slice(i.length + n.length) : r.slice(i.length) : r;
12
12
  }
13
13
  function U({
14
14
  handleCallback: r
15
15
  }) {
16
- const { options: i } = _(), n = m({
16
+ const { options: i } = y(), n = m({
17
17
  retry: !1,
18
- queryKey: ["oauth-callback"],
18
+ queryKey: ["oauth-callback", window.location.search],
19
19
  queryFn: async () => {
20
20
  const a = new URL(window.location.href), t = a.searchParams.get("error"), s = a.searchParams.get("error_description") ?? void 0, p = a.searchParams.get("error_uri") ?? void 0;
21
21
  if (t)
@@ -27,7 +27,7 @@ function U({
27
27
  error_uri: p
28
28
  }
29
29
  );
30
- return h(
30
+ return v(
31
31
  w(
32
32
  await r(),
33
33
  window.location.origin,
@@ -36,7 +36,7 @@ function U({
36
36
  );
37
37
  }
38
38
  });
39
- return /* @__PURE__ */ e.jsx(g, { to: n.data, replace: !0 });
39
+ return /* @__PURE__ */ e.jsx(h, { to: n.data, replace: !0 });
40
40
  }
41
41
  const l = {
42
42
  invalid_request: {
@@ -97,7 +97,7 @@ function q({ error: r }) {
97
97
  const a = r.error.error, t = l[a] ?? l.unknown_error;
98
98
  return /* @__PURE__ */ e.jsx("div", { className: "min-h-[400px] flex items-center justify-center p-4", children: /* @__PURE__ */ e.jsxs("div", { className: "max-w-md w-full text-center space-y-6", children: [
99
99
  /* @__PURE__ */ e.jsxs("div", { className: "space-y-4 items-center", children: [
100
- /* @__PURE__ */ e.jsx(f, { level: 2, className: "text-2xl inline-block font-bold", children: k[a] || "Authentication Error" }),
100
+ /* @__PURE__ */ e.jsx(_, { level: 2, className: "text-2xl inline-block font-bold", children: k[a] || "Authentication Error" }),
101
101
  /* @__PURE__ */ e.jsx(o, { className: "text-gray-600 dark:text-gray-300 leading-relaxed", children: t?.message })
102
102
  ] }),
103
103
  /* @__PURE__ */ e.jsxs("div", { className: "space-y-3 pt-4", children: [
@@ -110,8 +110,8 @@ function q({ error: r }) {
110
110
  children: "Sign in again"
111
111
  }
112
112
  ) }),
113
- /* @__PURE__ */ e.jsx("div", { className: "flex gap-2", children: /* @__PURE__ */ e.jsx(c, { asChild: !0, className: "flex-1", variant: "outline", children: /* @__PURE__ */ e.jsxs(y, { to: "/", children: [
114
- /* @__PURE__ */ e.jsx(v, { className: "w-4 h-4 mr-2" }),
113
+ /* @__PURE__ */ e.jsx("div", { className: "flex gap-2", children: /* @__PURE__ */ e.jsx(c, { asChild: !0, className: "flex-1", variant: "outline", children: /* @__PURE__ */ e.jsxs(g, { to: "/", children: [
114
+ /* @__PURE__ */ e.jsx(f, { className: "w-4 h-4 mr-2" }),
115
115
  "Go Home"
116
116
  ] }) }) })
117
117
  ] }),
@@ -147,4 +147,4 @@ export {
147
147
  U as C,
148
148
  q as O
149
149
  };
150
- //# sourceMappingURL=OAuthErrorPage-Fq54RLgt.js.map
150
+ //# sourceMappingURL=OAuthErrorPage-DhJo-O2B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OAuthErrorPage-DhJo-O2B.js","sources":["../src/lib/util/url.ts","../src/lib/authentication/components/CallbackHandler.tsx","../src/lib/authentication/components/OAuthErrorPage.tsx"],"sourcesContent":["/**\n * Normalizes a redirect URL by removing the origin and optionally the root path\n */\nexport function normalizeRedirectUrl(\n redirectTo: string,\n origin: string,\n basePath: string = \"/\",\n): string {\n if (!redirectTo.startsWith(origin)) {\n return redirectTo;\n }\n\n if (basePath !== \"/\" && redirectTo.startsWith(origin + basePath)) {\n return redirectTo.slice(origin.length + basePath.length);\n }\n\n return redirectTo.slice(origin.length);\n}\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Navigate } from \"react-router\";\nimport { useZudoku } from \"zudoku/components\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { normalizeRedirectUrl } from \"../../util/url.js\";\nimport { OAuthAuthorizationError, type OAuthErrorType } from \"../errors.js\";\n\nexport function CallbackHandler({\n handleCallback,\n}: {\n handleCallback: () => Promise<string>;\n}) {\n const { options } = useZudoku();\n const executeCallback = useSuspenseQuery({\n retry: false,\n queryKey: [\"oauth-callback\", window.location.search],\n queryFn: async () => {\n const url = new URL(window.location.href);\n\n const errorParam = url.searchParams.get(\"error\");\n const errorDescription =\n url.searchParams.get(\"error_description\") ?? undefined;\n const errorUri = url.searchParams.get(\"error_uri\") ?? undefined;\n if (errorParam) {\n throw new OAuthAuthorizationError(\n `OAuth error '${errorParam}': ${errorDescription}`,\n {\n error: errorParam as OAuthErrorType,\n error_description: errorDescription,\n error_uri: errorUri,\n },\n );\n }\n return joinUrl(\n normalizeRedirectUrl(\n await handleCallback(),\n window.location.origin,\n options.basePath,\n ),\n );\n },\n });\n\n return <Navigate to={executeCallback.data} replace />;\n}\n","import { HomeIcon } from \"lucide-react\";\nimport { Link } from \"react-router\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Typography } from \"../../components/Typography.js\";\nimport { Button } from \"../../ui/Button.js\";\nimport { OAuthAuthorizationError } from \"../errors.js\";\nimport { useAuth } from \"../hook.js\";\n\nconst errorDetailsMap: Record<string, { message: string }> = {\n invalid_request: {\n message:\n \"The authentication request was invalid. Please try signing in again.\",\n },\n unauthorized_client: {\n message:\n \"This application is not authorized to access your account. Please contact support.\",\n },\n access_denied: {\n message:\n \"You denied access to this application. To continue, please sign in and grant access.\",\n },\n unsupported_response_type: {\n message:\n \"The authentication method is not supported. Please contact support.\",\n },\n invalid_scope: {\n message: \"The requested permissions are invalid. Please contact support.\",\n },\n server_error: {\n message:\n \"The authentication server encountered an error. Please try again in a few moments.\",\n },\n temporarily_unavailable: {\n message:\n \"The authentication service is temporarily unavailable. Please try again in a few moments.\",\n },\n // Token errors\n invalid_client: {\n message: \"Invalid application credentials. Please contact support.\",\n },\n invalid_grant: {\n message:\n \"The authentication code has expired or is invalid. Please sign in again.\",\n },\n unsupported_grant_type: {\n message:\n \"The authentication method is not supported. Please contact support.\",\n },\n // Custom errors\n invalid_state: {\n message:\n \"Security validation failed. This may be due to a potential security attack. Please try signing in again.\",\n },\n missing_code_verifier: {\n message:\n \"Authentication security information is missing. Please clear your browser cache and try again.\",\n },\n network_error: {\n message:\n \"A network error occurred during authentication. Please check your connection and try again.\",\n },\n token_expired: {\n message: \"Your authentication session has expired. Please sign in again.\",\n },\n configuration_error: {\n message:\n \"There is an issue with the authentication configuration. Please contact support.\",\n },\n unknown_error: {\n message:\n \"An unexpected error occurred during authentication. Please try again or contact support.\",\n },\n};\n\nexport function OAuthErrorPage({ error }: { error: unknown }) {\n const { login } = useAuth();\n\n if (!(error instanceof OAuthAuthorizationError)) {\n throw error;\n }\n\n const oauthError = error.error;\n const type = oauthError.error;\n\n const details = errorDetailsMap[type] ?? errorDetailsMap.unknown_error;\n\n return (\n <div className=\"min-h-[400px] flex items-center justify-center p-4\">\n <div className=\"max-w-md w-full text-center space-y-6\">\n <div className=\"space-y-4 items-center\">\n <Heading level={2} className=\"text-2xl inline-block font-bold\">\n {titles[type] || \"Authentication Error\"}\n </Heading>\n\n <Typography className=\"text-gray-600 dark:text-gray-300 leading-relaxed\">\n {details?.message}\n </Typography>\n\n {/* Technical details for developers (only in development) */}\n </div>\n\n {/* Action Buttons */}\n <div className=\"space-y-3 pt-4\">\n <div className=\"space-y-2\">\n {(type === \"access_denied\" ||\n type === \"invalid_grant\" ||\n type === \"token_expired\") && (\n <Button\n onClick={() => login()}\n className=\"w-full capitalize\"\n variant={\"default\"}\n >\n Sign in again\n </Button>\n )}\n </div>\n\n <div className=\"flex gap-2\">\n <Button asChild className=\"flex-1\" variant=\"outline\">\n <Link to=\"/\">\n <HomeIcon className=\"w-4 h-4 mr-2\" />\n Go Home\n </Link>\n </Button>\n </div>\n </div>\n\n {/* Additional Help */}\n {helpMessages[type] && (\n <Typography className=\"text-sm text-gray-500 dark:text-gray-400\">\n {helpMessages[type]}\n </Typography>\n )}\n </div>\n </div>\n );\n}\n\nconst titles: Record<string, string> = {\n access_denied: \"Access Denied\",\n invalid_request: \"Invalid Request\",\n unauthorized_client: \"Unauthorized Application\",\n unsupported_response_type: \"Unsupported Method\",\n invalid_scope: \"Invalid Permissions\",\n server_error: \"Server Error\",\n temporarily_unavailable: \"Service Unavailable\",\n invalid_client: \"Invalid Credentials\",\n invalid_grant: \"Authentication Expired\",\n unsupported_grant_type: \"Unsupported Authentication\",\n invalid_state: \"Security Check Failed\",\n missing_code_verifier: \"Security Information Missing\",\n network_error: \"Network Error\",\n token_expired: \"Session Expired\",\n configuration_error: \"Configuration Error\",\n unknown_error: \"Authentication Failed\",\n};\n\nconst helpMessages: Record<string, string> = {\n access_denied:\n \"If you changed your mind, you can try signing in again to grant access.\",\n invalid_state:\n \"This error can occur if you have multiple tabs open or if your session was compromised.\",\n missing_code_verifier:\n \"Try clearing your browser's cache and cookies for this site.\",\n network_error:\n \"Check your internet connection and ensure you can access other websites.\",\n server_error:\n \"The issue is on our end. Our team has been notified and is working to fix it.\",\n temporarily_unavailable:\n \"This is usually temporary. Try again in a few minutes.\",\n};\n"],"names":["normalizeRedirectUrl","redirectTo","origin","basePath","CallbackHandler","handleCallback","options","useZudoku","executeCallback","useSuspenseQuery","url","errorParam","errorDescription","errorUri","OAuthAuthorizationError","joinUrl","Navigate","errorDetailsMap","OAuthErrorPage","error","login","useAuth","type","details","jsxs","jsx","Heading","titles","Typography","Button","Link","HomeIcon","helpMessages"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { j as s } from "./jsx-runtime-BzflLqGi.js";
2
+ import { useMemo as d } from "react";
3
+ import { O as f } from "./chunk-EPOLDU6W-C6C8jAwd.js";
4
+ import { j } from "./ZudokuContext-CnEI8jPU.js";
5
+ import { g as c, O as x, G as O } from "./index-k0PVZBYl.js";
6
+ const y = ({
7
+ basePath: n,
8
+ version: e,
9
+ config: o,
10
+ client: a
11
+ }) => {
12
+ const p = d(() => {
13
+ const {
14
+ versions: i,
15
+ labels: u,
16
+ downloadUrls: l
17
+ } = c(o), t = e ?? i.at(0), m = Object.fromEntries(
18
+ i.map((r) => [
19
+ r,
20
+ {
21
+ path: j(n, r),
22
+ label: u[r] ?? r,
23
+ downloadUrl: l[r]
24
+ }
25
+ ])
26
+ );
27
+ return {
28
+ config: {
29
+ ...o,
30
+ version: t,
31
+ versions: m,
32
+ input: (() => {
33
+ if (!Array.isArray(o.input))
34
+ return o.input;
35
+ const r = t ? o.input.find((v) => v.path === t) : o.input[0];
36
+ if (!r)
37
+ throw new Error(`No input found for version: ${t}`);
38
+ return r.input;
39
+ })()
40
+ }
41
+ };
42
+ }, [o, n, e]);
43
+ return /* @__PURE__ */ s.jsx(x, { value: p, children: /* @__PURE__ */ s.jsx(O, { client: a, children: /* @__PURE__ */ s.jsx(f, {}) }) });
44
+ };
45
+ export {
46
+ y as OasProvider
47
+ };
48
+ //# sourceMappingURL=OasProvider-DFMZwyNn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OasProvider-DFMZwyNn.js","sources":["../src/lib/plugins/openapi/OasProvider.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Outlet } from \"react-router\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport type { GraphQLClient } from \"./client/GraphQLClient.js\";\nimport { GraphQLProvider } from \"./client/GraphQLContext.js\";\nimport { OasConfigProvider } from \"./context.js\";\nimport type { OasPluginConfig } from \"./interfaces.js\";\nimport { getVersionMetadata } from \"./util/getRoutes.js\";\n\nexport const OasProvider = ({\n basePath,\n version,\n config,\n client,\n}: {\n basePath: string;\n version?: string;\n config: OasPluginConfig;\n client: GraphQLClient;\n}) => {\n const value = useMemo(() => {\n const {\n versions: availableVersions,\n labels,\n downloadUrls,\n } = getVersionMetadata(config);\n const currentVersion = version ?? availableVersions.at(0);\n\n const versionLinks = Object.fromEntries(\n availableVersions.map((id) => [\n id,\n {\n path: joinUrl(basePath, id),\n label: labels[id] ?? id,\n downloadUrl: downloadUrls[id],\n },\n ]),\n );\n\n const resolveInput = (): string | (() => Promise<unknown>) => {\n if (!Array.isArray(config.input)) {\n return config.input;\n }\n\n const versionConfig = currentVersion\n ? config.input.find((v) => v.path === currentVersion)\n : config.input[0];\n\n if (!versionConfig) {\n throw new Error(`No input found for version: ${currentVersion}`);\n }\n\n return versionConfig.input;\n };\n\n return {\n config: {\n ...config,\n version: currentVersion,\n versions: versionLinks,\n input: resolveInput(),\n },\n };\n }, [config, basePath, version]);\n\n return (\n <OasConfigProvider value={value}>\n <GraphQLProvider client={client}>\n <Outlet />\n </GraphQLProvider>\n </OasConfigProvider>\n );\n};\n"],"names":["OasProvider","basePath","version","config","client","value","useMemo","availableVersions","labels","downloadUrls","getVersionMetadata","currentVersion","versionLinks","id","joinUrl","versionConfig","jsx","OasConfigProvider","GraphQLProvider","Outlet"],"mappings":";;;;;AASO,MAAMA,IAAc,CAAC;AAAA,EAC1B,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AACF,MAKM;AACJ,QAAMC,IAAQC,EAAQ,MAAM;AAC1B,UAAM;AAAA,MACJ,UAAUC;AAAA,MACV,QAAAC;AAAA,MACA,cAAAC;AAAA,IAAA,IACEC,EAAmBP,CAAM,GACvBQ,IAAiBT,KAAWK,EAAkB,GAAG,CAAC,GAElDK,IAAe,OAAO;AAAA,MAC1BL,EAAkB,IAAI,CAACM,MAAO;AAAA,QAC5BA;AAAA,QACA;AAAA,UACE,MAAMC,EAAQb,GAAUY,CAAE;AAAA,UAC1B,OAAOL,EAAOK,CAAE,KAAKA;AAAA,UACrB,aAAaJ,EAAaI,CAAE;AAAA,QAAA;AAAA,MAC9B,CACD;AAAA,IAAA;AAmBH,WAAO;AAAA,MACL,QAAQ;AAAA,QACN,GAAGV;AAAA,QACH,SAASQ;AAAA,QACT,UAAUC;AAAA,QACV,QArBiB,MAAyC;AAC5D,cAAI,CAAC,MAAM,QAAQT,EAAO,KAAK;AAC7B,mBAAOA,EAAO;AAGhB,gBAAMY,IAAgBJ,IAClBR,EAAO,MAAM,KAAK,CAAC,MAAM,EAAE,SAASQ,CAAc,IAClDR,EAAO,MAAM,CAAC;AAElB,cAAI,CAACY;AACH,kBAAM,IAAI,MAAM,+BAA+BJ,CAAc,EAAE;AAGjE,iBAAOI,EAAc;AAAA,QACvB,GAOW;AAAA,MAAa;AAAA,IACtB;AAAA,EAEJ,GAAG,CAACZ,GAAQF,GAAUC,CAAO,CAAC;AAE9B,SACEc,gBAAAA,EAAAA,IAACC,KAAkB,OAAAZ,GACjB,UAAAW,gBAAAA,EAAAA,IAACE,KAAgB,QAAAd,GACf,UAAAY,gBAAAA,EAAAA,IAACG,GAAA,CAAA,CAAO,EAAA,CACV,EAAA,CACF;AAEJ;"}