From cd99ed57fb23808d56085b9fbdabb8be10c5abed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Berg=C3=A9?= Date: Tue, 25 Mar 2025 16:13:18 +0100 Subject: [PATCH] Fix OpenAPI spec rendering (#3037) --- .changeset/stupid-peaches-work.md | 6 + bun.lock | 3 + .../src/components/DocumentView/Blocks.tsx | 4 +- .../src/components/DocumentView/Inlines.tsx | 8 +- packages/react-openapi/package.json | 1 + .../react-openapi/src/InteractiveSection.tsx | 8 +- .../react-openapi/src/OpenAPICodeSample.tsx | 20 ++- .../src/OpenAPICodeSampleInteractive.tsx | 36 +++-- packages/react-openapi/src/OpenAPIPath.tsx | 4 +- .../react-openapi/src/OpenAPIRequestBody.tsx | 2 +- .../react-openapi/src/OpenAPIResponse.tsx | 8 +- .../react-openapi/src/OpenAPIResponses.tsx | 6 +- packages/react-openapi/src/OpenAPISchema.tsx | 146 ++++++++++++------ .../react-openapi/src/OpenAPISchemaServer.tsx | 34 ++++ packages/react-openapi/src/OpenAPISpec.tsx | 24 +-- packages/react-openapi/src/OpenAPITabs.tsx | 16 +- .../src/schemas/OpenAPISchemas.tsx | 2 +- 17 files changed, 213 insertions(+), 115 deletions(-) create mode 100644 .changeset/stupid-peaches-work.md create mode 100644 packages/react-openapi/src/OpenAPISchemaServer.tsx diff --git a/.changeset/stupid-peaches-work.md b/.changeset/stupid-peaches-work.md new file mode 100644 index 000000000..c02e5af9a --- /dev/null +++ b/.changeset/stupid-peaches-work.md @@ -0,0 +1,6 @@ +--- +"@gitbook/react-openapi": patch +"gitbook": patch +--- + +Fix spec properties rendering and missing keys diff --git a/bun.lock b/bun.lock index 60e9df304..0e59b1dbd 100644 --- a/bun.lock +++ b/bun.lock @@ -241,6 +241,7 @@ "@scalar/oas-utils": "^0.2.120", "clsx": "^2.1.1", "flatted": "^3.2.9", + "json-decycle": "^4.0.0", "json-xml-parse": "^1.3.0", "react-aria": "^3.37.0", "react-aria-components": "^1.6.0", @@ -2069,6 +2070,8 @@ "json-buffer": ["json-buffer@3.0.0", "", {}, "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ=="], + "json-decycle": ["json-decycle@4.0.0", "", {}, "sha512-3GFL/vWazCbMu1kw+NdIfAHh6Ugq5pxkKcSUnK1f/Fw1nDtt1i+BiBfRJs0iPEKscYAz4k4+osvgjY95hmuJXQ=="], + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], "json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="], diff --git a/packages/gitbook/src/components/DocumentView/Blocks.tsx b/packages/gitbook/src/components/DocumentView/Blocks.tsx index 844e8238a..903acd295 100644 --- a/packages/gitbook/src/components/DocumentView/Blocks.tsx +++ b/packages/gitbook/src/components/DocumentView/Blocks.tsx @@ -54,7 +54,7 @@ export function UnwrappedBlocks(props: UnwrappedBl const { nodes, blockStyle, isOffscreen: defaultIsOffscreen = false, ...contextProps } = props; let isOffscreen = defaultIsOffscreen; - return nodes.map((node) => { + return nodes.map((node, index) => { isOffscreen = isOffscreen || isBlockOffscreen({ @@ -65,7 +65,7 @@ export function UnwrappedBlocks(props: UnwrappedBl return ( ( ) { const { nodes, document, ancestorInlines, ...contextProps } = props; - return nodes.map((node) => { + return nodes.map((node, index) => { + const key = node.key || `key-${index}`; + if (node.object === 'text') { - return ; + return ; } return ( - {(children || selectedTab?.body) && toggeable ? ( + {selectedTab?.body && toggeable ? (