Skip to content

Commit c8dd1fc

Browse files
committed
experiment with lazy render
1 parent bcac098 commit c8dd1fc

File tree

1 file changed

+35
-2
lines changed
  • packages/docusaurus-theme-openapi-docs/src/theme/ResponseSchema

1 file changed

+35
-2
lines changed

packages/docusaurus-theme-openapi-docs/src/theme/ResponseSchema/index.tsx

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
* LICENSE file in the root directory of this source tree.
66
* ========================================================================== */
77

8-
import React from "react";
8+
import React, { Suspense } from "react";
99

10+
import BrowserOnly from "@docusaurus/BrowserOnly";
1011
import Details from "@theme/Details";
1112
import MimeTabs from "@theme/MimeTabs"; // Assume these components exist
1213
import {
@@ -32,7 +33,11 @@ interface Props {
3233
};
3334
}
3435

35-
const ResponseSchema: React.FC<Props> = ({ title, body, style }): any => {
36+
const ResponseSchemaComponent: React.FC<Props> = ({
37+
title,
38+
body,
39+
style,
40+
}): any => {
3641
if (
3742
body === undefined ||
3843
body.content === undefined ||
@@ -125,4 +130,32 @@ const ResponseSchema: React.FC<Props> = ({ title, body, style }): any => {
125130
return undefined;
126131
};
127132

133+
const ResponseSchema: React.FC<Props> = (props) => {
134+
return (
135+
<BrowserOnly
136+
fallback={
137+
<div className="openapi-explorer__loading-container">
138+
<div className="openapi-response__lds-ring">
139+
<div></div>
140+
<div></div>
141+
<div></div>
142+
<div></div>
143+
</div>
144+
</div>
145+
}
146+
>
147+
{() => {
148+
const LazyComponent = React.lazy(() =>
149+
Promise.resolve({ default: ResponseSchemaComponent })
150+
);
151+
return (
152+
<Suspense fallback={<div>Loading...</div>}>
153+
<LazyComponent {...props} />
154+
</Suspense>
155+
);
156+
}}
157+
</BrowserOnly>
158+
);
159+
};
160+
128161
export default ResponseSchema;

0 commit comments

Comments
 (0)