zudoku 0.39.0 → 0.39.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 (146) hide show
  1. package/dist/app/entry.server.d.ts +5 -4
  2. package/dist/app/entry.server.js +2 -2
  3. package/dist/app/entry.server.js.map +1 -1
  4. package/dist/cli/cmds/dev.js +1 -7
  5. package/dist/cli/cmds/dev.js.map +1 -1
  6. package/dist/config/validators/common.d.ts +17 -0
  7. package/dist/config/validators/common.js +1 -0
  8. package/dist/config/validators/common.js.map +1 -1
  9. package/dist/config/validators/validate.d.ts +7 -0
  10. package/dist/lib/components/Bootstrap.d.ts +2 -1
  11. package/dist/lib/components/Bootstrap.js +3 -2
  12. package/dist/lib/components/Bootstrap.js.map +1 -1
  13. package/dist/lib/components/Header.js +2 -2
  14. package/dist/lib/components/Header.js.map +1 -1
  15. package/dist/lib/components/Layout.js +1 -1
  16. package/dist/lib/components/Layout.js.map +1 -1
  17. package/dist/lib/components/Main.js +1 -1
  18. package/dist/lib/components/Main.js.map +1 -1
  19. package/dist/lib/components/MobileTopNavigation.js +6 -3
  20. package/dist/lib/components/MobileTopNavigation.js.map +1 -1
  21. package/dist/lib/components/TopNavigation.d.ts +1 -0
  22. package/dist/lib/components/TopNavigation.js +2 -2
  23. package/dist/lib/components/TopNavigation.js.map +1 -1
  24. package/dist/lib/components/Zudoku.js +4 -1
  25. package/dist/lib/components/Zudoku.js.map +1 -1
  26. package/dist/lib/components/context/BypassProtectedRoutesContext.d.ts +1 -0
  27. package/dist/lib/components/context/BypassProtectedRoutesContext.js +3 -0
  28. package/dist/lib/components/context/BypassProtectedRoutesContext.js.map +1 -0
  29. package/dist/lib/components/index.d.ts +2 -1
  30. package/dist/lib/components/navigation/PoweredByZudoku.d.ts +3 -0
  31. package/dist/lib/components/navigation/PoweredByZudoku.js +6 -0
  32. package/dist/lib/components/navigation/PoweredByZudoku.js.map +1 -0
  33. package/dist/lib/components/navigation/SidebarWrapper.js +9 -2
  34. package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -1
  35. package/dist/lib/components/navigation/ZudokuLogo.d.ts +6 -0
  36. package/dist/lib/components/navigation/ZudokuLogo.js +5 -0
  37. package/dist/lib/components/navigation/ZudokuLogo.js.map +1 -0
  38. package/dist/lib/core/RouteGuard.d.ts +1 -0
  39. package/dist/lib/core/RouteGuard.js +9 -3
  40. package/dist/lib/core/RouteGuard.js.map +1 -1
  41. package/dist/lib/core/ZudokuContext.d.ts +1 -0
  42. package/dist/lib/core/ZudokuContext.js.map +1 -1
  43. package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupConnector.d.ts +2 -1
  44. package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupConnector.js +2 -2
  45. package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupConnector.js.map +1 -1
  46. package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupItem.js +1 -1
  47. package/dist/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupItem.js.map +1 -1
  48. package/dist/lib/plugins/openapi/schema/SchemaView.js +1 -1
  49. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  50. package/dist/lib/plugins/search-pagefind/PagefindSearch.js +9 -4
  51. package/dist/lib/plugins/search-pagefind/PagefindSearch.js.map +1 -1
  52. package/dist/lib/plugins/search-pagefind/ResultList.d.ts +1 -1
  53. package/dist/lib/plugins/search-pagefind/ResultList.js +6 -12
  54. package/dist/lib/plugins/search-pagefind/ResultList.js.map +1 -1
  55. package/dist/lib/plugins/search-pagefind/index.d.ts +1 -3
  56. package/dist/vite/build.js +1 -9
  57. package/dist/vite/build.js.map +1 -1
  58. package/dist/vite/plugin-search.js +1 -1
  59. package/dist/vite/plugin-search.js.map +1 -1
  60. package/dist/vite/prerender/FileWritingResponse.d.ts +9 -5
  61. package/dist/vite/prerender/FileWritingResponse.js +5 -5
  62. package/dist/vite/prerender/FileWritingResponse.js.map +1 -1
  63. package/dist/vite/prerender/InMemoryResponse.d.ts +16 -0
  64. package/dist/vite/prerender/InMemoryResponse.js +32 -0
  65. package/dist/vite/prerender/InMemoryResponse.js.map +1 -0
  66. package/dist/vite/prerender/PrerenderResponse.d.ts +10 -0
  67. package/dist/vite/prerender/PrerenderResponse.js +2 -0
  68. package/dist/vite/prerender/PrerenderResponse.js.map +1 -0
  69. package/dist/vite/prerender/prerender.d.ts +1 -0
  70. package/dist/vite/prerender/prerender.js +18 -0
  71. package/dist/vite/prerender/prerender.js.map +1 -1
  72. package/dist/vite/prerender/worker.js +36 -8
  73. package/dist/vite/prerender/worker.js.map +1 -1
  74. package/dist/zuplo/with-zuplo.js +4 -0
  75. package/dist/zuplo/with-zuplo.js.map +1 -1
  76. package/lib/{Callout-D5frCCJ0.js → Callout-B2vsR09t.js} +2 -2
  77. package/lib/{Callout-D5frCCJ0.js.map → Callout-B2vsR09t.js.map} +1 -1
  78. package/lib/{Dialog-Dv6WG8RN.js → Dialog-sbgekbjb.js} +5 -5
  79. package/lib/{Dialog-Dv6WG8RN.js.map → Dialog-sbgekbjb.js.map} +1 -1
  80. package/lib/{MdxPage-ZW1StNhp.js → MdxPage-JscVnWM8.js} +22 -21
  81. package/lib/{MdxPage-ZW1StNhp.js.map → MdxPage-JscVnWM8.js.map} +1 -1
  82. package/lib/{OasProvider-Cld9RAMQ.js → OasProvider-C4T5TU8Z.js} +2 -2
  83. package/lib/{OasProvider-Cld9RAMQ.js.map → OasProvider-C4T5TU8Z.js.map} +1 -1
  84. package/lib/{OperationList-D-OfzJm6.js → OperationList-C-gBHUou.js} +49 -48
  85. package/lib/{OperationList-D-OfzJm6.js.map → OperationList-C-gBHUou.js.map} +1 -1
  86. package/lib/{Pagination-CYB3nVYx.js → Pagination-DCCvGq0m.js} +2 -2
  87. package/lib/{Pagination-CYB3nVYx.js.map → Pagination-DCCvGq0m.js.map} +1 -1
  88. package/lib/RouteGuard-CqZPoZYJ.js +744 -0
  89. package/lib/RouteGuard-CqZPoZYJ.js.map +1 -0
  90. package/lib/{SchemaList-Ci1WxRh0.js → SchemaList-DuN6ThXR.js} +3 -3
  91. package/lib/{SchemaList-Ci1WxRh0.js.map → SchemaList-DuN6ThXR.js.map} +1 -1
  92. package/lib/{SchemaView-Brn-YxHY.js → SchemaView-B3fOPR4V.js} +112 -100
  93. package/lib/SchemaView-B3fOPR4V.js.map +1 -0
  94. package/lib/{createServer-mMau3eV_.js → createServer-mYvGvmc0.js} +2469 -2443
  95. package/lib/createServer-mYvGvmc0.js.map +1 -0
  96. package/lib/index-D6ktNq4i.js +1863 -0
  97. package/lib/index-D6ktNq4i.js.map +1 -0
  98. package/lib/{index-CjPMxpOV.js → index-DsdAaiwx.js} +13 -12
  99. package/lib/{index-CjPMxpOV.js.map → index-DsdAaiwx.js.map} +1 -1
  100. package/lib/objectEntries-yMIkr2mI.js +5 -0
  101. package/lib/objectEntries-yMIkr2mI.js.map +1 -0
  102. package/lib/ui/Command.js +1 -1
  103. package/lib/useLatest-hmRS46UF.js +11 -0
  104. package/lib/useLatest-hmRS46UF.js.map +1 -0
  105. package/lib/zudoku.components.js +15 -14
  106. package/lib/zudoku.components.js.map +1 -1
  107. package/lib/zudoku.plugin-api-catalog.js +6 -5
  108. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  109. package/lib/zudoku.plugin-markdown.js +1 -1
  110. package/lib/zudoku.plugin-openapi.js +1 -1
  111. package/lib/zudoku.plugin-search-pagefind.js +132 -137
  112. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  113. package/package.json +3 -3
  114. package/src/app/entry.server.tsx +6 -3
  115. package/src/lib/components/Bootstrap.tsx +13 -6
  116. package/src/lib/components/Header.tsx +2 -2
  117. package/src/lib/components/Layout.tsx +1 -1
  118. package/src/lib/components/Main.tsx +3 -2
  119. package/src/lib/components/MobileTopNavigation.tsx +27 -18
  120. package/src/lib/components/TopNavigation.tsx +2 -2
  121. package/src/lib/components/Zudoku.tsx +5 -3
  122. package/src/lib/components/context/BypassProtectedRoutesContext.ts +3 -0
  123. package/src/lib/components/navigation/PoweredByZudoku.tsx +23 -0
  124. package/src/lib/components/navigation/SidebarWrapper.tsx +27 -13
  125. package/src/lib/components/navigation/ZudokuLogo.tsx +25 -0
  126. package/src/lib/core/RouteGuard.tsx +26 -4
  127. package/src/lib/core/ZudokuContext.ts +1 -0
  128. package/src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupConnector.tsx +3 -0
  129. package/src/lib/plugins/openapi/schema/LogicalGroup/LogicalGroupItem.tsx +5 -1
  130. package/src/lib/plugins/openapi/schema/SchemaView.tsx +6 -1
  131. package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +11 -4
  132. package/src/lib/plugins/search-pagefind/ResultList.tsx +5 -16
  133. package/src/lib/plugins/search-pagefind/index.tsx +1 -1
  134. package/dist/cli/dev/pagefind-command.d.ts +0 -3
  135. package/dist/cli/dev/pagefind-command.js +0 -59
  136. package/dist/cli/dev/pagefind-command.js.map +0 -1
  137. package/dist/lib/components/context/PluginSystem.d.ts +0 -1
  138. package/dist/lib/components/context/PluginSystem.js +0 -2
  139. package/dist/lib/components/context/PluginSystem.js.map +0 -1
  140. package/lib/SchemaView-Brn-YxHY.js.map +0 -1
  141. package/lib/createServer-mMau3eV_.js.map +0 -1
  142. package/lib/index-Bt7MKhZq.js +0 -2514
  143. package/lib/index-Bt7MKhZq.js.map +0 -1
  144. package/lib/objectEntries-BS7aAgOm.js +0 -12
  145. package/lib/objectEntries-BS7aAgOm.js.map +0 -1
  146. package/src/lib/components/context/PluginSystem.ts +0 -0
