zudoku 0.42.0 → 0.42.1
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.
- package/dist/app/main.js +0 -6
- package/dist/app/main.js.map +1 -1
- package/dist/config/validators/common.d.ts +288 -420
- package/dist/config/validators/common.js +0 -10
- package/dist/config/validators/common.js.map +1 -1
- package/dist/config/validators/validate.d.ts +108 -161
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/components/Markdown.d.ts +1 -3
- package/dist/lib/components/Markdown.js +14 -8
- package/dist/lib/components/Markdown.js.map +1 -1
- package/dist/lib/components/context/ZudokuContext.d.ts +1 -1
- package/dist/lib/components/index.d.ts +1 -2
- package/dist/lib/core/ZudokuContext.d.ts +0 -7
- package/dist/lib/core/ZudokuContext.js.map +1 -1
- package/dist/lib/errors/ErrorAlert.js +1 -1
- package/dist/lib/errors/ErrorAlert.js.map +1 -1
- package/dist/lib/plugins/openapi/CollapsibleCode.js +1 -1
- package/dist/lib/plugins/openapi/CollapsibleCode.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/SidecarExamples.js +1 -1
- package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
- package/dist/lib/ui/Callout.js +1 -1
- package/dist/lib/ui/Callout.js.map +1 -1
- package/dist/lib/ui/SyntaxHighlight.d.ts +15 -10
- package/dist/lib/ui/SyntaxHighlight.js +60 -10
- package/dist/lib/ui/SyntaxHighlight.js.map +1 -1
- package/dist/lib/util/MdxComponents.d.ts +3 -9
- package/dist/lib/util/MdxComponents.js +10 -9
- package/dist/lib/util/MdxComponents.js.map +1 -1
- package/dist/vite/config.js +0 -34
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/plugin-mdx.js +11 -4
- package/dist/vite/plugin-mdx.js.map +1 -1
- package/dist/vite/plugin.js +0 -2
- package/dist/vite/plugin.js.map +1 -1
- package/lib/AuthenticationPlugin-DPCuR3xm.js +58 -0
- package/lib/{AuthenticationPlugin-EeQpQI3D.js.map → AuthenticationPlugin-DPCuR3xm.js.map} +1 -1
- package/lib/{Button-Bdk_Ij3U.js → Button-BBNrKpQd.js} +3 -3
- package/lib/{Button-Bdk_Ij3U.js.map → Button-BBNrKpQd.js.map} +1 -1
- package/lib/{Callout-XadUe37J.js → Callout-D3Ja4OPX.js} +12 -12
- package/lib/{Callout-XadUe37J.js.map → Callout-D3Ja4OPX.js.map} +1 -1
- package/lib/{CategoryHeading-DZi-Szor.js → CategoryHeading-D06WK_Wo.js} +2 -2
- package/lib/{CategoryHeading-DZi-Szor.js.map → CategoryHeading-D06WK_Wo.js.map} +1 -1
- package/lib/{Dialog-CNf2oWXG.js → Dialog-ByYz4ABw.js} +2 -2
- package/lib/{Dialog-CNf2oWXG.js.map → Dialog-ByYz4ABw.js.map} +1 -1
- package/lib/{Drawer-BPBxzel2.js → Drawer-CEwbkLDb.js} +25 -25
- package/lib/{Drawer-BPBxzel2.js.map → Drawer-CEwbkLDb.js.map} +1 -1
- package/lib/Markdown-mFpg_n9p.js +17125 -0
- package/lib/Markdown-mFpg_n9p.js.map +1 -0
- package/lib/MdxPage-Cm7atiW3.js +85 -0
- package/lib/{MdxPage-Dxbq6lFr.js.map → MdxPage-Cm7atiW3.js.map} +1 -1
- package/lib/{OasProvider-DKpTJMH2.js → OasProvider-CZiF_RMW.js} +4 -4
- package/lib/{OasProvider-DKpTJMH2.js.map → OasProvider-CZiF_RMW.js.map} +1 -1
- package/lib/{OperationList-DVOyNeno.js → OperationList-CMMzLfIZ.js} +1417 -1385
- package/lib/{OperationList-DVOyNeno.js.map → OperationList-CMMzLfIZ.js.map} +1 -1
- package/lib/{Pagination-COMmV-g9.js → Pagination-DLPL5z77.js} +4 -4
- package/lib/{Pagination-COMmV-g9.js.map → Pagination-DLPL5z77.js.map} +1 -1
- package/lib/RouteGuard-DRtEu9nh.js +744 -0
- package/lib/{RouteGuard-CGqivwrh.js.map → RouteGuard-DRtEu9nh.js.map} +1 -1
- package/lib/{SchemaList-BTWzXyYQ.js → SchemaList-_d3Mf4IX.js} +44 -43
- package/lib/{SchemaList-BTWzXyYQ.js.map → SchemaList-_d3Mf4IX.js.map} +1 -1
- package/lib/{SchemaView-DNKKW3nB.js → SchemaView-J7Srn-Iy.js} +11 -7
- package/lib/{SchemaView-DNKKW3nB.js.map → SchemaView-J7Srn-Iy.js.map} +1 -1
- package/lib/Select-CT64Ou40.js +223 -0
- package/lib/{Select-m-ITdvFa.js.map → Select-CT64Ou40.js.map} +1 -1
- package/lib/SlotletProvider-CS_nO-XT.js +340 -0
- package/lib/SlotletProvider-CS_nO-XT.js.map +1 -0
- package/lib/SyntaxHighlight-CxhyyMkF.js +2890 -0
- package/lib/SyntaxHighlight-CxhyyMkF.js.map +1 -0
- package/lib/{Toc-CzMOgcPS.js → Toc-D_tV8_Ri.js} +3 -3
- package/lib/{Toc-CzMOgcPS.js.map → Toc-D_tV8_Ri.js.map} +1 -1
- package/lib/{chunk-BAXFHI7N-CFrZQ7Oh.js → chunk-BAXFHI7N-BVBOl9s0.js} +264 -257
- package/lib/{chunk-BAXFHI7N-CFrZQ7Oh.js.map → chunk-BAXFHI7N-BVBOl9s0.js.map} +1 -1
- package/lib/{circular-D__GEK2G.js → circular-ByJI6Mci.js} +47 -47
- package/lib/{circular-D__GEK2G.js.map → circular-ByJI6Mci.js.map} +1 -1
- package/lib/{cn-CwJPJKOE.js → cn-qaFjX9_3.js} +29 -28
- package/lib/{cn-CwJPJKOE.js.map → cn-qaFjX9_3.js.map} +1 -1
- package/lib/{createServer-B4l2NSkt.js → createServer-IW7v5hWm.js} +3868 -3724
- package/lib/{createServer-B4l2NSkt.js.map → createServer-IW7v5hWm.js.map} +1 -1
- package/lib/hook-CldJlP5c.js +1478 -0
- package/lib/{hook-CyNmcNr8.js.map → hook-CldJlP5c.js.map} +1 -1
- package/lib/{index-CCS3ifKs.js → index-BPqJMdth.js} +733 -690
- package/lib/{index-CCS3ifKs.js.map → index-BPqJMdth.js.map} +1 -1
- package/lib/{index-Z13x6tPX.js → index-CPNSgwSb.js} +5 -5
- package/lib/{index-Z13x6tPX.js.map → index-CPNSgwSb.js.map} +1 -1
- package/lib/{index-CrcNWbel.js → index-CuBIgTKC.js} +9 -9
- package/lib/{index-CrcNWbel.js.map → index-CuBIgTKC.js.map} +1 -1
- package/lib/{index-zddirpDj.js → index-DcHeSvkE.js} +609 -581
- package/lib/{index-zddirpDj.js.map → index-DcHeSvkE.js.map} +1 -1
- package/lib/index-DnQftvP4.js +5031 -0
- package/lib/{index-BcMPFdRU.js.map → index-DnQftvP4.js.map} +1 -1
- package/lib/{index--oeBayMa.js → index-DwT-v3zK.js} +2 -2
- package/lib/{index--oeBayMa.js.map → index-DwT-v3zK.js.map} +1 -1
- package/lib/{index-BvvmIczU.js → index-LNp6rxyU.js} +2 -2
- package/lib/{index-BvvmIczU.js.map → index-LNp6rxyU.js.map} +1 -1
- package/lib/invariant-Caa8-XvF.js +26 -0
- package/lib/{invariant-D3QcI9fa.js.map → invariant-Caa8-XvF.js.map} +1 -1
- package/lib/mutation-DBQh7AOZ.js +211 -0
- package/lib/{mutation-narTVsCe.js.map → mutation-DBQh7AOZ.js.map} +1 -1
- package/lib/prism-bash.min-HHIMdNJ_.js +7 -0
- package/lib/prism-bash.min-HHIMdNJ_.js.map +1 -0
- package/lib/prism-csharp.min-C43x1RY2.js +63 -0
- package/lib/prism-csharp.min-C43x1RY2.js.map +1 -0
- package/lib/prism-java.min-CQzr40NQ.js +35 -0
- package/lib/prism-java.min-CQzr40NQ.js.map +1 -0
- package/lib/prism-javascript.min-CEqHqgbm.js +9 -0
- package/lib/prism-javascript.min-CEqHqgbm.js.map +1 -0
- package/lib/prism-json.min-B1GJqK1k.js +2 -0
- package/lib/prism-json.min-B1GJqK1k.js.map +1 -0
- package/lib/prism-jsstacktrace.min-BfobCF2F.js +2 -0
- package/lib/prism-jsstacktrace.min-BfobCF2F.js.map +1 -0
- package/lib/prism-markdown.min-C0Qn0m-5.js +61 -0
- package/lib/prism-markdown.min-C0Qn0m-5.js.map +1 -0
- package/lib/prism-markup-BNGj0Tvm.js +174 -0
- package/lib/prism-markup-BNGj0Tvm.js.map +1 -0
- package/lib/prism-objectivec.min-BXSWqpJJ.js +2 -0
- package/lib/prism-objectivec.min-BXSWqpJJ.js.map +1 -0
- package/lib/prism-ruby.min-L9OdQ6tU.js +38 -0
- package/lib/prism-ruby.min-L9OdQ6tU.js.map +1 -0
- package/lib/prism-typescript.min-qTySPvCh.js +34 -0
- package/lib/prism-typescript.min-qTySPvCh.js.map +1 -0
- package/lib/processors/removeParameters.js +28 -27
- package/lib/processors/removeParameters.js.map +1 -1
- package/lib/processors/removePaths.js +17 -17
- package/lib/processors/removePaths.js.map +1 -1
- package/lib/ui/Accordion.js +1 -1
- package/lib/ui/ActionButton.js +2 -2
- package/lib/ui/Alert.js +2 -2
- package/lib/ui/AlertDialog.js +1 -1
- package/lib/ui/Badge.js +2 -2
- package/lib/ui/Breadcrumb.js +1 -1
- package/lib/ui/Button.js +2 -2
- package/lib/ui/Callout.js +7 -7
- package/lib/ui/Callout.js.map +1 -1
- package/lib/ui/Card.js +1 -1
- package/lib/ui/Carousel.js +175 -175
- package/lib/ui/Carousel.js.map +1 -1
- package/lib/ui/Checkbox.js +1 -1
- package/lib/ui/Command.js +58 -58
- package/lib/ui/Command.js.map +1 -1
- package/lib/ui/Dialog.js +1 -1
- package/lib/ui/Drawer.js +2 -2
- package/lib/ui/DropdownMenu.js +1 -1
- package/lib/ui/Form.js +1 -1
- package/lib/ui/HoverCard.js +1 -1
- package/lib/ui/Input.js +1 -1
- package/lib/ui/Label.js +2 -2
- package/lib/ui/Pagination.js +1 -1
- package/lib/ui/Popover.js +1 -1
- package/lib/ui/Progress.js +1 -1
- package/lib/ui/RadioGroup.js +1 -1
- package/lib/ui/ScrollArea.js +1 -1
- package/lib/ui/Select.js +1 -1
- package/lib/ui/Skeleton.js +1 -1
- package/lib/ui/Slider.js +1 -1
- package/lib/ui/Switch.js +1 -1
- package/lib/ui/SyntaxHighlight.js +6 -4
- package/lib/ui/SyntaxHighlight.js.map +1 -1
- package/lib/ui/Tabs.js +1 -1
- package/lib/ui/Textarea.js +1 -1
- package/lib/ui/Toggle.js +2 -2
- package/lib/ui/ToggleGroup.js +1 -1
- package/lib/ui/Tooltip.js +1 -1
- package/lib/ui/util.js +1 -1
- package/lib/{useExposedProps-n1u49409.js → useExposedProps-DbIZXspi.js} +2 -2
- package/lib/{useExposedProps-n1u49409.js.map → useExposedProps-DbIZXspi.js.map} +1 -1
- package/lib/zudoku.auth-auth0.js +31 -28
- package/lib/zudoku.auth-auth0.js.map +1 -1
- package/lib/zudoku.auth-clerk.js +68 -62
- package/lib/zudoku.auth-clerk.js.map +1 -1
- package/lib/zudoku.auth-openid.js +483 -475
- package/lib/zudoku.auth-openid.js.map +1 -1
- package/lib/zudoku.components.js +7 -7
- package/lib/zudoku.hooks.js +2 -2
- package/lib/zudoku.plugin-api-catalog.js +45 -45
- package/lib/zudoku.plugin-api-catalog.js.map +1 -1
- package/lib/zudoku.plugin-api-keys.js +6 -6
- package/lib/zudoku.plugin-custom-pages.js +3 -3
- package/lib/zudoku.plugin-markdown.js +28 -25
- package/lib/zudoku.plugin-markdown.js.map +1 -1
- package/lib/zudoku.plugin-openapi.js +3 -3
- package/lib/zudoku.plugin-redirect.js +1 -1
- package/lib/zudoku.plugin-search-inkeep.js +27 -26
- package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +110 -107
- package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
- package/package.json +6 -16
- package/src/app/main.css +3 -53
- package/src/app/main.tsx +0 -7
- package/src/lib/components/Markdown.tsx +24 -29
- package/src/lib/core/ZudokuContext.ts +0 -4
- package/src/lib/errors/ErrorAlert.tsx +1 -1
- package/src/lib/plugins/openapi/CollapsibleCode.tsx +2 -5
- package/src/lib/plugins/openapi/Sidecar.tsx +1 -1
- package/src/lib/plugins/openapi/SidecarExamples.tsx +2 -2
- package/src/lib/ui/Callout.tsx +1 -1
- package/src/lib/ui/SyntaxHighlight.tsx +182 -18
- package/src/lib/util/MdxComponents.tsx +14 -27
- package/dist/lib/shiki.d.ts +0 -35
- package/dist/lib/shiki.js +0 -103
- package/dist/lib/shiki.js.map +0 -1
- package/dist/lib/ui/CodeBlock.d.ts +0 -16
- package/dist/lib/ui/CodeBlock.js +0 -18
- package/dist/lib/ui/CodeBlock.js.map +0 -1
- package/dist/vite/plugin-shiki-register.d.ts +0 -3
- package/dist/vite/plugin-shiki-register.js +0 -38
- package/dist/vite/plugin-shiki-register.js.map +0 -1
- package/lib/AuthenticationPlugin-EeQpQI3D.js +0 -55
- package/lib/Markdown-1l-DtDbF.js +0 -7688
- package/lib/Markdown-1l-DtDbF.js.map +0 -1
- package/lib/MdxPage-Dxbq6lFr.js +0 -84
- package/lib/RouteGuard-CGqivwrh.js +0 -733
- package/lib/Select-m-ITdvFa.js +0 -211
- package/lib/SlotletProvider-DhK1Fmm9.js +0 -254
- package/lib/SlotletProvider-DhK1Fmm9.js.map +0 -1
- package/lib/SyntaxHighlight-CJ6FoYvt.js +0 -9104
- package/lib/SyntaxHighlight-CJ6FoYvt.js.map +0 -1
- package/lib/hook-CyNmcNr8.js +0 -1443
- package/lib/index-BcMPFdRU.js +0 -4975
- package/lib/invariant-D3QcI9fa.js +0 -22
- package/lib/mutation-narTVsCe.js +0 -196
- package/lib/ui/CodeBlock.js +0 -83
- package/lib/ui/CodeBlock.js.map +0 -1
- package/src/lib/shiki.ts +0 -129
- package/src/lib/ui/CodeBlock.tsx +0 -102
- package/src/shiki/langs/abap.js +0 -1
- package/src/shiki/langs/actionscript-3.js +0 -1
- package/src/shiki/langs/ada.js +0 -1
- package/src/shiki/langs/angular-expression.js +0 -1
- package/src/shiki/langs/angular-html.js +0 -1
- package/src/shiki/langs/angular-inline-style.js +0 -1
- package/src/shiki/langs/angular-inline-template.js +0 -1
- package/src/shiki/langs/angular-let-declaration.js +0 -1
- package/src/shiki/langs/angular-template-blocks.js +0 -1
- package/src/shiki/langs/angular-template.js +0 -1
- package/src/shiki/langs/angular-ts.js +0 -1
- package/src/shiki/langs/apache.js +0 -1
- package/src/shiki/langs/apex.js +0 -1
- package/src/shiki/langs/apl.js +0 -1
- package/src/shiki/langs/applescript.js +0 -1
- package/src/shiki/langs/ara.js +0 -1
- package/src/shiki/langs/asciidoc.js +0 -1
- package/src/shiki/langs/asm.js +0 -1
- package/src/shiki/langs/astro.js +0 -1
- package/src/shiki/langs/awk.js +0 -1
- package/src/shiki/langs/ballerina.js +0 -1
- package/src/shiki/langs/bat.js +0 -1
- package/src/shiki/langs/beancount.js +0 -1
- package/src/shiki/langs/berry.js +0 -1
- package/src/shiki/langs/bibtex.js +0 -1
- package/src/shiki/langs/bicep.js +0 -1
- package/src/shiki/langs/blade.js +0 -1
- package/src/shiki/langs/bsl.js +0 -1
- package/src/shiki/langs/c.js +0 -1
- package/src/shiki/langs/cadence.js +0 -1
- package/src/shiki/langs/cairo.js +0 -1
- package/src/shiki/langs/clarity.js +0 -1
- package/src/shiki/langs/clojure.js +0 -1
- package/src/shiki/langs/cmake.js +0 -1
- package/src/shiki/langs/cobol.js +0 -1
- package/src/shiki/langs/codeowners.js +0 -1
- package/src/shiki/langs/codeql.js +0 -1
- package/src/shiki/langs/coffee.js +0 -1
- package/src/shiki/langs/common-lisp.js +0 -1
- package/src/shiki/langs/coq.js +0 -1
- package/src/shiki/langs/cpp-macro.js +0 -1
- package/src/shiki/langs/cpp.js +0 -1
- package/src/shiki/langs/crystal.js +0 -1
- package/src/shiki/langs/csharp.js +0 -1
- package/src/shiki/langs/css.js +0 -1
- package/src/shiki/langs/csv.js +0 -1
- package/src/shiki/langs/cue.js +0 -1
- package/src/shiki/langs/cypher.js +0 -1
- package/src/shiki/langs/d.js +0 -1
- package/src/shiki/langs/dart.js +0 -1
- package/src/shiki/langs/dax.js +0 -1
- package/src/shiki/langs/desktop.js +0 -1
- package/src/shiki/langs/diff.js +0 -1
- package/src/shiki/langs/docker.js +0 -1
- package/src/shiki/langs/dotenv.js +0 -1
- package/src/shiki/langs/dream-maker.js +0 -1
- package/src/shiki/langs/edge.js +0 -1
- package/src/shiki/langs/elixir.js +0 -1
- package/src/shiki/langs/elm.js +0 -1
- package/src/shiki/langs/emacs-lisp.js +0 -1
- package/src/shiki/langs/erb.js +0 -1
- package/src/shiki/langs/erlang.js +0 -1
- package/src/shiki/langs/es-tag-css.js +0 -1
- package/src/shiki/langs/es-tag-glsl.js +0 -1
- package/src/shiki/langs/es-tag-html.js +0 -1
- package/src/shiki/langs/es-tag-sql.js +0 -1
- package/src/shiki/langs/es-tag-xml.js +0 -1
- package/src/shiki/langs/fennel.js +0 -1
- package/src/shiki/langs/fish.js +0 -1
- package/src/shiki/langs/fluent.js +0 -1
- package/src/shiki/langs/fortran-fixed-form.js +0 -1
- package/src/shiki/langs/fortran-free-form.js +0 -1
- package/src/shiki/langs/fsharp.js +0 -1
- package/src/shiki/langs/gdresource.js +0 -1
- package/src/shiki/langs/gdscript.js +0 -1
- package/src/shiki/langs/gdshader.js +0 -1
- package/src/shiki/langs/genie.js +0 -1
- package/src/shiki/langs/gherkin.js +0 -1
- package/src/shiki/langs/git-commit.js +0 -1
- package/src/shiki/langs/git-rebase.js +0 -1
- package/src/shiki/langs/gleam.js +0 -1
- package/src/shiki/langs/glimmer-js.js +0 -1
- package/src/shiki/langs/glimmer-ts.js +0 -1
- package/src/shiki/langs/glsl.js +0 -1
- package/src/shiki/langs/gnuplot.js +0 -1
- package/src/shiki/langs/go.js +0 -1
- package/src/shiki/langs/graphql.js +0 -1
- package/src/shiki/langs/groovy.js +0 -1
- package/src/shiki/langs/hack.js +0 -1
- package/src/shiki/langs/haml.js +0 -1
- package/src/shiki/langs/handlebars.js +0 -1
- package/src/shiki/langs/haskell.js +0 -1
- package/src/shiki/langs/haxe.js +0 -1
- package/src/shiki/langs/hcl.js +0 -1
- package/src/shiki/langs/hjson.js +0 -1
- package/src/shiki/langs/hlsl.js +0 -1
- package/src/shiki/langs/html-derivative.js +0 -1
- package/src/shiki/langs/html.js +0 -1
- package/src/shiki/langs/http.js +0 -1
- package/src/shiki/langs/hxml.js +0 -1
- package/src/shiki/langs/hy.js +0 -1
- package/src/shiki/langs/imba.js +0 -1
- package/src/shiki/langs/ini.js +0 -1
- package/src/shiki/langs/java.js +0 -1
- package/src/shiki/langs/javascript.js +0 -1
- package/src/shiki/langs/jinja-html.js +0 -1
- package/src/shiki/langs/jinja.js +0 -1
- package/src/shiki/langs/jison.js +0 -1
- package/src/shiki/langs/json.js +0 -1
- package/src/shiki/langs/json5.js +0 -1
- package/src/shiki/langs/jsonc.js +0 -1
- package/src/shiki/langs/jsonl.js +0 -1
- package/src/shiki/langs/jsonnet.js +0 -1
- package/src/shiki/langs/jssm.js +0 -1
- package/src/shiki/langs/jsx.js +0 -1
- package/src/shiki/langs/julia.js +0 -1
- package/src/shiki/langs/kotlin.js +0 -1
- package/src/shiki/langs/kusto.js +0 -1
- package/src/shiki/langs/latex.js +0 -1
- package/src/shiki/langs/lean.js +0 -1
- package/src/shiki/langs/less.js +0 -1
- package/src/shiki/langs/liquid.js +0 -1
- package/src/shiki/langs/llvm.js +0 -1
- package/src/shiki/langs/log.js +0 -1
- package/src/shiki/langs/logo.js +0 -1
- package/src/shiki/langs/lua.js +0 -1
- package/src/shiki/langs/luau.js +0 -1
- package/src/shiki/langs/make.js +0 -1
- package/src/shiki/langs/markdown-vue.js +0 -1
- package/src/shiki/langs/markdown.js +0 -1
- package/src/shiki/langs/marko.js +0 -1
- package/src/shiki/langs/matlab.js +0 -1
- package/src/shiki/langs/mdc.js +0 -1
- package/src/shiki/langs/mdx.js +0 -1
- package/src/shiki/langs/mermaid.js +0 -1
- package/src/shiki/langs/mipsasm.js +0 -1
- package/src/shiki/langs/mojo.js +0 -1
- package/src/shiki/langs/move.js +0 -1
- package/src/shiki/langs/narrat.js +0 -1
- package/src/shiki/langs/nextflow.js +0 -1
- package/src/shiki/langs/nginx.js +0 -1
- package/src/shiki/langs/nim.js +0 -1
- package/src/shiki/langs/nix.js +0 -1
- package/src/shiki/langs/nushell.js +0 -1
- package/src/shiki/langs/objective-c.js +0 -1
- package/src/shiki/langs/objective-cpp.js +0 -1
- package/src/shiki/langs/ocaml.js +0 -1
- package/src/shiki/langs/pascal.js +0 -1
- package/src/shiki/langs/perl.js +0 -1
- package/src/shiki/langs/php.js +0 -1
- package/src/shiki/langs/plsql.js +0 -1
- package/src/shiki/langs/po.js +0 -1
- package/src/shiki/langs/polar.js +0 -1
- package/src/shiki/langs/postcss.js +0 -1
- package/src/shiki/langs/powerquery.js +0 -1
- package/src/shiki/langs/powershell.js +0 -1
- package/src/shiki/langs/prisma.js +0 -1
- package/src/shiki/langs/prolog.js +0 -1
- package/src/shiki/langs/proto.js +0 -1
- package/src/shiki/langs/pug.js +0 -1
- package/src/shiki/langs/puppet.js +0 -1
- package/src/shiki/langs/purescript.js +0 -1
- package/src/shiki/langs/python.js +0 -1
- package/src/shiki/langs/qml.js +0 -1
- package/src/shiki/langs/qmldir.js +0 -1
- package/src/shiki/langs/qss.js +0 -1
- package/src/shiki/langs/r.js +0 -1
- package/src/shiki/langs/racket.js +0 -1
- package/src/shiki/langs/raku.js +0 -1
- package/src/shiki/langs/razor.js +0 -1
- package/src/shiki/langs/reg.js +0 -1
- package/src/shiki/langs/regexp.js +0 -1
- package/src/shiki/langs/rel.js +0 -1
- package/src/shiki/langs/riscv.js +0 -1
- package/src/shiki/langs/rst.js +0 -1
- package/src/shiki/langs/ruby.js +0 -1
- package/src/shiki/langs/rust.js +0 -1
- package/src/shiki/langs/sas.js +0 -1
- package/src/shiki/langs/sass.js +0 -1
- package/src/shiki/langs/scala.js +0 -1
- package/src/shiki/langs/scheme.js +0 -1
- package/src/shiki/langs/scss.js +0 -1
- package/src/shiki/langs/sdbl.js +0 -1
- package/src/shiki/langs/shaderlab.js +0 -1
- package/src/shiki/langs/shellscript.js +0 -1
- package/src/shiki/langs/shellsession.js +0 -1
- package/src/shiki/langs/smalltalk.js +0 -1
- package/src/shiki/langs/solidity.js +0 -1
- package/src/shiki/langs/soy.js +0 -1
- package/src/shiki/langs/sparql.js +0 -1
- package/src/shiki/langs/splunk.js +0 -1
- package/src/shiki/langs/sql.js +0 -1
- package/src/shiki/langs/ssh-config.js +0 -1
- package/src/shiki/langs/stata.js +0 -1
- package/src/shiki/langs/stylus.js +0 -1
- package/src/shiki/langs/svelte.js +0 -1
- package/src/shiki/langs/swift.js +0 -1
- package/src/shiki/langs/system-verilog.js +0 -1
- package/src/shiki/langs/systemd.js +0 -1
- package/src/shiki/langs/talonscript.js +0 -1
- package/src/shiki/langs/tasl.js +0 -1
- package/src/shiki/langs/tcl.js +0 -1
- package/src/shiki/langs/templ.js +0 -1
- package/src/shiki/langs/terraform.js +0 -1
- package/src/shiki/langs/tex.js +0 -1
- package/src/shiki/langs/toml.js +0 -1
- package/src/shiki/langs/ts-tags.js +0 -1
- package/src/shiki/langs/tsv.js +0 -1
- package/src/shiki/langs/tsx.js +0 -1
- package/src/shiki/langs/turtle.js +0 -1
- package/src/shiki/langs/twig.js +0 -1
- package/src/shiki/langs/typescript.js +0 -1
- package/src/shiki/langs/typespec.js +0 -1
- package/src/shiki/langs/typst.js +0 -1
- package/src/shiki/langs/v.js +0 -1
- package/src/shiki/langs/vala.js +0 -1
- package/src/shiki/langs/vb.js +0 -1
- package/src/shiki/langs/verilog.js +0 -1
- package/src/shiki/langs/vhdl.js +0 -1
- package/src/shiki/langs/viml.js +0 -1
- package/src/shiki/langs/vue-directives.js +0 -1
- package/src/shiki/langs/vue-html.js +0 -1
- package/src/shiki/langs/vue-interpolations.js +0 -1
- package/src/shiki/langs/vue-sfc-style-variable-injection.js +0 -1
- package/src/shiki/langs/vue.js +0 -1
- package/src/shiki/langs/vyper.js +0 -1
- package/src/shiki/langs/wasm.js +0 -1
- package/src/shiki/langs/wenyan.js +0 -1
- package/src/shiki/langs/wgsl.js +0 -1
- package/src/shiki/langs/wikitext.js +0 -1
- package/src/shiki/langs/wit.js +0 -1
- package/src/shiki/langs/wolfram.js +0 -1
- package/src/shiki/langs/xml.js +0 -1
- package/src/shiki/langs/xsl.js +0 -1
- package/src/shiki/langs/yaml.js +0 -1
- package/src/shiki/langs/zenscript.js +0 -1
- package/src/shiki/langs/zig.js +0 -1
- package/src/shiki/themes/andromeeda.js +0 -1
- package/src/shiki/themes/aurora-x.js +0 -1
- package/src/shiki/themes/ayu-dark.js +0 -1
- package/src/shiki/themes/catppuccin-frappe.js +0 -1
- package/src/shiki/themes/catppuccin-latte.js +0 -1
- package/src/shiki/themes/catppuccin-macchiato.js +0 -1
- package/src/shiki/themes/catppuccin-mocha.js +0 -1
- package/src/shiki/themes/dark-plus.js +0 -1
- package/src/shiki/themes/dracula-soft.js +0 -1
- package/src/shiki/themes/dracula.js +0 -1
- package/src/shiki/themes/everforest-dark.js +0 -1
- package/src/shiki/themes/everforest-light.js +0 -1
- package/src/shiki/themes/github-dark-default.js +0 -1
- package/src/shiki/themes/github-dark-dimmed.js +0 -1
- package/src/shiki/themes/github-dark-high-contrast.js +0 -1
- package/src/shiki/themes/github-dark.js +0 -1
- package/src/shiki/themes/github-light-default.js +0 -1
- package/src/shiki/themes/github-light-high-contrast.js +0 -1
- package/src/shiki/themes/github-light.js +0 -1
- package/src/shiki/themes/gruvbox-dark-hard.js +0 -1
- package/src/shiki/themes/gruvbox-dark-medium.js +0 -1
- package/src/shiki/themes/gruvbox-dark-soft.js +0 -1
- package/src/shiki/themes/gruvbox-light-hard.js +0 -1
- package/src/shiki/themes/gruvbox-light-medium.js +0 -1
- package/src/shiki/themes/gruvbox-light-soft.js +0 -1
- package/src/shiki/themes/houston.js +0 -1
- package/src/shiki/themes/kanagawa-dragon.js +0 -1
- package/src/shiki/themes/kanagawa-lotus.js +0 -1
- package/src/shiki/themes/kanagawa-wave.js +0 -1
- package/src/shiki/themes/laserwave.js +0 -1
- package/src/shiki/themes/light-plus.js +0 -1
- package/src/shiki/themes/material-theme-darker.js +0 -1
- package/src/shiki/themes/material-theme-lighter.js +0 -1
- package/src/shiki/themes/material-theme-ocean.js +0 -1
- package/src/shiki/themes/material-theme-palenight.js +0 -1
- package/src/shiki/themes/material-theme.js +0 -1
- package/src/shiki/themes/min-dark.js +0 -1
- package/src/shiki/themes/min-light.js +0 -1
- package/src/shiki/themes/monokai.js +0 -1
- package/src/shiki/themes/night-owl.js +0 -1
- package/src/shiki/themes/nord.js +0 -1
- package/src/shiki/themes/one-dark-pro.js +0 -1
- package/src/shiki/themes/one-light.js +0 -1
- package/src/shiki/themes/plastic.js +0 -1
- package/src/shiki/themes/poimandres.js +0 -1
- package/src/shiki/themes/red.js +0 -1
- package/src/shiki/themes/rose-pine-dawn.js +0 -1
- package/src/shiki/themes/rose-pine-moon.js +0 -1
- package/src/shiki/themes/rose-pine.js +0 -1
- package/src/shiki/themes/slack-dark.js +0 -1
- package/src/shiki/themes/slack-ochin.js +0 -1
- package/src/shiki/themes/snazzy-light.js +0 -1
- package/src/shiki/themes/solarized-dark.js +0 -1
- package/src/shiki/themes/solarized-light.js +0 -1
- package/src/shiki/themes/synthwave-84.js +0 -1
- package/src/shiki/themes/tokyo-night.js +0 -1
- package/src/shiki/themes/vesper.js +0 -1
- package/src/shiki/themes/vitesse-black.js +0 -1
- package/src/shiki/themes/vitesse-dark.js +0 -1
- package/src/shiki/themes/vitesse-light.js +0 -1
package/lib/zudoku.components.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import "./RouteGuard-
|
|
2
|
-
import "./index
|
|
3
|
-
import "./chunk-BAXFHI7N-
|
|
4
|
-
import "./hook-
|
|
5
|
-
import "./SlotletProvider-
|
|
6
|
-
import { e as d, f as k, n as l, B as S, C as h, j as B, l as c, H as E, d as H, L, M, g as R, R as Z, S as f, k as g, i as y, Z as A, a as b, h as j, c as v, m as w, b as x } from "./index-
|
|
1
|
+
import "./RouteGuard-DRtEu9nh.js";
|
|
2
|
+
import "./index-DwT-v3zK.js";
|
|
3
|
+
import "./chunk-BAXFHI7N-BVBOl9s0.js";
|
|
4
|
+
import "./hook-CldJlP5c.js";
|
|
5
|
+
import "./SlotletProvider-CS_nO-XT.js";
|
|
6
|
+
import { e as d, f as k, n as l, B as S, C as h, j as B, l as c, H as E, d as H, L, M, g as R, R as Z, S as f, k as g, i as y, Z as A, a as b, h as j, c as v, m as w, b as x } from "./index-DnQftvP4.js";
|
|
7
7
|
import "./ui/Button.js";
|
|
8
8
|
import "./ui/Callout.js";
|
|
9
9
|
import "./ClientOnly-E7hGysn1.js";
|
|
10
|
-
import "./Markdown-
|
|
10
|
+
import "./Markdown-mFpg_n9p.js";
|
|
11
11
|
import "./Spinner-mNLZ6awP.js";
|
|
12
12
|
export {
|
|
13
13
|
d as Bootstrap,
|
package/lib/zudoku.hooks.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { z as f } from "./index
|
|
1
|
+
import { z as f } from "./index-DwT-v3zK.js";
|
|
2
2
|
import { useState as m, useEffect as i } from "react";
|
|
3
|
-
import { e as a } from "./hook-
|
|
3
|
+
import { e as a } from "./hook-CldJlP5c.js";
|
|
4
4
|
function d(e, t) {
|
|
5
5
|
const s = a(), [n, o] = m();
|
|
6
6
|
return i(() => s.addEventListener(e, (...u) => {
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { s as
|
|
3
|
-
import { d as b, m as x } from "./chunk-BAXFHI7N-
|
|
4
|
-
import { u as j, d as y, f as
|
|
5
|
-
import { H as v } from "./RouteGuard-
|
|
6
|
-
import { L as N } from "./index-
|
|
7
|
-
import { H as S, M as w } from "./Markdown-
|
|
1
|
+
import { j as s } from "./jsx-runtime-C5mzlN2N.js";
|
|
2
|
+
import { s as h } from "./index-LNp6rxyU.js";
|
|
3
|
+
import { d as b, m as x } from "./chunk-BAXFHI7N-BVBOl9s0.js";
|
|
4
|
+
import { u as j, d as y, f as p } from "./hook-CldJlP5c.js";
|
|
5
|
+
import { H as v } from "./RouteGuard-DRtEu9nh.js";
|
|
6
|
+
import { L as N } from "./index-DnQftvP4.js";
|
|
7
|
+
import { H as S, M as w } from "./Markdown-mFpg_n9p.js";
|
|
8
8
|
const H = ({
|
|
9
9
|
items: r,
|
|
10
10
|
filterCatalogItems: o = (n) => n,
|
|
11
|
-
label:
|
|
11
|
+
label: d = "API Library",
|
|
12
12
|
categoryLabel: a
|
|
13
13
|
}) => {
|
|
14
|
-
const n = j(),
|
|
14
|
+
const n = j(), i = b({ path: "/catalog/:category" }), t = i == null ? void 0 : i.params.category, l = y({
|
|
15
15
|
queryFn: () => o(r, { auth: n }),
|
|
16
16
|
queryKey: ["catalogItems", n]
|
|
17
|
-
}),
|
|
18
|
-
return /* @__PURE__ */
|
|
19
|
-
/* @__PURE__ */
|
|
17
|
+
}), m = t ? { "data-pagefind-ignore": "all" } : {};
|
|
18
|
+
return /* @__PURE__ */ s.jsxs("section", { className: "pt-[--padding-content-top]", ...m, children: [
|
|
19
|
+
/* @__PURE__ */ s.jsx(v, { children: /* @__PURE__ */ s.jsxs("title", { children: [
|
|
20
20
|
a ? `${a} - ` : "",
|
|
21
|
-
|
|
21
|
+
d
|
|
22
22
|
] }) }),
|
|
23
|
-
/* @__PURE__ */
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
|
|
23
|
+
/* @__PURE__ */ s.jsxs("div", { className: "grid gap-4", children: [
|
|
24
|
+
/* @__PURE__ */ s.jsxs(S, { level: 2, children: [
|
|
25
|
+
d,
|
|
26
26
|
a && ` - ${a}`
|
|
27
27
|
] }),
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
-
(e) => !
|
|
30
|
-
(
|
|
28
|
+
/* @__PURE__ */ s.jsx("div", { className: "grid grid-cols-2 gap-4", children: l.data.filter(
|
|
29
|
+
(e) => !t || e.categories.find(
|
|
30
|
+
(c) => c.tags.find((u) => f(c.label, u) === t)
|
|
31
31
|
)
|
|
32
|
-
).map((e) => /* @__PURE__ */
|
|
32
|
+
).map((e) => /* @__PURE__ */ s.jsx(
|
|
33
33
|
N,
|
|
34
34
|
{
|
|
35
|
-
to:
|
|
35
|
+
to: p(e.path),
|
|
36
36
|
className: "no-underline hover:!text-foreground",
|
|
37
|
-
children: /* @__PURE__ */
|
|
38
|
-
/* @__PURE__ */
|
|
39
|
-
/* @__PURE__ */
|
|
37
|
+
children: /* @__PURE__ */ s.jsxs("div", { className: "border h-full rounded-lg p-4 flex flex-col gap-2 cursor-pointer hover:bg-border/20 font-normal", children: [
|
|
38
|
+
/* @__PURE__ */ s.jsx("span", { className: "font-semibold", children: e.label }),
|
|
39
|
+
/* @__PURE__ */ s.jsx(
|
|
40
40
|
w,
|
|
41
41
|
{
|
|
42
42
|
className: "text-sm whitespace-pre-wrap mb-6 line-clamp-2",
|
|
@@ -49,58 +49,58 @@ const H = ({
|
|
|
49
49
|
)) })
|
|
50
50
|
] })
|
|
51
51
|
] });
|
|
52
|
-
},
|
|
52
|
+
}, f = (r, o) => h(`${r}-${o}`), A = ({
|
|
53
53
|
navigationId: r,
|
|
54
54
|
items: o,
|
|
55
|
-
label:
|
|
55
|
+
label: d,
|
|
56
56
|
categories: a = [],
|
|
57
57
|
filterCatalogItems: n
|
|
58
58
|
}) => {
|
|
59
|
-
const
|
|
59
|
+
const i = Object.fromEntries(
|
|
60
60
|
a.flatMap(
|
|
61
|
-
(
|
|
62
|
-
|
|
61
|
+
(t) => [void 0, ...t.tags].map((l) => [
|
|
62
|
+
p(r, l ? f(t.label, l) : void 0),
|
|
63
63
|
l
|
|
64
64
|
])
|
|
65
65
|
)
|
|
66
66
|
);
|
|
67
67
|
return {
|
|
68
|
-
getSidebar: async (
|
|
69
|
-
if (!Object.keys(
|
|
70
|
-
(e) => x(e,
|
|
68
|
+
getSidebar: async (t) => {
|
|
69
|
+
if (!Object.keys(i).some(
|
|
70
|
+
(e) => x(e, t)
|
|
71
71
|
))
|
|
72
72
|
return [];
|
|
73
|
-
const
|
|
73
|
+
const m = a.map((e) => ({
|
|
74
74
|
type: "category",
|
|
75
75
|
label: e.label,
|
|
76
76
|
collapsible: !1,
|
|
77
|
-
items: e.tags.map((
|
|
77
|
+
items: e.tags.map((c) => ({
|
|
78
78
|
type: "doc",
|
|
79
|
-
id:
|
|
80
|
-
label:
|
|
79
|
+
id: p(r, f(e.label, c)),
|
|
80
|
+
label: c,
|
|
81
81
|
badge: {
|
|
82
82
|
label: String(
|
|
83
83
|
o.filter(
|
|
84
|
-
(
|
|
84
|
+
(u) => u.categories.find((g) => g.tags.includes(c))
|
|
85
85
|
).length
|
|
86
86
|
),
|
|
87
87
|
color: "outline"
|
|
88
88
|
}
|
|
89
89
|
}))
|
|
90
90
|
}));
|
|
91
|
-
return
|
|
91
|
+
return m.unshift({
|
|
92
92
|
type: "doc",
|
|
93
|
-
id:
|
|
93
|
+
id: p(r),
|
|
94
94
|
label: "Overview",
|
|
95
95
|
badge: { label: String(o.length), color: "outline" }
|
|
96
|
-
}),
|
|
96
|
+
}), m;
|
|
97
97
|
},
|
|
98
|
-
getRoutes: () => Object.entries(
|
|
99
|
-
path:
|
|
100
|
-
element: /* @__PURE__ */
|
|
98
|
+
getRoutes: () => Object.entries(i).map(([t, l]) => ({
|
|
99
|
+
path: t,
|
|
100
|
+
element: /* @__PURE__ */ s.jsx(
|
|
101
101
|
H,
|
|
102
102
|
{
|
|
103
|
-
label:
|
|
103
|
+
label: d,
|
|
104
104
|
categoryLabel: l,
|
|
105
105
|
items: o,
|
|
106
106
|
filterCatalogItems: n,
|
|
@@ -112,6 +112,6 @@ const H = ({
|
|
|
112
112
|
};
|
|
113
113
|
export {
|
|
114
114
|
A as apiCatalogPlugin,
|
|
115
|
-
|
|
115
|
+
f as getKey
|
|
116
116
|
};
|
|
117
117
|
//# sourceMappingURL=zudoku.plugin-api-catalog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zudoku.plugin-api-catalog.js","sources":["../src/lib/plugins/api-catalog/Catalog.tsx","../src/lib/plugins/api-catalog/index.tsx"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { useMatch } from \"react-router\";\nimport { Link } from \"zudoku/components\";\nimport { useAuthState } from \"../../authentication/state.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Markdown } from \"../../components/Markdown.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { type ApiCatalogPluginOptions, getKey } from \"./index.js\";\n\nexport const Catalog = ({\n items,\n filterCatalogItems = (items) => items,\n label = \"API Library\",\n categoryLabel,\n}: Omit<ApiCatalogPluginOptions, \"navigationId\"> & {\n categoryLabel?: string;\n}) => {\n const auth = useAuthState();\n const match = useMatch({ path: \"/catalog/:category\" });\n const activeCategory = match?.params.category;\n\n const catalogItems = useSuspenseQuery({\n queryFn: () => filterCatalogItems(items, { auth }),\n queryKey: [\"catalogItems\", auth],\n });\n\n // Only index the overview page, ignore the rest\n const dataSet = activeCategory ? { \"data-pagefind-ignore\": \"all\" } : {};\n\n return (\n <section className=\"pt-[--padding-content-top]\" {...dataSet}>\n <Helmet>\n <title>\n {categoryLabel ? `${categoryLabel} - ` : \"\"}\n {label}\n </title>\n </Helmet>\n <div className=\"grid gap-4\">\n <Heading level={2}>\n {label}\n {categoryLabel && ` - ${categoryLabel}`}\n </Heading>\n\n <div className=\"grid grid-cols-2 gap-4\">\n {catalogItems.data\n .filter(\n (api) =>\n !activeCategory ||\n api.categories.find((c) =>\n c.tags.find((t) => getKey(c.label, t) === activeCategory),\n ),\n )\n .map((api) => (\n <Link\n to={joinUrl(api.path)}\n className=\"no-underline hover:!text-foreground\"\n key={api.path}\n >\n <div className=\"border h-full rounded-lg p-4 flex flex-col gap-2 cursor-pointer hover:bg-border/20 font-normal\">\n <span className=\"font-semibold\">{api.label}</span>\n <Markdown\n className=\"text-sm whitespace-pre-wrap mb-6 line-clamp-2\"\n content={api.description}\n />\n </div>\n </Link>\n ))}\n </div>\n </div>\n </section>\n );\n};\n","import slugify from \"@sindresorhus/slugify\";\nimport { matchPath } from \"react-router\";\nimport type { SidebarItem } from \"../../../config/validators/SidebarSchema.js\";\nimport type { AuthState } from \"../../authentication/state.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { Catalog } from \"./Catalog.js\";\n\nexport const getKey = (category: string, tag: string) =>\n slugify(`${category}-${tag}`);\n\nexport type ApiCatalogItem = {\n path: string;\n label: string;\n description: string;\n categories: CatalogCategory[];\n};\n\nexport type CatalogCategory = {\n label: string;\n tags: string[];\n};\n\nexport type ApiCatalogPluginOptions = {\n navigationId: string;\n label: string;\n categories?: CatalogCategory[];\n items: ApiCatalogItem[];\n filterCatalogItems?: filterCatalogItems;\n};\n\nexport type CatalogContext<ProviderData = unknown> = {\n auth: AuthState<ProviderData>;\n};\n\nexport type filterCatalogItems<ProviderData = unknown> = (\n items: ApiCatalogItem[],\n { auth }: CatalogContext<ProviderData>,\n) => ApiCatalogItem[];\n\nexport const apiCatalogPlugin = ({\n navigationId,\n items,\n label,\n categories = [],\n filterCatalogItems,\n}: {\n navigationId: string;\n label: string;\n categories?: CatalogCategory[];\n items: ApiCatalogItem[];\n filterCatalogItems?: filterCatalogItems;\n}): ZudokuPlugin => {\n const paths = Object.fromEntries(\n categories.flatMap((category) =>\n [undefined, ...category.tags].map((tag) => [\n joinUrl(navigationId, tag ? getKey(category.label, tag) : undefined),\n tag,\n ]),\n ),\n );\n\n return {\n getSidebar: async (currentPath) => {\n const matches = Object.keys(paths).some((path) =>\n matchPath(path, currentPath),\n );\n\n if (!matches) {\n return [];\n }\n\n const sidebar: SidebarItem[] = categories.map((category) => ({\n type: \"category\" as const,\n label: category.label,\n collapsible: false,\n items: category.tags.map((tag) => ({\n type: \"doc\" as const,\n id: joinUrl(navigationId, getKey(category.label, tag)),\n label: tag,\n badge: {\n label: String(\n items.filter((api) =>\n api.categories.find((c) => c.tags.includes(tag)),\n ).length,\n ),\n color: \"outline\" as const,\n },\n })),\n }));\n\n sidebar.unshift({\n type: \"doc\" as const,\n id: joinUrl(navigationId),\n label: \"Overview\",\n badge: { label: String(items.length), color: \"outline\" as const },\n });\n\n return sidebar;\n },\n getRoutes: () =>\n Object.entries(paths).map(([path, tag]) => ({\n path,\n element: (\n <Catalog\n label={label}\n categoryLabel={tag}\n items={items}\n filterCatalogItems={filterCatalogItems}\n categories={categories}\n />\n ),\n })),\n };\n};\n"],"names":["Catalog","items","filterCatalogItems","label","categoryLabel","auth","useAuthState","
|
|
1
|
+
{"version":3,"file":"zudoku.plugin-api-catalog.js","sources":["../src/lib/plugins/api-catalog/Catalog.tsx","../src/lib/plugins/api-catalog/index.tsx"],"sourcesContent":["import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { useMatch } from \"react-router\";\nimport { Link } from \"zudoku/components\";\nimport { useAuthState } from \"../../authentication/state.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Markdown } from \"../../components/Markdown.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { type ApiCatalogPluginOptions, getKey } from \"./index.js\";\n\nexport const Catalog = ({\n items,\n filterCatalogItems = (items) => items,\n label = \"API Library\",\n categoryLabel,\n}: Omit<ApiCatalogPluginOptions, \"navigationId\"> & {\n categoryLabel?: string;\n}) => {\n const auth = useAuthState();\n const match = useMatch({ path: \"/catalog/:category\" });\n const activeCategory = match?.params.category;\n\n const catalogItems = useSuspenseQuery({\n queryFn: () => filterCatalogItems(items, { auth }),\n queryKey: [\"catalogItems\", auth],\n });\n\n // Only index the overview page, ignore the rest\n const dataSet = activeCategory ? { \"data-pagefind-ignore\": \"all\" } : {};\n\n return (\n <section className=\"pt-[--padding-content-top]\" {...dataSet}>\n <Helmet>\n <title>\n {categoryLabel ? `${categoryLabel} - ` : \"\"}\n {label}\n </title>\n </Helmet>\n <div className=\"grid gap-4\">\n <Heading level={2}>\n {label}\n {categoryLabel && ` - ${categoryLabel}`}\n </Heading>\n\n <div className=\"grid grid-cols-2 gap-4\">\n {catalogItems.data\n .filter(\n (api) =>\n !activeCategory ||\n api.categories.find((c) =>\n c.tags.find((t) => getKey(c.label, t) === activeCategory),\n ),\n )\n .map((api) => (\n <Link\n to={joinUrl(api.path)}\n className=\"no-underline hover:!text-foreground\"\n key={api.path}\n >\n <div className=\"border h-full rounded-lg p-4 flex flex-col gap-2 cursor-pointer hover:bg-border/20 font-normal\">\n <span className=\"font-semibold\">{api.label}</span>\n <Markdown\n className=\"text-sm whitespace-pre-wrap mb-6 line-clamp-2\"\n content={api.description}\n />\n </div>\n </Link>\n ))}\n </div>\n </div>\n </section>\n );\n};\n","import slugify from \"@sindresorhus/slugify\";\nimport { matchPath } from \"react-router\";\nimport type { SidebarItem } from \"../../../config/validators/SidebarSchema.js\";\nimport type { AuthState } from \"../../authentication/state.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { Catalog } from \"./Catalog.js\";\n\nexport const getKey = (category: string, tag: string) =>\n slugify(`${category}-${tag}`);\n\nexport type ApiCatalogItem = {\n path: string;\n label: string;\n description: string;\n categories: CatalogCategory[];\n};\n\nexport type CatalogCategory = {\n label: string;\n tags: string[];\n};\n\nexport type ApiCatalogPluginOptions = {\n navigationId: string;\n label: string;\n categories?: CatalogCategory[];\n items: ApiCatalogItem[];\n filterCatalogItems?: filterCatalogItems;\n};\n\nexport type CatalogContext<ProviderData = unknown> = {\n auth: AuthState<ProviderData>;\n};\n\nexport type filterCatalogItems<ProviderData = unknown> = (\n items: ApiCatalogItem[],\n { auth }: CatalogContext<ProviderData>,\n) => ApiCatalogItem[];\n\nexport const apiCatalogPlugin = ({\n navigationId,\n items,\n label,\n categories = [],\n filterCatalogItems,\n}: {\n navigationId: string;\n label: string;\n categories?: CatalogCategory[];\n items: ApiCatalogItem[];\n filterCatalogItems?: filterCatalogItems;\n}): ZudokuPlugin => {\n const paths = Object.fromEntries(\n categories.flatMap((category) =>\n [undefined, ...category.tags].map((tag) => [\n joinUrl(navigationId, tag ? getKey(category.label, tag) : undefined),\n tag,\n ]),\n ),\n );\n\n return {\n getSidebar: async (currentPath) => {\n const matches = Object.keys(paths).some((path) =>\n matchPath(path, currentPath),\n );\n\n if (!matches) {\n return [];\n }\n\n const sidebar: SidebarItem[] = categories.map((category) => ({\n type: \"category\" as const,\n label: category.label,\n collapsible: false,\n items: category.tags.map((tag) => ({\n type: \"doc\" as const,\n id: joinUrl(navigationId, getKey(category.label, tag)),\n label: tag,\n badge: {\n label: String(\n items.filter((api) =>\n api.categories.find((c) => c.tags.includes(tag)),\n ).length,\n ),\n color: \"outline\" as const,\n },\n })),\n }));\n\n sidebar.unshift({\n type: \"doc\" as const,\n id: joinUrl(navigationId),\n label: \"Overview\",\n badge: { label: String(items.length), color: \"outline\" as const },\n });\n\n return sidebar;\n },\n getRoutes: () =>\n Object.entries(paths).map(([path, tag]) => ({\n path,\n element: (\n <Catalog\n label={label}\n categoryLabel={tag}\n items={items}\n filterCatalogItems={filterCatalogItems}\n categories={categories}\n />\n ),\n })),\n };\n};\n"],"names":["Catalog","items","filterCatalogItems","label","categoryLabel","auth","useAuthState","match","useMatch","activeCategory","catalogItems","useSuspenseQuery","dataSet","jsxs","jsx","Helmet","Heading","api","t","getKey","Link","joinUrl","Markdown","category","tag","slugify","apiCatalogPlugin","navigationId","categories","paths","currentPath","path","matchPath","sidebar","c"],"mappings":";;;;;;;AAUO,MAAMA,IAAU,CAAC;AAAA,EACtB,OAAAC;AAAA,EACA,oBAAAC,IAAqB,CAACD,MAAUA;AAAAA,EAChC,OAAAE,IAAQ;AAAA,EACR,eAAAC;AACF,MAEM;AACJ,QAAMC,IAAOC,EAAa,GACpBC,IAAQC,EAAS,EAAE,MAAM,sBAAsB,GAC/CC,IAAiBF,KAAA,gBAAAA,EAAO,OAAO,UAE/BG,IAAeC,EAAiB;AAAA,IACpC,SAAS,MAAMT,EAAmBD,GAAO,EAAE,MAAAI,GAAM;AAAA,IACjD,UAAU,CAAC,gBAAgBA,CAAI;AAAA,EAAA,CAChC,GAGKO,IAAUH,IAAiB,EAAE,wBAAwB,UAAU,CAAC;AAEtE,SACGI,gBAAAA,EAAAA,KAAA,WAAA,EAAQ,WAAU,8BAA8B,GAAGD,GAClD,UAAA;AAAA,IAACE,gBAAAA,EAAA,IAAAC,GAAA,EACC,iCAAC,SACE,EAAA,UAAA;AAAA,MAAgBX,IAAA,GAAGA,CAAa,QAAQ;AAAA,MACxCD;AAAA,IAAA,EAAA,CACH,EACF,CAAA;AAAA,IACAU,gBAAAA,EAAAA,KAAC,OAAI,EAAA,WAAU,cACb,UAAA;AAAA,MAACA,gBAAAA,EAAAA,KAAAG,GAAA,EAAQ,OAAO,GACb,UAAA;AAAA,QAAAb;AAAA,QACAC,KAAiB,MAAMA,CAAa;AAAA,MAAA,GACvC;AAAA,MAECU,gBAAAA,EAAA,IAAA,OAAA,EAAI,WAAU,0BACZ,YAAa,KACX;AAAA,QACC,CAACG,MACC,CAACR,KACDQ,EAAI,WAAW;AAAA,UAAK,CAAC,MACnB,EAAE,KAAK,KAAK,CAACC,MAAMC,EAAO,EAAE,OAAOD,CAAC,MAAMT,CAAc;AAAA,QAAA;AAAA,MAC1D,EAEH,IAAI,CAACQ,MACJH,gBAAAA,EAAA;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,IAAIC,EAAQJ,EAAI,IAAI;AAAA,UACpB,WAAU;AAAA,UAGV,UAAAJ,gBAAAA,EAAA,KAAC,OAAI,EAAA,WAAU,kGACb,UAAA;AAAA,YAAAC,gBAAAA,EAAA,IAAC,QAAK,EAAA,WAAU,iBAAiB,UAAAG,EAAI,OAAM;AAAA,YAC3CH,gBAAAA,EAAA;AAAA,cAACQ;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAASL,EAAI;AAAA,cAAA;AAAA,YAAA;AAAA,UACf,EACF,CAAA;AAAA,QAAA;AAAA,QARKA,EAAI;AAAA,MAAA,CAUZ,EACL,CAAA;AAAA,IAAA,EACF,CAAA;AAAA,EAAA,GACF;AAEJ,GChEaE,IAAS,CAACI,GAAkBC,MACvCC,EAAQ,GAAGF,CAAQ,IAAIC,CAAG,EAAE,GA+BjBE,IAAmB,CAAC;AAAA,EAC/B,cAAAC;AAAA,EACA,OAAA1B;AAAA,EACA,OAAAE;AAAA,EACA,YAAAyB,IAAa,CAAC;AAAA,EACd,oBAAA1B;AACF,MAMoB;AAClB,QAAM2B,IAAQ,OAAO;AAAA,IACnBD,EAAW;AAAA,MAAQ,CAACL,MAClB,CAAC,QAAW,GAAGA,EAAS,IAAI,EAAE,IAAI,CAACC,MAAQ;AAAA,QACzCH,EAAQM,GAAcH,IAAML,EAAOI,EAAS,OAAOC,CAAG,IAAI,MAAS;AAAA,QACnEA;AAAA,MACD,CAAA;AAAA,IAAA;AAAA,EAEL;AAEO,SAAA;AAAA,IACL,YAAY,OAAOM,MAAgB;AAKjC,UAAI,CAJY,OAAO,KAAKD,CAAK,EAAE;AAAA,QAAK,CAACE,MACvCC,EAAUD,GAAMD,CAAW;AAAA,MAC7B;AAGE,eAAO,CAAC;AAGV,YAAMG,IAAyBL,EAAW,IAAI,CAACL,OAAc;AAAA,QAC3D,MAAM;AAAA,QACN,OAAOA,EAAS;AAAA,QAChB,aAAa;AAAA,QACb,OAAOA,EAAS,KAAK,IAAI,CAACC,OAAS;AAAA,UACjC,MAAM;AAAA,UACN,IAAIH,EAAQM,GAAcR,EAAOI,EAAS,OAAOC,CAAG,CAAC;AAAA,UACrD,OAAOA;AAAA,UACP,OAAO;AAAA,YACL,OAAO;AAAA,cACLvB,EAAM;AAAA,gBAAO,CAACgB,MACZA,EAAI,WAAW,KAAK,CAACiB,MAAMA,EAAE,KAAK,SAASV,CAAG,CAAC;AAAA,cAAA,EAC/C;AAAA,YACJ;AAAA,YACA,OAAO;AAAA,UAAA;AAAA,QACT,EACA;AAAA,MAAA,EACF;AAEF,aAAAS,EAAQ,QAAQ;AAAA,QACd,MAAM;AAAA,QACN,IAAIZ,EAAQM,CAAY;AAAA,QACxB,OAAO;AAAA,QACP,OAAO,EAAE,OAAO,OAAO1B,EAAM,MAAM,GAAG,OAAO,UAAmB;AAAA,MAAA,CACjE,GAEMgC;AAAA,IACT;AAAA,IACA,WAAW,MACT,OAAO,QAAQJ,CAAK,EAAE,IAAI,CAAC,CAACE,GAAMP,CAAG,OAAO;AAAA,MAC1C,MAAAO;AAAA,MACA,SACEjB,gBAAAA,EAAA;AAAA,QAACd;AAAA,QAAA;AAAA,UACC,OAAAG;AAAA,UACA,eAAeqB;AAAA,UACf,OAAAvB;AAAA,UACA,oBAAAC;AAAA,UACA,YAAA0B;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,EAEF;AAAA,EACN;AACF;"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { j as e } from "./jsx-runtime-C5mzlN2N.js";
|
|
2
2
|
import { RotateCwIcon as j, TrashIcon as v, EyeOffIcon as w, EyeIcon as K, CheckIcon as b, CopyIcon as k, FileKey2Icon as N } from "lucide-react";
|
|
3
|
-
import { D as I, S as x, R as S } from "./SlotletProvider-
|
|
4
|
-
import { i as c } from "./invariant-
|
|
5
|
-
import { e as h, g, l as A, d as C } from "./hook-
|
|
6
|
-
import { u as d, S as E, a as P, b as D, c as q, d as R, e as p } from "./Select-
|
|
3
|
+
import { D as I, S as x, R as S } from "./SlotletProvider-CS_nO-XT.js";
|
|
4
|
+
import { i as c } from "./invariant-Caa8-XvF.js";
|
|
5
|
+
import { e as h, g, l as A, d as C } from "./hook-CldJlP5c.js";
|
|
6
|
+
import { u as d, S as E, a as P, b as D, c as q, d as R, e as p } from "./Select-CT64Ou40.js";
|
|
7
7
|
import { a as O } from "./index.esm-D2ZUREQN.js";
|
|
8
|
-
import { a as z, L as u, O as F } from "./chunk-BAXFHI7N-
|
|
8
|
+
import { a as z, L as u, O as F } from "./chunk-BAXFHI7N-BVBOl9s0.js";
|
|
9
9
|
import { Button as l } from "./ui/Button.js";
|
|
10
10
|
import { Input as T } from "./ui/Input.js";
|
|
11
11
|
import { useState as y } from "react";
|
|
12
|
-
import { c as L } from "./cn-
|
|
12
|
+
import { c as L } from "./cn-qaFjX9_3.js";
|
|
13
13
|
const V = ({ service: t }) => {
|
|
14
14
|
const n = h(), i = g(), r = z(), a = O({
|
|
15
15
|
defaultValues: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { j as o } from "./jsx-runtime-C5mzlN2N.js";
|
|
2
2
|
import a from "react";
|
|
3
|
-
import { P as n } from "./Markdown-
|
|
4
|
-
import { c } from "./cn-
|
|
5
|
-
import { u as p } from "./useExposedProps-
|
|
3
|
+
import { P as n } from "./Markdown-mFpg_n9p.js";
|
|
4
|
+
import { c } from "./cn-qaFjX9_3.js";
|
|
5
|
+
import { u as p } from "./useExposedProps-DbIZXspi.js";
|
|
6
6
|
const u = ({
|
|
7
7
|
element: t,
|
|
8
8
|
render: s,
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
var h = Object.defineProperty;
|
|
2
|
+
var g = (e, t, o) => t in e ? h(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o;
|
|
3
|
+
var c = (e, t, o) => g(e, typeof t != "symbol" ? t + "" : t, o);
|
|
4
|
+
import { j as d } from "./jsx-runtime-C5mzlN2N.js";
|
|
5
|
+
const m = "/pages/**/*.{md,mdx}";
|
|
6
|
+
class w {
|
|
4
7
|
constructor(t) {
|
|
8
|
+
c(this, "fileMap", /* @__PURE__ */ new Map());
|
|
5
9
|
this.config = t;
|
|
6
10
|
}
|
|
7
|
-
fileMap = /* @__PURE__ */ new Map();
|
|
8
11
|
/**
|
|
9
12
|
* Gets the default docs config from the zudoku config
|
|
10
13
|
*/
|
|
11
14
|
getDocsConfigs() {
|
|
12
|
-
return this.config.docs ? Array.isArray(this.config.docs) ? this.config.docs : [this.config.docs] : [{ files:
|
|
15
|
+
return this.config.docs ? Array.isArray(this.config.docs) ? this.config.docs : [this.config.docs] : [{ files: m }];
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
18
|
* Gets the root directory from a files glob
|
|
@@ -29,47 +32,47 @@ class g {
|
|
|
29
32
|
filesGlob: t,
|
|
30
33
|
fsPath: o
|
|
31
34
|
}) {
|
|
32
|
-
const
|
|
33
|
-
return
|
|
35
|
+
const n = this.getRootDir(t), a = new RegExp(`^${n}(.*).mdx?`), s = o.match(a);
|
|
36
|
+
return s == null ? void 0 : s.at(1);
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
|
-
const
|
|
39
|
+
const P = (e) => ({
|
|
37
40
|
getRoutes: () => {
|
|
38
41
|
const t = /* @__PURE__ */ new Map();
|
|
39
|
-
return
|
|
40
|
-
({ fileImports: o, files:
|
|
41
|
-
const
|
|
42
|
-
filesGlob:
|
|
42
|
+
return e.forEach(
|
|
43
|
+
({ fileImports: o, files: n, defaultOptions: a }) => Object.entries(o).flatMap(([s, i]) => {
|
|
44
|
+
const r = w.resolveRoutePath({
|
|
45
|
+
filesGlob: n,
|
|
43
46
|
fsPath: s
|
|
44
47
|
});
|
|
45
|
-
if (!
|
|
46
|
-
if (t.has(
|
|
48
|
+
if (!r) return [];
|
|
49
|
+
if (t.has(r))
|
|
47
50
|
return console.warn(
|
|
48
|
-
`Duplicate route path found for ${
|
|
51
|
+
`Duplicate route path found for ${r}. Skipping file at '${s}'.`
|
|
49
52
|
), [];
|
|
50
|
-
const
|
|
51
|
-
path:
|
|
53
|
+
const u = {
|
|
54
|
+
path: r,
|
|
52
55
|
lazy: async () => {
|
|
53
|
-
const { MdxPage:
|
|
56
|
+
const { MdxPage: p } = await import("./MdxPage-Cm7atiW3.js"), { default: f, ...l } = await i();
|
|
54
57
|
return {
|
|
55
|
-
element: /* @__PURE__ */
|
|
56
|
-
|
|
58
|
+
element: /* @__PURE__ */ d.jsx(
|
|
59
|
+
p,
|
|
57
60
|
{
|
|
58
61
|
file: s,
|
|
59
|
-
mdxComponent:
|
|
60
|
-
...
|
|
61
|
-
defaultOptions:
|
|
62
|
+
mdxComponent: f,
|
|
63
|
+
...l,
|
|
64
|
+
defaultOptions: a
|
|
62
65
|
}
|
|
63
66
|
)
|
|
64
67
|
};
|
|
65
68
|
}
|
|
66
69
|
};
|
|
67
|
-
t.set(
|
|
70
|
+
t.set(r, u);
|
|
68
71
|
})
|
|
69
72
|
), [...t.values()];
|
|
70
73
|
}
|
|
71
74
|
});
|
|
72
75
|
export {
|
|
73
|
-
|
|
76
|
+
P as markdownPlugin
|
|
74
77
|
};
|
|
75
78
|
//# sourceMappingURL=zudoku.plugin-markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zudoku.plugin-markdown.js","sources":["../src/lib/plugins/markdown/resolver.ts","../src/lib/plugins/markdown/index.tsx"],"sourcesContent":["import { ZudokuDocsConfig } from \"../../../config/validators/common.js\";\nimport { ZudokuConfig } from \"../../../config/validators/validate.js\";\n\nconst DEFAULT_DOCS_FILES = \"/pages/**/*.{md,mdx}\";\n\n/**\n * Utilities for resolving markdown file paths and routes\n */\nexport class DocResolver {\n constructor(private config: ZudokuConfig) {}\n\n fileMap = new Map<string, string>();\n\n /**\n * Gets the default docs config from the zudoku config\n */\n getDocsConfigs() {\n const docsConfigs: ZudokuDocsConfig[] = this.config.docs\n ? Array.isArray(this.config.docs)\n ? this.config.docs\n : [this.config.docs]\n : [{ files: DEFAULT_DOCS_FILES }];\n\n return docsConfigs;\n }\n\n /**\n * Gets the root directory from a files glob\n */\n private static getRootDir(filesGlob: string) {\n let rootDir = filesGlob.split(\"**\")[0];\n if (!rootDir) {\n throw new Error(\"Invalid files glob. Must have '**' in the path.\");\n }\n rootDir = rootDir.replace(\"/**\", \"/\");\n return rootDir;\n }\n\n /**\n * Resolves the route path for a given file system path\n * @param options - The options to resolve the route path\n * @returns The string route path\n */\n static resolveRoutePath({\n filesGlob,\n fsPath,\n }: {\n filesGlob: string;\n fsPath: string;\n }) {\n const rootDir = this.getRootDir(filesGlob);\n const re = new RegExp(`^${rootDir}(.*).mdx?`);\n const match = fsPath.match(re);\n const routePath = match?.at(1);\n return routePath;\n }\n}\n","import type { Toc } from \"@stefanprobst/rehype-extract-toc\";\nimport type { MDXProps } from \"mdx/types.js\";\nimport { type JSX } from \"react\";\nimport { RouteObject } from \"react-router\";\nimport { ZudokuDocsConfig } from \"../../../config/validators/common.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { DocResolver } from \"./resolver.js\";\n\nexport interface MarkdownPluginOptions extends ZudokuDocsConfig {\n fileImports: Record<string, () => Promise<MDXImport>>;\n}\nexport type MarkdownPluginDefaultOptions = Pick<\n Frontmatter,\n \"toc\" | \"disablePager\"\n>;\n\nexport type Frontmatter = {\n title?: string;\n description?: string;\n category?: string;\n toc?: boolean;\n disablePager?: boolean;\n};\n\nexport type MDXImport = {\n tableOfContents: Toc;\n frontmatter: Frontmatter;\n excerpt?: string;\n default: (props: MDXProps) => JSX.Element;\n};\n\nexport const markdownPlugin = (\n options: MarkdownPluginOptions[],\n): ZudokuPlugin => ({\n getRoutes: () => {\n const routeMap = new Map<string, RouteObject>();\n options.forEach(({ fileImports, files, defaultOptions }) =>\n Object.entries(fileImports).flatMap(([file, importPromise]) => {\n const routePath = DocResolver.resolveRoutePath({\n filesGlob: files,\n fsPath: file,\n });\n\n if (!routePath) return [];\n\n if (routeMap.has(routePath)) {\n // eslint-disable-next-line no-console\n console.warn(\n `Duplicate route path found for ${routePath}. Skipping file at '${file}'.`,\n );\n return [];\n }\n\n const route: RouteObject = {\n path: routePath,\n lazy: async () => {\n const { MdxPage } = await import(\"./MdxPage.js\");\n const { default: Component, ...props } = await importPromise();\n return {\n element: (\n <MdxPage\n file={file}\n mdxComponent={Component}\n {...props}\n defaultOptions={defaultOptions}\n />\n ),\n };\n },\n };\n routeMap.set(routePath, route);\n }),\n );\n return [...routeMap.values()];\n },\n});\n"],"names":["DEFAULT_DOCS_FILES","DocResolver","config","filesGlob","rootDir","fsPath","re","markdownPlugin","options","routeMap","fileImports","files","defaultOptions","file","importPromise","routePath","route","MdxPage","Component","props","jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"zudoku.plugin-markdown.js","sources":["../src/lib/plugins/markdown/resolver.ts","../src/lib/plugins/markdown/index.tsx"],"sourcesContent":["import { ZudokuDocsConfig } from \"../../../config/validators/common.js\";\nimport { ZudokuConfig } from \"../../../config/validators/validate.js\";\n\nconst DEFAULT_DOCS_FILES = \"/pages/**/*.{md,mdx}\";\n\n/**\n * Utilities for resolving markdown file paths and routes\n */\nexport class DocResolver {\n constructor(private config: ZudokuConfig) {}\n\n fileMap = new Map<string, string>();\n\n /**\n * Gets the default docs config from the zudoku config\n */\n getDocsConfigs() {\n const docsConfigs: ZudokuDocsConfig[] = this.config.docs\n ? Array.isArray(this.config.docs)\n ? this.config.docs\n : [this.config.docs]\n : [{ files: DEFAULT_DOCS_FILES }];\n\n return docsConfigs;\n }\n\n /**\n * Gets the root directory from a files glob\n */\n private static getRootDir(filesGlob: string) {\n let rootDir = filesGlob.split(\"**\")[0];\n if (!rootDir) {\n throw new Error(\"Invalid files glob. Must have '**' in the path.\");\n }\n rootDir = rootDir.replace(\"/**\", \"/\");\n return rootDir;\n }\n\n /**\n * Resolves the route path for a given file system path\n * @param options - The options to resolve the route path\n * @returns The string route path\n */\n static resolveRoutePath({\n filesGlob,\n fsPath,\n }: {\n filesGlob: string;\n fsPath: string;\n }) {\n const rootDir = this.getRootDir(filesGlob);\n const re = new RegExp(`^${rootDir}(.*).mdx?`);\n const match = fsPath.match(re);\n const routePath = match?.at(1);\n return routePath;\n }\n}\n","import type { Toc } from \"@stefanprobst/rehype-extract-toc\";\nimport type { MDXProps } from \"mdx/types.js\";\nimport { type JSX } from \"react\";\nimport { RouteObject } from \"react-router\";\nimport { ZudokuDocsConfig } from \"../../../config/validators/common.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { DocResolver } from \"./resolver.js\";\n\nexport interface MarkdownPluginOptions extends ZudokuDocsConfig {\n fileImports: Record<string, () => Promise<MDXImport>>;\n}\nexport type MarkdownPluginDefaultOptions = Pick<\n Frontmatter,\n \"toc\" | \"disablePager\"\n>;\n\nexport type Frontmatter = {\n title?: string;\n description?: string;\n category?: string;\n toc?: boolean;\n disablePager?: boolean;\n};\n\nexport type MDXImport = {\n tableOfContents: Toc;\n frontmatter: Frontmatter;\n excerpt?: string;\n default: (props: MDXProps) => JSX.Element;\n};\n\nexport const markdownPlugin = (\n options: MarkdownPluginOptions[],\n): ZudokuPlugin => ({\n getRoutes: () => {\n const routeMap = new Map<string, RouteObject>();\n options.forEach(({ fileImports, files, defaultOptions }) =>\n Object.entries(fileImports).flatMap(([file, importPromise]) => {\n const routePath = DocResolver.resolveRoutePath({\n filesGlob: files,\n fsPath: file,\n });\n\n if (!routePath) return [];\n\n if (routeMap.has(routePath)) {\n // eslint-disable-next-line no-console\n console.warn(\n `Duplicate route path found for ${routePath}. Skipping file at '${file}'.`,\n );\n return [];\n }\n\n const route: RouteObject = {\n path: routePath,\n lazy: async () => {\n const { MdxPage } = await import(\"./MdxPage.js\");\n const { default: Component, ...props } = await importPromise();\n return {\n element: (\n <MdxPage\n file={file}\n mdxComponent={Component}\n {...props}\n defaultOptions={defaultOptions}\n />\n ),\n };\n },\n };\n routeMap.set(routePath, route);\n }),\n );\n return [...routeMap.values()];\n },\n});\n"],"names":["DEFAULT_DOCS_FILES","DocResolver","config","__publicField","filesGlob","rootDir","fsPath","re","match","markdownPlugin","options","routeMap","fileImports","files","defaultOptions","file","importPromise","routePath","route","MdxPage","Component","props","jsx"],"mappings":";;;;AAGA,MAAMA,IAAqB;AAKpB,MAAMC,EAAY;AAAA,EACvB,YAAoBC,GAAsB;AAE1C,IAAAC,EAAA,qCAAc,IAAoB;AAFd,SAAA,SAAAD;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAOpB,iBAAiB;AAOR,WANiC,KAAK,OAAO,OAChD,MAAM,QAAQ,KAAK,OAAO,IAAI,IAC5B,KAAK,OAAO,OACZ,CAAC,KAAK,OAAO,IAAI,IACnB,CAAC,EAAE,OAAOF,GAAoB;AAAA,EAE3B;AAAA;AAAA;AAAA;AAAA,EAMT,OAAe,WAAWI,GAAmB;AAC3C,QAAIC,IAAUD,EAAU,MAAM,IAAI,EAAE,CAAC;AACrC,QAAI,CAACC;AACG,YAAA,IAAI,MAAM,iDAAiD;AAEzD,WAAAA,IAAAA,EAAQ,QAAQ,OAAO,GAAG,GAC7BA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,OAAO,iBAAiB;AAAA,IACtB,WAAAD;AAAA,IACA,QAAAE;AAAA,EAAA,GAIC;AACK,UAAAD,IAAU,KAAK,WAAWD,CAAS,GACnCG,IAAK,IAAI,OAAO,IAAIF,CAAO,WAAW,GACtCG,IAAQF,EAAO,MAAMC,CAAE;AAEtB,WADWC,KAAA,gBAAAA,EAAO,GAAG;AAAA,EACrB;AAEX;ACzBa,MAAAC,IAAiB,CAC5BC,OACkB;AAAA,EAClB,WAAW,MAAM;AACT,UAAAC,wBAAe,IAAyB;AACtC,WAAAD,EAAA;AAAA,MAAQ,CAAC,EAAE,aAAAE,GAAa,OAAAC,GAAO,gBAAAC,QACrC,OAAO,QAAQF,CAAW,EAAE,QAAQ,CAAC,CAACG,GAAMC,CAAa,MAAM;AACvD,cAAAC,IAAYhB,EAAY,iBAAiB;AAAA,UAC7C,WAAWY;AAAA,UACX,QAAQE;AAAA,QAAA,CACT;AAEG,YAAA,CAACE,EAAW,QAAO,CAAC;AAEpB,YAAAN,EAAS,IAAIM,CAAS;AAEhB,yBAAA;AAAA,YACN,kCAAkCA,CAAS,uBAAuBF,CAAI;AAAA,UACxE,GACO,CAAC;AAGV,cAAMG,IAAqB;AAAA,UACzB,MAAMD;AAAA,UACN,MAAM,YAAY;AAChB,kBAAM,EAAE,SAAAE,EAAA,IAAY,MAAM,OAAO,uBAAc,GACzC,EAAE,SAASC,GAAW,GAAGC,EAAM,IAAI,MAAML,EAAc;AACtD,mBAAA;AAAA,cACL,SACEM,gBAAAA,EAAA;AAAA,gBAACH;AAAA,gBAAA;AAAA,kBACC,MAAAJ;AAAA,kBACA,cAAcK;AAAA,kBACb,GAAGC;AAAA,kBACJ,gBAAAP;AAAA,gBAAA;AAAA,cAAA;AAAA,YAGN;AAAA,UAAA;AAAA,QAEJ;AACS,QAAAH,EAAA,IAAIM,GAAWC,CAAK;AAAA,MAC9B,CAAA;AAAA,IACH,GACO,CAAC,GAAGP,EAAS,QAAQ;AAAA,EAAA;AAEhC;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "./jsx-runtime-C5mzlN2N.js";
|
|
2
2
|
import "lucide-react";
|
|
3
|
-
import "./chunk-BAXFHI7N-
|
|
4
|
-
import "./hook-
|
|
3
|
+
import "./chunk-BAXFHI7N-BVBOl9s0.js";
|
|
4
|
+
import "./hook-CldJlP5c.js";
|
|
5
5
|
import "./ui/Button.js";
|
|
6
|
-
import { U as a, o as e } from "./index-
|
|
6
|
+
import { U as a, o as e } from "./index-BPqJMdth.js";
|
|
7
7
|
export {
|
|
8
8
|
a as UNTAGGED_PATH,
|
|
9
9
|
e as openApiPlugin
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { useRef as l, useState as f, useMemo as m, useEffect as
|
|
1
|
+
import { j as i } from "./jsx-runtime-C5mzlN2N.js";
|
|
2
|
+
import { useRef as l, useState as f, useMemo as m, useEffect as u } from "react";
|
|
3
3
|
import { C as g } from "./ClientOnly-E7hGysn1.js";
|
|
4
4
|
const h = {
|
|
5
5
|
theme: {
|
|
@@ -20,43 +20,44 @@ const h = {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
}, k = {}, I = ({
|
|
23
|
-
prefilledQuery:
|
|
23
|
+
prefilledQuery: r,
|
|
24
24
|
isOpen: e,
|
|
25
|
-
onClose:
|
|
26
|
-
settings:
|
|
25
|
+
onClose: n,
|
|
26
|
+
settings: p
|
|
27
27
|
}) => {
|
|
28
|
-
const
|
|
28
|
+
const o = l(null), c = l(null), [s, d] = f(
|
|
29
29
|
typeof Inkeep < "u"
|
|
30
|
-
),
|
|
30
|
+
), a = m(
|
|
31
31
|
() => ({
|
|
32
32
|
componentType: "CustomTrigger",
|
|
33
|
-
targetElement:
|
|
33
|
+
targetElement: o.current,
|
|
34
34
|
properties: {
|
|
35
35
|
isOpen: e,
|
|
36
|
-
onClose:
|
|
36
|
+
onClose: n,
|
|
37
37
|
onOpen: void 0,
|
|
38
|
-
baseSettings: { ...h, ...
|
|
38
|
+
baseSettings: { ...h, ...p },
|
|
39
39
|
searchSettings: {
|
|
40
|
-
prefilledQuery:
|
|
40
|
+
prefilledQuery: r || void 0
|
|
41
41
|
},
|
|
42
42
|
aiChatSettings: k
|
|
43
43
|
}
|
|
44
44
|
}),
|
|
45
|
-
[e,
|
|
45
|
+
[e, n, r, p, o]
|
|
46
46
|
);
|
|
47
|
-
return
|
|
48
|
-
if (
|
|
49
|
-
const
|
|
50
|
-
typeof Inkeep < "u" && (d(!0), clearInterval(
|
|
47
|
+
return u(() => {
|
|
48
|
+
if (s) return;
|
|
49
|
+
const t = setInterval(() => {
|
|
50
|
+
typeof Inkeep < "u" && (d(!0), clearInterval(t));
|
|
51
51
|
}, 100);
|
|
52
|
-
return () => clearInterval(
|
|
53
|
-
}, [
|
|
54
|
-
!
|
|
55
|
-
}, [
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
},
|
|
59
|
-
|
|
52
|
+
return () => clearInterval(t);
|
|
53
|
+
}, [s]), u(() => {
|
|
54
|
+
!s || c.current || (c.current = Inkeep().embed(a));
|
|
55
|
+
}, [a, s]), u(() => {
|
|
56
|
+
var t;
|
|
57
|
+
(t = c.current) == null || t.render({ ...a, isOpen: e });
|
|
58
|
+
}, [a, e]), /* @__PURE__ */ i.jsx("div", { ref: o });
|
|
59
|
+
}, x = (r) => ({
|
|
60
|
+
getHead: () => /* @__PURE__ */ i.jsx(
|
|
60
61
|
"script",
|
|
61
62
|
{
|
|
62
63
|
type: "module",
|
|
@@ -66,8 +67,8 @@ const h = {
|
|
|
66
67
|
),
|
|
67
68
|
renderSearch: ({
|
|
68
69
|
isOpen: e,
|
|
69
|
-
onClose:
|
|
70
|
-
}) => /* @__PURE__ */
|
|
70
|
+
onClose: n
|
|
71
|
+
}) => /* @__PURE__ */ i.jsx(g, { children: /* @__PURE__ */ i.jsx(I, { isOpen: e, onClose: n, settings: r }) })
|
|
71
72
|
});
|
|
72
73
|
export {
|
|
73
74
|
x as inkeepSearchPlugin
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zudoku.plugin-search-inkeep.js","sources":["../src/lib/plugins/search-inkeep/inkeep.ts","../src/lib/plugins/search-inkeep/index.tsx"],"sourcesContent":["const baseSettings = {\n theme: {\n components: {\n AIChatPageWrapper: {\n defaultProps: {\n size: \"shrink-vertically\",\n variant: \"no-shadow\",\n },\n },\n SearchBarTrigger: {\n defaultProps: {\n size: \"expand\",\n variant: \"subtle\", // Choose from 'emphasized' or 'subtle'\n },\n },\n },\n },\n} as const;\n\nconst modalSettings = {};\n\nconst searchSettings = {};\n\nconst aiChatSettings = {};\n\nexport { aiChatSettings, baseSettings, modalSettings, searchSettings };\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { ClientOnly } from \"../../components/ClientOnly.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { aiChatSettings, baseSettings } from \"./inkeep.js\";\n\ninterface PluginInkeepBaseSettings {\n apiKey?: string;\n integrationId: string;\n organizationId: string;\n organizationDisplayName?: string;\n primaryBrandColor: string;\n}\n\ninterface InkeepEmbedConfig {\n componentType: string;\n targetElement: HTMLElement;\n properties: unknown;\n}\n\ninterface InkeepWidget {\n render: (config: InkeepEmbedConfig & { isOpen: boolean }) => void;\n}\n\ndeclare global {\n let Inkeep: () => {\n embed: (config: InkeepEmbedConfig) => InkeepWidget;\n };\n}\n\nconst InkeepSearch = ({\n prefilledQuery,\n isOpen,\n onClose,\n settings,\n}: {\n isOpen: boolean;\n onClose: () => void;\n prefilledQuery?: string | null;\n settings: PluginInkeepBaseSettings;\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const widgetRef = useRef<InkeepWidget | null>(null);\n const [isInkeepAvailable, setIsInkeepAvailable] = useState(\n typeof Inkeep !== \"undefined\",\n );\n\n const config: InkeepEmbedConfig = useMemo(\n () => ({\n componentType: \"CustomTrigger\",\n targetElement: ref.current!,\n properties: {\n isOpen,\n onClose,\n onOpen: undefined,\n baseSettings: { ...baseSettings, ...settings },\n searchSettings: {\n prefilledQuery: prefilledQuery || undefined,\n },\n aiChatSettings,\n },\n }),\n [isOpen, onClose, prefilledQuery, settings, ref],\n );\n\n useEffect(() => {\n if (isInkeepAvailable) return;\n\n const checkInkeep = setInterval(() => {\n if (typeof Inkeep !== \"undefined\") {\n setIsInkeepAvailable(true);\n clearInterval(checkInkeep);\n }\n }, 100);\n\n return () => clearInterval(checkInkeep);\n }, [isInkeepAvailable]);\n\n useEffect(() => {\n if (!isInkeepAvailable || widgetRef.current) return;\n\n widgetRef.current = Inkeep().embed(config);\n }, [config, isInkeepAvailable]);\n\n useEffect(() => {\n widgetRef.current?.render({ ...config, isOpen });\n }, [config, isOpen]);\n\n return <div ref={ref} />;\n};\n\nexport const inkeepSearchPlugin = (\n settings: PluginInkeepBaseSettings,\n): ZudokuPlugin => {\n return {\n getHead: () => {\n return (\n <script\n type=\"module\"\n src=\"https://unpkg.com/@inkeep/uikit-js@0.3.19/dist/embed.js\"\n defer\n />\n );\n },\n renderSearch: ({\n isOpen,\n onClose,\n }: {\n isOpen: boolean;\n onClose: () => void;\n }) => {\n return (\n <ClientOnly>\n <InkeepSearch isOpen={isOpen} onClose={onClose} settings={settings} />\n </ClientOnly>\n );\n },\n };\n};\n"],"names":["baseSettings","aiChatSettings","InkeepSearch","prefilledQuery","isOpen","onClose","settings","ref","useRef","widgetRef","isInkeepAvailable","setIsInkeepAvailable","useState","config","useMemo","useEffect","checkInkeep","jsx","inkeepSearchPlugin","ClientOnly"],"mappings":";;;AAAA,MAAMA,IAAe;AAAA,EACnB,OAAO;AAAA,IACL,YAAY;AAAA,MACV,mBAAmB;AAAA,QACjB,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,QAAA;AAAA,MAEb;AAAA,MACA,kBAAkB;AAAA,QAChB,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA;AAAA,QAAA;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEJ,GAMMC,IAAiB,CAAC,GCMlBC,IAAe,CAAC;AAAA,EACpB,gBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AACF,MAKM;AACE,QAAAC,IAAMC,EAAuB,IAAI,GACjCC,IAAYD,EAA4B,IAAI,GAC5C,CAACE,GAAmBC,CAAoB,IAAIC;AAAA,IAChD,OAAO,SAAW;AAAA,EACpB,GAEMC,IAA4BC;AAAA,IAChC,OAAO;AAAA,MACL,eAAe;AAAA,MACf,eAAeP,EAAI;AAAA,MACnB,YAAY;AAAA,QACV,QAAAH;AAAA,QACA,SAAAC;AAAA,QACA,QAAQ;AAAA,QACR,cAAc,EAAE,GAAGL,GAAc,GAAGM,EAAS;AAAA,QAC7C,gBAAgB;AAAA,UACd,gBAAgBH,KAAkB;AAAA,QACpC;AAAA,QACA,gBAAAF;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,CAACG,GAAQC,GAASF,GAAgBG,GAAUC,CAAG;AAAA,EACjD;AAEA,SAAAQ,EAAU,MAAM;AACd,QAAIL,EAAmB;AAEjB,UAAAM,IAAc,YAAY,MAAM;AAChC,MAAA,OAAO,SAAW,QACpBL,EAAqB,EAAI,GACzB,cAAcK,CAAW;AAAA,OAE1B,GAAG;AAEC,WAAA,MAAM,cAAcA,CAAW;AAAA,EAAA,GACrC,CAACN,CAAiB,CAAC,GAEtBK,EAAU,MAAM;AACV,IAAA,CAACL,KAAqBD,EAAU,YAEpCA,EAAU,UAAU,SAAS,MAAMI,CAAM;AAAA,EAAA,GACxC,CAACA,GAAQH,CAAiB,CAAC,GAE9BK,EAAU,MAAM
|
|
1
|
+
{"version":3,"file":"zudoku.plugin-search-inkeep.js","sources":["../src/lib/plugins/search-inkeep/inkeep.ts","../src/lib/plugins/search-inkeep/index.tsx"],"sourcesContent":["const baseSettings = {\n theme: {\n components: {\n AIChatPageWrapper: {\n defaultProps: {\n size: \"shrink-vertically\",\n variant: \"no-shadow\",\n },\n },\n SearchBarTrigger: {\n defaultProps: {\n size: \"expand\",\n variant: \"subtle\", // Choose from 'emphasized' or 'subtle'\n },\n },\n },\n },\n} as const;\n\nconst modalSettings = {};\n\nconst searchSettings = {};\n\nconst aiChatSettings = {};\n\nexport { aiChatSettings, baseSettings, modalSettings, searchSettings };\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { ClientOnly } from \"../../components/ClientOnly.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\nimport { aiChatSettings, baseSettings } from \"./inkeep.js\";\n\ninterface PluginInkeepBaseSettings {\n apiKey?: string;\n integrationId: string;\n organizationId: string;\n organizationDisplayName?: string;\n primaryBrandColor: string;\n}\n\ninterface InkeepEmbedConfig {\n componentType: string;\n targetElement: HTMLElement;\n properties: unknown;\n}\n\ninterface InkeepWidget {\n render: (config: InkeepEmbedConfig & { isOpen: boolean }) => void;\n}\n\ndeclare global {\n let Inkeep: () => {\n embed: (config: InkeepEmbedConfig) => InkeepWidget;\n };\n}\n\nconst InkeepSearch = ({\n prefilledQuery,\n isOpen,\n onClose,\n settings,\n}: {\n isOpen: boolean;\n onClose: () => void;\n prefilledQuery?: string | null;\n settings: PluginInkeepBaseSettings;\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n const widgetRef = useRef<InkeepWidget | null>(null);\n const [isInkeepAvailable, setIsInkeepAvailable] = useState(\n typeof Inkeep !== \"undefined\",\n );\n\n const config: InkeepEmbedConfig = useMemo(\n () => ({\n componentType: \"CustomTrigger\",\n targetElement: ref.current!,\n properties: {\n isOpen,\n onClose,\n onOpen: undefined,\n baseSettings: { ...baseSettings, ...settings },\n searchSettings: {\n prefilledQuery: prefilledQuery || undefined,\n },\n aiChatSettings,\n },\n }),\n [isOpen, onClose, prefilledQuery, settings, ref],\n );\n\n useEffect(() => {\n if (isInkeepAvailable) return;\n\n const checkInkeep = setInterval(() => {\n if (typeof Inkeep !== \"undefined\") {\n setIsInkeepAvailable(true);\n clearInterval(checkInkeep);\n }\n }, 100);\n\n return () => clearInterval(checkInkeep);\n }, [isInkeepAvailable]);\n\n useEffect(() => {\n if (!isInkeepAvailable || widgetRef.current) return;\n\n widgetRef.current = Inkeep().embed(config);\n }, [config, isInkeepAvailable]);\n\n useEffect(() => {\n widgetRef.current?.render({ ...config, isOpen });\n }, [config, isOpen]);\n\n return <div ref={ref} />;\n};\n\nexport const inkeepSearchPlugin = (\n settings: PluginInkeepBaseSettings,\n): ZudokuPlugin => {\n return {\n getHead: () => {\n return (\n <script\n type=\"module\"\n src=\"https://unpkg.com/@inkeep/uikit-js@0.3.19/dist/embed.js\"\n defer\n />\n );\n },\n renderSearch: ({\n isOpen,\n onClose,\n }: {\n isOpen: boolean;\n onClose: () => void;\n }) => {\n return (\n <ClientOnly>\n <InkeepSearch isOpen={isOpen} onClose={onClose} settings={settings} />\n </ClientOnly>\n );\n },\n };\n};\n"],"names":["baseSettings","aiChatSettings","InkeepSearch","prefilledQuery","isOpen","onClose","settings","ref","useRef","widgetRef","isInkeepAvailable","setIsInkeepAvailable","useState","config","useMemo","useEffect","checkInkeep","_a","jsx","inkeepSearchPlugin","ClientOnly"],"mappings":";;;AAAA,MAAMA,IAAe;AAAA,EACnB,OAAO;AAAA,IACL,YAAY;AAAA,MACV,mBAAmB;AAAA,QACjB,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,QAAA;AAAA,MAEb;AAAA,MACA,kBAAkB;AAAA,QAChB,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA;AAAA,QAAA;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEJ,GAMMC,IAAiB,CAAC,GCMlBC,IAAe,CAAC;AAAA,EACpB,gBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AACF,MAKM;AACE,QAAAC,IAAMC,EAAuB,IAAI,GACjCC,IAAYD,EAA4B,IAAI,GAC5C,CAACE,GAAmBC,CAAoB,IAAIC;AAAA,IAChD,OAAO,SAAW;AAAA,EACpB,GAEMC,IAA4BC;AAAA,IAChC,OAAO;AAAA,MACL,eAAe;AAAA,MACf,eAAeP,EAAI;AAAA,MACnB,YAAY;AAAA,QACV,QAAAH;AAAA,QACA,SAAAC;AAAA,QACA,QAAQ;AAAA,QACR,cAAc,EAAE,GAAGL,GAAc,GAAGM,EAAS;AAAA,QAC7C,gBAAgB;AAAA,UACd,gBAAgBH,KAAkB;AAAA,QACpC;AAAA,QACA,gBAAAF;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,CAACG,GAAQC,GAASF,GAAgBG,GAAUC,CAAG;AAAA,EACjD;AAEA,SAAAQ,EAAU,MAAM;AACd,QAAIL,EAAmB;AAEjB,UAAAM,IAAc,YAAY,MAAM;AAChC,MAAA,OAAO,SAAW,QACpBL,EAAqB,EAAI,GACzB,cAAcK,CAAW;AAAA,OAE1B,GAAG;AAEC,WAAA,MAAM,cAAcA,CAAW;AAAA,EAAA,GACrC,CAACN,CAAiB,CAAC,GAEtBK,EAAU,MAAM;AACV,IAAA,CAACL,KAAqBD,EAAU,YAEpCA,EAAU,UAAU,SAAS,MAAMI,CAAM;AAAA,EAAA,GACxC,CAACA,GAAQH,CAAiB,CAAC,GAE9BK,EAAU,MAAM;;AACd,KAAAE,IAAAR,EAAU,YAAV,QAAAQ,EAAmB,OAAO,EAAE,GAAGJ,GAAQ,QAAAT;EAAQ,GAC9C,CAACS,GAAQT,CAAM,CAAC,GAEZc,gBAAAA,MAAC,SAAI,KAAAX,GAAU;AACxB,GAEaY,IAAqB,CAChCb,OAEO;AAAA,EACL,SAAS,MAELY,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,KAAI;AAAA,MACJ,OAAK;AAAA,IAAA;AAAA,EACP;AAAA,EAGJ,cAAc,CAAC;AAAA,IACb,QAAAd;AAAA,IACA,SAAAC;AAAA,EAAA,4BAMGe,GACC,EAAA,UAAAF,gBAAAA,EAAA,IAAChB,KAAa,QAAAE,GAAgB,SAAAC,GAAkB,UAAAC,GAAoB,EACtE,CAAA;AAGN;"}
|