zudoku 0.3.0-dev.98 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/demo.js +5 -9
- package/dist/app/demo.js.map +1 -1
- package/dist/app/main.js +9 -7
- package/dist/app/main.js.map +1 -1
- package/dist/app/standalone.js +12 -8
- package/dist/app/standalone.js.map +1 -1
- package/dist/cli/dev/handler.js +1 -1
- package/dist/config/validators/SidebarSchema.js +9 -4
- package/dist/config/validators/SidebarSchema.js.map +1 -1
- package/dist/lib/components/ClientOnly.d.ts +3 -0
- package/dist/lib/components/ClientOnly.js +7 -0
- package/dist/lib/components/ClientOnly.js.map +1 -0
- package/dist/lib/components/Header.js +3 -2
- package/dist/lib/components/Header.js.map +1 -1
- package/dist/lib/components/Markdown.js +3 -2
- package/dist/lib/components/Markdown.js.map +1 -1
- package/dist/lib/components/Search.js +5 -8
- package/dist/lib/components/Search.js.map +1 -1
- package/dist/lib/components/SlotletProvider.d.ts +2 -2
- package/dist/lib/components/SlotletProvider.js +7 -2
- package/dist/lib/components/SlotletProvider.js.map +1 -1
- package/dist/lib/components/navigation/SidebarCategory.js +6 -2
- package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
- package/dist/lib/components/navigation/SidebarItem.js +3 -2
- package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
- package/dist/lib/components/navigation/SidebarWrapper.js +2 -3
- package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -1
- package/dist/lib/core/plugins.d.ts +1 -1
- package/dist/lib/core/plugins.js +1 -1
- package/dist/lib/core/plugins.js.map +1 -1
- package/dist/lib/oas/graphql/index.js +18 -3
- package/dist/lib/oas/graphql/index.js.map +1 -1
- package/dist/lib/plugins/markdown/MdxPage.js +1 -1
- package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationListItem.js +5 -5
- package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterList.js +3 -1
- package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.d.ts +3 -1
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +5 -9
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.d.ts +3 -1
- package/dist/lib/plugins/openapi/Sidecar.js +11 -5
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/index.js +1 -1
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.js +2 -3
- package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/createUrl.js +5 -1
- package/dist/lib/plugins/openapi/playground/createUrl.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaComponents.d.ts +13 -0
- package/dist/lib/plugins/openapi/schema/SchemaComponents.js +28 -0
- package/dist/lib/plugins/openapi/schema/SchemaComponents.js.map +1 -0
- package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +6 -0
- package/dist/lib/plugins/openapi/schema/SchemaView.js +58 -0
- package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -0
- package/dist/lib/plugins/openapi/schema/utils.d.ts +3 -0
- package/dist/lib/plugins/openapi/schema/utils.js +6 -0
- package/dist/lib/plugins/openapi/schema/utils.js.map +1 -0
- package/dist/lib/plugins/search-inkeep/index.js +5 -8
- package/dist/lib/plugins/search-inkeep/index.js.map +1 -1
- package/dist/lib/plugins/search-inkeep/inkeep.d.ts +19 -2
- package/dist/lib/plugins/search-inkeep/inkeep.js +1 -15
- package/dist/lib/plugins/search-inkeep/inkeep.js.map +1 -1
- package/dist/lib/themeToggle.d.ts +1 -0
- package/dist/lib/themeToggle.js +7 -0
- package/dist/lib/themeToggle.js.map +1 -0
- package/dist/lib/util/MdxComponents.js +4 -4
- package/dist/lib/util/MdxComponents.js.map +1 -1
- package/dist/vite/config.d.ts +4 -5
- package/dist/vite/config.js +7 -4
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/config.test.js +2 -2
- package/dist/vite/config.test.js.map +1 -1
- package/dist/vite/dev-server.d.ts +0 -1
- package/dist/vite/dev-server.js +2 -21
- package/dist/vite/dev-server.js.map +1 -1
- package/dist/vite/html.js +2 -11
- package/dist/vite/html.js.map +1 -1
- package/dist/vite/plugin-api-keys.d.ts +3 -3
- package/dist/vite/plugin-api-keys.js +2 -1
- package/dist/vite/plugin-api-keys.js.map +1 -1
- package/dist/vite/plugin-api.d.ts +3 -3
- package/dist/vite/plugin-api.js +2 -1
- package/dist/vite/plugin-api.js.map +1 -1
- package/dist/vite/plugin-auth.d.ts +3 -3
- package/dist/vite/plugin-auth.js +2 -1
- package/dist/vite/plugin-auth.js.map +1 -1
- package/dist/vite/plugin-component.d.ts +3 -3
- package/dist/vite/plugin-component.js +17 -14
- package/dist/vite/plugin-component.js.map +1 -1
- package/dist/vite/plugin-config-reload.d.ts +4 -0
- package/dist/vite/plugin-config-reload.js +24 -0
- package/dist/vite/plugin-config-reload.js.map +1 -0
- package/dist/vite/plugin-config.d.ts +2 -2
- package/dist/vite/plugin-config.js.map +1 -1
- package/dist/vite/plugin-custom-css.d.ts +3 -3
- package/dist/vite/plugin-custom-css.js +2 -1
- package/dist/vite/plugin-custom-css.js.map +1 -1
- package/dist/vite/plugin-docs.d.ts +3 -3
- package/dist/vite/plugin-docs.js +3 -2
- package/dist/vite/plugin-docs.js.map +1 -1
- package/dist/vite/plugin-html-transform.d.ts +2 -0
- package/dist/vite/plugin-html-transform.js +15 -0
- package/dist/vite/plugin-html-transform.js.map +1 -0
- package/dist/vite/plugin-mdx.d.ts +3 -3
- package/dist/vite/plugin-mdx.js +2 -1
- package/dist/vite/plugin-mdx.js.map +1 -1
- package/dist/vite/plugin-metadata.d.ts +1 -1
- package/dist/vite/plugin-redirect.d.ts +3 -3
- package/dist/vite/plugin-redirect.js +2 -1
- package/dist/vite/plugin-redirect.js.map +1 -1
- package/dist/vite/plugin-sidebar.d.ts +3 -3
- package/dist/vite/plugin-sidebar.js +5 -4
- package/dist/vite/plugin-sidebar.js.map +1 -1
- package/dist/vite/plugin.d.ts +3 -2
- package/dist/vite/plugin.js +16 -11
- package/dist/vite/plugin.js.map +1 -1
- package/lib/{CategoryHeading-BWq12Bfa.js → CategoryHeading-z15xh7Jb.js} +2 -2
- package/lib/{CategoryHeading-BWq12Bfa.js.map → CategoryHeading-z15xh7Jb.js.map} +1 -1
- package/lib/{Combination-D-9IH0zy.js → Combination-DTfV-c98.js} +2 -2
- package/lib/{Combination-D-9IH0zy.js.map → Combination-DTfV-c98.js.map} +1 -1
- package/lib/{Input-HmAaR6kw.js → Input-DB9VROFR.js} +3 -3
- package/lib/{Input-HmAaR6kw.js.map → Input-DB9VROFR.js.map} +1 -1
- package/lib/Markdown-CEccPMI_.js +20508 -0
- package/lib/Markdown-CEccPMI_.js.map +1 -0
- package/lib/{MdxPage-oN3huD58.js → MdxPage-CnqOoqvp.js} +12 -15
- package/lib/MdxPage-CnqOoqvp.js.map +1 -0
- package/lib/OperationList-Cxiw2Z-v.js +457 -0
- package/lib/OperationList-Cxiw2Z-v.js.map +1 -0
- package/lib/{Route-DAF15JAU.js → Route-DfAFiR7v.js} +2 -2
- package/lib/{Route-DAF15JAU.js.map → Route-DfAFiR7v.js.map} +1 -1
- package/lib/SlotletProvider-ByLSCZQa.js +262 -0
- package/lib/SlotletProvider-ByLSCZQa.js.map +1 -0
- package/lib/{Spinner-BCz1kNGw.js → Spinner-BT_AYFrA.js} +3 -3
- package/lib/{Spinner-BCz1kNGw.js.map → Spinner-BT_AYFrA.js.map} +1 -1
- package/lib/assets/{worker-CR7aeKop.js → worker-CzHUifWA.js} +710 -703
- package/lib/assets/{worker-CR7aeKop.js.map → worker-CzHUifWA.js.map} +1 -1
- package/lib/{index-CtKkHGcd.js → index-D-9zqIOh.js} +1159 -1147
- package/lib/index-D-9zqIOh.js.map +1 -0
- package/lib/{index-D-9Z7HSn.js → index-Dz4LyXZI.js} +3 -3
- package/lib/{index-D-9Z7HSn.js.map → index-Dz4LyXZI.js.map} +1 -1
- package/lib/zudoku.components.js +775 -759
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.openapi-worker.js +734 -727
- package/lib/zudoku.openapi-worker.js.map +1 -1
- package/lib/zudoku.plugin-api-keys.js +4 -4
- package/lib/zudoku.plugin-custom-page.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +3 -3
- package/lib/zudoku.plugin-search-inkeep.js +24 -29
- package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
- package/package.json +99 -78
- package/src/app/demo-cdn.html +1 -1
- package/src/app/demo.html +1 -1
- package/src/app/demo.tsx +7 -9
- package/src/app/main.css +22 -0
- package/src/app/main.tsx +11 -8
- package/src/app/standalone.html +1 -1
- package/src/app/standalone.tsx +13 -8
- package/src/lib/components/ClientOnly.tsx +13 -0
- package/src/lib/components/Header.tsx +4 -1
- package/src/lib/components/Markdown.tsx +3 -2
- package/src/lib/components/Search.tsx +7 -7
- package/src/lib/components/SlotletProvider.tsx +10 -5
- package/src/lib/components/navigation/SidebarCategory.tsx +13 -2
- package/src/lib/components/navigation/SidebarItem.tsx +3 -2
- package/src/lib/components/navigation/SidebarWrapper.tsx +20 -18
- package/src/lib/core/plugins.ts +2 -2
- package/src/lib/oas/graphql/index.ts +26 -7
- package/src/lib/plugins/markdown/MdxPage.tsx +0 -1
- package/src/lib/plugins/openapi/OperationListItem.tsx +22 -17
- package/src/lib/plugins/openapi/ParameterList.tsx +10 -8
- package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +51 -39
- package/src/lib/plugins/openapi/Sidecar.tsx +34 -19
- package/src/lib/plugins/openapi/index.tsx +1 -1
- package/src/lib/plugins/openapi/playground/Playground.tsx +3 -6
- package/src/lib/plugins/openapi/playground/createUrl.ts +6 -5
- package/src/lib/plugins/openapi/schema/SchemaComponents.tsx +126 -0
- package/src/lib/plugins/openapi/schema/SchemaView.tsx +172 -0
- package/src/lib/plugins/openapi/schema/utils.ts +10 -0
- package/src/lib/plugins/search-inkeep/index.tsx +16 -8
- package/src/lib/plugins/search-inkeep/inkeep.ts +3 -18
- package/src/lib/themeToggle.ts +7 -0
- package/src/lib/util/MdxComponents.tsx +12 -12
- package/LICENSE.md +0 -21
- package/dist/lib/plugins/openapi/SchemaListView.d.ts +0 -7
- package/dist/lib/plugins/openapi/SchemaListView.js +0 -27
- package/dist/lib/plugins/openapi/SchemaListView.js.map +0 -1
- package/dist/lib/plugins/openapi/SchemaListViewItem.d.ts +0 -8
- package/dist/lib/plugins/openapi/SchemaListViewItem.js +0 -25
- package/dist/lib/plugins/openapi/SchemaListViewItem.js.map +0 -1
- package/dist/lib/plugins/openapi/SchemaListViewItemGroup.d.ts +0 -8
- package/dist/lib/plugins/openapi/SchemaListViewItemGroup.js +0 -17
- package/dist/lib/plugins/openapi/SchemaListViewItemGroup.js.map +0 -1
- package/lib/Markdown-B_Gax7at.js +0 -14108
- package/lib/Markdown-B_Gax7at.js.map +0 -1
- package/lib/MdxPage-oN3huD58.js.map +0 -1
- package/lib/OperationList-Ctj0ihBN.js +0 -448
- package/lib/OperationList-Ctj0ihBN.js.map +0 -1
- package/lib/SlotletProvider-CzMAO73_.js +0 -82
- package/lib/SlotletProvider-CzMAO73_.js.map +0 -1
- package/lib/index-CtKkHGcd.js.map +0 -1
- package/src/lib/plugins/openapi/SchemaListView.tsx +0 -75
- package/src/lib/plugins/openapi/SchemaListViewItem.tsx +0 -125
- package/src/lib/plugins/openapi/SchemaListViewItemGroup.tsx +0 -63
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as Collapsible from "@radix-ui/react-collapsible";
|
|
2
|
+
import { ListPlusIcon } from "lucide-react";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Markdown, ProseClasses } from "../../../components/Markdown.js";
|
|
5
|
+
import type { SchemaObject } from "../../../oas/parser/index.js";
|
|
6
|
+
import { Button } from "../../../ui/Button.js";
|
|
7
|
+
import { cn } from "../../../util/cn.js";
|
|
8
|
+
import { SchemaView } from "./SchemaView.js";
|
|
9
|
+
import { hasLogicalGroupings, isComplexType } from "./utils.js";
|
|
10
|
+
|
|
11
|
+
export const SchemaLogicalGroup = ({
|
|
12
|
+
schema,
|
|
13
|
+
level,
|
|
14
|
+
}: {
|
|
15
|
+
schema: SchemaObject;
|
|
16
|
+
level: number;
|
|
17
|
+
}) => {
|
|
18
|
+
const renderLogicalGroup = (
|
|
19
|
+
group: SchemaObject[],
|
|
20
|
+
groupName: string,
|
|
21
|
+
separator: string,
|
|
22
|
+
) => {
|
|
23
|
+
return group.map((subSchema, index) => (
|
|
24
|
+
<div key={index} className="my-2">
|
|
25
|
+
<strong>{groupName}</strong>
|
|
26
|
+
<div className="mt-2">
|
|
27
|
+
<SchemaView schema={subSchema} level={level + 1} />
|
|
28
|
+
{index < group.length - 1 && (
|
|
29
|
+
<div className="text-center my-2">{separator}</div>
|
|
30
|
+
)}
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
));
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
if (schema.oneOf) return renderLogicalGroup(schema.oneOf, "One of", "OR");
|
|
37
|
+
if (schema.allOf) return renderLogicalGroup(schema.allOf, "All of", "AND");
|
|
38
|
+
if (schema.anyOf) return renderLogicalGroup(schema.anyOf, "Any of", "OR");
|
|
39
|
+
|
|
40
|
+
return null;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export const SchemaPropertyItem = ({
|
|
44
|
+
name,
|
|
45
|
+
value,
|
|
46
|
+
group,
|
|
47
|
+
level,
|
|
48
|
+
defaultOpen = false,
|
|
49
|
+
showCollapseButton = true,
|
|
50
|
+
}: {
|
|
51
|
+
name: string;
|
|
52
|
+
value: SchemaObject;
|
|
53
|
+
group: "required" | "optional" | "deprecated";
|
|
54
|
+
level: number;
|
|
55
|
+
defaultOpen?: boolean;
|
|
56
|
+
showCollapseButton?: boolean;
|
|
57
|
+
}) => {
|
|
58
|
+
const [isOpen, setIsOpen] = useState(defaultOpen);
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<li className="p-4 bg-border/20 hover:bg-border/30">
|
|
62
|
+
<div className="flex flex-col gap-1 justify-between text-sm">
|
|
63
|
+
<div className="flex gap-2 items-center">
|
|
64
|
+
<code>{name}</code>
|
|
65
|
+
<span className="text-muted-foreground">
|
|
66
|
+
{value.type === "array" && value.items?.type ? (
|
|
67
|
+
<span>{value.items.type}[]</span>
|
|
68
|
+
) : Array.isArray(value.type) ? (
|
|
69
|
+
<span>{value.type.join(" | ")}</span>
|
|
70
|
+
) : (
|
|
71
|
+
<span>{value.type}</span>
|
|
72
|
+
)}
|
|
73
|
+
</span>
|
|
74
|
+
{group === "optional" && (
|
|
75
|
+
<span className="py-px px-1.5 font-medium border rounded-lg">
|
|
76
|
+
optional
|
|
77
|
+
</span>
|
|
78
|
+
)}
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
{value.description && (
|
|
82
|
+
<Markdown
|
|
83
|
+
className={cn(ProseClasses, "text-sm leading-normal line-clamp-4")}
|
|
84
|
+
content={value.description}
|
|
85
|
+
/>
|
|
86
|
+
)}
|
|
87
|
+
|
|
88
|
+
{(hasLogicalGroupings(value) || isComplexType(value)) && (
|
|
89
|
+
<Collapsible.Root
|
|
90
|
+
defaultOpen={defaultOpen}
|
|
91
|
+
open={isOpen}
|
|
92
|
+
onOpenChange={() => setIsOpen(!isOpen)}
|
|
93
|
+
>
|
|
94
|
+
{showCollapseButton && (
|
|
95
|
+
<Collapsible.Trigger asChild>
|
|
96
|
+
<Button
|
|
97
|
+
variant="outline"
|
|
98
|
+
size="sm"
|
|
99
|
+
className="mt-2 flex gap-1.5"
|
|
100
|
+
>
|
|
101
|
+
<ListPlusIcon size={18} />
|
|
102
|
+
{!isOpen
|
|
103
|
+
? "Show nested properties"
|
|
104
|
+
: "Hide nested properties"}
|
|
105
|
+
</Button>
|
|
106
|
+
</Collapsible.Trigger>
|
|
107
|
+
)}
|
|
108
|
+
<Collapsible.Content>
|
|
109
|
+
<div className="mt-2">
|
|
110
|
+
{hasLogicalGroupings(value) && (
|
|
111
|
+
<SchemaLogicalGroup schema={value} level={level + 1} />
|
|
112
|
+
)}
|
|
113
|
+
{value.type === "object" && (
|
|
114
|
+
<SchemaView schema={value} level={level + 1} />
|
|
115
|
+
)}
|
|
116
|
+
{value.type === "array" && typeof value.items === "object" && (
|
|
117
|
+
<SchemaView schema={value.items} level={level + 1} />
|
|
118
|
+
)}
|
|
119
|
+
</div>
|
|
120
|
+
</Collapsible.Content>
|
|
121
|
+
</Collapsible.Root>
|
|
122
|
+
)}
|
|
123
|
+
</div>
|
|
124
|
+
</li>
|
|
125
|
+
);
|
|
126
|
+
};
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { Markdown, ProseClasses } from "../../../components/Markdown.js";
|
|
2
|
+
import type { SchemaObject } from "../../../oas/parser/index.js";
|
|
3
|
+
import { Card, CardContent, CardHeader, CardTitle } from "../../../ui/Card.js";
|
|
4
|
+
import { cn } from "../../../util/cn.js";
|
|
5
|
+
import { groupBy } from "../../../util/groupBy.js";
|
|
6
|
+
import { SchemaLogicalGroup, SchemaPropertyItem } from "./SchemaComponents.js";
|
|
7
|
+
import { hasLogicalGroupings } from "./utils.js";
|
|
8
|
+
|
|
9
|
+
export const SchemaView = ({
|
|
10
|
+
schema,
|
|
11
|
+
level = 0,
|
|
12
|
+
defaultOpen = false,
|
|
13
|
+
}: {
|
|
14
|
+
schema?: SchemaObject | null;
|
|
15
|
+
level?: number;
|
|
16
|
+
defaultOpen?: boolean;
|
|
17
|
+
}) => {
|
|
18
|
+
if (!schema || Object.keys(schema).length === 0) {
|
|
19
|
+
return (
|
|
20
|
+
<Card className="p-4">
|
|
21
|
+
<span className="text-sm text-muted-foreground italic">
|
|
22
|
+
No response specified
|
|
23
|
+
</span>
|
|
24
|
+
</Card>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const renderSchema = (schema: SchemaObject, level: number) => {
|
|
29
|
+
if (schema.oneOf || schema.allOf || schema.anyOf) {
|
|
30
|
+
return <SchemaLogicalGroup schema={schema} level={level} />;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Sometimes items is not defined
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
35
|
+
if (schema.type === "array" && schema.items) {
|
|
36
|
+
const itemsSchema = schema.items as SchemaObject;
|
|
37
|
+
|
|
38
|
+
if (
|
|
39
|
+
typeof itemsSchema.type === "string" &&
|
|
40
|
+
["string", "number", "boolean", "integer"].includes(itemsSchema.type)
|
|
41
|
+
) {
|
|
42
|
+
return (
|
|
43
|
+
<Card className="p-4">
|
|
44
|
+
<span className="text-sm text-muted-foreground">
|
|
45
|
+
{itemsSchema.type}[]
|
|
46
|
+
</span>
|
|
47
|
+
{schema.description && (
|
|
48
|
+
<Markdown
|
|
49
|
+
className={cn(
|
|
50
|
+
ProseClasses,
|
|
51
|
+
"text-sm leading-normal line-clamp-4",
|
|
52
|
+
)}
|
|
53
|
+
content={schema.description}
|
|
54
|
+
/>
|
|
55
|
+
)}
|
|
56
|
+
</Card>
|
|
57
|
+
);
|
|
58
|
+
} else if (
|
|
59
|
+
itemsSchema.type === "object" ||
|
|
60
|
+
hasLogicalGroupings(itemsSchema)
|
|
61
|
+
) {
|
|
62
|
+
return (
|
|
63
|
+
<Card className="flex flex-col gap-2 bg-border/30 p-4">
|
|
64
|
+
<span className="text-sm text-muted-foreground">object[]</span>
|
|
65
|
+
{renderSchema(itemsSchema, level + 1)}
|
|
66
|
+
</Card>
|
|
67
|
+
);
|
|
68
|
+
} else {
|
|
69
|
+
return renderSchema(itemsSchema, level + 1);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (schema.type === "object" && !schema.properties) {
|
|
74
|
+
return (
|
|
75
|
+
<Card className="p-4 flex gap-2 items-center">
|
|
76
|
+
{"name" in schema && <>{schema.name}</>}
|
|
77
|
+
<span className="text-sm text-muted-foreground">object</span>
|
|
78
|
+
{schema.description && (
|
|
79
|
+
<Markdown
|
|
80
|
+
className={cn(
|
|
81
|
+
ProseClasses,
|
|
82
|
+
"text-sm leading-normal line-clamp-4",
|
|
83
|
+
)}
|
|
84
|
+
content={schema.description}
|
|
85
|
+
/>
|
|
86
|
+
)}
|
|
87
|
+
</Card>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (schema.properties) {
|
|
92
|
+
const groupedProperties = groupBy(
|
|
93
|
+
Object.entries(schema.properties),
|
|
94
|
+
([propertyName, property]) => {
|
|
95
|
+
return property.deprecated
|
|
96
|
+
? "deprecated"
|
|
97
|
+
: schema.required?.includes(propertyName)
|
|
98
|
+
? "required"
|
|
99
|
+
: "optional";
|
|
100
|
+
},
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
const isTopLevelSingleItem =
|
|
104
|
+
level === 0 && Object.keys(groupedProperties).length === 1;
|
|
105
|
+
|
|
106
|
+
const groupNames = ["required", "optional", "deprecated"] as const;
|
|
107
|
+
|
|
108
|
+
return (
|
|
109
|
+
<Card className="divide-y overflow-hidden">
|
|
110
|
+
{groupNames.map(
|
|
111
|
+
(group) =>
|
|
112
|
+
groupedProperties[group] && (
|
|
113
|
+
<ul key={group} className="divide-y">
|
|
114
|
+
{groupedProperties[group].map(([key, value]) => (
|
|
115
|
+
<SchemaPropertyItem
|
|
116
|
+
key={key}
|
|
117
|
+
name={key}
|
|
118
|
+
value={value}
|
|
119
|
+
group={group}
|
|
120
|
+
level={level}
|
|
121
|
+
defaultOpen={isTopLevelSingleItem || defaultOpen}
|
|
122
|
+
showCollapseButton={!isTopLevelSingleItem}
|
|
123
|
+
/>
|
|
124
|
+
))}
|
|
125
|
+
</ul>
|
|
126
|
+
),
|
|
127
|
+
)}
|
|
128
|
+
</Card>
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (
|
|
133
|
+
typeof schema.type === "string" &&
|
|
134
|
+
["string", "number", "boolean", "integer", "null"].includes(schema.type)
|
|
135
|
+
) {
|
|
136
|
+
return (
|
|
137
|
+
<Card className="p-4">
|
|
138
|
+
<span className="text-sm text-muted-foreground">{schema.type}</span>
|
|
139
|
+
{schema.description && (
|
|
140
|
+
<Markdown
|
|
141
|
+
className={cn(
|
|
142
|
+
ProseClasses,
|
|
143
|
+
"text-sm leading-normal line-clamp-4",
|
|
144
|
+
)}
|
|
145
|
+
content={schema.description}
|
|
146
|
+
/>
|
|
147
|
+
)}
|
|
148
|
+
</Card>
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (schema.additionalProperties) {
|
|
153
|
+
return (
|
|
154
|
+
<Card className="my-2">
|
|
155
|
+
<CardHeader>
|
|
156
|
+
<CardTitle>Additional Properties:</CardTitle>
|
|
157
|
+
</CardHeader>
|
|
158
|
+
<CardContent>
|
|
159
|
+
{renderSchema(
|
|
160
|
+
schema.additionalProperties as SchemaObject,
|
|
161
|
+
level + 1,
|
|
162
|
+
)}
|
|
163
|
+
</CardContent>
|
|
164
|
+
</Card>
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return null;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
return renderSchema(schema, level);
|
|
172
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SchemaObject } from "../../../oas/parser/index.js";
|
|
2
|
+
|
|
3
|
+
export const isComplexType = (value: SchemaObject) =>
|
|
4
|
+
value.type === "object" ||
|
|
5
|
+
(value.type === "array" &&
|
|
6
|
+
typeof value.items === "object" &&
|
|
7
|
+
(!value.items.type || value.items.type === "object"));
|
|
8
|
+
|
|
9
|
+
export const hasLogicalGroupings = (value: SchemaObject) =>
|
|
10
|
+
Boolean(value.oneOf ?? value.allOf ?? value.anyOf);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { InkeepWidgetBaseSettings } from "@inkeep/widgets";
|
|
2
2
|
import { lazy } from "react";
|
|
3
|
+
import { ClientOnly } from "../../components/ClientOnly.js";
|
|
3
4
|
import type { DevPortalPlugin } from "../../core/plugins.js";
|
|
4
5
|
import { aiChatSettings, baseSettings } from "./inkeep.js";
|
|
5
6
|
|
|
@@ -16,21 +17,23 @@ type PluginInkeepBaseSettings = Pick<
|
|
|
16
17
|
>;
|
|
17
18
|
|
|
18
19
|
const Inkeep = lazy(() => import("./InkeepCustomTrigger.js"));
|
|
19
|
-
|
|
20
|
+
|
|
20
21
|
const InkeepSearch = ({
|
|
21
22
|
prefilledQuery,
|
|
22
23
|
isOpen,
|
|
23
24
|
onClose,
|
|
25
|
+
settings,
|
|
24
26
|
}: {
|
|
25
27
|
isOpen: boolean;
|
|
26
28
|
onClose: () => void;
|
|
27
29
|
prefilledQuery?: string | null;
|
|
28
|
-
|
|
30
|
+
settings: PluginInkeepBaseSettings;
|
|
31
|
+
}) => {
|
|
29
32
|
return (
|
|
30
33
|
<Inkeep
|
|
31
34
|
isOpen={isOpen}
|
|
32
35
|
onClose={onClose}
|
|
33
|
-
baseSettings={baseSettings}
|
|
36
|
+
baseSettings={{ ...baseSettings, ...settings }}
|
|
34
37
|
aiChatSettings={aiChatSettings}
|
|
35
38
|
searchSettings={{
|
|
36
39
|
prefilledQuery: prefilledQuery || undefined,
|
|
@@ -43,12 +46,17 @@ export const inkeepSearchPlugin = (
|
|
|
43
46
|
settings: PluginInkeepBaseSettings,
|
|
44
47
|
): DevPortalPlugin => {
|
|
45
48
|
return {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
renderSearch: ({
|
|
50
|
+
isOpen,
|
|
51
|
+
onClose,
|
|
52
|
+
}: {
|
|
53
|
+
isOpen: boolean;
|
|
54
|
+
onClose: () => void;
|
|
55
|
+
}) => {
|
|
50
56
|
return (
|
|
51
|
-
<
|
|
57
|
+
<ClientOnly>
|
|
58
|
+
<InkeepSearch isOpen={isOpen} onClose={onClose} settings={settings} />
|
|
59
|
+
</ClientOnly>
|
|
52
60
|
);
|
|
53
61
|
},
|
|
54
62
|
};
|
|
@@ -2,15 +2,9 @@ import {
|
|
|
2
2
|
InkeepAIChatSettings,
|
|
3
3
|
InkeepModalSettings,
|
|
4
4
|
InkeepSearchSettings,
|
|
5
|
-
InkeepWidgetBaseSettings,
|
|
6
5
|
} from "@inkeep/widgets";
|
|
7
6
|
|
|
8
|
-
const baseSettings
|
|
9
|
-
apiKey: "499c156cf7a9798343949c8bb5665ac95e48132c6d68c42e",
|
|
10
|
-
integrationId: "clot3asdz0000s601nc8jwnzx",
|
|
11
|
-
organizationId: "org_dDOlt2uJlMWM8oIS",
|
|
12
|
-
primaryBrandColor: "#ff00bd",
|
|
13
|
-
organizationDisplayName: "Zuplo",
|
|
7
|
+
const baseSettings = {
|
|
14
8
|
theme: {
|
|
15
9
|
components: {
|
|
16
10
|
AIChatPageWrapper: {
|
|
@@ -27,21 +21,12 @@ const baseSettings: InkeepWidgetBaseSettings = {
|
|
|
27
21
|
},
|
|
28
22
|
},
|
|
29
23
|
},
|
|
30
|
-
};
|
|
24
|
+
} as const;
|
|
31
25
|
|
|
32
26
|
const modalSettings: InkeepModalSettings = {};
|
|
33
27
|
|
|
34
28
|
const searchSettings: InkeepSearchSettings = {};
|
|
35
29
|
|
|
36
|
-
const aiChatSettings: InkeepAIChatSettings = {
|
|
37
|
-
shareChatUrlBasePath: `${process.env.NODE_ENV === "development" ? "http://localhost:3000" : "https://zuplo.com"}/docs/ask`,
|
|
38
|
-
isChatSharingEnabled: true,
|
|
39
|
-
quickQuestions: [
|
|
40
|
-
"How do I create a custom policy?",
|
|
41
|
-
"What is the difference between production and preview environments?",
|
|
42
|
-
"How do I set a custom domain?",
|
|
43
|
-
"How do I use environment variables?",
|
|
44
|
-
],
|
|
45
|
-
};
|
|
30
|
+
const aiChatSettings: InkeepAIChatSettings = {};
|
|
46
31
|
|
|
47
32
|
export { aiChatSettings, baseSettings, modalSettings, searchSettings };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const themeToggle = () => {
|
|
2
|
+
const isDarkMode =
|
|
3
|
+
localStorage.getItem("theme") === "dark" ||
|
|
4
|
+
(!localStorage.getItem("theme") &&
|
|
5
|
+
window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
6
|
+
document.documentElement.classList.toggle("dark", isDarkMode);
|
|
7
|
+
};
|
|
@@ -69,19 +69,19 @@ export const MdxComponents = {
|
|
|
69
69
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
70
|
const inline = (props as any).inline;
|
|
71
71
|
|
|
72
|
-
if (
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return (
|
|
76
|
-
<SyntaxHighlight
|
|
77
|
-
language={match?.[1] ?? "markup"}
|
|
78
|
-
className="rounded-xl overflow-x-auto p-4 border dark:!bg-foreground/10 dark:border-transparent"
|
|
79
|
-
showLanguageIndicator
|
|
80
|
-
code={String(children).trim()}
|
|
81
|
-
/>
|
|
82
|
-
);
|
|
72
|
+
if (inline === true || inline === "true") {
|
|
73
|
+
return <InlineCode className={className}>{children}</InlineCode>;
|
|
83
74
|
}
|
|
84
75
|
|
|
85
|
-
|
|
76
|
+
const match = className?.match(/language?-(\w+)/);
|
|
77
|
+
|
|
78
|
+
return (
|
|
79
|
+
<SyntaxHighlight
|
|
80
|
+
language={match?.[1] ?? "markup"}
|
|
81
|
+
className="rounded-xl overflow-x-auto p-4 border dark:!bg-foreground/10 dark:border-transparent"
|
|
82
|
+
showLanguageIndicator
|
|
83
|
+
code={String(children).trim()}
|
|
84
|
+
/>
|
|
85
|
+
);
|
|
86
86
|
},
|
|
87
87
|
} satisfies MdxComponentsType;
|
package/LICENSE.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2024 Zuplo, Inc.
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { SchemaObject } from "../../oas/parser/index.js";
|
|
2
|
-
export declare const SchemaListView: ({ name, schema, level, defaultOpen, }: {
|
|
3
|
-
level?: number;
|
|
4
|
-
defaultOpen?: boolean;
|
|
5
|
-
name?: string;
|
|
6
|
-
schema: SchemaObject;
|
|
7
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Markdown } from "../../components/Markdown.js";
|
|
3
|
-
import { Card } from "../../ui/Card.js";
|
|
4
|
-
import { groupBy } from "../../util/groupBy.js";
|
|
5
|
-
import { objectEntries } from "../../util/objectEntries.js";
|
|
6
|
-
import { SchemaListViewItem } from "./SchemaListViewItem.js";
|
|
7
|
-
import { SchemaListViewItemGroup } from "./SchemaListViewItemGroup.js";
|
|
8
|
-
import { SchemaProseClasses } from "./util/prose.js";
|
|
9
|
-
export const SchemaListView = ({ name, schema, level = 0, defaultOpen = false, }) => {
|
|
10
|
-
const properties = Object.entries(schema.properties ?? {});
|
|
11
|
-
const additionalProperties = typeof schema.additionalProperties === "object"
|
|
12
|
-
? Object.entries(schema.additionalProperties)
|
|
13
|
-
: [];
|
|
14
|
-
const combinedProperties = properties.concat(Array.isArray(additionalProperties) ? additionalProperties : []);
|
|
15
|
-
const groups = groupBy(combinedProperties, ([propertyName, property]) => {
|
|
16
|
-
return property.deprecated
|
|
17
|
-
? "deprecated"
|
|
18
|
-
: schema.required?.includes(propertyName)
|
|
19
|
-
? "required"
|
|
20
|
-
: "optional";
|
|
21
|
-
});
|
|
22
|
-
if (schema.type === "array") {
|
|
23
|
-
return (_jsx(Card, { className: "overflow-hidden", children: _jsx(SchemaListViewItem, { propertyName: schema.title ?? name, isRequired: true, property: schema, defaultOpen: level === 0, nestingLevel: level }) }));
|
|
24
|
-
}
|
|
25
|
-
return (_jsxs("div", { className: "flex flex-col gap-2.5", children: [(schema.title ?? name) && (_jsx("div", { className: "ml-2 my-1 font-bold", children: schema.title ?? name })), level === 0 && schema.description && (_jsx(Markdown, { className: SchemaProseClasses, content: schema.description })), _jsx(Card, { className: "overflow-hidden", children: objectEntries(groups).map(([group, properties]) => (_jsx(SchemaListViewItemGroup, { defaultOpen: defaultOpen, group: group, nestingLevel: level, properties: properties ?? [], required: schema.required ?? [] }, group))) })] }));
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=SchemaListView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaListView.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/SchemaListView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,IAAI,EACJ,MAAM,EACN,KAAK,GAAG,CAAC,EACT,WAAW,GAAG,KAAK,GAMpB,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,oBAAoB,GACxB,OAAO,MAAM,CAAC,oBAAoB,KAAK,QAAQ;QAC7C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAC1C,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAChE,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE;QACtE,OAAO,QAAQ,CAAC,UAAU;YACxB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC;gBACvC,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,UAAU,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB,YAC/B,KAAC,kBAAkB,IACjB,YAAY,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAClC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,KAAK,KAAK,CAAC,EACxB,YAAY,EAAE,KAAK,GACnB,GACG,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,aACnC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CACzB,cAAK,SAAS,EAAC,qBAAqB,YAAE,MAAM,CAAC,KAAK,IAAI,IAAI,GAAO,CAClE,EACA,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CACpC,KAAC,QAAQ,IAAC,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,GAAI,CACzE,EACD,KAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB,YAC9B,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAClD,KAAC,uBAAuB,IAEtB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,KAAK,EACnB,UAAU,EAAE,UAAU,IAAI,EAAE,EAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,IAL1B,KAAK,CAMV,CACH,CAAC,GACG,IACH,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { SchemaObject } from "../../oas/parser/index.js";
|
|
2
|
-
export declare const SchemaListViewItem: ({ propertyName, property, nestingLevel, isRequired, defaultOpen, }: {
|
|
3
|
-
propertyName?: string;
|
|
4
|
-
isRequired: boolean;
|
|
5
|
-
property: SchemaObject;
|
|
6
|
-
nestingLevel: number;
|
|
7
|
-
defaultOpen?: boolean;
|
|
8
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import * as Collapsible from "@radix-ui/react-collapsible";
|
|
3
|
-
import { ListPlusIcon } from "lucide-react";
|
|
4
|
-
import { Markdown } from "../../components/Markdown.js";
|
|
5
|
-
import { Button } from "../../ui/Button.js";
|
|
6
|
-
import { cn } from "../../util/cn.js";
|
|
7
|
-
import { SchemaListView } from "./SchemaListView.js";
|
|
8
|
-
export const SchemaListViewItem = ({ propertyName, property, nestingLevel, isRequired, defaultOpen = false, }) => {
|
|
9
|
-
if (!property) {
|
|
10
|
-
return _jsx("div", { children: "no property" });
|
|
11
|
-
}
|
|
12
|
-
const title = propertyName || property.title
|
|
13
|
-
? [propertyName, property.title].filter(Boolean).join(" ")
|
|
14
|
-
: null;
|
|
15
|
-
return (_jsxs("div", { className: cn("p-4 bg-border/20 hover:bg-border/30 flex gap-1 flex-col text-sm", property.deprecated && "opacity-50"), children: [_jsxs("div", { className: "flex items-center gap-2 relative", children: [title && _jsx("code", { children: title }), property.type && (_jsx("span", { className: "text-muted-foreground", children: property.type })), property.deprecated && (_jsx("span", { className: "text-muted-foreground", children: "Deprecated" })), !isRequired && (_jsxs("span", { className: "py-px px-1.5 font-medium border rounded-lg", children: ["optional ", property.required] }))] }), property.description && (_jsx(Markdown, { content: property.description, className: "text-sm leading-normal line-clamp-4 " })), property.enum && (_jsxs("span", { className: "text-sm text-muted-foreground flex gap-1 flex-wrap items-center", children: [_jsx("span", { children: "Possible values" }), [...new Set(property.enum.filter((value) => value))]
|
|
16
|
-
.map((value) => (_jsx("span", { className: "font-mono text-xs border bg-muted rounded px-1", children: value }, value)))
|
|
17
|
-
.slice(0, 4), property.enum.length > 4 && (_jsx("span", { className: "font-mono text-xs border bg-muted rounded px-1", children: "..." }))] })), (property.type === "object" &&
|
|
18
|
-
(property.properties?.length ??
|
|
19
|
-
Object.entries(property.additionalProperties ?? {}).length > 0)) ||
|
|
20
|
-
(property.type === "array" &&
|
|
21
|
-
// this check is needed because the `items` can be undefined despite the type being defined
|
|
22
|
-
typeof property.items !== "undefined" &&
|
|
23
|
-
property.items.type === "object") ? (_jsxs(Collapsible.Root, { className: "CollapsibleRoot", defaultOpen: defaultOpen, children: [_jsx(Collapsible.Trigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "sm", className: cn(defaultOpen && "hidden"), children: ["Show nested fields", _jsx(ListPlusIcon, { size: 18, className: "ml-1.5" })] }) }), _jsxs(Collapsible.Content, { children: [property.type === "object" && (_jsx("div", { className: "mt-2.5", children: _jsx(SchemaListView, { schema: property, level: nestingLevel + 1, defaultOpen: true }) })), property.type === "array" && property.items.type === "object" && (_jsx("div", { className: "mt-2.5", children: _jsx(SchemaListView, { schema: property.items, defaultOpen: true, level: nestingLevel + 1 }) }))] })] })) : null] }));
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=SchemaListViewItem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaListViewItem.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/SchemaListViewItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { SchemaObject } from "../../oas/parser/index.js";
|
|
2
|
-
export declare const SchemaListViewItemGroup: ({ group, properties, nestingLevel, required, defaultOpen, }: {
|
|
3
|
-
group: "optional" | "required" | "deprecated";
|
|
4
|
-
defaultOpen?: boolean;
|
|
5
|
-
properties: [string, SchemaObject][];
|
|
6
|
-
nestingLevel: number;
|
|
7
|
-
required: string[];
|
|
8
|
-
}) => import("react/jsx-runtime").JSX.Element | undefined;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import * as Collapsible from "@radix-ui/react-collapsible";
|
|
3
|
-
import { useState } from "react";
|
|
4
|
-
import { cn } from "../../util/cn.js";
|
|
5
|
-
import { SchemaListViewItem } from "./SchemaListViewItem.js";
|
|
6
|
-
export const SchemaListViewItemGroup = ({ group, properties, nestingLevel, required, defaultOpen = false, }) => {
|
|
7
|
-
const notCollapsible = defaultOpen ||
|
|
8
|
-
group === "required" ||
|
|
9
|
-
properties.length === 1 ||
|
|
10
|
-
nestingLevel === 0;
|
|
11
|
-
const [open, setOpen] = useState(notCollapsible);
|
|
12
|
-
if (properties.length === 0) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
return (_jsxs(Collapsible.Root, { className: "CollapsibleRoot", open: open, onOpenChange: setOpen, children: [!open && (_jsxs(Collapsible.Trigger, { className: cn("py-2 hover:bg-muted w-full", group === "optional" && "font-semibold", group === "deprecated" && "text-muted-foreground"), children: [properties.length, " ", group, " fields"] })), _jsx(Collapsible.Content, { className: "divide-y divide-border", children: properties.map(([propertyName, property]) => (_jsx(SchemaListViewItem, { property: property, propertyName: propertyName, nestingLevel: nestingLevel, isRequired: required.includes(propertyName) }, propertyName))) })] }));
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=SchemaListViewItemGroup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaListViewItemGroup.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/SchemaListViewItemGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,KAAK,EACL,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,GAAG,KAAK,GAOpB,EAAE,EAAE;IACH,MAAM,cAAc,GAClB,WAAW;QACX,KAAK,KAAK,UAAU;QACpB,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,YAAY,KAAK,CAAC,CAAC;IAErB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,OAAO,CACL,MAAC,WAAW,CAAC,IAAI,IACf,SAAS,EAAC,iBAAiB,EAC3B,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,OAAO,aAEpB,CAAC,IAAI,IAAI,CACR,MAAC,WAAW,CAAC,OAAO,IAClB,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B,KAAK,KAAK,UAAU,IAAI,eAAe,EACvC,KAAK,KAAK,YAAY,IAAI,uBAAuB,CAClD,aAEA,UAAU,CAAC,MAAM,OAAG,KAAK,eACN,CACvB,EAED,KAAC,WAAW,CAAC,OAAO,IAAC,SAAS,EAAC,wBAAwB,YACpD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAC5C,KAAC,kBAAkB,IAEjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAJtC,YAAY,CAKjB,CACH,CAAC,GACkB,IACL,CACpB,CAAC;AACJ,CAAC,CAAC"}
|