zudoku 0.13.1 → 0.13.2

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 (42) hide show
  1. package/dist/lib/plugins/custom-pages/CustomPage.js +2 -1
  2. package/dist/lib/plugins/custom-pages/CustomPage.js.map +1 -1
  3. package/lib/CategoryHeading-3Qtp2yZ8.js +10 -0
  4. package/lib/CategoryHeading-3Qtp2yZ8.js.map +1 -0
  5. package/lib/{DeveloperHint-CiXPc9Xm.js → DeveloperHint-BE9DzNhv.js} +2 -2
  6. package/lib/{DeveloperHint-CiXPc9Xm.js.map → DeveloperHint-BE9DzNhv.js.map} +1 -1
  7. package/lib/ErrorPage-B0COs372.js +16 -0
  8. package/lib/{ErrorPage-B-zoPPVx.js.map → ErrorPage-B0COs372.js.map} +1 -1
  9. package/lib/{Input-QMLhK7Rb.js → Input-CHfE_2Qk.js} +3 -3
  10. package/lib/{Input-QMLhK7Rb.js.map → Input-CHfE_2Qk.js.map} +1 -1
  11. package/lib/{Markdown-D6Nze6qq.js → Markdown-CWI6lU11.js} +5677 -3406
  12. package/lib/Markdown-CWI6lU11.js.map +1 -0
  13. package/lib/{MdxPage-DBhq6-5F.js → MdxPage-C3tlrV4j.js} +12 -12
  14. package/lib/{MdxPage-DBhq6-5F.js.map → MdxPage-C3tlrV4j.js.map} +1 -1
  15. package/lib/{OperationList-Ba24gUd2.js → OperationList-BO-ES1C5.js} +23 -23
  16. package/lib/{OperationList-Ba24gUd2.js.map → OperationList-BO-ES1C5.js.map} +1 -1
  17. package/lib/{Route-DI38nxYt.js → Route-Dq6zv0Pi.js} +2 -2
  18. package/lib/{Route-DI38nxYt.js.map → Route-Dq6zv0Pi.js.map} +1 -1
  19. package/lib/{SidebarBadge-B9-VJSQr.js → SidebarBadge-DmI5hT04.js} +3 -3
  20. package/lib/{SidebarBadge-B9-VJSQr.js.map → SidebarBadge-DmI5hT04.js.map} +1 -1
  21. package/lib/{SlotletProvider-Cb8mGpBO.js → SlotletProvider-RvaeLR6z.js} +14 -13
  22. package/lib/{SlotletProvider-Cb8mGpBO.js.map → SlotletProvider-RvaeLR6z.js.map} +1 -1
  23. package/lib/{index-DA74gNq3.js → index-DNfiZTPV.js} +17 -18
  24. package/lib/{index-DA74gNq3.js.map → index-DNfiZTPV.js.map} +1 -1
  25. package/lib/{index-g_JJcuFg.js → index-Do_BBSIs.js} +34 -35
  26. package/lib/{index-g_JJcuFg.js.map → index-Do_BBSIs.js.map} +1 -1
  27. package/lib/{index-dgcPryXi.js → index-Dvh1BL_e.js} +3 -3
  28. package/lib/{index-dgcPryXi.js.map → index-Dvh1BL_e.js.map} +1 -1
  29. package/lib/zudoku.auth-openid.js +3 -3
  30. package/lib/zudoku.components.js +18 -19
  31. package/lib/zudoku.components.js.map +1 -1
  32. package/lib/zudoku.plugin-api-keys.js +5 -5
  33. package/lib/zudoku.plugin-custom-pages.js +13 -13
  34. package/lib/zudoku.plugin-custom-pages.js.map +1 -1
  35. package/lib/zudoku.plugin-markdown.js +1 -1
  36. package/lib/zudoku.plugin-openapi.js +4 -4
  37. package/package.json +1 -1
  38. package/src/lib/plugins/custom-pages/CustomPage.tsx +4 -1
  39. package/lib/ErrorPage-B-zoPPVx.js +0 -15
  40. package/lib/Markdown-D6Nze6qq.js.map +0 -1
  41. package/lib/cn-BmFQLtkS.js +0 -2279
  42. package/lib/cn-BmFQLtkS.js.map +0 -1
@@ -2,8 +2,8 @@ import { j as e } from "./jsx-runtime-B6kdoens.js";
2
2
  import { s as T } from "./index-D06ATMgg.js";
3
3
  import { A as k, u as P, a as C, H, b as R } from "./utils-Chi3p5nE.js";
4
4
  import { L as v } from "./index-BRCiYFaL.js";
5
- import { u as S, P as E, C as I, H as h } from "./Markdown-D6Nze6qq.js";
6
- import { c as x } from "./cn-BmFQLtkS.js";
5
+ import { C as S } from "./CategoryHeading-3Qtp2yZ8.js";
6
+ import { u as E, a as x, P as I, H as h } from "./Markdown-CWI6lU11.js";
7
7
  import { ListTreeIcon as L } from "lucide-react";
8
8
  import { useRef as y, useState as _, useEffect as $ } from "react";
