zudoku 0.3.0-dev.54 → 0.3.0-dev.56

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 (67) hide show
  1. package/dist/config/validators/validate.d.ts +12 -12
  2. package/dist/lib/components/DeveloperHint.d.ts +5 -0
  3. package/dist/lib/components/DeveloperHint.js +10 -0
  4. package/dist/lib/components/DeveloperHint.js.map +1 -0
  5. package/dist/lib/components/NotFoundPage.js +2 -2
  6. package/dist/lib/components/NotFoundPage.js.map +1 -1
  7. package/dist/lib/plugins/api-keys/ProtectedRoute.d.ts +1 -0
  8. package/dist/lib/plugins/api-keys/ProtectedRoute.js +14 -0
  9. package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -0
  10. package/dist/lib/plugins/api-keys/index.js +2 -12
  11. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  12. package/dist/lib/plugins/openapi/OperationList.js +2 -2
  13. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  14. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +3 -3
  15. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  16. package/lib/{AnchorLink-BCN_a_Uz.js → AnchorLink-GNsUeGSX.js} +2 -2
  17. package/lib/{AnchorLink-BCN_a_Uz.js.map → AnchorLink-GNsUeGSX.js.map} +1 -1
  18. package/lib/Button-DpHMZvVs.js +4571 -0
  19. package/lib/Button-DpHMZvVs.js.map +1 -0
  20. package/lib/{Markdown-aE_XoLNs.js → Markdown-DtLFdxD1.js} +130 -129
  21. package/lib/{Markdown-aE_XoLNs.js.map → Markdown-DtLFdxD1.js.map} +1 -1
  22. package/lib/{MdxPage-Bsc79cD-.js → MdxPage-CbwYRKf5.js} +3 -3
  23. package/lib/{MdxPage-Bsc79cD-.js.map → MdxPage-CbwYRKf5.js.map} +1 -1
  24. package/lib/OperationList-DpR4KzIJ.js +5570 -0
  25. package/lib/OperationList-DpR4KzIJ.js.map +1 -0
  26. package/lib/{Route-D-egsGHx.js → Route-C1LyvITr.js} +2 -2
  27. package/lib/{Route-D-egsGHx.js.map → Route-C1LyvITr.js.map} +1 -1
  28. package/lib/{index-DseBZFJ-.js → Spinner-Bhbs5aPI.js} +46 -34
  29. package/lib/Spinner-Bhbs5aPI.js.map +1 -0
  30. package/lib/{hook-CKqQERWo.js → hook-Biq3zYel.js} +40 -25
  31. package/lib/hook-Biq3zYel.js.map +1 -0
  32. package/lib/{index-jsFBaizC.js → index-DZ910ttL.js} +10 -10
  33. package/lib/{index-jsFBaizC.js.map → index-DZ910ttL.js.map} +1 -1
  34. package/lib/index-gsAuUwQh.js +418 -0
  35. package/lib/index-gsAuUwQh.js.map +1 -0
  36. package/lib/{urql-DEKdguFl.js → urql-DMlBWUKL.js} +3 -3
  37. package/lib/{urql-DEKdguFl.js.map → urql-DMlBWUKL.js.map} +1 -1
  38. package/lib/zudoku.components.js +18 -19
  39. package/lib/zudoku.components.js.map +1 -1
  40. package/lib/zudoku.openapi-worker.js +1 -1
  41. package/lib/zudoku.plugin-api-keys.js +89 -85
  42. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  43. package/lib/zudoku.plugin-markdown.js +1 -1
  44. package/lib/zudoku.plugin-openapi.js +3 -3
  45. package/package.json +1 -1
  46. package/src/lib/components/DeveloperHint.tsx +25 -0
  47. package/src/lib/components/NotFoundPage.tsx +8 -14
  48. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +29 -0
  49. package/src/lib/plugins/api-keys/index.tsx +2 -21
  50. package/src/lib/plugins/openapi/OperationList.tsx +5 -8
  51. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +3 -5
  52. package/lib/Combination-B0Iu6mhJ.js +0 -915
  53. package/lib/Combination-B0Iu6mhJ.js.map +0 -1
  54. package/lib/OperationList-K-JWBxau.js +0 -5091
  55. package/lib/OperationList-K-JWBxau.js.map +0 -1
  56. package/lib/Playground-Czy7ha9z.js +0 -502
  57. package/lib/Playground-Czy7ha9z.js.map +0 -1
  58. package/lib/Select-CcBbwJ2R.js +0 -3667
  59. package/lib/Select-CcBbwJ2R.js.map +0 -1
  60. package/lib/Spinner-C9_Opdev.js +0 -15
  61. package/lib/Spinner-C9_Opdev.js.map +0 -1
  62. package/lib/hook-CKqQERWo.js.map +0 -1
  63. package/lib/index-ByHya67R.js +0 -207
  64. package/lib/index-ByHya67R.js.map +0 -1
  65. package/lib/index-DseBZFJ-.js.map +0 -1
  66. package/lib/mutation-DjbQSHzT.js +0 -208
  67. package/lib/mutation-DjbQSHzT.js.map +0 -1
