fumadocs-openapi 10.2.2 → 10.2.4
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/generate-file.d.ts +53 -49
- package/dist/generate-file.d.ts.map +1 -1
- package/dist/generate-file.js +88 -102
- package/dist/generate-file.js.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +3 -1
- package/dist/playground/client.d.ts +88 -72
- package/dist/playground/client.d.ts.map +1 -1
- package/dist/playground/client.js +446 -296
- package/dist/playground/client.js.map +1 -0
- package/dist/playground/components/inputs.js +395 -172
- package/dist/playground/components/inputs.js.map +1 -0
- package/dist/playground/components/oauth-dialog.js +270 -174
- package/dist/playground/components/oauth-dialog.js.map +1 -0
- package/dist/playground/components/server-select.js +115 -55
- package/dist/playground/components/server-select.js.map +1 -0
- package/dist/playground/fetcher.d.ts +10 -18
- package/dist/playground/fetcher.d.ts.map +1 -1
- package/dist/playground/fetcher.js +67 -75
- package/dist/playground/fetcher.js.map +1 -0
- package/dist/playground/get-default-values.js +23 -26
- package/dist/playground/get-default-values.js.map +1 -0
- package/dist/playground/index.d.ts +23 -13
- package/dist/playground/index.d.ts.map +1 -1
- package/dist/playground/index.js +87 -91
- package/dist/playground/index.js.map +1 -0
- package/dist/playground/lazy.js +9 -2
- package/dist/playground/lazy.js.map +1 -0
- package/dist/playground/schema.d.ts +18 -55
- package/dist/playground/schema.d.ts.map +1 -1
- package/dist/playground/schema.js +117 -106
- package/dist/playground/schema.js.map +1 -0
- package/dist/playground/status-info.js +49 -37
- package/dist/playground/status-info.js.map +1 -0
- package/dist/requests/generators/csharp.js +40 -50
- package/dist/requests/generators/csharp.js.map +1 -0
- package/dist/requests/generators/curl.js +28 -27
- package/dist/requests/generators/curl.js.map +1 -0
- package/dist/requests/generators/go.js +39 -35
- package/dist/requests/generators/go.js.map +1 -0
- package/dist/requests/generators/index.js +49 -43
- package/dist/requests/generators/index.js.map +1 -0
- package/dist/requests/generators/java.js +56 -67
- package/dist/requests/generators/java.js.map +1 -0
- package/dist/requests/generators/javascript.js +38 -45
- package/dist/requests/generators/javascript.js.map +1 -0
- package/dist/requests/generators/python.js +33 -37
- package/dist/requests/generators/python.js.map +1 -0
- package/dist/requests/media/adapter.d.ts +38 -84
- package/dist/requests/media/adapter.d.ts.map +1 -1
- package/dist/requests/media/adapter.js +122 -169
- package/dist/requests/media/adapter.js.map +1 -0
- package/dist/requests/media/encode.d.ts +12 -7
- package/dist/requests/media/encode.d.ts.map +1 -1
- package/dist/requests/media/encode.js +131 -109
- package/dist/requests/media/encode.js.map +1 -0
- package/dist/requests/media/resolve-adapter.js +28 -28
- package/dist/requests/media/resolve-adapter.js.map +1 -0
- package/dist/requests/string-utils.js +28 -35
- package/dist/requests/string-utils.js.map +1 -0
- package/dist/requests/to-python-object.js +16 -28
- package/dist/requests/to-python-object.js.map +1 -0
- package/dist/requests/types.d.ts +25 -21
- package/dist/requests/types.d.ts.map +1 -1
- package/dist/scalar/client.js +57 -20
- package/dist/scalar/client.js.map +1 -0
- package/dist/scalar/index.d.ts +8 -2
- package/dist/scalar/index.d.ts.map +1 -1
- package/dist/scalar/index.js +29 -19
- package/dist/scalar/index.js.map +1 -0
- package/dist/server/create.d.ts +29 -25
- package/dist/server/create.d.ts.map +1 -1
- package/dist/server/create.js +42 -39
- package/dist/server/create.js.map +1 -0
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +4 -2
- package/dist/server/proxy.d.ts +28 -28
- package/dist/server/proxy.d.ts.map +1 -1
- package/dist/server/proxy.js +58 -75
- package/dist/server/proxy.js.map +1 -0
- package/dist/server/source-api.d.ts +32 -29
- package/dist/server/source-api.d.ts.map +1 -1
- package/dist/server/source-api.js +82 -75
- package/dist/server/source-api.js.map +1 -0
- package/dist/types.d.ts +41 -36
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/api-page.d.ts +140 -136
- package/dist/ui/api-page.d.ts.map +1 -1
- package/dist/ui/api-page.js +134 -118
- package/dist/ui/api-page.js.map +1 -0
- package/dist/ui/client/index.d.ts +30 -26
- package/dist/ui/client/index.d.ts.map +1 -1
- package/dist/ui/client/index.js +8 -2
- package/dist/ui/client/index.js.map +1 -0
- package/dist/ui/client/storage-key.js +16 -10
- package/dist/ui/client/storage-key.js.map +1 -0
- package/dist/ui/components/accordion.js +40 -14
- package/dist/ui/components/accordion.js.map +1 -0
- package/dist/ui/components/dialog.js +51 -15
- package/dist/ui/components/dialog.js.map +1 -0
- package/dist/ui/components/input.js +18 -8
- package/dist/ui/components/input.js.map +1 -0
- package/dist/ui/components/method-label.js +38 -33
- package/dist/ui/components/method-label.js.map +1 -0
- package/dist/ui/components/select.js +66 -15
- package/dist/ui/components/select.js.map +1 -0
- package/dist/ui/contexts/api.js +96 -85
- package/dist/ui/contexts/api.js.map +1 -0
- package/dist/ui/contexts/api.lazy.js +9 -2
- package/dist/ui/contexts/api.lazy.js.map +1 -0
- package/dist/ui/index.d.ts +2 -2
- package/dist/ui/index.js +3 -1
- package/dist/ui/operation/client.js +65 -27
- package/dist/ui/operation/client.js.map +1 -0
- package/dist/ui/operation/index.js +403 -186
- package/dist/ui/operation/index.js.map +1 -0
- package/dist/ui/operation/request-tabs.d.ts +15 -16
- package/dist/ui/operation/request-tabs.d.ts.map +1 -1
- package/dist/ui/operation/request-tabs.js +151 -131
- package/dist/ui/operation/request-tabs.js.map +1 -0
- package/dist/ui/operation/response-tabs.d.ts +27 -28
- package/dist/ui/operation/response-tabs.d.ts.map +1 -1
- package/dist/ui/operation/response-tabs.js +73 -56
- package/dist/ui/operation/response-tabs.js.map +1 -0
- package/dist/ui/operation/usage-tabs/client.js +117 -88
- package/dist/ui/operation/usage-tabs/client.js.map +1 -0
- package/dist/ui/operation/usage-tabs/index.d.ts +22 -21
- package/dist/ui/operation/usage-tabs/index.d.ts.map +1 -1
- package/dist/ui/operation/usage-tabs/index.js +63 -48
- package/dist/ui/operation/usage-tabs/index.js.map +1 -0
- package/dist/ui/operation/usage-tabs/lazy.js +11 -4
- package/dist/ui/operation/usage-tabs/lazy.js.map +1 -0
- package/dist/ui/schema/client.d.ts +11 -7
- package/dist/ui/schema/client.d.ts.map +1 -1
- package/dist/ui/schema/client.js +213 -127
- package/dist/ui/schema/client.js.map +1 -0
- package/dist/ui/schema/index.d.ts +51 -50
- package/dist/ui/schema/index.d.ts.map +1 -1
- package/dist/ui/schema/index.js +225 -248
- package/dist/ui/schema/index.js.map +1 -0
- package/dist/ui/schema/lazy.js +9 -2
- package/dist/ui/schema/lazy.js.map +1 -0
- package/dist/utils/cn.js +3 -1
- package/dist/utils/deep-equal.js +18 -26
- package/dist/utils/deep-equal.js.map +1 -0
- package/dist/utils/get-typescript-schema.js +21 -19
- package/dist/utils/get-typescript-schema.js.map +1 -0
- package/dist/utils/id-to-title.js +13 -16
- package/dist/utils/id-to-title.js.map +1 -0
- package/dist/utils/lazy.js +13 -11
- package/dist/utils/lazy.js.map +1 -0
- package/dist/utils/merge-schema.js +130 -174
- package/dist/utils/merge-schema.js.map +1 -0
- package/dist/utils/pages/builder.d.ts +80 -76
- package/dist/utils/pages/builder.d.ts.map +1 -1
- package/dist/utils/pages/builder.js +101 -118
- package/dist/utils/pages/builder.js.map +1 -0
- package/dist/utils/pages/preset-auto.d.ts +58 -55
- package/dist/utils/pages/preset-auto.d.ts.map +1 -1
- package/dist/utils/pages/preset-auto.js +124 -137
- package/dist/utils/pages/preset-auto.js.map +1 -0
- package/dist/utils/pages/to-body.js +21 -18
- package/dist/utils/pages/to-body.js.map +1 -0
- package/dist/utils/pages/to-static-data.js +48 -40
- package/dist/utils/pages/to-static-data.js.map +1 -0
- package/dist/utils/pages/to-text.d.ts +43 -41
- package/dist/utils/pages/to-text.d.ts.map +1 -1
- package/dist/utils/pages/to-text.js +93 -126
- package/dist/utils/pages/to-text.js.map +1 -0
- package/dist/utils/process-document.d.ts +18 -19
- package/dist/utils/process-document.d.ts.map +1 -1
- package/dist/utils/process-document.js +43 -54
- package/dist/utils/process-document.js.map +1 -0
- package/dist/utils/remove-undefined.js +18 -18
- package/dist/utils/remove-undefined.js.map +1 -0
- package/dist/utils/schema-to-string.js +46 -64
- package/dist/utils/schema-to-string.js.map +1 -0
- package/dist/utils/schema.d.ts +11 -27
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +43 -44
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/url.js +35 -56
- package/dist/utils/url.js.map +1 -0
- package/dist/utils/use-query.js +39 -33
- package/dist/utils/use-query.js.map +1 -0
- package/package.json +34 -33
- package/dist/index.d.ts.map +0 -1
- package/dist/playground/components/inputs.d.ts +0 -25
- package/dist/playground/components/inputs.d.ts.map +0 -1
- package/dist/playground/components/oauth-dialog.d.ts +0 -13
- package/dist/playground/components/oauth-dialog.d.ts.map +0 -1
- package/dist/playground/components/server-select.d.ts +0 -3
- package/dist/playground/components/server-select.d.ts.map +0 -1
- package/dist/playground/get-default-values.d.ts +0 -3
- package/dist/playground/get-default-values.d.ts.map +0 -1
- package/dist/playground/lazy.d.ts +0 -2
- package/dist/playground/lazy.d.ts.map +0 -1
- package/dist/playground/status-info.d.ts +0 -8
- package/dist/playground/status-info.d.ts.map +0 -1
- package/dist/requests/generators/csharp.d.ts +0 -3
- package/dist/requests/generators/csharp.d.ts.map +0 -1
- package/dist/requests/generators/curl.d.ts +0 -3
- package/dist/requests/generators/curl.d.ts.map +0 -1
- package/dist/requests/generators/go.d.ts +0 -3
- package/dist/requests/generators/go.d.ts.map +0 -1
- package/dist/requests/generators/index.d.ts +0 -3
- package/dist/requests/generators/index.d.ts.map +0 -1
- package/dist/requests/generators/java.d.ts +0 -3
- package/dist/requests/generators/java.d.ts.map +0 -1
- package/dist/requests/generators/javascript.d.ts +0 -3
- package/dist/requests/generators/javascript.d.ts.map +0 -1
- package/dist/requests/generators/python.d.ts +0 -3
- package/dist/requests/generators/python.d.ts.map +0 -1
- package/dist/requests/media/resolve-adapter.d.ts +0 -19
- package/dist/requests/media/resolve-adapter.d.ts.map +0 -1
- package/dist/requests/string-utils.d.ts +0 -7
- package/dist/requests/string-utils.d.ts.map +0 -1
- package/dist/requests/to-python-object.d.ts +0 -2
- package/dist/requests/to-python-object.d.ts.map +0 -1
- package/dist/requests/types.js +0 -1
- package/dist/scalar/client.d.ts +0 -7
- package/dist/scalar/client.d.ts.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/types.js +0 -1
- package/dist/ui/client/storage-key.d.ts +0 -9
- package/dist/ui/client/storage-key.d.ts.map +0 -1
- package/dist/ui/components/accordion.d.ts +0 -8
- package/dist/ui/components/accordion.d.ts.map +0 -1
- package/dist/ui/components/dialog.d.ts +0 -20
- package/dist/ui/components/dialog.d.ts.map +0 -1
- package/dist/ui/components/input.d.ts +0 -6
- package/dist/ui/components/input.d.ts.map +0 -1
- package/dist/ui/components/method-label.d.ts +0 -10
- package/dist/ui/components/method-label.d.ts.map +0 -1
- package/dist/ui/components/select.d.ts +0 -14
- package/dist/ui/components/select.d.ts.map +0 -1
- package/dist/ui/contexts/api.d.ts +0 -33
- package/dist/ui/contexts/api.d.ts.map +0 -1
- package/dist/ui/contexts/api.lazy.d.ts +0 -2
- package/dist/ui/contexts/api.lazy.d.ts.map +0 -1
- package/dist/ui/icons.d.ts +0 -49
- package/dist/ui/icons.d.ts.map +0 -1
- package/dist/ui/icons.js +0 -281
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/operation/client.d.ts +0 -19
- package/dist/ui/operation/client.d.ts.map +0 -1
- package/dist/ui/operation/index.d.ts +0 -12
- package/dist/ui/operation/index.d.ts.map +0 -1
- package/dist/ui/operation/usage-tabs/client.d.ts +0 -23
- package/dist/ui/operation/usage-tabs/client.d.ts.map +0 -1
- package/dist/ui/operation/usage-tabs/lazy.d.ts +0 -4
- package/dist/ui/operation/usage-tabs/lazy.d.ts.map +0 -1
- package/dist/ui/schema/lazy.d.ts +0 -2
- package/dist/ui/schema/lazy.d.ts.map +0 -1
- package/dist/utils/cn.d.ts +0 -2
- package/dist/utils/cn.d.ts.map +0 -1
- package/dist/utils/deep-equal.d.ts +0 -2
- package/dist/utils/deep-equal.d.ts.map +0 -1
- package/dist/utils/get-typescript-schema.d.ts +0 -4
- package/dist/utils/get-typescript-schema.d.ts.map +0 -1
- package/dist/utils/id-to-title.d.ts +0 -2
- package/dist/utils/id-to-title.d.ts.map +0 -1
- package/dist/utils/lazy.d.ts +0 -5
- package/dist/utils/lazy.d.ts.map +0 -1
- package/dist/utils/merge-schema.d.ts +0 -7
- package/dist/utils/merge-schema.d.ts.map +0 -1
- package/dist/utils/pages/to-body.d.ts +0 -4
- package/dist/utils/pages/to-body.d.ts.map +0 -1
- package/dist/utils/pages/to-static-data.d.ts +0 -10
- package/dist/utils/pages/to-static-data.d.ts.map +0 -1
- package/dist/utils/remove-undefined.d.ts +0 -2
- package/dist/utils/remove-undefined.d.ts.map +0 -1
- package/dist/utils/schema-to-string.d.ts +0 -8
- package/dist/utils/schema-to-string.d.ts.map +0 -1
- package/dist/utils/url.d.ts +0 -11
- package/dist/utils/url.d.ts.map +0 -1
- package/dist/utils/use-query.d.ts +0 -8
- package/dist/utils/use-query.d.ts.map +0 -1
package/dist/ui/schema/client.js
CHANGED
|
@@ -1,145 +1,231 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { ChevronDown } from
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
const PropertyContext = createContext({
|
|
20
|
-
renderRef: (props) => _jsx(RootRef, { ...props }),
|
|
21
|
-
});
|
|
2
|
+
|
|
3
|
+
import { cn } from "../../utils/cn.js";
|
|
4
|
+
import { Badge } from "../components/method-label.js";
|
|
5
|
+
import { Fragment, createContext, use, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
6
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { ChevronDown } from "lucide-react";
|
|
8
|
+
import { cva } from "class-variance-authority";
|
|
9
|
+
import { buttonVariants } from "fumadocs-ui/components/ui/button";
|
|
10
|
+
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "fumadocs-ui/components/ui/collapsible";
|
|
11
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "fumadocs-ui/components/tabs";
|
|
12
|
+
import { Popover, PopoverContent, PopoverTrigger } from "fumadocs-ui/components/ui/popover";
|
|
13
|
+
|
|
14
|
+
//#region src/ui/schema/client.tsx
|
|
15
|
+
const typeVariants = cva("text-sm text-start text-fd-muted-foreground font-mono", { variants: { variant: { trigger: "underline hover:text-fd-accent-foreground data-[state=open]:text-fd-accent-foreground" } } });
|
|
16
|
+
const PropertyContext = createContext({ renderRef: (props) => /* @__PURE__ */ jsx(RootRef, { ...props }) });
|
|
22
17
|
const DataContext = createContext(null);
|
|
23
18
|
function useData() {
|
|
24
|
-
|
|
19
|
+
return use(DataContext);
|
|
25
20
|
}
|
|
26
21
|
function useProperty() {
|
|
27
|
-
|
|
22
|
+
return use(PropertyContext);
|
|
28
23
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
function SchemaUI({ name, required = false, as = "property", generated }) {
|
|
25
|
+
const schema = generated.refs[generated.$root];
|
|
26
|
+
return /* @__PURE__ */ jsx(DataContext, {
|
|
27
|
+
value: useMemo(() => generated, [generated]),
|
|
28
|
+
children: as === "property" || !isExpandable(schema) ? /* @__PURE__ */ jsx(SchemaUIProperty, {
|
|
29
|
+
name,
|
|
30
|
+
$type: generated.$root,
|
|
31
|
+
overrides: { required }
|
|
32
|
+
}) : /* @__PURE__ */ jsx(SchemaUIContent, { $type: generated.$root })
|
|
33
|
+
});
|
|
36
34
|
}
|
|
37
35
|
function SchemaUIContent({ $type }) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
const { refs } = useData();
|
|
37
|
+
const schema = refs[$type];
|
|
38
|
+
let child = null;
|
|
39
|
+
if (schema.type === "or" && schema.items.length > 0) child = /* @__PURE__ */ jsxs(Fragment$1, { children: [child, /* @__PURE__ */ jsxs(Tabs, {
|
|
40
|
+
defaultValue: schema.items[0].$type,
|
|
41
|
+
children: [/* @__PURE__ */ jsx(TabsList, { children: schema.items.map((item) => /* @__PURE__ */ jsx(TabsTrigger, {
|
|
42
|
+
value: item.$type,
|
|
43
|
+
children: item.name
|
|
44
|
+
}, item.$type)) }), schema.items.map((item) => /* @__PURE__ */ jsx(TabsContent, {
|
|
45
|
+
value: item.$type,
|
|
46
|
+
forceMount: void 0,
|
|
47
|
+
className: "py-0",
|
|
48
|
+
children: /* @__PURE__ */ jsx(SchemaUIContent, { ...item })
|
|
49
|
+
}, item.$type))]
|
|
50
|
+
})] });
|
|
51
|
+
if (schema.type === "object" && schema.props.length > 0) child = /* @__PURE__ */ jsxs(Fragment$1, { children: [child, schema.props.map((prop) => /* @__PURE__ */ jsx(SchemaUIProperty, {
|
|
52
|
+
name: prop.name,
|
|
53
|
+
$type: prop.$type,
|
|
54
|
+
overrides: { required: prop.required }
|
|
55
|
+
}, prop.name))] });
|
|
56
|
+
if (schema.type === "array") child = /* @__PURE__ */ jsxs(Fragment$1, { children: [child, /* @__PURE__ */ jsxs(Collapsible, {
|
|
57
|
+
className: "my-2",
|
|
58
|
+
children: [/* @__PURE__ */ jsxs(CollapsibleTrigger, {
|
|
59
|
+
className: cn(buttonVariants({
|
|
60
|
+
color: "secondary",
|
|
61
|
+
size: "sm"
|
|
62
|
+
}), "group px-3 py-2 data-[state=open]:rounded-b-none"),
|
|
63
|
+
children: ["Array Item", /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 text-fd-muted-foreground group-data-[state=open]:rotate-180" })]
|
|
64
|
+
}), /* @__PURE__ */ jsx(CollapsibleContent, {
|
|
65
|
+
className: "-mt-px bg-fd-card px-3 rounded-lg rounded-tl-none border shadow-sm",
|
|
66
|
+
children: /* @__PURE__ */ jsx(SchemaUIContent, { $type: schema.item.$type })
|
|
67
|
+
})]
|
|
68
|
+
})] });
|
|
69
|
+
return child;
|
|
51
70
|
}
|
|
52
|
-
function SchemaUIProperty({ name, $type, overrides
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
71
|
+
function SchemaUIProperty({ name, $type, overrides }) {
|
|
72
|
+
const { renderRef } = useProperty();
|
|
73
|
+
const { refs } = useData();
|
|
74
|
+
const schema = refs[$type];
|
|
75
|
+
let type = schema.typeName;
|
|
76
|
+
if ((schema.type === "or" || schema.type === "and") && schema.items.length > 0) type = renderRef({
|
|
77
|
+
text: schema.aliasName,
|
|
78
|
+
pathName: name,
|
|
79
|
+
$ref: $type,
|
|
80
|
+
inlineUnion: true
|
|
81
|
+
});
|
|
82
|
+
if (schema.type === "object" && schema.props.length > 0) type = renderRef({
|
|
83
|
+
text: schema.aliasName,
|
|
84
|
+
pathName: name,
|
|
85
|
+
$ref: $type
|
|
86
|
+
});
|
|
87
|
+
if (schema.type === "array") type = renderRef({
|
|
88
|
+
text: schema.aliasName,
|
|
89
|
+
pathName: name,
|
|
90
|
+
$ref: schema.item.$type
|
|
91
|
+
});
|
|
92
|
+
return /* @__PURE__ */ jsxs(Property, {
|
|
93
|
+
name,
|
|
94
|
+
type,
|
|
95
|
+
deprecated: schema.deprecated,
|
|
96
|
+
...overrides,
|
|
97
|
+
children: [schema.description, schema.infoTags && schema.infoTags.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
98
|
+
className: "flex flex-row gap-2 flex-wrap my-2 not-prose empty:hidden",
|
|
99
|
+
children: schema.infoTags.map((tag, i) => /* @__PURE__ */ jsx(Fragment, { children: tag }, i))
|
|
100
|
+
})]
|
|
101
|
+
});
|
|
81
102
|
}
|
|
82
|
-
function SchemaUIPopover({ initialPath
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
function SchemaUIPopover({ initialPath }) {
|
|
104
|
+
const [path, setPath] = useState(initialPath);
|
|
105
|
+
const ref = useRef(null);
|
|
106
|
+
const last = path.findLast((item) => item.$ref !== void 0);
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
const element = ref.current;
|
|
109
|
+
if (!element || !element.parentElement) return;
|
|
110
|
+
element.parentElement.scrollTop = 0;
|
|
111
|
+
}, [last?.$ref]);
|
|
112
|
+
const context = useMemo(() => ({ renderRef: (props) => /* @__PURE__ */ jsx(LinkRef, {
|
|
113
|
+
...props,
|
|
114
|
+
onInsert: (name, $ref) => {
|
|
115
|
+
setPath((path$1) => [...path$1, {
|
|
116
|
+
name,
|
|
117
|
+
$ref
|
|
118
|
+
}]);
|
|
119
|
+
}
|
|
120
|
+
}) }), []);
|
|
121
|
+
if (!last) return;
|
|
122
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
123
|
+
className: "sticky top-0 flex flex-row flex-wrap items-center text-sm font-medium font-mono bg-fd-muted p-2",
|
|
124
|
+
children: path.map((item, i) => {
|
|
125
|
+
const className = cn(path.some((other, j) => j < i && other.$ref === item.$ref) && "text-orange-400", item.$ref && "hover:underline hover:text-fd-accent-foreground");
|
|
126
|
+
const node = item.$ref ? /* @__PURE__ */ jsx("button", {
|
|
127
|
+
onClick: () => setPath((path$1) => path$1.slice(0, i + 1)),
|
|
128
|
+
className,
|
|
129
|
+
children: item.name
|
|
130
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
131
|
+
className,
|
|
132
|
+
children: item.name
|
|
133
|
+
});
|
|
134
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [i > 0 && ".", node] }, i);
|
|
135
|
+
})
|
|
136
|
+
}), /* @__PURE__ */ jsx(PropertyContext, {
|
|
137
|
+
value: context,
|
|
138
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
139
|
+
ref,
|
|
140
|
+
className: "px-2",
|
|
141
|
+
children: /* @__PURE__ */ jsx(SchemaUIContent, { $type: last.$ref })
|
|
142
|
+
})
|
|
143
|
+
})] });
|
|
106
144
|
}
|
|
107
145
|
function RootRef({ text, $ref, pathName, inlineUnion }) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
146
|
+
const { refs } = useData();
|
|
147
|
+
const ref = useCallback((element) => {
|
|
148
|
+
if (!element || element.style.getPropertyValue("--initial-height")) return;
|
|
149
|
+
element.style.setProperty("--initial-height", `${element.clientHeight}px`);
|
|
150
|
+
}, []);
|
|
151
|
+
const schema = refs[$ref];
|
|
152
|
+
if (inlineUnion && (schema.type === "and" || schema.type === "or")) {
|
|
153
|
+
const sep = schema.type === "and" ? "&" : "|";
|
|
154
|
+
return /* @__PURE__ */ jsx("span", {
|
|
155
|
+
className: cn(typeVariants(), "flex flex-row gap-2 items-center flex-wrap"),
|
|
156
|
+
children: schema.items.map((item, i) => /* @__PURE__ */ jsxs(Fragment, { children: [i > 0 && /* @__PURE__ */ jsx("span", { children: sep }), /* @__PURE__ */ jsx(RootRef, {
|
|
157
|
+
pathName,
|
|
158
|
+
text: item.name,
|
|
159
|
+
$ref: item.$type
|
|
160
|
+
})] }, item.$type))
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
if (!isExpandable(refs[$ref])) return /* @__PURE__ */ jsx("span", {
|
|
164
|
+
className: cn(typeVariants()),
|
|
165
|
+
children: text
|
|
166
|
+
});
|
|
167
|
+
return /* @__PURE__ */ jsxs(Popover, { children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
168
|
+
className: cn(typeVariants({ variant: "trigger" })),
|
|
169
|
+
children: text
|
|
170
|
+
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
171
|
+
ref,
|
|
172
|
+
className: "w-[600px] min-h-(--initial-height,0) max-h-[460px] p-0",
|
|
173
|
+
children: /* @__PURE__ */ jsx(SchemaUIPopover, { initialPath: [{
|
|
174
|
+
name: /* @__PURE__ */ jsxs(Fragment$1, { children: [pathName, schema.type === "array" && "[]"] }),
|
|
175
|
+
$ref
|
|
176
|
+
}] })
|
|
177
|
+
})] });
|
|
128
178
|
}
|
|
129
|
-
function LinkRef({ $ref, pathName, onInsert, text
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
179
|
+
function LinkRef({ $ref, pathName, onInsert, text }) {
|
|
180
|
+
const { refs } = useData();
|
|
181
|
+
if (!isExpandable(refs[$ref])) return /* @__PURE__ */ jsx("span", {
|
|
182
|
+
className: cn(typeVariants()),
|
|
183
|
+
children: text
|
|
184
|
+
});
|
|
185
|
+
return /* @__PURE__ */ jsx("button", {
|
|
186
|
+
className: cn(typeVariants({ variant: "trigger" })),
|
|
187
|
+
onClick: () => {
|
|
188
|
+
onInsert(pathName, $ref);
|
|
189
|
+
},
|
|
190
|
+
children: text
|
|
191
|
+
});
|
|
137
192
|
}
|
|
138
193
|
function Property({ name, type, required, deprecated, nested = false, className, ...props }) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
194
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
195
|
+
className: cn("text-sm border-t", nested ? "p-3 border-x bg-fd-card last:rounded-b-xl first:rounded-tr-xl last:border-b" : "py-4 first:border-t-0", className),
|
|
196
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
197
|
+
className: "flex flex-wrap items-center gap-3 not-prose",
|
|
198
|
+
children: [
|
|
199
|
+
/* @__PURE__ */ jsxs("span", {
|
|
200
|
+
className: "font-medium font-mono text-fd-primary",
|
|
201
|
+
children: [name, required ? /* @__PURE__ */ jsx("span", {
|
|
202
|
+
className: "text-red-400",
|
|
203
|
+
children: "*"
|
|
204
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
205
|
+
className: "text-fd-muted-foreground",
|
|
206
|
+
children: "?"
|
|
207
|
+
})]
|
|
208
|
+
}),
|
|
209
|
+
typeof type === "string" ? /* @__PURE__ */ jsx("span", {
|
|
210
|
+
className: "text-sm font-mono text-fd-muted-foreground",
|
|
211
|
+
children: type
|
|
212
|
+
}) : type,
|
|
213
|
+
deprecated && /* @__PURE__ */ jsx(Badge, {
|
|
214
|
+
color: "yellow",
|
|
215
|
+
className: "ms-auto text-xs",
|
|
216
|
+
children: "Deprecated"
|
|
217
|
+
})
|
|
218
|
+
]
|
|
219
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
220
|
+
className: "prose-no-margin pt-2.5 empty:hidden",
|
|
221
|
+
children: props.children
|
|
222
|
+
})]
|
|
223
|
+
});
|
|
142
224
|
}
|
|
143
225
|
function isExpandable(schema) {
|
|
144
|
-
|
|
226
|
+
return schema.type !== "primitive";
|
|
145
227
|
}
|
|
228
|
+
|
|
229
|
+
//#endregion
|
|
230
|
+
export { SchemaUI };
|
|
231
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","names":["child: ReactNode","type: ReactNode","context: PropertyContextType","path"],"sources":["../../../src/ui/schema/client.tsx"],"sourcesContent":["'use client';\nimport {\n createContext,\n Fragment,\n type ReactNode,\n use,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from 'fumadocs-ui/components/tabs';\nimport type { SchemaData, SchemaUIGeneratedData } from '@/ui/schema';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from 'fumadocs-ui/components/ui/collapsible';\nimport { buttonVariants } from 'fumadocs-ui/components/ui/button';\nimport { ChevronDown } from 'lucide-react';\nimport { Badge } from '@/ui/components/method-label';\nimport { Popover, PopoverContent, PopoverTrigger } from 'fumadocs-ui/components/ui/popover';\nimport { cn } from '@/utils/cn';\nimport { cva } from 'class-variance-authority';\n\ntype DataContextType = SchemaUIGeneratedData;\n\ninterface PropertyContextType {\n renderRef: (options: RenderRefOptions) => ReactNode;\n}\n\ninterface RenderRefOptions {\n text: ReactNode;\n pathName: ReactNode;\n $ref: string;\n\n inlineUnion?: boolean;\n}\n\nconst typeVariants = cva('text-sm text-start text-fd-muted-foreground font-mono', {\n variants: {\n variant: {\n trigger:\n 'underline hover:text-fd-accent-foreground data-[state=open]:text-fd-accent-foreground',\n },\n },\n});\n\nconst PropertyContext = createContext<PropertyContextType>({\n renderRef: (props) => <RootRef {...props} />,\n});\n\nconst DataContext = createContext<DataContextType | null>(null);\n\nfunction useData() {\n return use(DataContext)!;\n}\n\nfunction useProperty() {\n return use(PropertyContext);\n}\n\nexport interface SchemaUIProps {\n name: string;\n required?: boolean;\n as?: 'property' | 'body';\n\n generated: SchemaUIGeneratedData;\n}\n\nexport function SchemaUI({ name, required = false, as = 'property', generated }: SchemaUIProps) {\n const schema = generated.refs[generated.$root];\n const context: DataContextType = useMemo(() => generated, [generated]);\n const isProperty = as === 'property' || !isExpandable(schema);\n\n return (\n <DataContext value={context}>\n {isProperty ? (\n <SchemaUIProperty\n name={name}\n $type={generated.$root}\n overrides={{\n required,\n }}\n />\n ) : (\n <SchemaUIContent $type={generated.$root} />\n )}\n </DataContext>\n );\n}\n\nfunction SchemaUIContent({ $type }: { $type: string }) {\n const { refs } = useData();\n const schema = refs[$type];\n let child: ReactNode = null;\n\n if (schema.type === 'or' && schema.items.length > 0) {\n child = (\n <>\n {child}\n <Tabs defaultValue={schema.items[0].$type}>\n <TabsList>\n {schema.items.map((item) => (\n <TabsTrigger key={item.$type} value={item.$type}>\n {item.name}\n </TabsTrigger>\n ))}\n </TabsList>\n {schema.items.map((item) => (\n <TabsContent\n key={item.$type}\n value={item.$type}\n forceMount={undefined}\n className=\"py-0\"\n >\n <SchemaUIContent {...item} />\n </TabsContent>\n ))}\n </Tabs>\n </>\n );\n }\n\n if (schema.type === 'object' && schema.props.length > 0) {\n child = (\n <>\n {child}\n {schema.props.map((prop) => (\n <SchemaUIProperty\n key={prop.name}\n name={prop.name}\n $type={prop.$type}\n overrides={{ required: prop.required }}\n />\n ))}\n </>\n );\n }\n\n if (schema.type === 'array') {\n child = (\n <>\n {child}\n <Collapsible className=\"my-2\">\n <CollapsibleTrigger\n className={cn(\n buttonVariants({ color: 'secondary', size: 'sm' }),\n 'group px-3 py-2 data-[state=open]:rounded-b-none',\n )}\n >\n Array Item\n <ChevronDown className=\"size-4 text-fd-muted-foreground group-data-[state=open]:rotate-180\" />\n </CollapsibleTrigger>\n <CollapsibleContent className=\"-mt-px bg-fd-card px-3 rounded-lg rounded-tl-none border shadow-sm\">\n <SchemaUIContent $type={schema.item.$type} />\n </CollapsibleContent>\n </Collapsible>\n </>\n );\n }\n\n return child;\n}\n\nfunction SchemaUIProperty({\n name,\n $type,\n overrides,\n}: {\n name: ReactNode;\n $type: string;\n overrides?: Partial<PropertyProps>;\n}) {\n const { renderRef } = useProperty();\n const { refs } = useData();\n const schema = refs[$type];\n\n let type: ReactNode = schema.typeName;\n if ((schema.type === 'or' || schema.type === 'and') && schema.items.length > 0) {\n type = renderRef({\n text: schema.aliasName,\n pathName: name,\n $ref: $type,\n inlineUnion: true,\n });\n }\n\n if (schema.type === 'object' && schema.props.length > 0) {\n type = renderRef({\n text: schema.aliasName,\n pathName: name,\n $ref: $type,\n });\n }\n\n if (schema.type === 'array') {\n type = renderRef({\n text: schema.aliasName,\n pathName: name,\n $ref: schema.item.$type,\n });\n }\n\n return (\n <Property name={name} type={type} deprecated={schema.deprecated} {...overrides}>\n {schema.description}\n {schema.infoTags && schema.infoTags.length > 0 && (\n <div className=\"flex flex-row gap-2 flex-wrap my-2 not-prose empty:hidden\">\n {schema.infoTags.map((tag, i) => (\n <Fragment key={i}>{tag}</Fragment>\n ))}\n </div>\n )}\n </Property>\n );\n}\n\nfunction SchemaUIPopover({ initialPath }: { initialPath: { name: ReactNode; $ref?: string }[] }) {\n const [path, setPath] = useState(initialPath);\n const ref = useRef<HTMLDivElement>(null);\n const last = path.findLast((item) => item.$ref !== undefined);\n\n useEffect(() => {\n const element = ref.current;\n if (!element || !element.parentElement) return;\n\n // reset scroll\n element.parentElement.scrollTop = 0;\n }, [last?.$ref]);\n\n const context: PropertyContextType = useMemo(\n () => ({\n renderRef: (props) => (\n <LinkRef\n {...props}\n onInsert={(name, $ref) => {\n setPath((path) => [...path, { name, $ref }]);\n }}\n />\n ),\n }),\n [],\n );\n\n if (!last) return;\n\n return (\n <>\n <div className=\"sticky top-0 flex flex-row flex-wrap items-center text-sm font-medium font-mono bg-fd-muted p-2\">\n {path.map((item, i) => {\n const isDuplicated = path.some((other, j) => j < i && other.$ref === item.$ref);\n const className = cn(\n isDuplicated && 'text-orange-400',\n item.$ref && 'hover:underline hover:text-fd-accent-foreground',\n );\n\n const node = item.$ref ? (\n <button onClick={() => setPath((path) => path.slice(0, i + 1))} className={className}>\n {item.name}\n </button>\n ) : (\n <span className={className}>{item.name}</span>\n );\n\n return (\n <Fragment key={i}>\n {i > 0 && '.'}\n {node}\n </Fragment>\n );\n })}\n </div>\n <PropertyContext value={context}>\n <div ref={ref} className=\"px-2\">\n <SchemaUIContent $type={last.$ref!} />\n </div>\n </PropertyContext>\n </>\n );\n}\n\nfunction RootRef({ text, $ref, pathName, inlineUnion }: RenderRefOptions) {\n const { refs } = useData();\n const ref = useCallback((element: HTMLDivElement | null) => {\n if (!element || element.style.getPropertyValue('--initial-height')) return;\n\n element.style.setProperty('--initial-height', `${element.clientHeight}px`);\n }, []);\n\n const schema = refs[$ref];\n\n if (inlineUnion && (schema.type === 'and' || schema.type === 'or')) {\n const sep = schema.type === 'and' ? '&' : '|';\n return (\n <span className={cn(typeVariants(), 'flex flex-row gap-2 items-center flex-wrap')}>\n {schema.items.map((item, i) => (\n <Fragment key={item.$type}>\n {i > 0 && <span>{sep}</span>}\n <RootRef pathName={pathName} text={item.name} $ref={item.$type} />\n </Fragment>\n ))}\n </span>\n );\n }\n\n if (!isExpandable(refs[$ref])) {\n return <span className={cn(typeVariants())}>{text}</span>;\n }\n\n return (\n <Popover>\n <PopoverTrigger className={cn(typeVariants({ variant: 'trigger' }))}>{text}</PopoverTrigger>\n <PopoverContent ref={ref} className=\"w-[600px] min-h-(--initial-height,0) max-h-[460px] p-0\">\n <SchemaUIPopover\n initialPath={[\n {\n name: (\n <>\n {pathName}\n {schema.type === 'array' && '[]'}\n </>\n ),\n $ref: $ref,\n },\n ]}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\nfunction LinkRef({\n $ref,\n pathName,\n onInsert,\n text,\n}: RenderRefOptions & {\n onInsert: (name: ReactNode, $ref: string) => void;\n}) {\n const { refs } = useData();\n if (!isExpandable(refs[$ref])) {\n return <span className={cn(typeVariants())}>{text}</span>;\n }\n\n return (\n <button\n className={cn(typeVariants({ variant: 'trigger' }))}\n onClick={() => {\n onInsert(pathName, $ref);\n }}\n >\n {text}\n </button>\n );\n}\n\ninterface PropertyProps {\n name: ReactNode;\n type: ReactNode;\n required?: boolean;\n deprecated?: boolean;\n nested?: boolean;\n\n children?: ReactNode;\n className?: string;\n}\n\nfunction Property({\n name,\n type,\n required,\n deprecated,\n nested = false,\n className,\n ...props\n}: PropertyProps) {\n return (\n <div\n className={cn(\n 'text-sm border-t',\n nested\n ? 'p-3 border-x bg-fd-card last:rounded-b-xl first:rounded-tr-xl last:border-b'\n : 'py-4 first:border-t-0',\n className,\n )}\n >\n <div className=\"flex flex-wrap items-center gap-3 not-prose\">\n <span className=\"font-medium font-mono text-fd-primary\">\n {name}\n {required ? (\n <span className=\"text-red-400\">*</span>\n ) : (\n <span className=\"text-fd-muted-foreground\">?</span>\n )}\n </span>\n {typeof type === 'string' ? (\n <span className=\"text-sm font-mono text-fd-muted-foreground\">{type}</span>\n ) : (\n type\n )}\n {deprecated && (\n <Badge color=\"yellow\" className=\"ms-auto text-xs\">\n Deprecated\n </Badge>\n )}\n </div>\n <div className=\"prose-no-margin pt-2.5 empty:hidden\">{props.children}</div>\n </div>\n );\n}\n\nfunction isExpandable(schema: SchemaData) {\n return schema.type !== 'primitive';\n}\n"],"mappings":"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"}
|
|
@@ -1,59 +1,60 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { ResolvedSchema } from "../../utils/schema.js";
|
|
2
|
+
import { SchemaUIProps } from "./client.js";
|
|
3
|
+
import "../../types.js";
|
|
4
|
+
import { ReactNode } from "react";
|
|
5
|
+
import "react/jsx-runtime";
|
|
6
|
+
|
|
7
|
+
//#region src/ui/schema/index.d.ts
|
|
8
|
+
interface FieldBase {
|
|
9
|
+
description?: ReactNode;
|
|
10
|
+
infoTags?: ReactNode[];
|
|
11
|
+
typeName: string;
|
|
12
|
+
aliasName: string;
|
|
13
|
+
deprecated?: boolean;
|
|
11
14
|
}
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
type SchemaData = FieldBase & ({
|
|
16
|
+
type: 'primitive';
|
|
14
17
|
} | {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
type: 'object';
|
|
19
|
+
props: {
|
|
20
|
+
name: string;
|
|
21
|
+
$type: string;
|
|
22
|
+
required: boolean;
|
|
23
|
+
}[];
|
|
21
24
|
} | {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
type: 'array';
|
|
26
|
+
item: {
|
|
27
|
+
$type: string;
|
|
28
|
+
};
|
|
26
29
|
} | {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
type: 'or';
|
|
31
|
+
items: {
|
|
32
|
+
name: string;
|
|
33
|
+
$type: string;
|
|
34
|
+
}[];
|
|
32
35
|
} | {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
type: 'and';
|
|
37
|
+
items: {
|
|
38
|
+
name: string;
|
|
39
|
+
$type: string;
|
|
40
|
+
}[];
|
|
38
41
|
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
42
|
+
interface SchemaUIOptions {
|
|
43
|
+
root: ResolvedSchema;
|
|
44
|
+
client: Omit<SchemaUIProps, 'generated'>;
|
|
45
|
+
/**
|
|
46
|
+
* include read only props
|
|
47
|
+
*/
|
|
48
|
+
readOnly?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* include write only props
|
|
51
|
+
*/
|
|
52
|
+
writeOnly?: boolean;
|
|
50
53
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
interface SchemaUIGeneratedData {
|
|
55
|
+
$root: string;
|
|
56
|
+
refs: Record<string, SchemaData>;
|
|
54
57
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<ReactNode> | null | undefined;
|
|
58
|
-
export declare function generateSchemaUI({ root, readOnly, writeOnly }: SchemaUIOptions, ctx: RenderContext): SchemaUIGeneratedData;
|
|
58
|
+
//#endregion
|
|
59
|
+
export { SchemaUIGeneratedData, SchemaUIOptions };
|
|
59
60
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/ui/schema/index.tsx"],"sourcesContent":[],"mappings":";;;;;;;UAQiB,SAAA;gBACD;aACH;EAFI,QAAA,EAAA,MAAS;EAUd,SAAA,EAAA,MAAU;EAmCL,UAAA,CAAA,EAAA,OAAe;;AAEjB,KArCH,UAAA,GAAa,SAqCV,GAAA,CAAA;EAAL,IAAA,EAAA,WAAA;CAAI,GAAA;EAYG,IAAA,EAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;UAdA,eAAA;QACT;UACE,KAAK;;;;;;;;;;UAYE,qBAAA;;QAET,eAAe"}
|