@@ -1,57 +1,57 @@
1
- import { use as S, isValidElement as E, useState as x, useCallback as R } from "react";
2
- import { a as z } from "./context-DLCwaMXN.js";
3
- import { i as A, S as T, L as B, T as j, a as $, p as D, C as q } from "./circular-ByJI6Mci.js";
1
+ import { use as L, isValidElement as S, useState as p, useCallback as E } from "react";
2
+ import { a as R } from "./context-DLCwaMXN.js";
3
+ import { i as z, S as A, L as T, T as f, a as B, p as $, C as D } from "./circular-ByJI6Mci.js";
4
4
  import { j as s } from "./jsx-runtime-CYK1ROHF.js";
5
- import { I, S as u, M as k, P as v } from "./Markdown-aF5FdsNi.js";
6
- import { Card as c, CardHeader as G, CardTitle as M, CardContent as K } from "./ui/Card.js";
7
- import { c as d } from "./cn-qaFjX9_3.js";
8
- import { ChevronsLeftRightIcon as F, ChevronUpIcon as Q, ChevronDownIcon as P, CircleIcon as H, CircleDotIcon as J, CircleFadingPlusIcon as U, SquareMinusIcon as _, SquarePlusIcon as V, MinusIcon as W, PlusIcon as X, RefreshCcwDotIcon as Y } from "lucide-react";
9
- import { B as Z } from "./Button-Fp19CMUr.js";
5
+ import { I as O, S as u, M as I, P as k } from "./Markdown-aF5FdsNi.js";
6
+ import { Card as d, CardHeader as q, CardTitle as G, CardContent as M } from "./ui/Card.js";
7
+ import { c } from "./cn-qaFjX9_3.js";
8
+ import { ChevronsLeftRightIcon as K, ChevronUpIcon as F, ChevronDownIcon as v, CircleIcon as Q, CircleDotIcon as H, CircleFadingPlusIcon as J, SquareMinusIcon as U, SquarePlusIcon as _, MinusIcon as V, PlusIcon as W, RefreshCcwDotIcon as X } from "lucide-react";
9
+ import { B as Y } from "./Button-Fp19CMUr.js";
10
10
  import * as a from "@radix-ui/react-collapsible";