@@ -1,502 +0,0 @@
1
- import { j as e } from "./jsx-runtime-CJZJivg2.js";
2
- import { g as A, h as B, i as X, C as P, u as Y, a as Z, F as ee, S as se, b as ae, c as re, d as te, f as D } from "./Select-CcBbwJ2R.js";
3
- import * as u from "react";
4
- import { forwardRef as ne, Fragment as $ } from "react";
5
- import { a as le } from "./urql-DEKdguFl.js";
6
- import { v as de } from "./DevPortalProvider-Do9oJqme.js";
7
- import { S as M } from "./Spinner-C9_Opdev.js";
8
- import { e as c, j as oe, S as ie } from "./Markdown-aE_XoLNs.js";
9
- import { B as L } from "./Combination-B0Iu6mhJ.js";
10
- import { X as J, u as ce, D as me, C as ue, T as Q, a as W, b as C, c as w } from "./OperationList-K-JWBxau.js";
11
- import { u as he } from "./context-_fYfJFgk.js";
12
- import { g as xe } from "./index-jsFBaizC.js";
13
- import { S as pe } from "./index-ByHya67R.js";
14
- const V = u.forwardRef(({ className: s, ...a }, r) => /* @__PURE__ */ e.jsx(
15
- "div",
16
- {
17
- ref: r,
18
- className: c(
19
- "rounded-xl border border-border bg-card text-card-foreground shadow",
20
- s
21
- ),
22
- ...a
23
- }
24
- ));
25
- V.displayName = "Card";
26
- const fe = u.forwardRef(({ className: s, ...a }, r) => /* @__PURE__ */ e.jsx(
27
- "div",
28
- {
29
- ref: r,
30
- className: c("flex flex-col space-y-1.5 p-6", s),
31
- ...a
32
- }
33
- ));
34
- fe.displayName = "CardHeader";
35
- const je = u.forwardRef(({ className: s, ...a }, r) => /* @__PURE__ */ e.jsx(
36
- "h3",
37
- {
38
- ref: r,
39
- className: c("font-semibold leading-none tracking-tight", s),
40
- ...a
41
- }
42
- ));
43
- je.displayName = "CardTitle";
44
- const ge = u.forwardRef(({ className: s, ...a }, r) => /* @__PURE__ */ e.jsx(
45
- "p",
46
- {
47
- ref: r,
48
- className: c("text-sm text-muted-foreground", s),
49
- ...a
50
- }
51
- ));
52
- ge.displayName = "CardDescription";
53
- const be = u.forwardRef(({ className: s, ...a }, r) => /* @__PURE__ */ e.jsx("div", { ref: r, className: c("p-6 pt-0", s), ...a }));
54
- be.displayName = "CardContent";
55
- const ve = u.forwardRef(({ className: s, ...a }, r) => /* @__PURE__ */ e.jsx(
56
- "div",
57
- {
58
- ref: r,
59
- className: c("flex items-center p-6 pt-0", s),
60
- ...a
61
- }
62
- ));
63
- ve.displayName = "CardFooter";
64
- const Ne = (s, a, r) => {
65
- const l = new URL(
66
- s + a.split("/").map(
67
- (n) => {
68
- var d;
69
- return n.startsWith("{") && n.endsWith("}") ? ((d = r.pathParams.find((o) => o.name === n.slice(1, -1))) == null ? void 0 : d.value) ?? n : n;
70
- }
71
- ).join("/")
72
- );
73
- return r.queryParams.forEach((n) => {
74
- l.searchParams.set(n.name, n.value);
75
- }), l;
76
- }, ye = (s, a) => {
77
- const r = u.forwardRef(({ className: l, asChild: n, ...d }, o) => {
78
- const j = n ? pe : s;
79
- return u.createElement(j, {
80
- ...d,
81
- ref: o,
82
- className: c(a, l)
83
- });
84
- });
85
- return r.displayName = `VariantComponent(${s})`, r;
86
- }, f = ye(
87
- "input",
88
- "px-2 bg-transparent h-6 font-mono text-xs m-2"
89
- ), Ce = ({
90
- control: s,
91
- register: a
92
- }) => {
93
- const { fields: r, append: l, remove: n } = A({
94
- control: s,
95
- name: "headers"
96
- }), d = B({ name: "identity", control: s }), o = B({ name: "headers", control: s }), j = d !== T;
97
- return /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto]", children: [
98
- r.map((h, m) => {
99
- var g;
100
- const x = j && ((g = o.at(m)) == null ? void 0 : g.name) === "Authorization";
101
- return /* @__PURE__ */ e.jsxs(
102
- "div",
103
- {
104
- className: c(
105
- "grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-muted rounded overflow-hidden group",
106
- x && "line-through"
107
- ),
108
- title: x ? "This header is disabled because authentication was selected" : void 0,
109
- children: [
110
- /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2 items-center", children: [
111
- /* @__PURE__ */ e.jsx(
112
- f,
113
- {
114
- ...a(`headers.${m}.name`),
115
- placeholder: "Name",
116
- className: "peer",
117
- autoComplete: "off"
118
- }
119
- ),
120
- x && /* @__PURE__ */ e.jsx(oe, { size: 16, className: "text-amber-500" })
121
- ] }),
122
- /* @__PURE__ */ e.jsx(
123
- f,
124
- {
125
- placeholder: "Value",
126
- className: "peer",
127
- ...a(`headers.${m}.value`),
128
- autoComplete: "off"
129
- }
130
- ),
131
- /* @__PURE__ */ e.jsx(
132
- "button",
133
- {
134
- className: "hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible",
135
- onClick: () => {
136
- n(m);
137
- },
138
- type: "button",
139
- children: /* @__PURE__ */ e.jsx(J, { size: 16 })
140
- }
141
- ),
142
- /* @__PURE__ */ e.jsx("div", { className: "col-span-full border-b border-border" })
143
- ]
144
- },
145
- h.id
146
- );
147
- }),
148
- /* @__PURE__ */ e.jsx(
149
- L,
150
- {
151
- className: "col-span-full mt-4",
152
- onClick: () => l({ name: "", value: "" }),
153
- type: "button",
154
- children: "Add header"
155
- }
156
- )
157
- ] });
158
- }, we = ne(
159
- function({ part: a, className: r, ...l }, n) {
160
- const d = ce(a);
161
- return /* @__PURE__ */ e.jsx(
162
- f,
163
- {
164
- ...l,
165
- ref: n,
166
- className: c(r, "opacity-80 data-[active=true]:opacity-100"),
167
- style: {
168
- // color: `hsl(${color})`,
169
- outlineColor: `hsl(${d})`
170
- }
171
- }
172
- );
173
- }
174
- ), Pe = ({
175
- control: s,
176
- register: a
177
- }) => {
178
- const { fields: r } = A({
179
- control: s,
180
- name: "pathParams"
181
- });
182
- return r.map((l, n) => /* @__PURE__ */ e.jsxs(
183
- "div",
184
- {
185
- className: "grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-muted rounded overflow-hidden group",
186
- children: [
187
- /* @__PURE__ */ e.jsx(
188
- f,
189
- {
190
- ...a(`pathParams.${n}.name`),
191
- disabled: !0,
192
- placeholder: "Name",
193
- className: "peer"
194
- }
195
- ),
196
- /* @__PURE__ */ e.jsx(
197
- we,
198
- {
199
- ...a(`pathParams.${n}.value`),
200
- part: l.name,
201
- [me]: l.name,
202
- placeholder: "Value",
203
- className: "peer"
204
- }
205
- ),
206
- /* @__PURE__ */ e.jsx("div", { className: "col-span-full border-b border-border" })
207
- ]
208
- },
209
- l.id
210
- ));
211
- }, Te = ({
212
- control: s
213
- }) => {
214
- const { fields: a } = A({
215
- control: s,
216
- name: "queryParams"
217
- }), l = X().getValues("queryParams").map((n) => n.isRequired);
218
- return a.map((n, d) => /* @__PURE__ */ e.jsxs(
219
- "div",
220
- {
221
- className: "px-2 grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-accent rounded overflow-hidden group",
222
- children: [
223
- /* @__PURE__ */ e.jsx(
224
- P,
225
- {
226
- control: s,
227
- name: `queryParams.${d}.active`,
228
- render: ({ field: o }) => /* @__PURE__ */ e.jsx(
229
- "input",
230
- {
231
- type: "checkbox",
232
- id: `queryParams.${d}.active`,
233
- checked: o.value,
234
- onChange: o.onChange
235
- }
236
- )
237
- }
238
- ),
239
- /* @__PURE__ */ e.jsx(
240
- P,
241
- {
242
- control: s,
243
- render: ({ field: o }) => /* @__PURE__ */ e.jsx(f, { asChild: !0, children: /* @__PURE__ */ e.jsxs(
244
- "label",
245
- {
246
- className: "flex items-center",
247
- htmlFor: `queryParams.${d}.active`,
248
- title: l[d] ? "Required field" : void 0,
249
- children: [
250
- o.value,
251
- l[d] && /* @__PURE__ */ e.jsx("sup", { className: "text-destructive", children: "*" })
252
- ]
253
- }
254
- ) }),
255
- name: `queryParams.${d}.name`
256
- }
257
- ),
258
- /* @__PURE__ */ e.jsx(
259
- P,
260
- {
261
- control: s,
262
- render: ({ field: o }) => /* @__PURE__ */ e.jsx(f, { ...o, placeholder: "Value", className: "peer" }),
263
- name: `queryParams.${d}.value`
264
- }
265
- ),
266
- /* @__PURE__ */ e.jsx(
267
- P,
268
- {
269
- control: s,
270
- render: ({ field: o }) => /* @__PURE__ */ e.jsx(
271
- "button",
272
- {
273
- type: "button",
274
- className: c(
275
- "hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible",
276
- o.value.length === 0 && "opacity-0 pointer-events-none"
277
- ),
278
- onClick: () => o.onChange(""),
279
- children: /* @__PURE__ */ e.jsx(J, { size: 16 })
280
- }
281
- ),
282
- name: `queryParams.${d}.value`
283
- }
284
- ),
285
- /* @__PURE__ */ e.jsx("div", { className: "-mx-2 col-span-full border-b border-border" })
286
- ]
287
- },
288
- n.id
289
- ));
290
- }, T = "__none", Se = xe(
291
- /* GraphQL */
292
- `
293
- query getServerQuery($input: JSON!, $type: SchemaType!) {
294
- schema(input: $input, type: $type) {
295
- url
296
- }
297
- }
298
- `
299
- );
300
- function qe(s) {
301
- var r;
302
- return (r = Object.entries({
303
- "application/json": "json",
304
- "text/json": "json",
305
- "text/html": "html",
306
- "text/css": "css",
307
- "text/javascript": "javascript",
308
- "application/xml": "xml",
309
- "application/xhtml+xml": "xhtml",
310
- "text/plain": "plain"
311
- }).find(
312
- ([l]) => s.includes(l)
313
- )) == null ? void 0 : r[0][1];
314
- }
315
- const Re = {
316
- 200: "OK",
317
- 201: "Created",
318
- 202: "Accepted",
319
- 204: "No Content",
320
- 400: "Bad Request",
321
- 401: "Unauthorized",
322
- 403: "Forbidden",
323
- 404: "Not Found",
324
- 405: "Method Not Allowed",
325
- 500: "Internal Server Error"
326
- }, Be = ({
327
- url: s,
328
- method: a,
329
- headers: r = [{ name: "", value: "" }],
330
- queryParams: l = [],
331
- pathParams: n = [],
332
- hasParams: d
333
- }) => {
334
- var E, k, O;
335
- const o = he(), [j] = le({ query: Se, variables: o }), { register: h, control: m, handleSubmit: x, watch: g, ...F } = Y({
336
- defaultValues: {
337
- body: "",
338
- queryParams: l,
339
- headers: r,
340
- pathParams: n,
341
- identity: T
342
- }
343
- }), b = g(), S = de(), i = Z({
344
- mutationFn: async (t) => {
345
- var H, I, U;
346
- const v = Ne(((H = j.data) == null ? void 0 : H.schema.url) ?? "", s, t), R = performance.now(), N = new Request(v, {
347
- method: a.toUpperCase(),
348
- headers: Object.fromEntries(
349
- t.headers.filter((p) => p.name).map((p) => [p.name, p.value])
350
- )
351
- });
352
- t.identity !== T && ((U = (I = S.data) == null ? void 0 : I.find((p) => p.id === t.identity)) == null || U.authorizeRequest(N));
353
- const y = await fetch(N), _ = await y.text();
354
- return {
355
- status: y.status,
356
- headers: y.headers,
357
- size: _.length,
358
- body: _,
359
- time: performance.now() - R
360
- };
361
- }
362
- }), K = s.split("/").map((t, v, R) => {
363
- var N;
364
- return /* @__PURE__ */ e.jsxs($, { children: [
365
- t.startsWith("{") && t.endsWith("}") ? /* @__PURE__ */ e.jsx(
366
- ue,
367
- {
368
- name: t,
369
- backgroundOpacity: "0",
370
- slug: t.slice(1, -1),
371
- children: (N = b.pathParams.find((y) => y.name === t.slice(1, -1))) == null ? void 0 : N.value
372
- }
373
- ) : t,
374
- v < R.length - 1 && "/",
375
- /* @__PURE__ */ e.jsx("wbr", {})
376
- ] }, t);
377
- }), G = qe(
378
- ((E = i.data) == null ? void 0 : E.headers.get("Content-Type")) ?? ""
379
- ), q = Array.from(((k = i.data) == null ? void 0 : k.headers.entries()) ?? []), z = b.queryParams.filter((t) => t.active).map((t) => /* @__PURE__ */ e.jsxs($, { children: [
380
- t.name,
381
- "=",
382
- t.value,
383
- /* @__PURE__ */ e.jsx("wbr", {})
384
- ] }, t.name));
385
- return /* @__PURE__ */ e.jsx(ee, { register: h, control: m, handleSubmit: x, watch: g, ...F, children: /* @__PURE__ */ e.jsx("form", { onSubmit: x((t) => i.mutateAsync(t)), children: /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-2 text-sm h-full", children: [
386
- /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col gap-4 p-8 bg-muted/50 after:bg-muted-foreground/20 relative after:absolute after:w-px after:inset-0 after:left-auto", children: [
387
- /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2 items-stretch", children: [
388
- /* @__PURE__ */ e.jsxs("div", { className: "flex flex-1 items-center w-full border rounded-md border-border", children: [
389
- /* @__PURE__ */ e.jsx("div", { className: "border-r border-border p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono", children: a.toUpperCase() }),
390
- /* @__PURE__ */ e.jsxs("div", { className: "p-2 font-mono text-xs", children: [
391
- K,
392
- z.length > 0 ? "?" : "",
393
- z
394
- ] })
395
- ] }),
396
- /* @__PURE__ */ e.jsx(L, { type: "submit", className: "h-auto flex gap-1", children: "Send" })
397
- ] }),
398
- /* @__PURE__ */ e.jsxs(Q, { defaultValue: d ? "parameters" : "headers", children: [
399
- /* @__PURE__ */ e.jsxs("div", { className: "flex justify-between", children: [
400
- /* @__PURE__ */ e.jsxs(W, { children: [
401
- d && /* @__PURE__ */ e.jsx(C, { value: "parameters", children: "Parameters" }),
402
- /* @__PURE__ */ e.jsxs(C, { value: "headers", children: [
403
- "Headers",
404
- " ",
405
- b.headers.length > 0 && `(${b.headers.length})`
406
- ] }),
407
- /* @__PURE__ */ e.jsx(
408
- C,
409
- {
410
- value: "body",
411
- disabled: ["POST", "PUT", "PATCH", "DELETE"].includes(
412
- a.toUpperCase()
413
- ),
414
- children: "Body"
415
- }
416
- )
417
- ] }),
418
- /* @__PURE__ */ e.jsxs("div", { className: "flex gap-2 items-center", children: [
419
- "Auth:",
420
- /* @__PURE__ */ e.jsxs(
421
- se,
422
- {
423
- onValueChange: (t) => F.setValue("identity", t),
424
- defaultValue: b.identity,
425
- children: [
426
- /* @__PURE__ */ e.jsx(ae, { className: "w-[180px] flex", children: S.isPending ? /* @__PURE__ */ e.jsx(M, {}) : /* @__PURE__ */ e.jsx(re, {}) }),
427
- /* @__PURE__ */ e.jsxs(te, { align: "center", children: [
428
- /* @__PURE__ */ e.jsx(D, { value: T, children: "None" }),
429
- (O = S.data) == null ? void 0 : O.map((t) => /* @__PURE__ */ e.jsx(D, { value: t.id, children: t.label }, t.id))
430
- ] })
431
- ]
432
- }
433
- )
434
- ] })
435
- ] }),
436
- /* @__PURE__ */ e.jsx(w, { value: "headers", children: /* @__PURE__ */ e.jsx(Ce, { control: m, register: h }) }),
437
- /* @__PURE__ */ e.jsx(w, { value: "parameters", children: /* @__PURE__ */ e.jsxs("div", { className: "grid grid-cols-[min-content_1fr_1fr_auto]", children: [
438
- n.length > 0 && /* @__PURE__ */ e.jsx("div", { className: "font-semibold my-3 col-span-3", children: "Path Parameters" }),
439
- /* @__PURE__ */ e.jsx(Pe, { control: m, register: h }),
440
- l.length > 0 && /* @__PURE__ */ e.jsx("span", { className: "font-semibold my-3 col-span-3", children: "Query Parameters" }),
441
- /* @__PURE__ */ e.jsx(Te, { control: m })
442
- ] }) }),
443
- /* @__PURE__ */ e.jsx(w, { value: "body", children: /* @__PURE__ */ e.jsx(
444
- "textarea",
445
- {
446
- ...h("body"),
447
- className: "border border-border w-full rounded p-2 bg-muted h-40"
448
- }
449
- ) })
450
- ] })
451
- ] }),
452
- /* @__PURE__ */ e.jsx("div", { className: "flex flex-col gap-4 p-8 bg-muted/70", children: i.error ? /* @__PURE__ */ e.jsx("div", { children: i.error.message }) : i.data ? /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col gap-2", children: [
453
- /* @__PURE__ */ e.jsx("div", { className: "flex gap-2", children: /* @__PURE__ */ e.jsxs("div", { className: "flex text-xs gap-6", children: [
454
- /* @__PURE__ */ e.jsxs("div", { children: [
455
- "Status: ",
456
- i.data.status,
457
- " ",
458
- Re[i.data.status] ?? ""
459
- ] }),
460
- /* @__PURE__ */ e.jsxs("div", { children: [
461
- "Time: ",
462
- i.data.time.toFixed(0),
463
- "ms"
464
- ] }),
465
- /* @__PURE__ */ e.jsxs("div", { children: [
466
- "Size: ",
467
- i.data.size,
468
- " B"
469
- ] })
470
- ] }) }),
471
- /* @__PURE__ */ e.jsxs(Q, { defaultValue: "response", children: [
472
- /* @__PURE__ */ e.jsxs(W, { children: [
473
- /* @__PURE__ */ e.jsx(C, { value: "response", children: "Response" }),
474
- /* @__PURE__ */ e.jsx(C, { value: "headers", children: q.length ? `Headers (${q.length})` : "No headers" })
475
- ] }),
476
- /* @__PURE__ */ e.jsx(w, { value: "response", children: /* @__PURE__ */ e.jsx(V, { className: "shadow-none p-4", children: /* @__PURE__ */ e.jsx(
477
- ie,
478
- {
479
- language: G ?? "json",
480
- noBackground: !0,
481
- className: "overflow-x-auto ",
482
- code: i.data.body ?? JSON.stringify("")
483
- }
484
- ) }) }),
485
- /* @__PURE__ */ e.jsx(w, { value: "headers", children: /* @__PURE__ */ e.jsxs(V, { className: "grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4", children: [
486
- /* @__PURE__ */ e.jsx("div", { className: "font-semibold", children: "Key" }),
487
- /* @__PURE__ */ e.jsx("div", { className: "font-semibold", children: "Value" }),
488
- q.map(([t, v]) => /* @__PURE__ */ e.jsxs($, { children: [
489
- /* @__PURE__ */ e.jsx("div", { children: t }),
490
- /* @__PURE__ */ e.jsx("div", { children: v })
491
- ] }, t))
492
- ] }) })
493
- ] })
494
- ] }) : /* @__PURE__ */ e.jsx("div", { className: "grid place-items-center h-full", children: /* @__PURE__ */ e.jsx("span", { className: "text-[16px] font-semibold text-muted-foreground", children: i.isPending ? /* @__PURE__ */ e.jsx(M, {}) : "Send a request first to see the response here" }) }) })
495
- ] }) }) });
496
- };
497
- export {
498
- T as NO_IDENTITY,
499
- Be as Playground,
500
- Be as default
501
- };
502
- //# sourceMappingURL=Playground-Czy7ha9z.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Playground-Czy7ha9z.js","sources":["../src/lib/ui/Card.tsx","../src/lib/plugins/openapi/playground/createUrl.ts","../src/lib/util/createVariantComponent.tsx","../src/lib/plugins/openapi/playground/InlineInput.tsx","../src/lib/plugins/openapi/playground/Headers.tsx","../src/lib/plugins/openapi/playground/PathParams.tsx","../src/lib/plugins/openapi/playground/QueryParams.tsx","../src/lib/plugins/openapi/playground/Playground.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border border-border bg-card text-card-foreground shadow\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\n","import type { PlaygroundForm } from \"./Playground.js\";\n\nexport const createUrl = (host: string, path: string, data: PlaygroundForm) => {\n const url = new URL(\n host +\n path\n .split(\"/\")\n .map((v) =>\n v.startsWith(\"{\") && v.endsWith(\"}\")\n ? data.pathParams.find((part) => part.name === v.slice(1, -1))\n ?.value ?? v\n : v,\n )\n .join(\"/\"),\n );\n\n data.queryParams.forEach((param) => {\n url.searchParams.set(param.name, param.value);\n });\n\n return url;\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport type { ClassValue } from \"clsx\";\nimport * as React from \"react\";\nimport type { JSX } from \"react/jsx-runtime\";\nimport { cn } from \"./cn.js\";\n\nconst createVariantComponent = <\n E extends keyof React.ReactHTML,\n C extends ReturnType<typeof cva>,\n>(\n tag: E,\n cvx: ClassValue | C,\n // variantProps: Array<keyof VariantProps<C>> = [],\n) => {\n const MyVariant = React.forwardRef<\n HTMLElement,\n JSX.IntrinsicElements[E] & { className?: ClassValue; asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const Comp = asChild ? Slot : tag;\n\n return React.createElement(Comp, {\n ...props,\n ref,\n className:\n typeof cvx === \"function\" ? cvx({ className }) : cn(cvx, className),\n });\n });\n\n MyVariant.displayName = `VariantComponent(${tag})`;\n\n return MyVariant;\n};\n\nexport default createVariantComponent;\n","import createVariantComponent from \"../../../util/createVariantComponent.js\";\n\nexport const InlineInput = createVariantComponent(\n \"input\",\n \"px-2 bg-transparent h-6 font-mono text-xs m-2\",\n);\n","import { TriangleAlertIcon, XIcon } from \"lucide-react\";\nimport {\n Control,\n useFieldArray,\n UseFormRegister,\n useWatch,\n} from \"react-hook-form\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport { NO_IDENTITY, type PlaygroundForm } from \"./Playground.js\";\n\nexport const Headers = ({\n control,\n register,\n}: {\n register: UseFormRegister<PlaygroundForm>;\n control: Control<PlaygroundForm>;\n}) => {\n const { fields, append, remove } = useFieldArray<PlaygroundForm>({\n control,\n name: \"headers\",\n });\n const selectedIdentity = useWatch({ name: \"identity\", control });\n const liveHeaders = useWatch({ name: \"headers\", control });\n\n const disableAuth = selectedIdentity !== NO_IDENTITY;\n\n return (\n <div className=\"grid grid-cols-[1fr_1fr_auto]\">\n {fields.map((header, i) => {\n const isDisabledByAuth =\n disableAuth && liveHeaders.at(i)?.name === \"Authorization\";\n\n return (\n <div\n key={header.id}\n className={cn(\n \"grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-muted rounded overflow-hidden group\",\n isDisabledByAuth && \"line-through\",\n )}\n title={\n isDisabledByAuth\n ? \"This header is disabled because authentication was selected\"\n : undefined\n }\n >\n <div className=\"flex gap-2 items-center\">\n <InlineInput\n {...register(`headers.${i}.name`)}\n placeholder=\"Name\"\n className=\"peer\"\n autoComplete=\"off\"\n />\n {isDisabledByAuth && (\n <TriangleAlertIcon size={16} className=\"text-amber-500\" />\n )}\n </div>\n <InlineInput\n placeholder={\"Value\"}\n className=\"peer\"\n {...register(`headers.${i}.value`)}\n autoComplete=\"off\"\n />\n <button\n className=\"hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible\"\n onClick={() => {\n remove(i);\n }}\n type=\"button\"\n >\n <XIcon size={16} />\n </button>\n <div className=\"col-span-full border-b border-border\"></div>\n </div>\n );\n })}\n <Button\n className=\"col-span-full mt-4\"\n onClick={() => append({ name: \"\", value: \"\" })}\n type=\"button\"\n >\n Add header\n </Button>\n </div>\n );\n};\n","import { forwardRef, InputHTMLAttributes } from \"react\";\nimport { Control, useFieldArray, UseFormRegister } from \"react-hook-form\";\nimport { cn } from \"../../../util/cn.js\";\nimport { DATA_ATTR, usePastellizedColor } from \"../ColorizedParam.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\ntype ParameterValueProps = {\n part: string;\n} & InputHTMLAttributes<HTMLInputElement>;\n\nconst ParameterValue = forwardRef<HTMLInputElement, ParameterValueProps>(\n function ParameterValue({ part, className, ...props }, ref) {\n const color = usePastellizedColor(part);\n return (\n <InlineInput\n {...props}\n ref={ref}\n className={cn(className, \"opacity-80 data-[active=true]:opacity-100\")}\n style={{\n // color: `hsl(${color})`,\n outlineColor: `hsl(${color})`,\n }}\n />\n );\n },\n);\n\nexport const PathParams = ({\n control,\n register,\n}: {\n register: UseFormRegister<PlaygroundForm>;\n control: Control<PlaygroundForm>;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"pathParams\",\n });\n\n return fields.map((part, i) => (\n <div\n key={part.id}\n className=\"grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-muted rounded overflow-hidden group\"\n >\n <InlineInput\n {...register(`pathParams.${i}.name`)}\n disabled\n placeholder=\"Name\"\n className=\"peer\"\n />\n <ParameterValue\n {...register(`pathParams.${i}.value`)}\n part={part.name}\n {...{ [DATA_ATTR]: part.name }}\n placeholder=\"Value\"\n className=\"peer\"\n />\n\n <div className=\"col-span-full border-b border-border\"></div>\n </div>\n ));\n};\n","import { XIcon } from \"lucide-react\";\nimport {\n Control,\n Controller,\n useFieldArray,\n useFormContext,\n} from \"react-hook-form\";\nimport { cn } from \"../../../util/cn.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\nexport const QueryParams = ({\n control,\n}: {\n control: Control<PlaygroundForm>;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"queryParams\",\n });\n const form = useFormContext<PlaygroundForm>();\n\n const requiredFields = form\n .getValues(`queryParams`)\n .map((param) => param.isRequired);\n\n return fields.map((field, i) => (\n <div\n key={field.id}\n className=\"px-2 grid-cols-subgrid col-span-full grid items-center gap-x-2 has-[:focus]:bg-muted hover:bg-accent rounded overflow-hidden group\"\n >\n <Controller\n control={control}\n name={`queryParams.${i}.active`}\n render={({ field }) => (\n <input\n type=\"checkbox\"\n id={`queryParams.${i}.active`}\n checked={field.value}\n onChange={field.onChange}\n />\n )}\n />\n\n <Controller\n control={control}\n render={({ field }) => {\n return (\n <InlineInput asChild>\n <label\n className=\"flex items-center\"\n htmlFor={`queryParams.${i}.active`}\n title={requiredFields[i] ? \"Required field\" : undefined}\n >\n {field.value}\n {requiredFields[i] && <sup className=\"text-destructive\">*</sup>}\n </label>\n </InlineInput>\n );\n }}\n name={`queryParams.${i}.name`}\n />\n <Controller\n control={control}\n render={({ field }) => {\n return (\n <InlineInput {...field} placeholder=\"Value\" className=\"peer\" />\n );\n }}\n name={`queryParams.${i}.value`}\n />\n <Controller\n control={control}\n render={({ field }) => {\n return (\n <button\n type=\"button\"\n className={cn(\n \"hover:bg-black/5 p-1 rounded mr-2 text-muted-foreground invisible group-hover:visible peer-focus:visible\",\n field.value.length === 0 && \"opacity-0 pointer-events-none\",\n )}\n onClick={() => field.onChange(\"\")}\n >\n <XIcon size={16} />\n </button>\n );\n }}\n name={`queryParams.${i}.value`}\n />\n\n <div className=\"-mx-2 col-span-full border-b border-border\"></div>\n </div>\n ));\n};\n","import { useMutation } from \"@tanstack/react-query\";\nimport { Fragment } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useQuery } from \"urql\";\nimport { useApiIdentities } from \"../../../components/context/DevPortalProvider.js\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../components/Select.js\";\nimport { Spinner } from \"../../../components/Spinner.js\";\nimport { SyntaxHighlight } from \"../../../components/SyntaxHighlight.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Card } from \"../../../ui/Card.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../../ui/Tabs.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport { useOasConfig } from \"../context.js\";\nimport { graphql } from \"../graphql/index.js\";\nimport { createUrl } from \"./createUrl.js\";\nimport { Headers } from \"./Headers.js\";\nimport { PathParams } from \"./PathParams.js\";\nimport { QueryParams } from \"./QueryParams.js\";\n\nexport const NO_IDENTITY = \"__none\";\n\nconst GetServerQuery = graphql(/* GraphQL */ `\n query getServerQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n }\n }\n`);\n\nfunction mimeTypeToLanguage(mimeType: string) {\n const mimeTypeMapping = {\n \"application/json\": \"json\",\n \"text/json\": \"json\",\n \"text/html\": \"html\",\n \"text/css\": \"css\",\n \"text/javascript\": \"javascript\",\n \"application/xml\": \"xml\",\n \"application/xhtml+xml\": \"xhtml\",\n \"text/plain\": \"plain\",\n } as const;\n\n return Object.entries(mimeTypeMapping).find(([mime]) =>\n mimeType.includes(mime),\n )?.[0][1];\n}\n\nconst statusCodeMap: Record<number, string> = {\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 204: \"No Content\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 500: \"Internal Server Error\",\n};\n\nexport type Header = {\n name: string;\n value: string;\n};\nexport type QueryParam = {\n name: string;\n value: string;\n active: boolean;\n isRequired: boolean;\n};\nexport type PathParam = {\n name: string;\n value: string;\n};\n\nexport type PlaygroundForm = {\n body: string;\n queryParams: QueryParam[];\n pathParams: PathParam[];\n headers: Header[];\n identity?: string;\n};\n\nexport type PlaygroundContentProps = {\n url: string;\n method: string;\n headers?: Header[];\n queryParams?: QueryParam[];\n pathParams?: PathParam[];\n hasParams: boolean;\n};\n\nexport const Playground = ({\n url,\n method,\n headers = [{ name: \"\", value: \"\" }],\n queryParams = [],\n pathParams = [],\n hasParams,\n}: PlaygroundContentProps) => {\n const variables = useOasConfig();\n const [server] = useQuery({ query: GetServerQuery, variables });\n\n const { register, control, handleSubmit, watch, ...form } =\n useForm<PlaygroundForm>({\n defaultValues: {\n body: \"\",\n queryParams,\n headers,\n pathParams,\n identity: NO_IDENTITY,\n },\n });\n const formState = watch();\n const identities = useApiIdentities();\n\n const queryMutation = useMutation({\n mutationFn: async (data: PlaygroundForm) => {\n const requestUrl = createUrl(server.data?.schema.url ?? \"\", url, data);\n const start = performance.now();\n\n const request = new Request(requestUrl, {\n method: method.toUpperCase(),\n headers: Object.fromEntries(\n data.headers\n .filter((h) => h.name)\n .map((header) => [header.name, header.value]),\n ),\n });\n\n if (data.identity !== NO_IDENTITY) {\n identities.data\n ?.find((i) => i.id === data.identity)\n ?.authorizeRequest(request);\n }\n const response = await fetch(request);\n\n const body = await response.text();\n\n return {\n status: response.status,\n headers: response.headers,\n size: body.length,\n body,\n time: performance.now() - start,\n };\n },\n });\n\n const path = url.split(\"/\").map((part, i, arr) => (\n <Fragment key={part}>\n {part.startsWith(\"{\") && part.endsWith(\"}\") ? (\n <ColorizedParam\n name={part}\n backgroundOpacity=\"0\"\n slug={part.slice(1, -1)}\n >\n {\n formState.pathParams.find((p) => p.name === part.slice(1, -1))\n ?.value\n }\n </ColorizedParam>\n ) : (\n part\n )}\n {i < arr.length - 1 && \"/\"}\n <wbr />\n </Fragment>\n ));\n\n const lang = mimeTypeToLanguage(\n queryMutation.data?.headers.get(\"Content-Type\") ?? \"\",\n );\n\n const headerEntries = Array.from(queryMutation.data?.headers.entries() ?? []);\n\n const urlQueryParams = formState.queryParams\n .filter((p) => p.active)\n .map((p) => (\n <Fragment key={p.name}>\n {p.name}={p.value}\n <wbr />\n </Fragment>\n ));\n return (\n <FormProvider {...{ register, control, handleSubmit, watch, ...form }}>\n <form onSubmit={handleSubmit((data) => queryMutation.mutateAsync(data))}>\n <div className=\"grid grid-cols-2 text-sm h-full\">\n <div className=\"flex flex-col gap-4 p-8 bg-muted/50 after:bg-muted-foreground/20 relative after:absolute after:w-px after:inset-0 after:left-auto\">\n <div className=\"flex gap-2 items-stretch\">\n <div className=\"flex flex-1 items-center w-full border rounded-md border-border\">\n <div className=\"border-r border-border p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono\">\n {method.toUpperCase()}\n </div>\n <div className=\"p-2 font-mono text-xs\">\n {path}\n {urlQueryParams.length > 0 ? \"?\" : \"\"}\n {urlQueryParams}\n </div>\n </div>\n <Button type=\"submit\" className=\"h-auto flex gap-1\">\n Send\n </Button>\n </div>\n <Tabs defaultValue={hasParams ? \"parameters\" : \"headers\"}>\n <div className=\"flex justify-between\">\n <TabsList>\n {hasParams && (\n <TabsTrigger value=\"parameters\">Parameters</TabsTrigger>\n )}\n <TabsTrigger value=\"headers\">\n Headers{\" \"}\n {formState.headers.length > 0 &&\n `(${formState.headers.length})`}\n </TabsTrigger>\n <TabsTrigger\n value=\"body\"\n disabled={[\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n )}\n >\n Body\n </TabsTrigger>\n </TabsList>\n <div className=\"flex gap-2 items-center\">\n Auth:\n <Select\n onValueChange={(value) => form.setValue(\"identity\", value)}\n defaultValue={formState.identity}\n >\n <SelectTrigger className=\"w-[180px] flex\">\n {identities.isPending ? <Spinner /> : <SelectValue />}\n </SelectTrigger>\n <SelectContent align=\"center\">\n <SelectItem value={NO_IDENTITY}>None</SelectItem>\n {identities.data?.map((identity) => (\n <SelectItem key={identity.id} value={identity.id}>\n {identity.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <TabsContent value=\"headers\">\n <Headers control={control} register={register} />\n </TabsContent>\n <TabsContent value=\"parameters\">\n <div className=\"grid grid-cols-[min-content_1fr_1fr_auto]\">\n {pathParams.length > 0 && (\n <div className=\"font-semibold my-3 col-span-3\">\n Path Parameters\n </div>\n )}\n <PathParams control={control} register={register} />\n {queryParams.length > 0 && (\n <span className=\"font-semibold my-3 col-span-3\">\n Query Parameters\n </span>\n )}\n <QueryParams control={control} />\n </div>\n </TabsContent>\n <TabsContent value=\"body\">\n <textarea\n {...register(\"body\")}\n className=\"border border-border w-full rounded p-2 bg-muted h-40\"\n />\n </TabsContent>\n </Tabs>\n </div>\n <div className=\"flex flex-col gap-4 p-8 bg-muted/70\">\n {queryMutation.error ? (\n <div>{queryMutation.error.message}</div>\n ) : queryMutation.data ? (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex gap-2\">\n <div className=\"flex text-xs gap-6\">\n <div>\n Status: {queryMutation.data.status}{\" \"}\n {statusCodeMap[queryMutation.data.status] ?? \"\"}\n </div>\n <div>Time: {queryMutation.data.time.toFixed(0)}ms</div>\n <div>Size: {queryMutation.data.size} B</div>\n </div>\n </div>\n {/*<UrlDisplay host={host} path={url} />*/}\n <Tabs defaultValue=\"response\">\n <TabsList>\n <TabsTrigger value=\"response\">Response</TabsTrigger>\n <TabsTrigger value=\"headers\">\n {headerEntries.length\n ? `Headers (${headerEntries.length})`\n : \"No headers\"}\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"response\">\n <Card className=\"shadow-none p-4\">\n <SyntaxHighlight\n language={lang ?? \"json\"}\n noBackground\n className=\"overflow-x-auto \"\n code={queryMutation.data.body ?? JSON.stringify(\"\")}\n />\n </Card>\n </TabsContent>\n <TabsContent value=\"headers\">\n <Card className=\"grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4\">\n <div className=\"font-semibold\">Key</div>\n <div className=\"font-semibold\">Value</div>\n {headerEntries.map(([key, value]) => (\n <Fragment key={key}>\n <div>{key}</div>\n <div>{value}</div>\n </Fragment>\n ))}\n </Card>\n </TabsContent>\n </Tabs>\n </div>\n ) : (\n <div className=\"grid place-items-center h-full\">\n <span className=\"text-[16px] font-semibold text-muted-foreground\">\n {queryMutation.isPending ? (\n <Spinner />\n ) : (\n \"Send a request first to see the response here\"\n )}\n </span>\n </div>\n )}\n </div>\n </div>\n </form>\n </FormProvider>\n );\n};\n\nexport default Playground;\n"],"names":["Card","React","className","props","ref","jsx","cn","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","createUrl","host","path","data","url","v","_a","part","param","createVariantComponent","tag","cvx","MyVariant","asChild","Comp","Slot","InlineInput","Headers","control","register","fields","append","remove","useFieldArray","selectedIdentity","useWatch","liveHeaders","disableAuth","NO_IDENTITY","jsxs","header","i","isDisabledByAuth","TriangleAlertIcon","XIcon","Button","ParameterValue","forwardRef","color","usePastellizedColor","PathParams","DATA_ATTR","QueryParams","requiredFields","useFormContext","field","Controller","GetServerQuery","graphql","mimeTypeToLanguage","mimeType","mime","statusCodeMap","Playground","method","headers","queryParams","pathParams","hasParams","variables","useOasConfig","server","useQuery","handleSubmit","watch","form","useForm","formState","identities","useApiIdentities","queryMutation","useMutation","requestUrl","start","request","h","_c","_b","response","body","arr","Fragment","ColorizedParam","p","lang","headerEntries","urlQueryParams","FormProvider","Tabs","TabsList","TabsTrigger","Select","value","SelectTrigger","Spinner","SelectValue","SelectContent","SelectItem","identity","TabsContent","SyntaxHighlight","key"],"mappings":"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"}