9
9
  const N = "data-active", b = ({
@@ -36,7 +36,7 @@ const N = "data-active", b = ({
36
36
  ]
37
37
  }
38
38
  ), M = ({ entries: r }) => {
39
- const { activeAnchor: t } = S(), s = y(null), i = y(!1), [m, o] = _({
39
+ const { activeAnchor: t } = E(), s = y(null), i = y(!1), [m, o] = _({
40
40
  top: 0,
41
41
  opacity: 0
42
42
  });
@@ -109,20 +109,20 @@ const N = "data-active", b = ({
109
109
  tableOfContents: i
110
110
  }) => {
111
111
  var g, j, f;
112
- const m = (g = P()) == null ? void 0 : g.categoryLabel, o = t.title, a = t.category ?? m, n = t.toc === !1 || (s == null ? void 0 : s.toc) === !1, p = ((j = i.find((c) => c.depth === 1)) == null ? void 0 : j.value) ?? o, w = t.disablePager ?? (s == null ? void 0 : s.disablePager) ?? !1, u = ((f = i.find((c) => c.depth === 1)) == null ? void 0 : f.children) ?? // if `title` is provided by frontmatter it does not appear in the table of contents
113
- i.filter((c) => c.depth === 2), A = !n && u.length > 0, { prev: l, next: d } = C();
112
+ const m = (g = P()) == null ? void 0 : g.categoryLabel, o = t.title, a = t.category ?? m, n = t.toc === !1 || (s == null ? void 0 : s.toc) === !1, p = ((j = i.find((l) => l.depth === 1)) == null ? void 0 : j.value) ?? o, w = t.disablePager ?? (s == null ? void 0 : s.disablePager) ?? !1, u = ((f = i.find((l) => l.depth === 1)) == null ? void 0 : f.children) ?? // if `title` is provided by frontmatter it does not appear in the table of contents
113
+ i.filter((l) => l.depth === 2), A = !n && u.length > 0, { prev: c, next: d } = C();
114
114
  return /* @__PURE__ */ e.jsxs("div", { className: "xl:grid grid-cols-[--sidecar-grid-cols] gap-8 justify-between", children: [
115
115
  /* @__PURE__ */ e.jsx(H, { children: /* @__PURE__ */ e.jsx("title", { children: p }) }),
116
116
  /* @__PURE__ */ e.jsxs(
117
117
  "div",
118
118
  {
119
119
  className: x(
120
- E,
120
+ I,
121
121
  "max-w-full xl:w-full xl:max-w-prose flex-1 flex-shrink pt-[--padding-content-top] pb-[--padding-content-bottom]"
122
122
  ),
123
123
  children: [
124
124
  /* @__PURE__ */ e.jsxs("header", { children: [
125
- a && /* @__PURE__ */ e.jsx(I, { children: a }),
125
+ a && /* @__PURE__ */ e.jsx(S, { children: a }),
126
126
  o && /* @__PURE__ */ e.jsx(h, { level: 1, id: T(o), children: o })
127
127
  ] }),
128
128
  /* @__PURE__ */ e.jsx(
@@ -134,15 +134,15 @@ const N = "data-active", b = ({
134
134
  !w && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
135
135
  /* @__PURE__ */ e.jsx("hr", {}),
136
136
  /* @__PURE__ */ e.jsxs("div", { className: "not-prose flex flex-wrap items-center justify-between gap-2 lg:gap-8", children: [
137
- l ? /* @__PURE__ */ e.jsxs(
137
+ c ? /* @__PURE__ */ e.jsxs(
138
138
  v,
139
139
  {
140
- to: l.id,
140
+ to: c.id,
141
141
  className: "flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-start hover:border-primary/85 transition shadow-sm hover:shadow-md",
142
- title: l.label,
142
+ title: c.label,
143
143
  children: [
144
144
  /* @__PURE__ */ e.jsx("div", { className: "text-sm text-muted-foreground", children: "← Previous page" }),
145
- /* @__PURE__ */ e.jsx("div", { className: "text-lg text-primary truncate", children: l.label })
145
+ /* @__PURE__ */ e.jsx("div", { className: "text-lg text-primary truncate", children: c.label })
146
146
  ]
147
147
  }
148
148
  ) : /* @__PURE__ */ e.jsx("div", { className: "flex-1" }),
@@ -169,4 +169,4 @@ const N = "data-active", b = ({
169
169
  export {
170
170
  J as MdxPage
171
171
  };
172
- //# sourceMappingURL=MdxPage-DBhq6-5F.js.map
172
+ //# sourceMappingURL=MdxPage-C3tlrV4j.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MdxPage-DBhq6-5F.js","sources":["../src/lib/plugins/markdown/Toc.tsx","../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["import type { TocEntry } from \"@stefanprobst/rehype-extract-toc\";\nimport { ListTreeIcon } from \"lucide-react\";\nimport {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type PropsWithChildren,\n} from \"react\";\nimport { AnchorLink } from \"../../components/AnchorLink.js\";\nimport { useViewportAnchor } from \"../../components/context/ViewportAnchorContext.js\";\nimport { cn } from \"../../util/cn.js\";\n\nconst DATA_ANCHOR_ATTR = \"data-active\";\n\nconst TocItem = ({\n item,\n children,\n className,\n isActive,\n}: PropsWithChildren<{\n item: TocEntry;\n isActive: boolean;\n className?: string;\n}>) => {\n return (\n <li\n className={cn(\n \"truncate\",\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75\",\n className,\n )}\n title={item.value}\n >\n <AnchorLink\n to={`#${item.id}`}\n {...{ [DATA_ANCHOR_ATTR]: item.id }}\n className={cn(\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75 hover:text-foreground\",\n )}\n >\n {item.value}\n </AnchorLink>\n {children}\n </li>\n );\n};\n\nexport const Toc = ({ entries }: { entries: TocEntry[] }) => {\n const { activeAnchor } = useViewportAnchor();\n const listWrapperRef = useRef<HTMLUListElement>(null);\n const paintedOnce = useRef(false);\n const [indicatorStyle, setIndicatorStyles] = useState<CSSProperties>({\n top: 0,\n opacity: 0,\n });\n\n // synchronize active anchor indicator with the scroll position\n useEffect(() => {\n if (!listWrapperRef.current) return;\n\n const activeElement = listWrapperRef.current.querySelector(\n `[${DATA_ANCHOR_ATTR}='${activeAnchor}']`,\n );\n\n if (!activeElement) {\n setIndicatorStyles({ top: 0, opacity: 0 });\n return;\n }\n\n const topParent = listWrapperRef.current.getBoundingClientRect().top;\n const topElement = activeElement.getBoundingClientRect().top;\n\n setIndicatorStyles({\n opacity: 1,\n top: `${topElement - topParent}px`,\n });\n\n if (paintedOnce.current) return;\n\n // after all is painted, the indicator should animate\n requestIdleCallback(() => {\n paintedOnce.current = true;\n });\n }, [activeAnchor]);\n\n return (\n <aside className=\"sticky scrollbar top-[--header-height] h-[calc(100vh-var(--header-height))] pt-[--padding-content-top] pb-[--padding-content-bottom] overflow-y-auto ps-1 text-sm\">\n <div className=\"flex items-center gap-2 font-medium mb-2\">\n <ListTreeIcon size={16} />\n On this page\n </div>\n <div className=\"relative ms-2 ps-4\">\n <div className=\"absolute inset-0 right-auto bg-border w-[2px]\" />\n <div\n className={cn(\n \"absolute -left-px -translate-y-1 h-6 w-[4px] rounded bg-primary\",\n paintedOnce.current &&\n \"ease-out [transition:top_150ms,opacity_325ms]\",\n )}\n style={indicatorStyle}\n />\n <ul\n ref={listWrapperRef}\n className=\"relative font-medium list-none space-y-2\"\n >\n {entries.map((item) => (\n <TocItem\n isActive={item.id === activeAnchor}\n key={item.id}\n item={item}\n className=\"pl-0\"\n >\n {item.children && (\n <ul className=\"list-none pl-4 pt-2 space-y-2\">\n {item.children.map((child) => (\n <TocItem\n item={child}\n isActive={child.id === activeAnchor}\n key={child.id}\n />\n ))}\n </ul>\n )}\n </TocItem>\n ))}\n </ul>\n </div>\n </aside>\n );\n};\n","import { useMDXComponents } from \"@mdx-js/react\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { type PropsWithChildren } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { ProseClasses } from \"../../components/Markdown.js\";\nimport {\n useCurrentItem,\n usePrevNext,\n} from \"../../components/navigation/utils.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { Toc } from \"./Toc.js\";\nimport { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n frontmatter = {},\n defaultOptions,\n tableOfContents,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const categoryTitle = useCurrentItem()?.categoryLabel;\n const title = frontmatter.title;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n tableOfContents.find((item) => item.depth === 1)?.value ?? title;\n const hidePager =\n frontmatter.disablePager ?? defaultOptions?.disablePager ?? false;\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 return (\n <div className=\"xl:grid grid-cols-[--sidecar-grid-cols] gap-8 justify-between\">\n <Helmet>\n <title>{pageTitle}</title>\n </Helmet>\n <div\n className={cn(\n ProseClasses,\n \"max-w-full xl:w-full xl:max-w-prose flex-1 flex-shrink pt-[--padding-content-top] pb-[--padding-content-bottom]\",\n )}\n >\n <header>\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title)}>\n {title}\n </Heading>\n )}\n </header>\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n {!hidePager && (\n <>\n <hr />\n <div className=\"not-prose flex flex-wrap items-center justify-between gap-2 lg:gap-8\">\n {prev ? (\n <Link\n to={prev.id}\n className=\"flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-start hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={prev.label}\n >\n <div className=\"text-sm text-muted-foreground\">\n ← Previous page\n </div>\n <div className=\"text-lg text-primary truncate\">\n {prev.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n {next ? (\n <Link\n to={next.id}\n className=\"flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-end hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={next.label}\n >\n <div className=\"text-sm text-muted-foreground\">\n Next page →\n </div>\n <div className=\"text-lg text-primary truncate\">\n {next.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n </div>\n </>\n )}\n </div>\n <div className=\"hidden xl:block\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["DATA_ANCHOR_ATTR","TocItem","item","children","className","isActive","jsxs","cn","jsx","AnchorLink","Toc","entries","activeAnchor","useViewportAnchor","listWrapperRef","useRef","paintedOnce","indicatorStyle","setIndicatorStyles","useState","useEffect","activeElement","topParent","topElement","ListTreeIcon","child","MarkdownHeadings","id","Heading","MdxPage","MdxComponent","frontmatter","defaultOptions","tableOfContents","categoryTitle","_a","useCurrentItem","title","category","hideToc","pageTitle","_b","hidePager","tocEntries","_c","showToc","prev","next","usePrevNext","Helmet","ProseClasses","CategoryHeading","slugify","useMDXComponents","Fragment","Link"],"mappings":"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"}
1
+ {"version":3,"file":"MdxPage-C3tlrV4j.js","sources":["../src/lib/plugins/markdown/Toc.tsx","../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["import type { TocEntry } from \"@stefanprobst/rehype-extract-toc\";\nimport { ListTreeIcon } from \"lucide-react\";\nimport {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type PropsWithChildren,\n} from \"react\";\nimport { AnchorLink } from \"../../components/AnchorLink.js\";\nimport { useViewportAnchor } from \"../../components/context/ViewportAnchorContext.js\";\nimport { cn } from \"../../util/cn.js\";\n\nconst DATA_ANCHOR_ATTR = \"data-active\";\n\nconst TocItem = ({\n item,\n children,\n className,\n isActive,\n}: PropsWithChildren<{\n item: TocEntry;\n isActive: boolean;\n className?: string;\n}>) => {\n return (\n <li\n className={cn(\n \"truncate\",\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75\",\n className,\n )}\n title={item.value}\n >\n <AnchorLink\n to={`#${item.id}`}\n {...{ [DATA_ANCHOR_ATTR]: item.id }}\n className={cn(\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75 hover:text-foreground\",\n )}\n >\n {item.value}\n </AnchorLink>\n {children}\n </li>\n );\n};\n\nexport const Toc = ({ entries }: { entries: TocEntry[] }) => {\n const { activeAnchor } = useViewportAnchor();\n const listWrapperRef = useRef<HTMLUListElement>(null);\n const paintedOnce = useRef(false);\n const [indicatorStyle, setIndicatorStyles] = useState<CSSProperties>({\n top: 0,\n opacity: 0,\n });\n\n // synchronize active anchor indicator with the scroll position\n useEffect(() => {\n if (!listWrapperRef.current) return;\n\n const activeElement = listWrapperRef.current.querySelector(\n `[${DATA_ANCHOR_ATTR}='${activeAnchor}']`,\n );\n\n if (!activeElement) {\n setIndicatorStyles({ top: 0, opacity: 0 });\n return;\n }\n\n const topParent = listWrapperRef.current.getBoundingClientRect().top;\n const topElement = activeElement.getBoundingClientRect().top;\n\n setIndicatorStyles({\n opacity: 1,\n top: `${topElement - topParent}px`,\n });\n\n if (paintedOnce.current) return;\n\n // after all is painted, the indicator should animate\n requestIdleCallback(() => {\n paintedOnce.current = true;\n });\n }, [activeAnchor]);\n\n return (\n <aside className=\"sticky scrollbar top-[--header-height] h-[calc(100vh-var(--header-height))] pt-[--padding-content-top] pb-[--padding-content-bottom] overflow-y-auto ps-1 text-sm\">\n <div className=\"flex items-center gap-2 font-medium mb-2\">\n <ListTreeIcon size={16} />\n On this page\n </div>\n <div className=\"relative ms-2 ps-4\">\n <div className=\"absolute inset-0 right-auto bg-border w-[2px]\" />\n <div\n className={cn(\n \"absolute -left-px -translate-y-1 h-6 w-[4px] rounded bg-primary\",\n paintedOnce.current &&\n \"ease-out [transition:top_150ms,opacity_325ms]\",\n )}\n style={indicatorStyle}\n />\n <ul\n ref={listWrapperRef}\n className=\"relative font-medium list-none space-y-2\"\n >\n {entries.map((item) => (\n <TocItem\n isActive={item.id === activeAnchor}\n key={item.id}\n item={item}\n className=\"pl-0\"\n >\n {item.children && (\n <ul className=\"list-none pl-4 pt-2 space-y-2\">\n {item.children.map((child) => (\n <TocItem\n item={child}\n isActive={child.id === activeAnchor}\n key={child.id}\n />\n ))}\n </ul>\n )}\n </TocItem>\n ))}\n </ul>\n </div>\n </aside>\n );\n};\n","import { useMDXComponents } from \"@mdx-js/react\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { type PropsWithChildren } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { ProseClasses } from \"../../components/Markdown.js\";\nimport {\n useCurrentItem,\n usePrevNext,\n} from \"../../components/navigation/utils.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { Toc } from \"./Toc.js\";\nimport { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n frontmatter = {},\n defaultOptions,\n tableOfContents,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const categoryTitle = useCurrentItem()?.categoryLabel;\n const title = frontmatter.title;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n tableOfContents.find((item) => item.depth === 1)?.value ?? title;\n const hidePager =\n frontmatter.disablePager ?? defaultOptions?.disablePager ?? false;\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 return (\n <div className=\"xl:grid grid-cols-[--sidecar-grid-cols] gap-8 justify-between\">\n <Helmet>\n <title>{pageTitle}</title>\n </Helmet>\n <div\n className={cn(\n ProseClasses,\n \"max-w-full xl:w-full xl:max-w-prose flex-1 flex-shrink pt-[--padding-content-top] pb-[--padding-content-bottom]\",\n )}\n >\n <header>\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title)}>\n {title}\n </Heading>\n )}\n </header>\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n {!hidePager && (\n <>\n <hr />\n <div className=\"not-prose flex flex-wrap items-center justify-between gap-2 lg:gap-8\">\n {prev ? (\n <Link\n to={prev.id}\n className=\"flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-start hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={prev.label}\n >\n <div className=\"text-sm text-muted-foreground\">\n ← Previous page\n </div>\n <div className=\"text-lg text-primary truncate\">\n {prev.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n {next ? (\n <Link\n to={next.id}\n className=\"flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-end hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={next.label}\n >\n <div className=\"text-sm text-muted-foreground\">\n Next page →\n </div>\n <div className=\"text-lg text-primary truncate\">\n {next.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n </div>\n </>\n )}\n </div>\n <div className=\"hidden xl:block\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["DATA_ANCHOR_ATTR","TocItem","item","children","className","isActive","jsxs","cn","jsx","AnchorLink","Toc","entries","activeAnchor","useViewportAnchor","listWrapperRef","useRef","paintedOnce","indicatorStyle","setIndicatorStyles","useState","useEffect","activeElement","topParent","topElement","ListTreeIcon","child","MarkdownHeadings","id","Heading","MdxPage","MdxComponent","frontmatter","defaultOptions","tableOfContents","categoryTitle","_a","useCurrentItem","title","category","hideToc","pageTitle","_b","hidePager","tocEntries","_c","showToc","prev","next","usePrevNext","Helmet","ProseClasses","CategoryHeading","slugify","useMDXComponents","Fragment","Link"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import { j as e } from "./jsx-runtime-B6kdoens.js";
2
- import { g as N, u as P, a as T, S as z, C as R, b as p, c as E, d as F, e as B, T as D, h as H, i as M, j as G, k as Q } from "./index-DA74gNq3.js";
3
- import { I as y, M as m, H as h, P as x, S as V, C as I } from "./Markdown-D6Nze6qq.js";
4
- import { D as _ } from "./DeveloperHint-CiXPc9Xm.js";
5
- import { E as J } from "./ErrorPage-B-zoPPVx.js";
6
- import { c as u } from "./cn-BmFQLtkS.js";
2
+ import { g as N, u as P, a as T, S as z, C as R, b as p, c as E, d as F, e as B, T as D, h as H, i as M, j as G, k as Q } from "./index-DNfiZTPV.js";
3
+ import { C as I } from "./CategoryHeading-3Qtp2yZ8.js";
4
+ import { D as V } from "./DeveloperHint-BE9DzNhv.js";
5
+ import { E as _ } from "./ErrorPage-B0COs372.js";
6
+ import { I as y, M as m, H as h, a as x, P as u, S as J } from "./Markdown-CWI6lU11.js";
7
7
  import { CheckIcon as K, CopyIcon as U, ChevronDownIcon as W, CircleFadingPlusIcon as Z, CircleDotIcon as X, CircleIcon as Y, SquareMinusIcon as ee, SquarePlusIcon as se, ListPlusIcon as te } from "lucide-react";
8
8
  import { useTransition as re, useState as f, useCallback as ne } from "react";
9
9
  import { a as ie } from "./state-CsuHT8ZO.js";
10
- import { B as A } from "./index-g_JJcuFg.js";
11
- import { R as v, T as C, C as O, S as ae } from "./index-dgcPryXi.js";
10
+ import { B as A } from "./index-Do_BBSIs.js";
11
+ import { R as v, T as C, C as O, S as ae } from "./index-Dvh1BL_e.js";
12
12
  function oe(t, s) {
13
13
  return s;
14
14
  }
@@ -135,7 +135,7 @@ const le = N(
135
135
  }) => /* @__PURE__ */ e.jsx(
136
136
  "div",
137
137
  {
138
- className: u(
138
+ className: x(
139
139
  he[t],
140
140
  "relative text-sm flex py-2",
141
141
  "before:border-l before:absolute before:-top-2 before:-bottom-2 before:border-border before:border-dashed before:content-['']",
@@ -146,7 +146,7 @@ const le = N(
146
146
  /* @__PURE__ */ e.jsx(
147
147
  "div",
148
148
  {
149
- className: u(
149
+ className: x(
150
150
  "translate-y-px mx-px opacity-0 group-hover:opacity-100 transition",
151
151
  !s && "-rotate-90"
152
152
  ),
@@ -239,7 +239,7 @@ const le = N(
239
239
  s.description && /* @__PURE__ */ e.jsx(
240
240
  m,
241
241
  {
242
- className: u(x, "text-sm leading-normal line-clamp-4"),
242
+ className: x(u, "text-sm leading-normal line-clamp-4"),
243
243
  content: s.description
244
244
  }
245
245
  ),
@@ -287,8 +287,8 @@ const le = N(
287
287
  r.description && /* @__PURE__ */ e.jsx(
288
288
  m,
289
289
  {
290
- className: u(
291
- x,
290
+ className: x(
291
+ u,
292
292
  "text-sm leading-normal line-clamp-4"
293
293
  ),
294
294
  content: r.description
@@ -306,8 +306,8 @@ const le = N(
306
306
  r.description && /* @__PURE__ */ e.jsx(
307
307
  m,
308
308
  {
309
- className: u(
310
- x,
309
+ className: x(
310
+ u,
311
311
  "text-sm leading-normal line-clamp-4"
312
312
  ),
313
313
  content: r.description
@@ -341,8 +341,8 @@ const le = N(
341
341
  r.description && /* @__PURE__ */ e.jsx(
342
342
  m,
343
343
  {
344
- className: u(
345
- x,
344
+ className: x(
345
+ u,
346
346
  "text-sm leading-normal line-clamp-4"
347
347
  ),
348
348
  content: r.description
@@ -375,7 +375,7 @@ const le = N(
375
375
  s.description && /* @__PURE__ */ e.jsx(
376
376
  m,
377
377
  {
378
- className: `${x} max-w-full prose-img:max-w-prose`,
378
+ className: `${u} max-w-full prose-img:max-w-prose`,
379
379
  content: s.description
380
380
  }
381
381
  ),
@@ -544,12 +544,12 @@ const le = N(
544
544
  context: qe
545
545
  }), i = (r = n.error) == null ? void 0 : r.graphQLErrors.at(0);
546
546
  return i ? /* @__PURE__ */ e.jsx(
547
- J,
547
+ _,
548
548
  {
549
549
  category: "Error",
550
550
  title: "Schema cannot be displayed",
551
551
  message: /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
552
- /* @__PURE__ */ e.jsxs(_, { className: "mb-4", children: [
552
+ /* @__PURE__ */ e.jsxs(V, { className: "mb-4", children: [
553
553
  "Check your configuration value ",
554
554
  /* @__PURE__ */ e.jsx(y, { children: "apis.type" }),
555
555
  " ",
@@ -558,14 +558,14 @@ const le = N(
558
558
  " in the Zudoku config."
559
559
  ] }),
560
560
  "An error occurred while trying to fetch the API reference:",
561
- /* @__PURE__ */ e.jsx(V, { code: i.toString(), language: "plain" })
561
+ /* @__PURE__ */ e.jsx(J, { code: i.toString(), language: "plain" })
562
562
  ] })
563
563
  }
564
564
  ) : n.data ? /* @__PURE__ */ e.jsxs("div", { className: "pt-[--padding-content-top]", children: [
565
565
  /* @__PURE__ */ e.jsxs(
566
566
  "div",
567
567
  {
568
- className: u(x, "mb-16 max-w-full prose-img:max-w-prose"),
568
+ className: x(u, "mb-16 max-w-full prose-img:max-w-prose"),
569
569
  children: [
570
570
  /* @__PURE__ */ e.jsx(I, { children: "Overview" }),
571
571
  /* @__PURE__ */ e.jsx(h, { level: 1, id: "description", registerSidebarAnchor: !0, children: n.data.schema.title }),
@@ -580,7 +580,7 @@ const le = N(
580
580
  a.description && /* @__PURE__ */ e.jsx(
581
581
  m,
582
582
  {
583
- className: `${x} max-w-full prose-img:max-w-prose w-full mt-2 mb-12`,
583
+ className: `${u} max-w-full prose-img:max-w-prose w-full mt-2 mb-12`,
584
584
  content: a.description
585
585
  }
586
586
  ),
@@ -598,4 +598,4 @@ export {
598
598
  De as OperationList,
599
599
  Ie as OperationsFragment
600
600
  };
601
- //# sourceMappingURL=OperationList-Ba24gUd2.js.map
601
+ //# sourceMappingURL=OperationList-BO-ES1C5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OperationList-Ba24gUd2.js","sources":["../src/lib/plugins/openapi/graphql/fragment-masking.ts","../src/lib/plugins/openapi/Endpoint.tsx","../src/lib/util/groupBy.ts","../src/lib/util/renderIf.ts","../src/lib/plugins/openapi/ParameterListItem.tsx","../src/lib/plugins/openapi/ParameterList.tsx","../src/lib/util/objectEntries.ts","../src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupConnector.tsx","../src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupItem.tsx","../src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroup.tsx","../src/lib/plugins/openapi/schema/utils.ts","../src/lib/plugins/openapi/schema/SchemaComponents.tsx","../src/lib/plugins/openapi/schema/SchemaView.tsx","../src/lib/plugins/openapi/OperationListItem.tsx","../src/lib/plugins/openapi/OperationList.tsx"],"sourcesContent":["/* eslint-disable */\nimport type {\n DocumentTypeDecoration,\n ResultOf,\n TypedDocumentNode,\n} from \"@graphql-typed-document-node/core\";\nimport type { FragmentDefinitionNode } from \"graphql\";\nimport type { Incremental } from \"./graphql.js\";\n\nexport type FragmentType<\n TDocumentType extends DocumentTypeDecoration<any, any>,\n> =\n TDocumentType extends DocumentTypeDecoration<infer TType, any>\n ? [TType] extends [{ \" $fragmentName\"?: infer TKey }]\n ? TKey extends string\n ? { \" $fragmentRefs\"?: { [key in TKey]: TType } }\n : never\n : never\n : never;\n\n// return non-nullable if `fragmentType` is non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>>,\n): TType;\n// return nullable if `fragmentType` is undefined\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>> | undefined,\n): TType | undefined;\n// return nullable if `fragmentType` is nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>> | null,\n): TType | null;\n// return nullable if `fragmentType` is nullable or undefined\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | null\n | undefined,\n): TType | null | undefined;\n// return array of non-nullable if `fragmentType` is array of non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: Array<FragmentType<DocumentTypeDecoration<TType, any>>>,\n): Array<TType>;\n// return array of nullable if `fragmentType` is array of nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | Array<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined,\n): Array<TType> | null | undefined;\n// return readonly array of non-nullable if `fragmentType` is array of non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>,\n): ReadonlyArray<TType>;\n// return readonly array of nullable if `fragmentType` is array of nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined,\n): ReadonlyArray<TType> | null | undefined;\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | Array<FragmentType<DocumentTypeDecoration<TType, any>>>\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined,\n): TType | Array<TType> | ReadonlyArray<TType> | null | undefined {\n return fragmentType as any;\n}\n\nexport function makeFragmentData<\n F extends DocumentTypeDecoration<any, any>,\n FT extends ResultOf<F>,\n>(data: FT, _fragment: F): FragmentType<F> {\n return data as FragmentType<F>;\n}\nexport function isFragmentReady<TQuery, TFrag>(\n queryNode: DocumentTypeDecoration<TQuery, any>,\n fragmentNode: TypedDocumentNode<TFrag>,\n data:\n | FragmentType<TypedDocumentNode<Incremental<TFrag>, any>>\n | null\n | undefined,\n): data is FragmentType<typeof fragmentNode> {\n const deferredFields = (\n queryNode as {\n __meta__?: { deferredFields: Record<string, (keyof TFrag)[]> };\n }\n ).__meta__?.deferredFields;\n\n if (!deferredFields) return true;\n\n const fragDef = fragmentNode.definitions[0] as\n | FragmentDefinitionNode\n | undefined;\n const fragName = fragDef?.name?.value;\n\n const fields = (fragName && deferredFields[fragName]) || [];\n return fields.length > 0 && fields.every((field) => data && field in data);\n}\n","import { CheckIcon, CopyIcon } from \"lucide-react\";\nimport { useState, useTransition } from \"react\";\nimport { useQuery } from \"urql\";\nimport { useSelectedServerStore } from \"../../authentication/state.js\";\nimport { InlineCode } from \"../../components/InlineCode.js\";\nimport { Button } from \"../../ui/Button.js\";\nimport { useOasConfig } from \"./context.js\";\nimport { graphql } from \"./graphql/index.js\";\nimport { SimpleSelect } from \"./SimpleSelect.js\";\n\nconst ServersQuery = graphql(/* GraphQL */ `\n query ServersQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n }\n`);\n\nconst CopyButton = ({ url }: { url: string }) => {\n const [isCopied, setIsCopied] = useState(false);\n\n return (\n <Button\n onClick={() => {\n void navigator.clipboard.writeText(url).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n });\n }}\n variant=\"ghost\"\n size=\"icon\"\n >\n {isCopied ? (\n <CheckIcon className=\"text-green-600\" size={14} />\n ) : (\n <CopyIcon size={14} strokeWidth={1.3} />\n )}\n </Button>\n );\n};\n\nconst context = { suspense: true } as const;\n\nexport const Endpoint = () => {\n const [result] = useQuery({\n query: ServersQuery,\n variables: useOasConfig(),\n context,\n });\n const [, startTransition] = useTransition();\n const { selectedServer, setSelectedServer } = useSelectedServerStore();\n\n if (!result.data) return null;\n\n const { servers } = result.data.schema;\n\n if (servers.length === 1) {\n return (\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium text-sm\">Endpoint:</span>\n <InlineCode className=\"text-xs px-2 py-1.5\" selectOnClick>\n {servers[0].url}\n </InlineCode>\n <CopyButton url={servers[0].url} />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-sm\">\n {servers.length > 1 ? \"Endpoints\" : \"Endpoint\"}:\n </span>\n\n <SimpleSelect\n className=\"font-mono text-xs bg-border/50 dark:bg-border/70 py-1.5 max-w-[450px] truncate\"\n onChange={(e) =>\n startTransition(() => {\n setSelectedServer(e.target.value);\n })\n }\n value={selectedServer ?? result.data.schema.url}\n showChevrons={servers.length > 1}\n options={servers.map((server) => ({\n value: server.url,\n label: server.url,\n }))}\n />\n <CopyButton url={selectedServer ?? result.data.schema.url} />\n </div>\n );\n};\n","export const groupBy = <\n T extends Record<PropertyKey, any>,\n KeySelector extends (item: T) => PropertyKey,\n>(\n arr: T[],\n keySelector: KeySelector,\n): Partial<Record<ReturnType<KeySelector>, T[]>> => {\n return arr.reduce(\n (accumulator, val) => {\n const groupedKey = keySelector(val) as ReturnType<KeySelector>;\n if (!accumulator[groupedKey]) {\n accumulator[groupedKey] = [];\n }\n accumulator[groupedKey].push(val);\n return accumulator;\n },\n {} as Record<ReturnType<KeySelector>, T[]>,\n );\n};\n","export const renderIf = <G, R>(\n variable: G | undefined | null,\n callback: (variable: G) => R,\n): R | undefined => (variable ? callback(variable) : undefined);\n","import { Markdown } from \"../../components/Markdown.js\";\nimport { type SchemaObject } from \"../../oas/graphql/index.js\";\nimport { ColorizedParam } from \"./ColorizedParam.js\";\nimport type { OperationListItemResult } from \"./OperationList.js\";\nimport type { ParameterGroup } from \"./OperationListItem.js\";\n\nconst getParameterSchema = (\n parameter: ParameterListItemResult,\n): SchemaObject => {\n if (parameter.schema != null && typeof parameter.schema === \"object\") {\n return parameter.schema;\n }\n return {\n type: \"string\",\n };\n};\n\nexport type ParameterListItemResult = NonNullable<\n OperationListItemResult[\"parameters\"]\n>[number];\n\nexport const ParameterListItem = ({\n parameter,\n group,\n id,\n}: {\n parameter: ParameterListItemResult;\n group: ParameterGroup;\n id: string;\n}) => (\n <li className=\"p-4 bg-border/20 text-sm flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n <code>\n {group === \"path\" ? (\n <ColorizedParam\n name={parameter.name}\n backgroundOpacity=\"15%\"\n slug={id + \"-\" + parameter.name.toLocaleLowerCase()}\n />\n ) : (\n parameter.name\n )}\n </code>\n {parameter.required && (\n <span className=\"py-px px-1.5 font-medium bg-primary/75 text-muted rounded-lg\">\n required\n </span>\n )}\n {getParameterSchema(parameter).type && (\n <span className=\"text-muted-foreground\">\n {getParameterSchema(parameter).type}\n </span>\n )}\n </div>\n {parameter.description && (\n <Markdown\n content={parameter.description}\n className=\"text-sm prose-p:my-1 prose-code:whitespace-pre-line\"\n />\n )}\n </li>\n);\n","import { Heading } from \"../../components/Heading.js\";\nimport { Card } from \"../../ui/Card.js\";\nimport type { ParameterGroup } from \"./OperationListItem.js\";\nimport {\n ParameterListItem,\n type ParameterListItemResult,\n} from \"./ParameterListItem.js\";\n\nexport const ParameterList = ({\n group,\n parameters,\n id,\n}: {\n group: ParameterGroup;\n parameters: ParameterListItemResult[];\n id: string;\n}) => (\n <>\n <Heading level={3} id={`${id}/${group}-parameters`} className=\"capitalize\">\n {group === \"header\" ? \"Headers\" : `${group} Parameters`}\n </Heading>\n <Card>\n <ul className=\"list-none m-0 px-0 divide-y \">\n {parameters\n .sort((a, b) => (a.required === b.required ? 0 : a.required ? -1 : 1))\n .map((parameter) => (\n <ParameterListItem\n key={`${parameter.name}-${parameter.in}`}\n parameter={parameter}\n id={id}\n group={group}\n />\n ))}\n </ul>\n </Card>\n </>\n);\n","type ValueOf<T> = T[keyof T];\ntype Entries<T> = [keyof T, ValueOf<T>][];\n\nexport const objectEntries = <T extends object>(obj: T): Entries<T> =>\n Object.entries(obj) as Entries<T>;\n","import {\n ChevronDownIcon,\n CircleDotIcon,\n CircleFadingPlusIcon,\n CircleIcon,\n} from \"lucide-react\";\nimport { cn } from \"../../../../util/cn.js\";\n\nimport type { LogicalGroupType } from \"../utils.js\";\n\nconst iconMap = {\n AND: <CircleFadingPlusIcon size={16} className=\"fill-card\" />,\n OR: <CircleDotIcon size={16} className=\"fill-card\" />,\n ONE: <CircleIcon size={14} className=\"fill-card\" />,\n} as const;\n\nconst colorClass = {\n AND: \"text-green-500 dark:text-green-300/60\",\n OR: \"text-blue-400 dark:text-blue-500\",\n ONE: \"text-purple-500 dark:text-purple-300/60\",\n} as const;\n\nexport const LogicalGroupConnector = ({\n type,\n isOpen,\n className,\n}: {\n type: LogicalGroupType;\n isOpen: boolean;\n className?: string;\n}) => {\n return (\n <div\n className={cn(\n colorClass[type],\n \"relative text-sm flex py-2\",\n \"before:border-l before:absolute before:-top-2 before:-bottom-2 before:border-border before:border-dashed before:content-['']\",\n className,\n )}\n >\n <div className=\"-translate-x-[7px] flex gap-1 items-center\">\n {iconMap[type]}\n <div\n className={cn(\n \"translate-y-px mx-px opacity-0 group-hover:opacity-100 transition\",\n !isOpen && \"-rotate-90\",\n )}\n >\n <ChevronDownIcon size={16} />\n </div>\n </div>\n </div>\n );\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { useState } from \"react\";\nimport type { SchemaObject } from \"../../../../oas/parser/index.js\";\nimport { SchemaView } from \"../SchemaView.js\";\nimport type { LogicalGroupType } from \"../utils.js\";\nimport { LogicalGroupConnector } from \"./LogicalGroupConnector.js\";\n\nexport const LogicalGroupItem = (props: {\n type: LogicalGroupType;\n schema: SchemaObject;\n level: number;\n}) => {\n const [isOpen, setIsOpen] = useState(true);\n\n return (\n <Collapsible.Root\n open={isOpen}\n onOpenChange={() => setIsOpen((prev) => !prev)}\n className=\"group\"\n >\n <Collapsible.Trigger>\n <LogicalGroupConnector type={props.type} isOpen={isOpen} />\n </Collapsible.Trigger>\n {!isOpen && <div className=\"wavy-line bg-border translate-y-1\" />}\n <Collapsible.Content>\n <SchemaView schema={props.schema} level={props.level + 1} />\n </Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { SquareMinusIcon, SquarePlusIcon } from \"lucide-react\";\nimport type { SchemaObject } from \"../../../../oas/parser/index.js\";\nimport { Card } from \"../../../../ui/Card.js\";\nimport type { LogicalGroupType } from \"../utils.js\";\nimport { LogicalGroupItem } from \"./LogicalGroupItem.js\";\n\nconst typeLabel = {\n AND: \"All of\",\n OR: \"Any of\",\n ONE: \"One of\",\n};\n\nexport const LogicalGroup = ({\n schemas,\n type,\n isOpen,\n level,\n toggleOpen,\n}: {\n schemas: SchemaObject[];\n type: LogicalGroupType;\n isOpen: boolean;\n toggleOpen: () => void;\n level: number;\n}) => (\n <Collapsible.Root open={isOpen} onOpenChange={toggleOpen} asChild>\n <Card className=\"px-6\">\n <Collapsible.Trigger className=\"flex gap-2 items-center py-2 w-full text-sm text-muted-foreground -translate-x-1.5\">\n {isOpen ? <SquareMinusIcon size={14} /> : <SquarePlusIcon size={14} />}\n <span>{typeLabel[type]}</span>\n </Collapsible.Trigger>\n\n <Collapsible.Content className=\"pb-4\">\n {schemas.map((subSchema, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <LogicalGroupItem\n key={index}\n type={type}\n schema={subSchema}\n level={level}\n />\n ))}\n </Collapsible.Content>\n </Card>\n </Collapsible.Root>\n);\n","import type { SchemaObject } from \"../../../oas/parser/index.js\";\n\nexport const isComplexType = (value: SchemaObject) =>\n value.type === \"object\" ||\n (value.type === \"array\" &&\n typeof value.items === \"object\" &&\n (!value.items.type || value.items.type === \"object\"));\n\nexport const hasLogicalGroupings = (value: SchemaObject) =>\n Boolean(value.oneOf ?? value.allOf ?? value.anyOf);\n\nexport const LogicalSchemaTypeMap = {\n allOf: \"AND\",\n anyOf: \"OR\",\n oneOf: \"ONE\",\n} as const;\n\nexport type LogicalGroupType = \"AND\" | \"OR\" | \"ONE\";\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { ListPlusIcon } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport { Markdown, ProseClasses } from \"../../../components/Markdown.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { objectEntries } from \"../../../util/objectEntries.js\";\nimport { LogicalGroup } from \"./LogicalGroup/LogicalGroup.js\";\nimport { SchemaView } from \"./SchemaView.js\";\nimport {\n hasLogicalGroupings,\n isComplexType,\n LogicalSchemaTypeMap,\n} from \"./utils.js\";\n\nexport const SchemaLogicalGroup = ({\n schema,\n level,\n}: {\n schema: SchemaObject;\n level: number;\n}) => {\n const [isOpen, setIsOpen] = useState(true);\n const toggleOpen = useCallback(() => setIsOpen((prev) => !prev), []);\n\n for (const [key, type] of objectEntries(LogicalSchemaTypeMap)) {\n if (!schema[key]) continue;\n\n return (\n <LogicalGroup\n schemas={schema[key]}\n type={type}\n isOpen={isOpen}\n toggleOpen={toggleOpen}\n level={level}\n />\n );\n }\n};\n\nexport const SchemaPropertyItem = ({\n name,\n schema,\n group,\n level,\n defaultOpen = false,\n showCollapseButton = true,\n}: {\n name: string;\n schema: SchemaObject;\n group: \"required\" | \"optional\" | \"deprecated\";\n level: number;\n defaultOpen?: boolean;\n showCollapseButton?: boolean;\n}) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n return (\n <li className=\"p-4 bg-border/20 hover:bg-border/30\">\n <div className=\"flex flex-col gap-1 justify-between text-sm\">\n <div className=\"flex gap-2 items-center\">\n <code>{name}</code>\n <span className=\"text-muted-foreground\">\n {schema.type === \"array\" && schema.items.type ? (\n <span>{schema.items.type}[]</span>\n ) : Array.isArray(schema.type) ? (\n <span>{schema.type.join(\" | \")}</span>\n ) : (\n <span>{schema.type}</span>\n )}\n </span>\n {group === \"optional\" && (\n <span className=\"py-px px-1.5 font-medium border rounded-lg\">\n optional\n </span>\n )}\n </div>\n\n {schema.description && (\n <Markdown\n className={cn(ProseClasses, \"text-sm leading-normal line-clamp-4\")}\n content={schema.description}\n />\n )}\n\n {(hasLogicalGroupings(schema) || isComplexType(schema)) && (\n <Collapsible.Root\n defaultOpen={defaultOpen}\n open={isOpen}\n onOpenChange={() => setIsOpen(!isOpen)}\n >\n {showCollapseButton && (\n <Collapsible.Trigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"mt-2 flex gap-1.5\"\n >\n <ListPlusIcon size={18} />\n {!isOpen\n ? \"Show nested properties\"\n : \"Hide nested properties\"}\n </Button>\n </Collapsible.Trigger>\n )}\n <Collapsible.Content>\n <div className=\"mt-2\">\n {hasLogicalGroupings(schema) ? (\n <SchemaLogicalGroup schema={schema} level={level + 1} />\n ) : schema.type === \"object\" ? (\n <SchemaView schema={schema} level={level + 1} />\n ) : (\n schema.type === \"array\" &&\n typeof schema.items === \"object\" && (\n <SchemaView schema={schema.items} level={level + 1} />\n )\n )}\n </div>\n </Collapsible.Content>\n </Collapsible.Root>\n )}\n </div>\n </li>\n );\n};\n","import { Markdown, ProseClasses } from \"../../../components/Markdown.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"../../../ui/Card.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { groupBy } from \"../../../util/groupBy.js\";\nimport { SchemaLogicalGroup, SchemaPropertyItem } from \"./SchemaComponents.js\";\nimport { hasLogicalGroupings } from \"./utils.js\";\n\nexport const SchemaView = ({\n schema,\n level = 0,\n defaultOpen = false,\n}: {\n schema?: SchemaObject | null;\n level?: number;\n defaultOpen?: boolean;\n}) => {\n if (!schema || Object.keys(schema).length === 0) {\n return (\n <Card className=\"p-4\">\n <span className=\"text-sm text-muted-foreground italic\">\n No response specified\n </span>\n </Card>\n );\n }\n\n const renderSchema = (schema: SchemaObject, level: number) => {\n if (hasLogicalGroupings(schema)) {\n return <SchemaLogicalGroup schema={schema} level={level} />;\n }\n\n // Sometimes items is not defined\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (schema.type === \"array\" && schema.items) {\n const itemsSchema = schema.items as SchemaObject;\n\n if (\n typeof itemsSchema.type === \"string\" &&\n [\"string\", \"number\", \"boolean\", \"integer\"].includes(itemsSchema.type)\n ) {\n return (\n <Card className=\"p-4\">\n <span className=\"text-sm text-muted-foreground\">\n {itemsSchema.type}[]\n </span>\n {schema.description && (\n <Markdown\n className={cn(\n ProseClasses,\n \"text-sm leading-normal line-clamp-4\",\n )}\n content={schema.description}\n />\n )}\n </Card>\n );\n } else if (itemsSchema.type === \"object\") {\n return (\n <Card className=\"flex flex-col gap-2 bg-border/30 p-4\">\n <span className=\"text-sm text-muted-foreground\">object[]</span>\n {renderSchema(itemsSchema, level + 1)}\n </Card>\n );\n } else {\n return renderSchema(itemsSchema, level + 1);\n }\n }\n\n if (schema.type === \"object\" && !schema.properties) {\n return (\n <Card className=\"p-4 flex gap-2 items-center\">\n {\"name\" in schema && <>{schema.name}</>}\n <span className=\"text-sm text-muted-foreground\">object</span>\n {schema.description && (\n <Markdown\n className={cn(\n ProseClasses,\n \"text-sm leading-normal line-clamp-4\",\n )}\n content={schema.description}\n />\n )}\n </Card>\n );\n }\n\n if (schema.properties) {\n const groupedProperties = groupBy(\n Object.entries(schema.properties),\n ([propertyName, property]) => {\n return property.deprecated\n ? \"deprecated\"\n : schema.required?.includes(propertyName)\n ? \"required\"\n : \"optional\";\n },\n );\n\n const groupNames = [\"required\", \"optional\", \"deprecated\"] as const;\n\n return (\n <Card className=\"divide-y overflow-hidden\">\n {groupNames.map(\n (group) =>\n groupedProperties[group] && (\n <ul key={group} className=\"divide-y\">\n {groupedProperties[group].map(([name, schema]) => (\n <SchemaPropertyItem\n key={name}\n name={name}\n schema={schema}\n group={group}\n level={level}\n defaultOpen={defaultOpen}\n />\n ))}\n </ul>\n ),\n )}\n </Card>\n );\n }\n\n if (\n typeof schema.type === \"string\" &&\n [\"string\", \"number\", \"boolean\", \"integer\", \"null\"].includes(schema.type)\n ) {\n return (\n <Card className=\"p-4\">\n <span className=\"text-sm text-muted-foreground\">{schema.type}</span>\n {schema.description && (\n <Markdown\n className={cn(\n ProseClasses,\n \"text-sm leading-normal line-clamp-4\",\n )}\n content={schema.description}\n />\n )}\n </Card>\n );\n }\n\n if (schema.additionalProperties) {\n return (\n <Card className=\"my-2\">\n <CardHeader>\n <CardTitle>Additional Properties:</CardTitle>\n </CardHeader>\n <CardContent>\n {renderSchema(\n schema.additionalProperties as SchemaObject,\n level + 1,\n )}\n </CardContent>\n </Card>\n );\n }\n\n return null;\n };\n\n return renderSchema(schema, level);\n};\n","import { useState } from \"react\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Markdown, ProseClasses } from \"../../components/Markdown.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../ui/Tabs.js\";\nimport { groupBy } from \"../../util/groupBy.js\";\nimport { renderIf } from \"../../util/renderIf.js\";\nimport { OperationsFragment } from \"./OperationList.js\";\nimport { ParameterList } from \"./ParameterList.js\";\nimport { Sidecar } from \"./Sidecar.js\";\nimport { FragmentType, useFragment } from \"./graphql/index.js\";\nimport { SchemaView } from \"./schema/SchemaView.js\";\n\nexport const PARAM_GROUPS = [\"path\", \"query\", \"header\", \"cookie\"] as const;\nexport type ParameterGroup = (typeof PARAM_GROUPS)[number];\n\nexport const OperationListItem = ({\n operationFragment,\n}: {\n operationFragment: FragmentType<typeof OperationsFragment>;\n}) => {\n const operation = useFragment(OperationsFragment, operationFragment);\n const groupedParameters = groupBy(\n operation.parameters ?? [],\n (param) => param.in,\n );\n\n const first = operation.responses.at(0);\n const [selectedResponse, setSelectedResponse] = useState(first?.statusCode);\n\n return (\n <div\n key={operation.operationId}\n className=\"grid grid-cols-1 lg:grid-cols-[4fr_3fr] gap-8 items-start border-b-2 mb-16 pb-16\"\n >\n <div className=\"flex flex-col gap-4\">\n <Heading level={2} id={operation.slug} registerSidebarAnchor>\n {operation.summary}\n </Heading>\n {operation.description && (\n <Markdown\n className={`${ProseClasses} max-w-full prose-img:max-w-prose`}\n content={operation.description}\n />\n )}\n {operation.parameters && operation.parameters.length > 0 && (\n <>\n {PARAM_GROUPS.flatMap((group) =>\n groupedParameters[group]?.length ? (\n <ParameterList\n key={group}\n id={operation.slug}\n parameters={groupedParameters[group]}\n group={group}\n />\n ) : (\n []\n ),\n )}\n </>\n )}\n {renderIf(operation.requestBody?.content?.at(0)?.schema, (schema) => (\n <div className=\"mt-4 flex flex-col gap-4\">\n <Heading\n level={3}\n className=\"capitalize\"\n id={`${operation.slug}/request-body`}\n registerSidebarAnchor\n >\n Request Body\n </Heading>\n <SchemaView schema={schema} />\n </div>\n ))}\n {operation.responses.length > 0 && (\n <>\n <Heading\n level={3}\n className=\"capitalize mt-8 pt-8 border-t\"\n id={`${operation.slug}/responses`}\n registerSidebarAnchor\n >\n Responses\n </Heading>\n <Tabs\n onValueChange={(value) => setSelectedResponse(value)}\n value={selectedResponse}\n >\n {operation.responses.length > 1 && (\n <TabsList>\n {operation.responses.map((response) => (\n <TabsTrigger\n value={response.statusCode}\n key={response.statusCode}\n title={response.description ?? undefined}\n >\n {response.statusCode}\n </TabsTrigger>\n ))}\n </TabsList>\n )}\n <ul className=\"list-none m-0 px-0\">\n {operation.responses.map((response) => (\n <TabsContent\n value={response.statusCode}\n key={response.statusCode}\n >\n <SchemaView\n schema={\n response.content?.find((content) => content.schema)\n ?.schema\n }\n />\n </TabsContent>\n ))}\n </ul>\n </Tabs>\n </>\n )}\n </div>\n\n <Sidecar\n selectedResponse={selectedResponse}\n onSelectResponse={setSelectedResponse}\n operation={operation}\n />\n </div>\n );\n};\n","import { ResultOf } from \"@graphql-typed-document-node/core\";\nimport { useQuery } from \"urql\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { DeveloperHint } from \"../../components/DeveloperHint.js\";\nimport { ErrorPage } from \"../../components/ErrorPage.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { InlineCode } from \"../../components/InlineCode.js\";\nimport { Markdown, ProseClasses } from \"../../components/Markdown.js\";\nimport { SyntaxHighlight } from \"../../components/SyntaxHighlight.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { Endpoint } from \"./Endpoint.js\";\nimport { OperationListItem } from \"./OperationListItem.js\";\nimport StaggeredRender from \"./StaggeredRender.js\";\nimport { useOasConfig } from \"./context.js\";\nimport { graphql } from \"./graphql/index.js\";\n\nexport const OperationsFragment = graphql(/* GraphQL */ `\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n }\n`);\n\nexport type OperationListItemResult = ResultOf<typeof OperationsFragment>;\n\nconst AllOperationsQuery = graphql(/* GraphQL */ `\n query AllOperations($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n description\n title\n url\n version\n tags {\n name\n description\n operations {\n slug\n ...OperationsFragment\n }\n }\n }\n }\n`);\n\nconst suspenseContext = { suspense: true };\n\nexport const OperationList = () => {\n const { type, input } = useOasConfig();\n\n const [result] = useQuery({\n query: AllOperationsQuery,\n variables: { type, input },\n context: suspenseContext,\n });\n\n const error = result.error?.graphQLErrors.at(0);\n\n // Looks like there is no Suspense level error handling (yet)?\n // So we handle the error case in the component directly\n if (error) {\n return (\n <ErrorPage\n category=\"Error\"\n title=\"Schema cannot be displayed\"\n message={\n <>\n <DeveloperHint className=\"mb-4\">\n Check your configuration value <InlineCode>apis.type</InlineCode>{\" \"}\n and <InlineCode>apis.input</InlineCode> in the Zudoku config.\n </DeveloperHint>\n An error occurred while trying to fetch the API reference:\n <SyntaxHighlight code={error.toString()} language=\"plain\" />\n </>\n }\n />\n );\n }\n\n if (!result.data) return null;\n\n return (\n <div className=\"pt-[--padding-content-top]\">\n <div\n className={cn(ProseClasses, \"mb-16 max-w-full prose-img:max-w-prose\")}\n >\n <CategoryHeading>Overview</CategoryHeading>\n <Heading level={1} id=\"description\" registerSidebarAnchor>\n {result.data.schema.title}\n </Heading>\n <Markdown content={result.data.schema.description ?? \"\"} />\n </div>\n <hr />\n <div className=\"my-4 flex justify-end\">\n <Endpoint />\n </div>\n\n {result.data.schema.tags\n .filter((tag) => tag.operations.length > 0)\n .map((tag) => (\n <div key={tag.name}>\n {tag.name && <CategoryHeading>{tag.name}</CategoryHeading>}\n {tag.description && (\n <Markdown\n className={`${ProseClasses} max-w-full prose-img:max-w-prose w-full mt-2 mb-12`}\n content={tag.description}\n />\n )}\n <div className=\"operation mb-12\">\n <StaggeredRender>\n {tag.operations.map((fragment) => (\n <OperationListItem\n key={fragment.slug}\n operationFragment={fragment}\n />\n ))}\n </StaggeredRender>\n </div>\n </div>\n ))}\n </div>\n );\n};\n"],"names":["useFragment","_documentNode","fragmentType","ServersQuery","graphql","CopyButton","url","isCopied","setIsCopied","useState","jsx","Button","CheckIcon","CopyIcon","context","Endpoint","result","useQuery","useOasConfig","startTransition","useTransition","selectedServer","setSelectedServer","useSelectedServerStore","servers","jsxs","InlineCode","SimpleSelect","e","server","groupBy","arr","keySelector","accumulator","val","groupedKey","renderIf","variable","callback","getParameterSchema","parameter","ParameterListItem","group","id","ColorizedParam","Markdown","ParameterList","parameters","Fragment","Heading","Card","a","b","objectEntries","obj","iconMap","CircleFadingPlusIcon","CircleDotIcon","CircleIcon","colorClass","LogicalGroupConnector","type","isOpen","className","cn","ChevronDownIcon","LogicalGroupItem","props","setIsOpen","Collapsible.Root","prev","Collapsible.Trigger","Collapsible.Content","SchemaView","typeLabel","LogicalGroup","schemas","level","toggleOpen","SquareMinusIcon","SquarePlusIcon","subSchema","index","isComplexType","value","hasLogicalGroupings","LogicalSchemaTypeMap","SchemaLogicalGroup","schema","useCallback","key","SchemaPropertyItem","name","defaultOpen","showCollapseButton","ProseClasses","ListPlusIcon","renderSchema","itemsSchema","groupedProperties","propertyName","property","groupNames","CardHeader","CardTitle","CardContent","PARAM_GROUPS","OperationListItem","operationFragment","operation","OperationsFragment","groupedParameters","param","first","selectedResponse","setSelectedResponse","_a","_c","_b","Tabs","TabsList","response","TabsTrigger","TabsContent","content","Sidecar","AllOperationsQuery","suspenseContext","OperationList","input","error","ErrorPage","DeveloperHint","SyntaxHighlight","CategoryHeading","tag","StaggeredRender","fragment"],"mappings":"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"}
1
+ {"version":3,"file":"OperationList-BO-ES1C5.js","sources":["../src/lib/plugins/openapi/graphql/fragment-masking.ts","../src/lib/plugins/openapi/Endpoint.tsx","../src/lib/util/groupBy.ts","../src/lib/util/renderIf.ts","../src/lib/plugins/openapi/ParameterListItem.tsx","../src/lib/plugins/openapi/ParameterList.tsx","../src/lib/util/objectEntries.ts","../src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupConnector.tsx","../src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupItem.tsx","../src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroup.tsx","../src/lib/plugins/openapi/schema/utils.ts","../src/lib/plugins/openapi/schema/SchemaComponents.tsx","../src/lib/plugins/openapi/schema/SchemaView.tsx","../src/lib/plugins/openapi/OperationListItem.tsx","../src/lib/plugins/openapi/OperationList.tsx"],"sourcesContent":["/* eslint-disable */\nimport type {\n DocumentTypeDecoration,\n ResultOf,\n TypedDocumentNode,\n} from \"@graphql-typed-document-node/core\";\nimport type { FragmentDefinitionNode } from \"graphql\";\nimport type { Incremental } from \"./graphql.js\";\n\nexport type FragmentType<\n TDocumentType extends DocumentTypeDecoration<any, any>,\n> =\n TDocumentType extends DocumentTypeDecoration<infer TType, any>\n ? [TType] extends [{ \" $fragmentName\"?: infer TKey }]\n ? TKey extends string\n ? { \" $fragmentRefs\"?: { [key in TKey]: TType } }\n : never\n : never\n : never;\n\n// return non-nullable if `fragmentType` is non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>>,\n): TType;\n// return nullable if `fragmentType` is undefined\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>> | undefined,\n): TType | undefined;\n// return nullable if `fragmentType` is nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: FragmentType<DocumentTypeDecoration<TType, any>> | null,\n): TType | null;\n// return nullable if `fragmentType` is nullable or undefined\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | null\n | undefined,\n): TType | null | undefined;\n// return array of non-nullable if `fragmentType` is array of non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: Array<FragmentType<DocumentTypeDecoration<TType, any>>>,\n): Array<TType>;\n// return array of nullable if `fragmentType` is array of nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | Array<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined,\n): Array<TType> | null | undefined;\n// return readonly array of non-nullable if `fragmentType` is array of non-nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType: ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>,\n): ReadonlyArray<TType>;\n// return readonly array of nullable if `fragmentType` is array of nullable\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined,\n): ReadonlyArray<TType> | null | undefined;\nexport function useFragment<TType>(\n _documentNode: DocumentTypeDecoration<TType, any>,\n fragmentType:\n | FragmentType<DocumentTypeDecoration<TType, any>>\n | Array<FragmentType<DocumentTypeDecoration<TType, any>>>\n | ReadonlyArray<FragmentType<DocumentTypeDecoration<TType, any>>>\n | null\n | undefined,\n): TType | Array<TType> | ReadonlyArray<TType> | null | undefined {\n return fragmentType as any;\n}\n\nexport function makeFragmentData<\n F extends DocumentTypeDecoration<any, any>,\n FT extends ResultOf<F>,\n>(data: FT, _fragment: F): FragmentType<F> {\n return data as FragmentType<F>;\n}\nexport function isFragmentReady<TQuery, TFrag>(\n queryNode: DocumentTypeDecoration<TQuery, any>,\n fragmentNode: TypedDocumentNode<TFrag>,\n data:\n | FragmentType<TypedDocumentNode<Incremental<TFrag>, any>>\n | null\n | undefined,\n): data is FragmentType<typeof fragmentNode> {\n const deferredFields = (\n queryNode as {\n __meta__?: { deferredFields: Record<string, (keyof TFrag)[]> };\n }\n ).__meta__?.deferredFields;\n\n if (!deferredFields) return true;\n\n const fragDef = fragmentNode.definitions[0] as\n | FragmentDefinitionNode\n | undefined;\n const fragName = fragDef?.name?.value;\n\n const fields = (fragName && deferredFields[fragName]) || [];\n return fields.length > 0 && fields.every((field) => data && field in data);\n}\n","import { CheckIcon, CopyIcon } from \"lucide-react\";\nimport { useState, useTransition } from \"react\";\nimport { useQuery } from \"urql\";\nimport { useSelectedServerStore } from \"../../authentication/state.js\";\nimport { InlineCode } from \"../../components/InlineCode.js\";\nimport { Button } from \"../../ui/Button.js\";\nimport { useOasConfig } from \"./context.js\";\nimport { graphql } from \"./graphql/index.js\";\nimport { SimpleSelect } from \"./SimpleSelect.js\";\n\nconst ServersQuery = graphql(/* GraphQL */ `\n query ServersQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n }\n`);\n\nconst CopyButton = ({ url }: { url: string }) => {\n const [isCopied, setIsCopied] = useState(false);\n\n return (\n <Button\n onClick={() => {\n void navigator.clipboard.writeText(url).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n });\n }}\n variant=\"ghost\"\n size=\"icon\"\n >\n {isCopied ? (\n <CheckIcon className=\"text-green-600\" size={14} />\n ) : (\n <CopyIcon size={14} strokeWidth={1.3} />\n )}\n </Button>\n );\n};\n\nconst context = { suspense: true } as const;\n\nexport const Endpoint = () => {\n const [result] = useQuery({\n query: ServersQuery,\n variables: useOasConfig(),\n context,\n });\n const [, startTransition] = useTransition();\n const { selectedServer, setSelectedServer } = useSelectedServerStore();\n\n if (!result.data) return null;\n\n const { servers } = result.data.schema;\n\n if (servers.length === 1) {\n return (\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium text-sm\">Endpoint:</span>\n <InlineCode className=\"text-xs px-2 py-1.5\" selectOnClick>\n {servers[0].url}\n </InlineCode>\n <CopyButton url={servers[0].url} />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-sm\">\n {servers.length > 1 ? \"Endpoints\" : \"Endpoint\"}:\n </span>\n\n <SimpleSelect\n className=\"font-mono text-xs bg-border/50 dark:bg-border/70 py-1.5 max-w-[450px] truncate\"\n onChange={(e) =>\n startTransition(() => {\n setSelectedServer(e.target.value);\n })\n }\n value={selectedServer ?? result.data.schema.url}\n showChevrons={servers.length > 1}\n options={servers.map((server) => ({\n value: server.url,\n label: server.url,\n }))}\n />\n <CopyButton url={selectedServer ?? result.data.schema.url} />\n </div>\n );\n};\n","export const groupBy = <\n T extends Record<PropertyKey, any>,\n KeySelector extends (item: T) => PropertyKey,\n>(\n arr: T[],\n keySelector: KeySelector,\n): Partial<Record<ReturnType<KeySelector>, T[]>> => {\n return arr.reduce(\n (accumulator, val) => {\n const groupedKey = keySelector(val) as ReturnType<KeySelector>;\n if (!accumulator[groupedKey]) {\n accumulator[groupedKey] = [];\n }\n accumulator[groupedKey].push(val);\n return accumulator;\n },\n {} as Record<ReturnType<KeySelector>, T[]>,\n );\n};\n","export const renderIf = <G, R>(\n variable: G | undefined | null,\n callback: (variable: G) => R,\n): R | undefined => (variable ? callback(variable) : undefined);\n","import { Markdown } from \"../../components/Markdown.js\";\nimport { type SchemaObject } from \"../../oas/graphql/index.js\";\nimport { ColorizedParam } from \"./ColorizedParam.js\";\nimport type { OperationListItemResult } from \"./OperationList.js\";\nimport type { ParameterGroup } from \"./OperationListItem.js\";\n\nconst getParameterSchema = (\n parameter: ParameterListItemResult,\n): SchemaObject => {\n if (parameter.schema != null && typeof parameter.schema === \"object\") {\n return parameter.schema;\n }\n return {\n type: \"string\",\n };\n};\n\nexport type ParameterListItemResult = NonNullable<\n OperationListItemResult[\"parameters\"]\n>[number];\n\nexport const ParameterListItem = ({\n parameter,\n group,\n id,\n}: {\n parameter: ParameterListItemResult;\n group: ParameterGroup;\n id: string;\n}) => (\n <li className=\"p-4 bg-border/20 text-sm flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n <code>\n {group === \"path\" ? (\n <ColorizedParam\n name={parameter.name}\n backgroundOpacity=\"15%\"\n slug={id + \"-\" + parameter.name.toLocaleLowerCase()}\n />\n ) : (\n parameter.name\n )}\n </code>\n {parameter.required && (\n <span className=\"py-px px-1.5 font-medium bg-primary/75 text-muted rounded-lg\">\n required\n </span>\n )}\n {getParameterSchema(parameter).type && (\n <span className=\"text-muted-foreground\">\n {getParameterSchema(parameter).type}\n </span>\n )}\n </div>\n {parameter.description && (\n <Markdown\n content={parameter.description}\n className=\"text-sm prose-p:my-1 prose-code:whitespace-pre-line\"\n />\n )}\n </li>\n);\n","import { Heading } from \"../../components/Heading.js\";\nimport { Card } from \"../../ui/Card.js\";\nimport type { ParameterGroup } from \"./OperationListItem.js\";\nimport {\n ParameterListItem,\n type ParameterListItemResult,\n} from \"./ParameterListItem.js\";\n\nexport const ParameterList = ({\n group,\n parameters,\n id,\n}: {\n group: ParameterGroup;\n parameters: ParameterListItemResult[];\n id: string;\n}) => (\n <>\n <Heading level={3} id={`${id}/${group}-parameters`} className=\"capitalize\">\n {group === \"header\" ? \"Headers\" : `${group} Parameters`}\n </Heading>\n <Card>\n <ul className=\"list-none m-0 px-0 divide-y \">\n {parameters\n .sort((a, b) => (a.required === b.required ? 0 : a.required ? -1 : 1))\n .map((parameter) => (\n <ParameterListItem\n key={`${parameter.name}-${parameter.in}`}\n parameter={parameter}\n id={id}\n group={group}\n />\n ))}\n </ul>\n </Card>\n </>\n);\n","type ValueOf<T> = T[keyof T];\ntype Entries<T> = [keyof T, ValueOf<T>][];\n\nexport const objectEntries = <T extends object>(obj: T): Entries<T> =>\n Object.entries(obj) as Entries<T>;\n","import {\n ChevronDownIcon,\n CircleDotIcon,\n CircleFadingPlusIcon,\n CircleIcon,\n} from \"lucide-react\";\nimport { cn } from \"../../../../util/cn.js\";\n\nimport type { LogicalGroupType } from \"../utils.js\";\n\nconst iconMap = {\n AND: <CircleFadingPlusIcon size={16} className=\"fill-card\" />,\n OR: <CircleDotIcon size={16} className=\"fill-card\" />,\n ONE: <CircleIcon size={14} className=\"fill-card\" />,\n} as const;\n\nconst colorClass = {\n AND: \"text-green-500 dark:text-green-300/60\",\n OR: \"text-blue-400 dark:text-blue-500\",\n ONE: \"text-purple-500 dark:text-purple-300/60\",\n} as const;\n\nexport const LogicalGroupConnector = ({\n type,\n isOpen,\n className,\n}: {\n type: LogicalGroupType;\n isOpen: boolean;\n className?: string;\n}) => {\n return (\n <div\n className={cn(\n colorClass[type],\n \"relative text-sm flex py-2\",\n \"before:border-l before:absolute before:-top-2 before:-bottom-2 before:border-border before:border-dashed before:content-['']\",\n className,\n )}\n >\n <div className=\"-translate-x-[7px] flex gap-1 items-center\">\n {iconMap[type]}\n <div\n className={cn(\n \"translate-y-px mx-px opacity-0 group-hover:opacity-100 transition\",\n !isOpen && \"-rotate-90\",\n )}\n >\n <ChevronDownIcon size={16} />\n </div>\n </div>\n </div>\n );\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { useState } from \"react\";\nimport type { SchemaObject } from \"../../../../oas/parser/index.js\";\nimport { SchemaView } from \"../SchemaView.js\";\nimport type { LogicalGroupType } from \"../utils.js\";\nimport { LogicalGroupConnector } from \"./LogicalGroupConnector.js\";\n\nexport const LogicalGroupItem = (props: {\n type: LogicalGroupType;\n schema: SchemaObject;\n level: number;\n}) => {\n const [isOpen, setIsOpen] = useState(true);\n\n return (\n <Collapsible.Root\n open={isOpen}\n onOpenChange={() => setIsOpen((prev) => !prev)}\n className=\"group\"\n >\n <Collapsible.Trigger>\n <LogicalGroupConnector type={props.type} isOpen={isOpen} />\n </Collapsible.Trigger>\n {!isOpen && <div className=\"wavy-line bg-border translate-y-1\" />}\n <Collapsible.Content>\n <SchemaView schema={props.schema} level={props.level + 1} />\n </Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { SquareMinusIcon, SquarePlusIcon } from \"lucide-react\";\nimport type { SchemaObject } from \"../../../../oas/parser/index.js\";\nimport { Card } from \"../../../../ui/Card.js\";\nimport type { LogicalGroupType } from \"../utils.js\";\nimport { LogicalGroupItem } from \"./LogicalGroupItem.js\";\n\nconst typeLabel = {\n AND: \"All of\",\n OR: \"Any of\",\n ONE: \"One of\",\n};\n\nexport const LogicalGroup = ({\n schemas,\n type,\n isOpen,\n level,\n toggleOpen,\n}: {\n schemas: SchemaObject[];\n type: LogicalGroupType;\n isOpen: boolean;\n toggleOpen: () => void;\n level: number;\n}) => (\n <Collapsible.Root open={isOpen} onOpenChange={toggleOpen} asChild>\n <Card className=\"px-6\">\n <Collapsible.Trigger className=\"flex gap-2 items-center py-2 w-full text-sm text-muted-foreground -translate-x-1.5\">\n {isOpen ? <SquareMinusIcon size={14} /> : <SquarePlusIcon size={14} />}\n <span>{typeLabel[type]}</span>\n </Collapsible.Trigger>\n\n <Collapsible.Content className=\"pb-4\">\n {schemas.map((subSchema, index) => (\n // eslint-disable-next-line react/no-array-index-key\n <LogicalGroupItem\n key={index}\n type={type}\n schema={subSchema}\n level={level}\n />\n ))}\n </Collapsible.Content>\n </Card>\n </Collapsible.Root>\n);\n","import type { SchemaObject } from \"../../../oas/parser/index.js\";\n\nexport const isComplexType = (value: SchemaObject) =>\n value.type === \"object\" ||\n (value.type === \"array\" &&\n typeof value.items === \"object\" &&\n (!value.items.type || value.items.type === \"object\"));\n\nexport const hasLogicalGroupings = (value: SchemaObject) =>\n Boolean(value.oneOf ?? value.allOf ?? value.anyOf);\n\nexport const LogicalSchemaTypeMap = {\n allOf: \"AND\",\n anyOf: \"OR\",\n oneOf: \"ONE\",\n} as const;\n\nexport type LogicalGroupType = \"AND\" | \"OR\" | \"ONE\";\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { ListPlusIcon } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport { Markdown, ProseClasses } from \"../../../components/Markdown.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { objectEntries } from \"../../../util/objectEntries.js\";\nimport { LogicalGroup } from \"./LogicalGroup/LogicalGroup.js\";\nimport { SchemaView } from \"./SchemaView.js\";\nimport {\n hasLogicalGroupings,\n isComplexType,\n LogicalSchemaTypeMap,\n} from \"./utils.js\";\n\nexport const SchemaLogicalGroup = ({\n schema,\n level,\n}: {\n schema: SchemaObject;\n level: number;\n}) => {\n const [isOpen, setIsOpen] = useState(true);\n const toggleOpen = useCallback(() => setIsOpen((prev) => !prev), []);\n\n for (const [key, type] of objectEntries(LogicalSchemaTypeMap)) {\n if (!schema[key]) continue;\n\n return (\n <LogicalGroup\n schemas={schema[key]}\n type={type}\n isOpen={isOpen}\n toggleOpen={toggleOpen}\n level={level}\n />\n );\n }\n};\n\nexport const SchemaPropertyItem = ({\n name,\n schema,\n group,\n level,\n defaultOpen = false,\n showCollapseButton = true,\n}: {\n name: string;\n schema: SchemaObject;\n group: \"required\" | \"optional\" | \"deprecated\";\n level: number;\n defaultOpen?: boolean;\n showCollapseButton?: boolean;\n}) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n return (\n <li className=\"p-4 bg-border/20 hover:bg-border/30\">\n <div className=\"flex flex-col gap-1 justify-between text-sm\">\n <div className=\"flex gap-2 items-center\">\n <code>{name}</code>\n <span className=\"text-muted-foreground\">\n {schema.type === \"array\" && schema.items.type ? (\n <span>{schema.items.type}[]</span>\n ) : Array.isArray(schema.type) ? (\n <span>{schema.type.join(\" | \")}</span>\n ) : (\n <span>{schema.type}</span>\n )}\n </span>\n {group === \"optional\" && (\n <span className=\"py-px px-1.5 font-medium border rounded-lg\">\n optional\n </span>\n )}\n </div>\n\n {schema.description && (\n <Markdown\n className={cn(ProseClasses, \"text-sm leading-normal line-clamp-4\")}\n content={schema.description}\n />\n )}\n\n {(hasLogicalGroupings(schema) || isComplexType(schema)) && (\n <Collapsible.Root\n defaultOpen={defaultOpen}\n open={isOpen}\n onOpenChange={() => setIsOpen(!isOpen)}\n >\n {showCollapseButton && (\n <Collapsible.Trigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"mt-2 flex gap-1.5\"\n >\n <ListPlusIcon size={18} />\n {!isOpen\n ? \"Show nested properties\"\n : \"Hide nested properties\"}\n </Button>\n </Collapsible.Trigger>\n )}\n <Collapsible.Content>\n <div className=\"mt-2\">\n {hasLogicalGroupings(schema) ? (\n <SchemaLogicalGroup schema={schema} level={level + 1} />\n ) : schema.type === \"object\" ? (\n <SchemaView schema={schema} level={level + 1} />\n ) : (\n schema.type === \"array\" &&\n typeof schema.items === \"object\" && (\n <SchemaView schema={schema.items} level={level + 1} />\n )\n )}\n </div>\n </Collapsible.Content>\n </Collapsible.Root>\n )}\n </div>\n </li>\n );\n};\n","import { Markdown, ProseClasses } from \"../../../components/Markdown.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"../../../ui/Card.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { groupBy } from \"../../../util/groupBy.js\";\nimport { SchemaLogicalGroup, SchemaPropertyItem } from \"./SchemaComponents.js\";\nimport { hasLogicalGroupings } from \"./utils.js\";\n\nexport const SchemaView = ({\n schema,\n level = 0,\n defaultOpen = false,\n}: {\n schema?: SchemaObject | null;\n level?: number;\n defaultOpen?: boolean;\n}) => {\n if (!schema || Object.keys(schema).length === 0) {\n return (\n <Card className=\"p-4\">\n <span className=\"text-sm text-muted-foreground italic\">\n No response specified\n </span>\n </Card>\n );\n }\n\n const renderSchema = (schema: SchemaObject, level: number) => {\n if (hasLogicalGroupings(schema)) {\n return <SchemaLogicalGroup schema={schema} level={level} />;\n }\n\n // Sometimes items is not defined\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (schema.type === \"array\" && schema.items) {\n const itemsSchema = schema.items as SchemaObject;\n\n if (\n typeof itemsSchema.type === \"string\" &&\n [\"string\", \"number\", \"boolean\", \"integer\"].includes(itemsSchema.type)\n ) {\n return (\n <Card className=\"p-4\">\n <span className=\"text-sm text-muted-foreground\">\n {itemsSchema.type}[]\n </span>\n {schema.description && (\n <Markdown\n className={cn(\n ProseClasses,\n \"text-sm leading-normal line-clamp-4\",\n )}\n content={schema.description}\n />\n )}\n </Card>\n );\n } else if (itemsSchema.type === \"object\") {\n return (\n <Card className=\"flex flex-col gap-2 bg-border/30 p-4\">\n <span className=\"text-sm text-muted-foreground\">object[]</span>\n {renderSchema(itemsSchema, level + 1)}\n </Card>\n );\n } else {\n return renderSchema(itemsSchema, level + 1);\n }\n }\n\n if (schema.type === \"object\" && !schema.properties) {\n return (\n <Card className=\"p-4 flex gap-2 items-center\">\n {\"name\" in schema && <>{schema.name}</>}\n <span className=\"text-sm text-muted-foreground\">object</span>\n {schema.description && (\n <Markdown\n className={cn(\n ProseClasses,\n \"text-sm leading-normal line-clamp-4\",\n )}\n content={schema.description}\n />\n )}\n </Card>\n );\n }\n\n if (schema.properties) {\n const groupedProperties = groupBy(\n Object.entries(schema.properties),\n ([propertyName, property]) => {\n return property.deprecated\n ? \"deprecated\"\n : schema.required?.includes(propertyName)\n ? \"required\"\n : \"optional\";\n },\n );\n\n const groupNames = [\"required\", \"optional\", \"deprecated\"] as const;\n\n return (\n <Card className=\"divide-y overflow-hidden\">\n {groupNames.map(\n (group) =>\n groupedProperties[group] && (\n <ul key={group} className=\"divide-y\">\n {groupedProperties[group].map(([name, schema]) => (\n <SchemaPropertyItem\n key={name}\n name={name}\n schema={schema}\n group={group}\n level={level}\n defaultOpen={defaultOpen}\n />\n ))}\n </ul>\n ),\n )}\n </Card>\n );\n }\n\n if (\n typeof schema.type === \"string\" &&\n [\"string\", \"number\", \"boolean\", \"integer\", \"null\"].includes(schema.type)\n ) {\n return (\n <Card className=\"p-4\">\n <span className=\"text-sm text-muted-foreground\">{schema.type}</span>\n {schema.description && (\n <Markdown\n className={cn(\n ProseClasses,\n \"text-sm leading-normal line-clamp-4\",\n )}\n content={schema.description}\n />\n )}\n </Card>\n );\n }\n\n if (schema.additionalProperties) {\n return (\n <Card className=\"my-2\">\n <CardHeader>\n <CardTitle>Additional Properties:</CardTitle>\n </CardHeader>\n <CardContent>\n {renderSchema(\n schema.additionalProperties as SchemaObject,\n level + 1,\n )}\n </CardContent>\n </Card>\n );\n }\n\n return null;\n };\n\n return renderSchema(schema, level);\n};\n","import { useState } from \"react\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Markdown, ProseClasses } from \"../../components/Markdown.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../ui/Tabs.js\";\nimport { groupBy } from \"../../util/groupBy.js\";\nimport { renderIf } from \"../../util/renderIf.js\";\nimport { OperationsFragment } from \"./OperationList.js\";\nimport { ParameterList } from \"./ParameterList.js\";\nimport { Sidecar } from \"./Sidecar.js\";\nimport { FragmentType, useFragment } from \"./graphql/index.js\";\nimport { SchemaView } from \"./schema/SchemaView.js\";\n\nexport const PARAM_GROUPS = [\"path\", \"query\", \"header\", \"cookie\"] as const;\nexport type ParameterGroup = (typeof PARAM_GROUPS)[number];\n\nexport const OperationListItem = ({\n operationFragment,\n}: {\n operationFragment: FragmentType<typeof OperationsFragment>;\n}) => {\n const operation = useFragment(OperationsFragment, operationFragment);\n const groupedParameters = groupBy(\n operation.parameters ?? [],\n (param) => param.in,\n );\n\n const first = operation.responses.at(0);\n const [selectedResponse, setSelectedResponse] = useState(first?.statusCode);\n\n return (\n <div\n key={operation.operationId}\n className=\"grid grid-cols-1 lg:grid-cols-[4fr_3fr] gap-8 items-start border-b-2 mb-16 pb-16\"\n >\n <div className=\"flex flex-col gap-4\">\n <Heading level={2} id={operation.slug} registerSidebarAnchor>\n {operation.summary}\n </Heading>\n {operation.description && (\n <Markdown\n className={`${ProseClasses} max-w-full prose-img:max-w-prose`}\n content={operation.description}\n />\n )}\n {operation.parameters && operation.parameters.length > 0 && (\n <>\n {PARAM_GROUPS.flatMap((group) =>\n groupedParameters[group]?.length ? (\n <ParameterList\n key={group}\n id={operation.slug}\n parameters={groupedParameters[group]}\n group={group}\n />\n ) : (\n []\n ),\n )}\n </>\n )}\n {renderIf(operation.requestBody?.content?.at(0)?.schema, (schema) => (\n <div className=\"mt-4 flex flex-col gap-4\">\n <Heading\n level={3}\n className=\"capitalize\"\n id={`${operation.slug}/request-body`}\n registerSidebarAnchor\n >\n Request Body\n </Heading>\n <SchemaView schema={schema} />\n </div>\n ))}\n {operation.responses.length > 0 && (\n <>\n <Heading\n level={3}\n className=\"capitalize mt-8 pt-8 border-t\"\n id={`${operation.slug}/responses`}\n registerSidebarAnchor\n >\n Responses\n </Heading>\n <Tabs\n onValueChange={(value) => setSelectedResponse(value)}\n value={selectedResponse}\n >\n {operation.responses.length > 1 && (\n <TabsList>\n {operation.responses.map((response) => (\n <TabsTrigger\n value={response.statusCode}\n key={response.statusCode}\n title={response.description ?? undefined}\n >\n {response.statusCode}\n </TabsTrigger>\n ))}\n </TabsList>\n )}\n <ul className=\"list-none m-0 px-0\">\n {operation.responses.map((response) => (\n <TabsContent\n value={response.statusCode}\n key={response.statusCode}\n >\n <SchemaView\n schema={\n response.content?.find((content) => content.schema)\n ?.schema\n }\n />\n </TabsContent>\n ))}\n </ul>\n </Tabs>\n </>\n )}\n </div>\n\n <Sidecar\n selectedResponse={selectedResponse}\n onSelectResponse={setSelectedResponse}\n operation={operation}\n />\n </div>\n );\n};\n","import { ResultOf } from \"@graphql-typed-document-node/core\";\nimport { useQuery } from \"urql\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { DeveloperHint } from \"../../components/DeveloperHint.js\";\nimport { ErrorPage } from \"../../components/ErrorPage.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { InlineCode } from \"../../components/InlineCode.js\";\nimport { Markdown, ProseClasses } from \"../../components/Markdown.js\";\nimport { SyntaxHighlight } from \"../../components/SyntaxHighlight.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { Endpoint } from \"./Endpoint.js\";\nimport { OperationListItem } from \"./OperationListItem.js\";\nimport StaggeredRender from \"./StaggeredRender.js\";\nimport { useOasConfig } from \"./context.js\";\nimport { graphql } from \"./graphql/index.js\";\n\nexport const OperationsFragment = graphql(/* GraphQL */ `\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n }\n`);\n\nexport type OperationListItemResult = ResultOf<typeof OperationsFragment>;\n\nconst AllOperationsQuery = graphql(/* GraphQL */ `\n query AllOperations($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n description\n title\n url\n version\n tags {\n name\n description\n operations {\n slug\n ...OperationsFragment\n }\n }\n }\n }\n`);\n\nconst suspenseContext = { suspense: true };\n\nexport const OperationList = () => {\n const { type, input } = useOasConfig();\n\n const [result] = useQuery({\n query: AllOperationsQuery,\n variables: { type, input },\n context: suspenseContext,\n });\n\n const error = result.error?.graphQLErrors.at(0);\n\n // Looks like there is no Suspense level error handling (yet)?\n // So we handle the error case in the component directly\n if (error) {\n return (\n <ErrorPage\n category=\"Error\"\n title=\"Schema cannot be displayed\"\n message={\n <>\n <DeveloperHint className=\"mb-4\">\n Check your configuration value <InlineCode>apis.type</InlineCode>{\" \"}\n and <InlineCode>apis.input</InlineCode> in the Zudoku config.\n </DeveloperHint>\n An error occurred while trying to fetch the API reference:\n <SyntaxHighlight code={error.toString()} language=\"plain\" />\n </>\n }\n />\n );\n }\n\n if (!result.data) return null;\n\n return (\n <div className=\"pt-[--padding-content-top]\">\n <div\n className={cn(ProseClasses, \"mb-16 max-w-full prose-img:max-w-prose\")}\n >\n <CategoryHeading>Overview</CategoryHeading>\n <Heading level={1} id=\"description\" registerSidebarAnchor>\n {result.data.schema.title}\n </Heading>\n <Markdown content={result.data.schema.description ?? \"\"} />\n </div>\n <hr />\n <div className=\"my-4 flex justify-end\">\n <Endpoint />\n </div>\n\n {result.data.schema.tags\n .filter((tag) => tag.operations.length > 0)\n .map((tag) => (\n <div key={tag.name}>\n {tag.name && <CategoryHeading>{tag.name}</CategoryHeading>}\n {tag.description && (\n <Markdown\n className={`${ProseClasses} max-w-full prose-img:max-w-prose w-full mt-2 mb-12`}\n content={tag.description}\n />\n )}\n <div className=\"operation mb-12\">\n <StaggeredRender>\n {tag.operations.map((fragment) => (\n <OperationListItem\n key={fragment.slug}\n operationFragment={fragment}\n />\n ))}\n </StaggeredRender>\n </div>\n </div>\n ))}\n </div>\n );\n};\n"],"names":["useFragment","_documentNode","fragmentType","ServersQuery","graphql","CopyButton","url","isCopied","setIsCopied","useState","jsx","Button","CheckIcon","CopyIcon","context","Endpoint","result","useQuery","useOasConfig","startTransition","useTransition","selectedServer","setSelectedServer","useSelectedServerStore","servers","jsxs","InlineCode","SimpleSelect","e","server","groupBy","arr","keySelector","accumulator","val","groupedKey","renderIf","variable","callback","getParameterSchema","parameter","ParameterListItem","group","id","ColorizedParam","Markdown","ParameterList","parameters","Fragment","Heading","Card","a","b","objectEntries","obj","iconMap","CircleFadingPlusIcon","CircleDotIcon","CircleIcon","colorClass","LogicalGroupConnector","type","isOpen","className","cn","ChevronDownIcon","LogicalGroupItem","props","setIsOpen","Collapsible.Root","prev","Collapsible.Trigger","Collapsible.Content","SchemaView","typeLabel","LogicalGroup","schemas","level","toggleOpen","SquareMinusIcon","SquarePlusIcon","subSchema","index","isComplexType","value","hasLogicalGroupings","LogicalSchemaTypeMap","SchemaLogicalGroup","schema","useCallback","key","SchemaPropertyItem","name","defaultOpen","showCollapseButton","ProseClasses","ListPlusIcon","renderSchema","itemsSchema","groupedProperties","propertyName","property","groupNames","CardHeader","CardTitle","CardContent","PARAM_GROUPS","OperationListItem","operationFragment","operation","OperationsFragment","groupedParameters","param","first","selectedResponse","setSelectedResponse","_a","_c","_b","Tabs","TabsList","response","TabsTrigger","TabsContent","content","Sidecar","AllOperationsQuery","suspenseContext","OperationList","input","error","ErrorPage","DeveloperHint","SyntaxHighlight","CategoryHeading","tag","StaggeredRender","fragment"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { j as r } from "./jsx-runtime-B6kdoens.js";
2
- import { f as t, O as i } from "./index-DA74gNq3.js";
2
+ import { f as t, O as i } from "./index-DNfiZTPV.js";
3
3
  import { O as s } from "./index-BRCiYFaL.js";
4
4
  function u({
5
5
  config: o,
@@ -10,4 +10,4 @@ function u({
10
10
  export {
11
11
  u as OpenApiRoute
12
12
  };
13
- //# sourceMappingURL=Route-DI38nxYt.js.map
13
+ //# sourceMappingURL=Route-Dq6zv0Pi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Route-DI38nxYt.js","sources":["../src/lib/plugins/openapi/Route.tsx"],"sourcesContent":["import { Outlet } from \"react-router-dom\";\nimport { Provider, Client as UrqlClient } from \"urql\";\nimport { OasConfigProvider } from \"./context.js\";\nimport { OasPluginConfig } from \"./interfaces.js\";\n\nexport function OpenApiRoute({\n config,\n client,\n}: {\n config: OasPluginConfig;\n client: typeof UrqlClient;\n}) {\n return (\n <Provider value={client}>\n <OasConfigProvider value={{ config }}>\n <Outlet />\n </OasConfigProvider>\n </Provider>\n );\n}\n"],"names":["OpenApiRoute","config","client","jsx","Provider","OasConfigProvider","Outlet"],"mappings":";;;AAKO,SAASA,EAAa;AAAA,EAC3B,QAAAC;AAAA,EACA,QAAAC;AACF,GAGG;AACD,SACGC,gBAAAA,EAAAA,IAAAC,GAAA,EAAS,OAAOF,GACf,UAACC,gBAAAA,EAAA,IAAAE,GAAA,EAAkB,OAAO,EAAE,QAAAJ,EAAO,GACjC,UAACE,gBAAAA,EAAA,IAAAG,GAAA,EAAO,GACV,EACF,CAAA;AAEJ;"}
1
+ {"version":3,"file":"Route-Dq6zv0Pi.js","sources":["../src/lib/plugins/openapi/Route.tsx"],"sourcesContent":["import { Outlet } from \"react-router-dom\";\nimport { Provider, Client as UrqlClient } from \"urql\";\nimport { OasConfigProvider } from \"./context.js\";\nimport { OasPluginConfig } from \"./interfaces.js\";\n\nexport function OpenApiRoute({\n config,\n client,\n}: {\n config: OasPluginConfig;\n client: typeof UrqlClient;\n}) {\n return (\n <Provider value={client}>\n <OasConfigProvider value={{ config }}>\n <Outlet />\n </OasConfigProvider>\n </Provider>\n );\n}\n"],"names":["OpenApiRoute","config","client","jsx","Provider","OasConfigProvider","Outlet"],"mappings":";;;AAKO,SAASA,EAAa;AAAA,EAC3B,QAAAC;AAAA,EACA,QAAAC;AACF,GAGG;AACD,SACGC,gBAAAA,EAAAA,IAAAC,GAAA,EAAS,OAAOF,GACf,UAACC,gBAAAA,EAAA,IAAAE,GAAA,EAAkB,OAAO,EAAE,QAAAJ,EAAO,GACjC,UAACE,gBAAAA,EAAA,IAAAG,GAAA,EAAO,GACV,EACF,CAAA;AAEJ;"}
@@ -1,7 +1,7 @@
1
1
  import * as s from "react";
2
- import { d as T, e as $, f as be, g as De, h as Ie, u as V, i as Ce, P as y, b as R, a as _, c as Ne, R as Ee, S as ye, j as he, k as Te, F as Ae, D as _e, l as Fe, m as we } from "./index-g_JJcuFg.js";
2
+ import { d as T, e as $, f as be, g as De, h as Ie, u as V, i as Ce, P as y, b as R, a as _, c as Ne, R as Ee, S as ye, j as he, k as Te, F as Ae, D as _e, l as Fe, m as we } from "./index-Do_BBSIs.js";
3
3
  import { j as i } from "./jsx-runtime-B6kdoens.js";
4
- import { c as Oe } from "./cn-BmFQLtkS.js";
4
+ import { a as Oe } from "./Markdown-CWI6lU11.js";
5
5
  function Pe(e, t) {
6
6
  return s.useReducer((o, n) => t[o][n] ?? o, e);
7
7
  }
@@ -500,4 +500,4 @@ export {
500
500
  ft as e,
501
501
  xt as f
502
502
  };
503
- //# sourceMappingURL=SidebarBadge-B9-VJSQr.js.map
503
+ //# sourceMappingURL=SidebarBadge-DmI5hT04.js.map