11
- import { Button as ee } from "./ui/Button.js";
12
- import { o as se } from "./objectEntries-BS7aAgOm.js";
13
- function te(e) {
14
- const t = A(e) ? e : new T(e), r = t.body, i = new B(t);
11
+ import { Button as Z } from "./ui/Button.js";
12
+ import { o as ee } from "./objectEntries-yMIkr2mI.js";
13
+ function se(e) {
14
+ const t = z(e) ? e : new A(e), r = t.body, i = new T(t);
15
15
  let n = "", o = !1;
16
- for (; i.advance().kind !== j.EOF; ) {
17
- const l = i.token, p = l.kind, h = !$(l.kind);
18
- o && (h || l.kind === j.SPREAD) && (n += " ");
19
- const L = r.slice(l.start, l.end);
20
- p === j.BLOCK_STRING ? n += D(l.value, {
16
+ for (; i.advance().kind !== f.EOF; ) {
17
+ const l = i.token, m = l.kind, h = !B(l.kind);
18
+ o && (h || l.kind === f.SPREAD) && (n += " ");
19
+ const w = r.slice(l.start, l.end);
20
+ m === f.BLOCK_STRING ? n += $(l.value, {
21
21
  minimize: !0
22
- }) : n += L, o = h;
22
+ }) : n += w, o = h;
23
23
  }
24
24
  return n;
25
25
  }
26
26
  const we = (e, ...[t]) => {
27
- const r = S(z);
27
+ const r = L(R);
28
28
  if (r === void 0)
29
29
  throw new Error("useGraphQL must be used within a GraphQLProvider");
30
30
  return {
31
31
  queryFn: () => r.fetch(e, t),
32
- queryKey: [te(e.toString()), t]
32
+ queryKey: [se(e.toString()), t]
33
33
  };
34
- }, re = (e, t) => e.reduce(
34
+ }, te = (e, t) => e.reduce(
35
35
  (r, i) => {
36
36
  const n = t(i);
37
37
  return r[n] || (r[n] = []), r[n].push(i), r;
38
38
  },
39
39
  {}
40
- ), ne = ({ pattern: e }) => {
41
- const [t, r] = x(!1), i = e.length > 20, n = i ? `${e.slice(0, 20)}…` : e;
40
+ ), re = ({ pattern: e }) => {
41
+ const [t, r] = p(!1), i = e.length > 20, n = i ? `${e.slice(0, 20)}…` : e;
42
42
  return /* @__PURE__ */ s.jsxs(
43
- I,
43
+ O,
44
44
  {
45
- className: d("text-xs", i && "cursor-pointer"),
45
+ className: c("text-xs", i && "cursor-pointer"),
46
46
  onClick: () => r(!t),
47
47
  selectOnClick: !1,
48
48
  children: [
49
49
  t ? e : n,
50
- i && /* @__PURE__ */ s.jsx("button", { type: "button", className: "p-1 translate-y-[2px]", children: !t && /* @__PURE__ */ s.jsx(F, { size: 12 }) })
50
+ i && /* @__PURE__ */ s.jsx("button", { type: "button", className: "p-1 translate-y-[2px]", children: !t && /* @__PURE__ */ s.jsx(K, { size: 12 }) })
51
51
  ]
52
52
  }
53
53
  );
54
- }, ie = (e) => e ? [
54
+ }, ne = (e) => e ? [
55
55
  e.type === "array" && e.items.type ? `${e.items.type}[]` : Array.isArray(e.type) ? e.type.join(" | ") : e.type,
56
56
  e.enum && "enum",
57
57
  e.format,
@@ -69,15 +69,15 @@ const we = (e, ...[t]) => {
69
69
  e.deprecated && "deprecated",
70
70
  e.pattern && /* @__PURE__ */ s.jsxs(s.Fragment, { children: [
71
71
  "pattern: ",
72
- /* @__PURE__ */ s.jsx(ne, { pattern: e.pattern })
72
+ /* @__PURE__ */ s.jsx(re, { pattern: e.pattern })
73
73
  ] })
74
- ] : [], g = ({
74
+ ] : [], j = ({
75
75
  schema: e,
76
76
  extraItems: t = [],
77
77
  className: r
78
78
  }) => {
79
- const i = [...ie(e), ...t].flatMap(
80
- (n) => typeof n == "string" || E(n) ? n : []
79
+ const i = [...ne(e), ...t].flatMap(
80
+ (n) => typeof n == "string" || S(n) ? n : []
81
81
  );
82
82
  return /* @__PURE__ */ s.jsx("span", { className: r, children: i.map((n, o) => /* @__PURE__ */ s.jsxs("span", { className: "text-muted-foreground", children: [
83
83
  n,
@@ -88,24 +88,24 @@ const we = (e, ...[t]) => {
88
88
  className: t,
89
89
  maxVisibleValues: r = 8
90
90
  }) => {
91
- const [i, n] = x(!1);
91
+ const [i, n] = p(!1);
92
92
  if (!e.length) return null;
93
93
  const o = e.length > r, l = o && !i ? e.slice(0, r) : e;
94
- return /* @__PURE__ */ s.jsxs("div", { className: d("flex flex-wrap gap-1.5 text-xs", t), children: [
94
+ return /* @__PURE__ */ s.jsxs("div", { className: c("flex flex-wrap gap-1.5 text-xs", t), children: [
95
95
  /* @__PURE__ */ s.jsx("span", { className: "text-muted-foreground", children: "Enum values: " }),
96
- l.map((p) => /* @__PURE__ */ s.jsx("div", { children: /* @__PURE__ */ s.jsx(u, { className: "border rounded px-1 font-mono", children: p }) }, p)),
96
+ l.map((m) => /* @__PURE__ */ s.jsx("div", { children: /* @__PURE__ */ s.jsx(u, { className: "border rounded px-1 font-mono", children: m }) }, m)),
97
97
  o && /* @__PURE__ */ s.jsx(
98
- Z,
98
+ Y,
99
99
  {
100
100
  variant: "ghost",
101
101
  size: "sm",
102
102
  className: "h-fit px-0",
103
103
  onClick: () => n(!i),
104
104
  children: i ? /* @__PURE__ */ s.jsxs("div", { className: "flex items-center gap-1", children: [
105
- /* @__PURE__ */ s.jsx(Q, { size: 12 }),
105
+ /* @__PURE__ */ s.jsx(F, { size: 12 }),
106
106
  /* @__PURE__ */ s.jsx("span", { className: "text-muted-foreground", children: "show less" })
107
107
  ] }) : /* @__PURE__ */ s.jsxs("div", { className: "flex items-center gap-1", children: [
108
- /* @__PURE__ */ s.jsx(P, { size: 12 }),
108
+ /* @__PURE__ */ s.jsx(v, { size: 12 }),
109
109
  /* @__PURE__ */ s.jsxs("span", { className: "text-muted-foreground", children: [
110
110
  "show ",
111
111
  e.length - r,
@@ -130,43 +130,45 @@ const we = (e, ...[t]) => {
130
130
  /* @__PURE__ */ s.jsx(u, { className: "border rounded px-1 font-mono", children: typeof r == "object" ? JSON.stringify(r) : r })
131
131
  ] })
132
132
  ] });
133
+ }, ie = {
134
+ AND: /* @__PURE__ */ s.jsx(J, { size: 16, className: "fill-card" }),
135
+ OR: /* @__PURE__ */ s.jsx(H, { size: 16, className: "fill-card" }),
136
+ ONE: /* @__PURE__ */ s.jsx(Q, { size: 14, className: "fill-card" })
133
137
  }, oe = {
134
- AND: /* @__PURE__ */ s.jsx(U, { size: 16, className: "fill-card" }),
135
- OR: /* @__PURE__ */ s.jsx(J, { size: 16, className: "fill-card" }),
136
- ONE: /* @__PURE__ */ s.jsx(H, { size: 14, className: "fill-card" })
137
- }, le = {
138
138
  AND: "text-green-500 dark:text-green-300/60",
139
139
  OR: "text-blue-400 dark:text-blue-500",
140
140
  ONE: "text-purple-500 dark:text-purple-300/60"
141
- }, ae = ({
141
+ }, le = ({
142
142
  type: e,
143
143
  isOpen: t,
144
- className: r
144
+ className: r,
145
+ schemeName: i
145
146
  }) => /* @__PURE__ */ s.jsx(
146
147
  "div",
147
148
  {
148
- className: d(
149
- le[e],
149
+ className: c(
150
+ oe[e],
150
151
  "relative text-sm flex py-2",
151
152
  "before:border-l before:absolute before:-top-2 before:-bottom-2 before:border-border before:border-dashed before:content-['']",
152
153
  r
153
154
  ),
154
155
  children: /* @__PURE__ */ s.jsxs("div", { className: "-translate-x-[7px] flex gap-1 items-center", children: [
155
- oe[e],
156
+ ie[e],
156
157
  /* @__PURE__ */ s.jsx(
157
158
  "div",
158
159
  {
159
- className: d(
160
+ className: c(
160
161
  "translate-y-px mx-px opacity-0 group-hover:opacity-100 transition",
161
162
  !t && "-rotate-90"
162
163
  ),
163
- children: /* @__PURE__ */ s.jsx(P, { size: 16 })
164
+ children: /* @__PURE__ */ s.jsx(v, { size: 16 })
164
165
  }
165
- )
166
+ ),
167
+ /* @__PURE__ */ s.jsx("span", { className: "text-sm text-foreground", children: i })
166
168
  ] })
167
169
  }
168
- ), de = (e) => {
169
- const [t, r] = x(!0);
170
+ ), ae = (e) => {
171
+ const [t, r] = p(!0);
170
172
  return /* @__PURE__ */ s.jsxs(
171
173
  a.Root,
172
174
  {
@@ -174,40 +176,47 @@ const we = (e, ...[t]) => {
174
176
  onOpenChange: () => r((i) => !i),
175
177
  className: "group",
176
178
  children: [
177
- /* @__PURE__ */ s.jsx(a.Trigger, { children: /* @__PURE__ */ s.jsx(ae, { type: e.type, isOpen: t }) }),
179
+ /* @__PURE__ */ s.jsx(a.Trigger, { children: /* @__PURE__ */ s.jsx(
180
+ le,
181
+ {
182
+ type: e.type,
183
+ isOpen: t,
184
+ schemeName: e.schema.title
185
+ }
186
+ ) }),
178
187
  !t && /* @__PURE__ */ s.jsx("div", { className: "wavy-line bg-border translate-y-1" }),
179
- /* @__PURE__ */ s.jsx(a.Content, { children: /* @__PURE__ */ s.jsx(m, { schema: e.schema }) })
188
+ /* @__PURE__ */ s.jsx(a.Content, { children: /* @__PURE__ */ s.jsx(x, { schema: e.schema }) })
180
189
  ]
181
190
  }
182
191
  );
183
- }, ce = {
192
+ }, de = {
184
193
  AND: "All of",
185
194
  OR: "Any of",
186
195
  ONE: "One of"
187
- }, xe = ({
196
+ }, ce = ({
188
197
  schemas: e,
189
198
  type: t,
190
199
  isOpen: r,
191
200
  toggleOpen: i
192
- }) => /* @__PURE__ */ s.jsx(a.Root, { open: r, onOpenChange: i, asChild: !0, children: /* @__PURE__ */ s.jsxs(c, { className: "px-6", children: [
201
+ }) => /* @__PURE__ */ s.jsx(a.Root, { open: r, onOpenChange: i, asChild: !0, children: /* @__PURE__ */ s.jsxs(d, { className: "px-6", children: [
193
202
  /* @__PURE__ */ s.jsxs(a.Trigger, { className: "flex gap-2 items-center py-2 w-full text-sm text-muted-foreground -translate-x-1.5", children: [
194
- r ? /* @__PURE__ */ s.jsx(_, { size: 14 }) : /* @__PURE__ */ s.jsx(V, { size: 14 }),
195
- /* @__PURE__ */ s.jsx("span", { children: ce[t] })
203
+ r ? /* @__PURE__ */ s.jsx(U, { size: 14 }) : /* @__PURE__ */ s.jsx(_, { size: 14 }),
204
+ /* @__PURE__ */ s.jsx("span", { children: de[t] })
196
205
  ] }),
197
206
  /* @__PURE__ */ s.jsx(a.Content, { className: "pb-4", children: e.map((n, o) => (
198
207
  // eslint-disable-next-line react/no-array-index-key
199
- /* @__PURE__ */ s.jsx(de, { type: t, schema: n }, o)
208
+ /* @__PURE__ */ s.jsx(ae, { type: t, schema: n }, o)
200
209
  )) })
201
- ] }) }), pe = (e) => typeof e == "string" && ["string", "number", "boolean", "integer", "null"].includes(e), ue = (e) => e.type === "object" && Object.keys(e.properties ?? {}).length > 0 || e.type === "array" && typeof e.items == "object" && (!e.items.type || e.items.type === "object"), b = (e) => !!(e.oneOf ?? e.allOf ?? e.anyOf), me = {
210
+ ] }) }), xe = (e) => typeof e == "string" && ["string", "number", "boolean", "integer", "null"].includes(e), pe = (e) => e.type === "object" && Object.keys(e.properties ?? {}).length > 0 || e.type === "array" && typeof e.items == "object" && (!e.items.type || e.items.type === "object"), b = (e) => !!(e.oneOf ?? e.allOf ?? e.anyOf), me = {
202
211
  allOf: "AND",
203
212
  anyOf: "OR",
204
213
  oneOf: "ONE"
205
- }, f = (e) => e === q, w = ({ schema: e }) => {
206
- const [t, r] = x(!0), i = R(() => r((n) => !n), []);
207
- for (const [n, o] of se(me))
214
+ }, g = (e) => e === D, P = ({ schema: e }) => {
215
+ const [t, r] = p(!0), i = E(() => r((n) => !n), []);
216
+ for (const [n, o] of ee(me))
208
217
  if (e[n])
209
218
  return /* @__PURE__ */ s.jsx(
210
- xe,
219
+ ce,
211
220
  {
212
221
  schemas: e[n],
213
222
  type: o,
@@ -216,28 +225,28 @@ const we = (e, ...[t]) => {
216
225
  }
217
226
  );
218
227
  }, C = () => /* @__PURE__ */ s.jsxs(
219
- I,
228
+ O,
220
229
  {
221
230
  className: "inline-flex items-center gap-1.5 italic text-xs translate-y-0.5",
222
231
  selectOnClick: !1,
223
232
  children: [
224
- /* @__PURE__ */ s.jsx(Y, { size: 13 }),
233
+ /* @__PURE__ */ s.jsx(X, { size: 13 }),
225
234
  /* @__PURE__ */ s.jsx("span", { children: "circular" })
226
235
  ]
227
236
  }
228
- ), je = ({
237
+ ), ue = ({
229
238
  name: e,
230
239
  schema: t,
231
240
  group: r,
232
241
  defaultOpen: i = !1,
233
242
  showCollapseButton: n = !0
234
243
  }) => {
235
- const [o, l] = x(i);
236
- return f(t) ? /* @__PURE__ */ s.jsx("li", { className: "p-4 bg-border/20 hover:bg-border/30", children: /* @__PURE__ */ s.jsxs("div", { className: "flex flex-col gap-2.5 justify-between text-sm", children: [
244
+ const [o, l] = p(i);
245
+ return g(t) ? /* @__PURE__ */ s.jsx("li", { className: "p-4 bg-border/20 hover:bg-border/30", children: /* @__PURE__ */ s.jsxs("div", { className: "flex flex-col gap-2.5 justify-between text-sm", children: [
237
246
  /* @__PURE__ */ s.jsxs("div", { className: "space-x-2", children: [
238
247
  /* @__PURE__ */ s.jsx("code", { children: e }),
239
248
  /* @__PURE__ */ s.jsx(
240
- g,
249
+ j,
241
250
  {
242
251
  schema: t,
243
252
  extraItems: [/* @__PURE__ */ s.jsx(C, {}, "circular-ref")]
@@ -249,76 +258,79 @@ const we = (e, ...[t]) => {
249
258
  /* @__PURE__ */ s.jsxs("div", { className: "space-x-2", children: [
250
259
  /* @__PURE__ */ s.jsx(u, { asChild: !0, children: /* @__PURE__ */ s.jsx("code", { children: e }) }),
251
260
  /* @__PURE__ */ s.jsx(
252
- g,
261
+ j,
253
262
  {
254
263
  schema: t,
255
264
  extraItems: [
256
265
  r !== "optional" && /* @__PURE__ */ s.jsx("span", { className: "text-primary", children: "required" }),
257
- t.type === "array" && "items" in t && f(t.items) && /* @__PURE__ */ s.jsx(C, {})
266
+ t.type === "array" && "items" in t && g(t.items) && /* @__PURE__ */ s.jsx(C, {})
258
267
  ]
259
268
  }
260
269
  )
261
270
  ] }),
262
271
  t.description && /* @__PURE__ */ s.jsx(
263
- k,
272
+ I,
264
273
  {
265
- className: d(v, "text-sm leading-normal line-clamp-4"),
274
+ className: c(k, "text-sm leading-normal line-clamp-4"),
266
275
  content: t.description
267
276
  }
268
277
  ),
269
278
  t.type === "array" && "items" in t && t.items.enum && /* @__PURE__ */ s.jsx(y, { values: t.items.enum }),
270
279
  t.enum && /* @__PURE__ */ s.jsx(y, { values: t.enum }),
271
280
  /* @__PURE__ */ s.jsx(N, { schema: t }),
272
- (b(t) || ue(t)) && /* @__PURE__ */ s.jsxs(
281
+ (b(t) || pe(t)) && /* @__PURE__ */ s.jsxs(
273
282
  a.Root,
274
283
  {
275
284
  defaultOpen: i,
276
285
  open: o,
277
286
  onOpenChange: () => l(!o),
278
287
  children: [
279
- n && /* @__PURE__ */ s.jsx(a.Trigger, { asChild: !0, children: /* @__PURE__ */ s.jsxs(ee, { variant: "expand", size: "sm", className: "h-7", children: [
280
- o ? /* @__PURE__ */ s.jsx(W, { size: 12 }) : /* @__PURE__ */ s.jsx(X, { size: 12 }),
288
+ n && /* @__PURE__ */ s.jsx(a.Trigger, { asChild: !0, children: /* @__PURE__ */ s.jsxs(Z, { variant: "expand", size: "sm", className: "h-7", children: [
289
+ o ? /* @__PURE__ */ s.jsx(V, { size: 12 }) : /* @__PURE__ */ s.jsx(W, { size: 12 }),
281
290
  o ? "Hide properties" : "Show properties"
282
291
  ] }) }),
283
- /* @__PURE__ */ s.jsx(a.Content, { children: /* @__PURE__ */ s.jsx("div", { className: "mt-2", children: b(t) ? /* @__PURE__ */ s.jsx(w, { schema: t }) : t.type === "object" ? /* @__PURE__ */ s.jsx(m, { schema: t }) : t.type === "array" && "items" in t && typeof t.items == "object" && !f(t.items) && /* @__PURE__ */ s.jsx(m, { schema: t.items }) }) })
292
+ /* @__PURE__ */ s.jsx(a.Content, { children: /* @__PURE__ */ s.jsx("div", { className: "mt-2", children: b(t) ? /* @__PURE__ */ s.jsx(P, { schema: t }) : t.type === "object" ? /* @__PURE__ */ s.jsx(x, { schema: t }) : t.type === "array" && "items" in t && typeof t.items == "object" && !g(t.items) && /* @__PURE__ */ s.jsx(x, { schema: t.items }) }) })
284
293
  ]
285
294
  }
286
295
  )
287
296
  ] }) });
288
- }, fe = (e) => e && /* @__PURE__ */ s.jsx(
289
- k,
297
+ }, je = (e) => e && /* @__PURE__ */ s.jsx(
298
+ I,
290
299
  {
291
- className: d(v, "text-sm leading-normal line-clamp-4"),
300
+ className: c(k, "text-sm leading-normal line-clamp-4"),
292
301
  content: e
293
302
  }
294
- ), O = (e) => /* @__PURE__ */ s.jsxs(c, { className: "p-4 space-y-2", children: [
295
- /* @__PURE__ */ s.jsx("span", { className: "text-sm text-muted-foreground", children: /* @__PURE__ */ s.jsx(g, { schema: e }) }),
303
+ ), fe = (e) => /* @__PURE__ */ s.jsxs(d, { className: "p-4 space-y-2", children: [
304
+ /* @__PURE__ */ s.jsx("span", { className: "text-sm text-muted-foreground", children: /* @__PURE__ */ s.jsx(j, { schema: e }) }),
296
305
  e.enum && /* @__PURE__ */ s.jsx(y, { values: e.enum }),
297
- fe(e.description),
306
+ je(e.description),
298
307
  /* @__PURE__ */ s.jsx(N, { schema: e })
299
- ] }), m = ({
308
+ ] }), x = ({
300
309
  schema: e,
301
310
  defaultOpen: t = !1
302
311
  }) => {
303
312
  if (!e || Object.keys(e).length === 0)
304
- return /* @__PURE__ */ s.jsx(c, { className: "p-4", children: /* @__PURE__ */ s.jsx("span", { className: "text-sm text-muted-foreground italic", children: "No schema specified" }) });
313
+ return /* @__PURE__ */ s.jsx(d, { className: "p-4", children: /* @__PURE__ */ s.jsx("span", { className: "text-sm text-muted-foreground italic", children: "No schema specified" }) });
305
314
  if (b(e))
306
- return /* @__PURE__ */ s.jsx(w, { schema: e });
307
- if (pe(e.type))
308
- return O(e);
315
+ return /* @__PURE__ */ s.jsx(P, { schema: e });
316
+ if (xe(e.type))
317
+ return fe(e);
309
318
  if (e.type === "array" && typeof e.items == "object")
310
- return O(e.items);
319
+ return /* @__PURE__ */ s.jsxs(d, { className: "p-4 space-y-2 text-sm", children: [
320
+ /* @__PURE__ */ s.jsx(j, { schema: e }),
321
+ /* @__PURE__ */ s.jsx(x, { schema: e.items })
322
+ ] });
311
323
  if (e.type === "object") {
312
- const r = re(
324
+ const r = te(
313
325
  Object.entries(e.properties ?? {}),
314
326
  ([n, o]) => {
315
327
  var l;
316
328
  return o.deprecated ? "deprecated" : (l = e.required) != null && l.includes(n) ? "required" : "optional";
317
329
  }
318
330
  ), i = ["required", "optional", "deprecated"];
319
- return /* @__PURE__ */ s.jsx(c, { className: "divide-y overflow-hidden", children: i.map(
331
+ return /* @__PURE__ */ s.jsx(d, { className: "divide-y overflow-hidden", children: i.map(
320
332
  (n) => r[n] && /* @__PURE__ */ s.jsx("ul", { className: "divide-y", children: r[n].map(([o, l]) => /* @__PURE__ */ s.jsx(
321
- je,
333
+ ue,
322
334
  {
323
335
  name: o,
324
336
  schema: l,
@@ -329,17 +341,17 @@ const we = (e, ...[t]) => {
329
341
  )) }, n)
330
342
  ) });
331
343
  }
332
- return e.additionalProperties ? /* @__PURE__ */ s.jsxs(c, { className: "my-2", children: [
333
- /* @__PURE__ */ s.jsx(G, { children: /* @__PURE__ */ s.jsx(M, { children: "Additional Properties:" }) }),
334
- /* @__PURE__ */ s.jsx(K, { children: /* @__PURE__ */ s.jsx(m, { schema: e.additionalProperties }) })
344
+ return e.additionalProperties ? /* @__PURE__ */ s.jsxs(d, { className: "my-2", children: [
345
+ /* @__PURE__ */ s.jsx(q, { children: /* @__PURE__ */ s.jsx(G, { children: "Additional Properties:" }) }),
346
+ /* @__PURE__ */ s.jsx(M, { children: /* @__PURE__ */ s.jsx(x, { schema: e.additionalProperties }) })
335
347
  ] }) : null;
336
348
  };
337
349
  export {
338
350
  y as E,
339
- g as P,
340
- m as S,
351
+ j as P,
352
+ x as S,
341
353
  N as a,
342
- re as g,
354
+ te as g,
343
355
  we as u
344
356
  };
345
- //# sourceMappingURL=SchemaView-Brn-YxHY.js.map
357
+ //# sourceMappingURL=SchemaView-B3fOPR4V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaView-B3fOPR4V.js","sources":["../../../node_modules/.pnpm/graphql@16.10.0/node_modules/graphql/utilities/stripIgnoredCharacters.mjs","../src/lib/plugins/openapi/client/useCreateQuery.ts","../src/lib/util/groupBy.ts","../src/lib/plugins/openapi/ParamInfos.tsx","../src/lib/plugins/openapi/components/EnumValues.tsx","../src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx","../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/SchemaPropertyItem.tsx","../src/lib/plugins/openapi/schema/SchemaView.tsx"],"sourcesContent":["import { printBlockString } from '../language/blockString.mjs';\nimport { isPunctuatorTokenKind, Lexer } from '../language/lexer.mjs';\nimport { isSource, Source } from '../language/source.mjs';\nimport { TokenKind } from '../language/tokenKind.mjs';\n/**\n * Strips characters that are not significant to the validity or execution\n * of a GraphQL document:\n * - UnicodeBOM\n * - WhiteSpace\n * - LineTerminator\n * - Comment\n * - Comma\n * - BlockString indentation\n *\n * Note: It is required to have a delimiter character between neighboring\n * non-punctuator tokens and this function always uses single space as delimiter.\n *\n * It is guaranteed that both input and output documents if parsed would result\n * in the exact same AST except for nodes location.\n *\n * Warning: It is guaranteed that this function will always produce stable results.\n * However, it's not guaranteed that it will stay the same between different\n * releases due to bugfixes or changes in the GraphQL specification.\n *\n * Query example:\n *\n * ```graphql\n * query SomeQuery($foo: String!, $bar: String) {\n * someField(foo: $foo, bar: $bar) {\n * a\n * b {\n * c\n * d\n * }\n * }\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}\n * ```\n *\n * SDL example:\n *\n * ```graphql\n * \"\"\"\n * Type description\n * \"\"\"\n * type Foo {\n * \"\"\"\n * Field description\n * \"\"\"\n * bar: String\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n * ```\n */\n\nexport function stripIgnoredCharacters(source) {\n const sourceObj = isSource(source) ? source : new Source(source);\n const body = sourceObj.body;\n const lexer = new Lexer(sourceObj);\n let strippedBody = '';\n let wasLastAddedTokenNonPunctuator = false;\n\n while (lexer.advance().kind !== TokenKind.EOF) {\n const currentToken = lexer.token;\n const tokenKind = currentToken.kind;\n /**\n * Every two non-punctuator tokens should have space between them.\n * Also prevent case of non-punctuator token following by spread resulting\n * in invalid token (e.g. `1...` is invalid Float token).\n */\n\n const isNonPunctuator = !isPunctuatorTokenKind(currentToken.kind);\n\n if (wasLastAddedTokenNonPunctuator) {\n if (isNonPunctuator || currentToken.kind === TokenKind.SPREAD) {\n strippedBody += ' ';\n }\n }\n\n const tokenBody = body.slice(currentToken.start, currentToken.end);\n\n if (tokenKind === TokenKind.BLOCK_STRING) {\n strippedBody += printBlockString(currentToken.value, {\n minimize: true,\n });\n } else {\n strippedBody += tokenBody;\n }\n\n wasLastAddedTokenNonPunctuator = isNonPunctuator;\n }\n\n return strippedBody;\n}\n","import { stripIgnoredCharacters } from \"graphql\";\nimport { use } from \"react\";\nimport type { TypedDocumentString } from \"../graphql/graphql.js\";\nimport { GraphQLContext } from \"./GraphQLContext.js\";\n\ntype NoExtraProps<T, U extends T = T> = U & {\n [K in Exclude<keyof U, keyof T>]?: never;\n};\n\nexport const useCreateQuery = <TResult, TVariables>(\n query: TypedDocumentString<TResult, TVariables>,\n ...[variables]: TVariables extends Record<string, never>\n ? []\n : [NoExtraProps<TVariables>]\n) => {\n const graphQLClient = use(GraphQLContext);\n\n if (graphQLClient === undefined) {\n throw new Error(\"useGraphQL must be used within a GraphQLProvider\");\n }\n\n return {\n queryFn: () => graphQLClient.fetch(query, variables),\n queryKey: [stripIgnoredCharacters(query.toString()), variables],\n } as const;\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","import { ChevronsLeftRightIcon } from \"lucide-react\";\nimport { isValidElement, useState } from \"react\";\nimport { InlineCode } from \"../../components/InlineCode.js\";\nimport { type SchemaObject } from \"../../oas/parser/index.js\";\nimport { cn } from \"../../util/cn.js\";\n\nconst Pattern = ({ pattern }: { pattern: string }) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const isExpandable = pattern.length > 20;\n const shortPattern = isExpandable ? `${pattern.slice(0, 20)}…` : pattern;\n\n return (\n <InlineCode\n className={cn(\"text-xs\", isExpandable && \"cursor-pointer\")}\n onClick={() => setIsExpanded(!isExpanded)}\n selectOnClick={false}\n >\n {isExpanded ? pattern : shortPattern}\n {isExpandable && (\n <button type=\"button\" className=\"p-1 translate-y-[2px]\">\n {!isExpanded && <ChevronsLeftRightIcon size={12} />}\n </button>\n )}\n </InlineCode>\n );\n};\n\nconst getSchemaInfos = (schema?: SchemaObject) => {\n if (!schema) return [];\n\n return [\n schema.type === \"array\" && schema.items.type\n ? `${schema.items.type}[]`\n : Array.isArray(schema.type)\n ? schema.type.join(\" | \")\n : schema.type,\n\n schema.enum && \"enum\",\n schema.format,\n schema.minimum && `min: ${schema.minimum}`,\n schema.maximum && `max: ${schema.maximum}`,\n schema.minLength && `minLength: ${schema.minLength}`,\n schema.maxLength && `maxLength: ${schema.maxLength}`,\n schema.minItems && `minItems: ${schema.minItems}`,\n schema.maxItems && `maxItems: ${schema.maxItems}`,\n schema.uniqueItems && \"unique\",\n schema.minProperties && `minProps: ${schema.minProperties}`,\n schema.maxProperties && `maxProps: ${schema.maxProperties}`,\n schema.readOnly && \"readOnly\",\n schema.writeOnly && \"writeOnly\",\n schema.deprecated && \"deprecated\",\n schema.pattern && (\n <>\n pattern: <Pattern pattern={schema.pattern} />\n </>\n ),\n ];\n};\n\nexport const ParamInfos = ({\n schema,\n extraItems = [],\n className,\n}: {\n schema?: SchemaObject;\n extraItems?: unknown[];\n className?: string;\n}) => {\n const filteredItems = [...getSchemaInfos(schema), ...extraItems].flatMap(\n (item) => (typeof item === \"string\" || isValidElement(item) ? item : []),\n );\n\n return (\n <span className={className}>\n {filteredItems.map((item, index) => (\n <span className=\"text-muted-foreground\" key={index}>\n {item}\n {index < filteredItems.length - 1 && (\n <span className=\"text-muted-foreground/50\">\n &nbsp;&middot;&nbsp;\n </span>\n )}\n </span>\n ))}\n </span>\n );\n};\n","import { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { SelectOnClick } from \"./SelectOnClick.js\";\n\nexport const EnumValues = ({\n values,\n className,\n maxVisibleValues = 8,\n}: {\n values: Array<string | number>;\n className?: string;\n maxVisibleValues?: number;\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n if (!values.length) return null;\n\n const shouldCollapse = values.length > maxVisibleValues;\n const visibleValues =\n shouldCollapse && !isOpen ? values.slice(0, maxVisibleValues) : values;\n\n return (\n <div className={cn(\"flex flex-wrap gap-1.5 text-xs\", className)}>\n <span className=\"text-muted-foreground\">Enum values: </span>\n {visibleValues.map((value) => (\n <div key={value}>\n <SelectOnClick className=\"border rounded px-1 font-mono\">\n {value}\n </SelectOnClick>\n </div>\n ))}\n {shouldCollapse && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-fit px-0\"\n onClick={() => setIsOpen(!isOpen)}\n >\n {isOpen ? (\n <div className=\"flex items-center gap-1\">\n <ChevronUpIcon size={12} />\n <span className=\"text-muted-foreground\">show less</span>\n </div>\n ) : (\n <div className=\"flex items-center gap-1\">\n <ChevronDownIcon size={12} />\n <span className=\"text-muted-foreground\">\n show {values.length - maxVisibleValues} more\n </span>\n </div>\n )}\n </Button>\n )}\n </div>\n );\n};\n","import type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { SelectOnClick } from \"../components/SelectOnClick.js\";\n\nexport const SchemaExampleAndDefault = ({\n schema,\n}: {\n schema: SchemaObject;\n}) => {\n const example = schema.examples?.at(0);\n const defaultValue = schema.default;\n\n if (!example && !defaultValue) return null;\n\n return (\n <div className=\"flex flex-col gap-1 text-xs\">\n {example && (\n <div>\n <span className=\"text-muted-foreground\">Example: </span>\n <SelectOnClick className=\"border rounded px-1 font-mono\">\n {typeof example === \"object\" ? JSON.stringify(example) : example}\n </SelectOnClick>\n </div>\n )}\n {defaultValue && (\n <div>\n <span className=\"text-muted-foreground\">Default: </span>\n <SelectOnClick className=\"border rounded px-1 font-mono\">\n {typeof defaultValue === \"object\"\n ? JSON.stringify(defaultValue)\n : defaultValue}\n </SelectOnClick>\n </div>\n )}\n </div>\n );\n};\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 schemeName,\n}: {\n type: LogicalGroupType;\n isOpen: boolean;\n className?: string;\n schemeName?: 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 <span className=\"text-sm text-foreground\">{schemeName}</span>\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}) => {\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\n type={props.type}\n isOpen={isOpen}\n schemeName={props.schema.title}\n />\n </Collapsible.Trigger>\n {!isOpen && <div className=\"wavy-line bg-border translate-y-1\" />}\n <Collapsible.Content>\n <SchemaView schema={props.schema} />\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 toggleOpen,\n}: {\n schemas: SchemaObject[];\n type: LogicalGroupType;\n isOpen: boolean;\n toggleOpen: () => void;\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 key={index} type={type} schema={subSchema} />\n ))}\n </Collapsible.Content>\n </Card>\n </Collapsible.Root>\n);\n","import { CIRCULAR_REF } from \"../../../oas/graphql/circular.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\n\nexport const isBasicType = (\n type: unknown,\n): type is \"string\" | \"number\" | \"boolean\" | \"integer\" | \"null\" =>\n typeof type === \"string\" &&\n [\"string\", \"number\", \"boolean\", \"integer\", \"null\"].includes(type);\n\nexport const isComplexType = (value: SchemaObject) =>\n (value.type === \"object\" && Object.keys(value.properties ?? {}).length > 0) ||\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\nexport const isCircularRef = (schema: unknown): schema is string =>\n schema === CIRCULAR_REF;\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { MinusIcon, PlusIcon, RefreshCcwDotIcon } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport { InlineCode } from \"../../../components/InlineCode.js\";\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 { EnumValues } from \"../components/EnumValues.js\";\nimport { SelectOnClick } from \"../components/SelectOnClick.js\";\nimport { ParamInfos } from \"../ParamInfos.js\";\nimport { LogicalGroup } from \"./LogicalGroup/LogicalGroup.js\";\nimport { SchemaExampleAndDefault } from \"./SchemaExampleAndDefault.js\";\nimport { SchemaView } from \"./SchemaView.js\";\nimport {\n hasLogicalGroupings,\n isCircularRef,\n isComplexType,\n LogicalSchemaTypeMap,\n} from \"./utils.js\";\n\nexport const SchemaLogicalGroup = ({ schema }: { schema: SchemaObject }) => {\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 />\n );\n }\n};\n\nconst RecursiveIndicator = () => (\n <InlineCode\n className=\"inline-flex items-center gap-1.5 italic text-xs translate-y-0.5\"\n selectOnClick={false}\n >\n <RefreshCcwDotIcon size={13} />\n <span>circular</span>\n </InlineCode>\n);\n\nexport const SchemaPropertyItem = ({\n name,\n schema,\n group,\n defaultOpen = false,\n showCollapseButton = true,\n}: {\n name: string;\n schema: SchemaObject;\n group: \"required\" | \"optional\" | \"deprecated\";\n defaultOpen?: boolean;\n showCollapseButton?: boolean;\n}) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n if (isCircularRef(schema)) {\n return (\n <li className=\"p-4 bg-border/20 hover:bg-border/30\">\n <div className=\"flex flex-col gap-2.5 justify-between text-sm\">\n <div className=\"space-x-2\">\n <code>{name}</code>\n <ParamInfos\n schema={schema}\n extraItems={[<RecursiveIndicator key=\"circular-ref\" />]}\n />\n </div>\n <SchemaExampleAndDefault schema={schema} />\n </div>\n </li>\n );\n }\n\n return (\n <li className=\"p-4 bg-border/20 hover:bg-border/30\">\n <div className=\"flex flex-col gap-2.5 justify-between text-sm\">\n <div className=\"space-x-2\">\n <SelectOnClick asChild>\n <code>{name}</code>\n </SelectOnClick>\n <ParamInfos\n schema={schema}\n extraItems={[\n group !== \"optional\" && (\n <span className=\"text-primary\">required</span>\n ),\n schema.type === \"array\" &&\n \"items\" in schema &&\n isCircularRef(schema.items) && <RecursiveIndicator />,\n ]}\n />\n </div>\n {schema.description && (\n <Markdown\n className={cn(ProseClasses, \"text-sm leading-normal line-clamp-4\")}\n content={schema.description}\n />\n )}\n {schema.type === \"array\" && \"items\" in schema && schema.items.enum && (\n <EnumValues values={schema.items.enum} />\n )}\n {schema.enum && <EnumValues values={schema.enum} />}\n <SchemaExampleAndDefault schema={schema} />\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 variant=\"expand\" size=\"sm\" className=\"h-7\">\n {isOpen ? <MinusIcon size={12} /> : <PlusIcon size={12} />}\n {!isOpen ? \"Show properties\" : \"Hide properties\"}\n </Button>\n </Collapsible.Trigger>\n )}\n <Collapsible.Content>\n <div className=\"mt-2\">\n {hasLogicalGroupings(schema) ? (\n <SchemaLogicalGroup schema={schema} />\n ) : schema.type === \"object\" ? (\n <SchemaView schema={schema} />\n ) : (\n schema.type === \"array\" &&\n \"items\" in schema &&\n typeof schema.items === \"object\" &&\n !isCircularRef(schema.items) && (\n <SchemaView schema={schema.items} />\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 { EnumValues } from \"../components/EnumValues.js\";\nimport { ParamInfos } from \"../ParamInfos.js\";\nimport { SchemaExampleAndDefault } from \"./SchemaExampleAndDefault.js\";\nimport {\n SchemaLogicalGroup,\n SchemaPropertyItem,\n} from \"./SchemaPropertyItem.js\";\nimport { hasLogicalGroupings, isBasicType } from \"./utils.js\";\n\nconst renderMarkdown = (content?: string) =>\n content && (\n <Markdown\n className={cn(ProseClasses, \"text-sm leading-normal line-clamp-4\")}\n content={content}\n />\n );\n\nconst renderBasicSchema = (schema: SchemaObject) => (\n <Card className=\"p-4 space-y-2\">\n <span className=\"text-sm text-muted-foreground\">\n <ParamInfos schema={schema} />\n </span>\n {schema.enum && <EnumValues values={schema.enum} />}\n {renderMarkdown(schema.description)}\n <SchemaExampleAndDefault schema={schema} />\n </Card>\n);\n\nexport const SchemaView = ({\n schema,\n defaultOpen = false,\n}: {\n schema?: SchemaObject | null;\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 schema specified\n </span>\n </Card>\n );\n }\n\n if (hasLogicalGroupings(schema)) {\n return <SchemaLogicalGroup schema={schema} />;\n }\n\n if (isBasicType(schema.type)) {\n return renderBasicSchema(schema);\n }\n\n if (schema.type === \"array\" && typeof schema.items === \"object\") {\n return (\n <Card className=\"p-4 space-y-2 text-sm\">\n <ParamInfos schema={schema} />\n <SchemaView schema={schema.items as SchemaObject} />\n </Card>\n );\n }\n\n if (schema.type === \"object\") {\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 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 defaultOpen={defaultOpen}\n />\n ))}\n </ul>\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 <SchemaView schema={schema.additionalProperties as SchemaObject} />\n </CardContent>\n </Card>\n );\n }\n\n return null;\n};\n"],"names":["stripIgnoredCharacters","source","sourceObj","isSource","Source","body","lexer","Lexer","strippedBody","wasLastAddedTokenNonPunctuator","TokenKind","currentToken","tokenKind","isNonPunctuator","isPunctuatorTokenKind","tokenBody","printBlockString","useCreateQuery","query","variables","graphQLClient","use","GraphQLContext","groupBy","arr","keySelector","accumulator","val","groupedKey","Pattern","pattern","isExpanded","setIsExpanded","useState","isExpandable","shortPattern","jsxs","InlineCode","cn","jsx","ChevronsLeftRightIcon","getSchemaInfos","schema","Fragment","ParamInfos","extraItems","className","filteredItems","item","isValidElement","index","EnumValues","values","maxVisibleValues","isOpen","setIsOpen","shouldCollapse","visibleValues","value","SelectOnClick","Button","ChevronUpIcon","ChevronDownIcon","SchemaExampleAndDefault","example","_a","defaultValue","iconMap","CircleFadingPlusIcon","CircleDotIcon","CircleIcon","colorClass","LogicalGroupConnector","type","schemeName","LogicalGroupItem","props","Collapsible","prev","SchemaView","typeLabel","LogicalGroup","schemas","toggleOpen","Card","SquareMinusIcon","SquarePlusIcon","subSchema","isBasicType","isComplexType","hasLogicalGroupings","LogicalSchemaTypeMap","isCircularRef","CIRCULAR_REF","SchemaLogicalGroup","useCallback","key","objectEntries","RecursiveIndicator","RefreshCcwDotIcon","SchemaPropertyItem","name","group","defaultOpen","showCollapseButton","Markdown","ProseClasses","MinusIcon","PlusIcon","renderMarkdown","content","renderBasicSchema","groupedProperties","propertyName","property","groupNames","CardHeader","CardTitle","CardContent"],"mappings":"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","x_google_ignoreList":[0]}