zudoku 0.64.1 → 0.65.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/main.d.ts +91 -1
- package/dist/app/main.js +5 -1
- package/dist/app/main.js.map +1 -1
- package/dist/config/config.d.ts +15 -46
- package/dist/config/validators/InputNavigationSchema.d.ts +61 -61
- package/dist/config/validators/NavigationSchema.js +2 -4
- package/dist/config/validators/NavigationSchema.js.map +1 -1
- package/dist/config/validators/ProtectedRoutesSchema.d.ts +1 -1
- package/dist/config/validators/validate.d.ts +158 -2
- package/dist/config/validators/validate.js +37 -0
- package/dist/config/validators/validate.js.map +1 -1
- package/dist/config/validators/validate.test.js +43 -0
- package/dist/config/validators/validate.test.js.map +1 -1
- package/dist/flat-config.d.ts +22 -0
- package/dist/lib/auth/issuer.js +3 -0
- package/dist/lib/auth/issuer.js.map +1 -1
- package/dist/lib/authentication/authentication.d.ts +1 -1
- package/dist/lib/authentication/providers/auth0.js +6 -1
- package/dist/lib/authentication/providers/auth0.js.map +1 -1
- package/dist/lib/authentication/providers/firebase.d.ts +4 -0
- package/dist/lib/authentication/providers/firebase.js +215 -0
- package/dist/lib/authentication/providers/firebase.js.map +1 -0
- package/dist/lib/authentication/providers/supabase.js +1 -6
- package/dist/lib/authentication/providers/supabase.js.map +1 -1
- package/dist/lib/authentication/ui/ZudokuAuthUi.d.ts +24 -0
- package/dist/lib/authentication/ui/ZudokuAuthUi.js +124 -0
- package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Apple.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Apple.js +4 -0
- package/dist/lib/authentication/ui/icons/Apple.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Facebook.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Facebook.js +4 -0
- package/dist/lib/authentication/ui/icons/Facebook.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Github.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Github.js +4 -0
- package/dist/lib/authentication/ui/icons/Github.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Google.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Google.js +4 -0
- package/dist/lib/authentication/ui/icons/Google.js.map +1 -0
- package/dist/lib/authentication/ui/icons/Microsoft.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/Microsoft.js +4 -0
- package/dist/lib/authentication/ui/icons/Microsoft.js.map +1 -0
- package/dist/lib/authentication/ui/icons/X.d.ts +3 -0
- package/dist/lib/authentication/ui/icons/X.js +4 -0
- package/dist/lib/authentication/ui/icons/X.js.map +1 -0
- package/dist/lib/components/Autocomplete.d.ts +3 -1
- package/dist/lib/components/Autocomplete.js +6 -2
- package/dist/lib/components/Autocomplete.js.map +1 -1
- package/dist/lib/components/Heading.d.ts +1 -1
- package/dist/lib/components/Layout.js +3 -2
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/components/navigation/NavigationItem.js +2 -2
- package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
- package/dist/lib/core/RouteGuard.js +6 -6
- package/dist/lib/core/RouteGuard.js.map +1 -1
- package/dist/lib/errors/ErrorAlert.js +1 -1
- package/dist/lib/errors/RouterError.d.ts +3 -1
- package/dist/lib/errors/RouterError.js +3 -2
- package/dist/lib/errors/RouterError.js.map +1 -1
- package/dist/lib/oas/parser/index.js +7 -3
- package/dist/lib/oas/parser/index.js.map +1 -1
- package/dist/lib/plugins/api-keys/ProtectedRoute.js +4 -1
- package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -1
- package/dist/lib/plugins/openapi/CollapsibleCode.d.ts +1 -0
- package/dist/lib/plugins/openapi/CollapsibleCode.js +2 -1
- package/dist/lib/plugins/openapi/CollapsibleCode.js.map +1 -1
- package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.d.ts +5 -0
- package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js +10 -0
- package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js.map +1 -0
- package/dist/lib/plugins/openapi/OperationList.js +5 -1
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationListItem.d.ts +2 -1
- package/dist/lib/plugins/openapi/OperationListItem.js +3 -2
- package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterList.js +7 -4
- package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js +17 -6
- package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +9 -2
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +5 -2
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.d.ts +3 -2
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +25 -4
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.d.ts +2 -2
- package/dist/lib/plugins/openapi/Sidecar.js +53 -26
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/SidecarBox.js +4 -4
- package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/SidecarExamples.d.ts +9 -2
- package/dist/lib/plugins/openapi/SidecarExamples.js +24 -43
- package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
- package/dist/lib/plugins/openapi/components/ConstValue.js +1 -1
- package/dist/lib/plugins/openapi/components/ConstValue.js.map +1 -1
- package/dist/lib/plugins/openapi/components/EnumValues.js +1 -1
- package/dist/lib/plugins/openapi/components/EnumValues.js.map +1 -1
- package/dist/lib/plugins/openapi/components/NonHighlightedCode.d.ts +4 -0
- package/dist/lib/plugins/openapi/components/NonHighlightedCode.js +5 -0
- package/dist/lib/plugins/openapi/components/NonHighlightedCode.js.map +1 -0
- package/dist/lib/plugins/openapi/components/ResponseContent.js +5 -6
- package/dist/lib/plugins/openapi/components/ResponseContent.js.map +1 -1
- package/dist/lib/plugins/openapi/interfaces.d.ts +13 -0
- package/dist/lib/plugins/openapi/playground/BodyPanel.js +67 -15
- package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js +2 -2
- package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +1 -1
- package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Headers.js +23 -83
- package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/ParamsGrid.d.ts +10 -2
- package/dist/lib/plugins/openapi/playground/ParamsGrid.js +8 -1
- package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/PathParams.js +2 -3
- package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.d.ts +7 -0
- package/dist/lib/plugins/openapi/playground/Playground.js +56 -28
- package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +3 -2
- package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/QueryParams.js +16 -40
- package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.d.ts +8 -0
- package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js +19 -0
- package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js +1 -1
- package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.d.ts +1 -0
- package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js +540 -0
- package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.d.ts +40 -0
- package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js +205 -0
- package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +2 -2
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +17 -8
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaView.js +20 -13
- package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/UnionView.js +2 -5
- package/dist/lib/plugins/openapi/schema/UnionView.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/union-helpers.js +0 -1
- package/dist/lib/plugins/openapi/schema/union-helpers.js.map +1 -1
- package/dist/lib/plugins/openapi/util/generateSchemaExample.js +5 -14
- package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
- package/dist/lib/ui/Badge.d.ts +3 -3
- package/dist/lib/ui/Badge.js +9 -7
- package/dist/lib/ui/Badge.js.map +1 -1
- package/dist/lib/ui/Button.d.ts +1 -1
- package/dist/lib/ui/Button.js +1 -0
- package/dist/lib/ui/Button.js.map +1 -1
- package/dist/lib/ui/Checkbox.d.ts +2 -2
- package/dist/lib/ui/Checkbox.js +4 -4
- package/dist/lib/ui/Checkbox.js.map +1 -1
- package/dist/lib/ui/CodeBlock.d.ts +0 -1
- package/dist/lib/ui/CodeBlock.js +1 -1
- package/dist/lib/ui/CodeBlock.js.map +1 -1
- package/dist/lib/ui/Collapsible.d.ts +4 -4
- package/dist/lib/ui/Collapsible.js +11 -4
- package/dist/lib/ui/Collapsible.js.map +1 -1
- package/dist/lib/ui/Command.d.ts +3 -3
- package/dist/lib/ui/EmbeddedCodeBlock.d.ts +0 -1
- package/dist/lib/ui/EmbeddedCodeBlock.js +3 -2
- package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
- package/dist/lib/ui/Frame.d.ts +8 -0
- package/dist/lib/ui/Frame.js +22 -0
- package/dist/lib/ui/Frame.js.map +1 -0
- package/dist/lib/ui/Item.d.ts +23 -0
- package/dist/lib/ui/Item.js +67 -0
- package/dist/lib/ui/Item.js.map +1 -0
- package/dist/lib/ui/NativeSelect.d.ts +5 -0
- package/dist/lib/ui/NativeSelect.js +14 -0
- package/dist/lib/ui/NativeSelect.js.map +1 -0
- package/dist/lib/ui/Select.d.ts +13 -11
- package/dist/lib/ui/Select.js +34 -23
- package/dist/lib/ui/Select.js.map +1 -1
- package/dist/lib/ui/Separator.d.ts +4 -0
- package/dist/lib/ui/Separator.js +8 -0
- package/dist/lib/ui/Separator.js.map +1 -0
- package/dist/lib/ui/Tooltip.d.ts +7 -7
- package/dist/lib/ui/Tooltip.js +16 -10
- package/dist/lib/ui/Tooltip.js.map +1 -1
- package/dist/lib/util/createVariantComponent.d.ts +5 -2
- package/dist/lib/util/createVariantComponent.js +5 -2
- package/dist/lib/util/createVariantComponent.js.map +1 -1
- package/dist/lib/util/flattenAllOf.d.ts +4 -0
- package/dist/lib/util/flattenAllOf.js +65 -0
- package/dist/lib/util/flattenAllOf.js.map +1 -0
- package/dist/lib/util/flattenAllOf.test.d.ts +1 -0
- package/dist/lib/util/flattenAllOf.test.js +532 -0
- package/dist/lib/util/flattenAllOf.test.js.map +1 -0
- package/dist/lib/util/readFrontmatter.d.ts +6 -0
- package/dist/lib/util/readFrontmatter.js +12 -0
- package/dist/lib/util/readFrontmatter.js.map +1 -0
- package/dist/vite/api/SchemaManager.js +6 -18
- package/dist/vite/api/SchemaManager.js.map +1 -1
- package/dist/vite/mdx/remark-last-modified.js +57 -3
- package/dist/vite/mdx/remark-last-modified.js.map +1 -1
- package/dist/vite/plugin-api.js +2 -2
- package/dist/vite/plugin-api.js.map +1 -1
- package/dist/vite/plugin-frontmatter.js +3 -5
- package/dist/vite/plugin-frontmatter.js.map +1 -1
- package/dist/vite/plugin-markdown-export.js +3 -4
- package/dist/vite/plugin-markdown-export.js.map +1 -1
- package/dist/vite/plugin-theme.js +10 -1
- package/dist/vite/plugin-theme.js.map +1 -1
- package/lib/{Button-DmS4u8Lj.js → Button-B3ucvvQw.js} +7 -6
- package/lib/Button-B3ucvvQw.js.map +1 -0
- package/lib/{ErrorAlert-DE3Sf66a.js → ErrorAlert-BOVgwTRP.js} +2832 -2857
- package/lib/ErrorAlert-BOVgwTRP.js.map +1 -0
- package/lib/{MdxPage-DZfeC0QY.js → MdxPage-CBYFyqUs.js} +6 -6
- package/lib/{MdxPage-DZfeC0QY.js.map → MdxPage-CBYFyqUs.js.map} +1 -1
- package/lib/{OAuthErrorPage-BycMozgn.js → OAuthErrorPage-DlTYnbLO.js} +4 -4
- package/lib/{OAuthErrorPage-BycMozgn.js.map → OAuthErrorPage-DlTYnbLO.js.map} +1 -1
- package/lib/{OasProvider-1XEOsIiW.js → OasProvider-DIPAQ79S.js} +2 -2
- package/lib/{OasProvider-1XEOsIiW.js.map → OasProvider-DIPAQ79S.js.map} +1 -1
- package/lib/OperationList-BOTFIfda.js +5688 -0
- package/lib/OperationList-BOTFIfda.js.map +1 -0
- package/lib/{Pagination-CJszmeSA.js → Pagination-BOZ9Pxcw.js} +2 -2
- package/lib/{Pagination-CJszmeSA.js.map → Pagination-BOZ9Pxcw.js.map} +1 -1
- package/lib/RouteGuard-Brz95MSt.js +77 -0
- package/lib/RouteGuard-Brz95MSt.js.map +1 -0
- package/lib/RouterError-DQS_bMwf.js +42 -0
- package/lib/RouterError-DQS_bMwf.js.map +1 -0
- package/lib/{SchemaList-qOHkDzSz.js → SchemaList-Bu95q_q2.js} +7 -7
- package/lib/{SchemaList-qOHkDzSz.js.map → SchemaList-Bu95q_q2.js.map} +1 -1
- package/lib/SchemaView-CaxK_HV4.js +586 -0
- package/lib/SchemaView-CaxK_HV4.js.map +1 -0
- package/lib/Select-DFRCS31-.js +399 -0
- package/lib/Select-DFRCS31-.js.map +1 -0
- package/lib/{SignUp-6SGx9Yyq.js → SignUp-CfB278ao.js} +2 -2
- package/lib/{SignUp-6SGx9Yyq.js.map → SignUp-CfB278ao.js.map} +1 -1
- package/lib/{SyntaxHighlight-zvlnSnHB.js → SyntaxHighlight-C19vH0V_.js} +525 -509
- package/lib/SyntaxHighlight-C19vH0V_.js.map +1 -0
- package/lib/{Toc-Da9yp7lo.js → Toc-DQIqdghO.js} +2 -2
- package/lib/{Toc-Da9yp7lo.js.map → Toc-DQIqdghO.js.map} +1 -1
- package/lib/{circular-CSSuz-LS.js → circular-B-_VyILZ.js} +6360 -5953
- package/lib/circular-B-_VyILZ.js.map +1 -0
- package/lib/{createServer-CLbcVLbK.js → createServer-C5lXk4ba.js} +4732 -4273
- package/lib/createServer-C5lXk4ba.js.map +1 -0
- package/lib/{errors-CuGgh3hf.js → errors-DqoyOKev.js} +2 -2
- package/lib/{errors-CuGgh3hf.js.map → errors-DqoyOKev.js.map} +1 -1
- package/lib/index-B7yD7ZUk.js +3680 -0
- package/lib/index-B7yD7ZUk.js.map +1 -0
- package/lib/{index-rYHsvtTo.js → index-BG79m3lF.js} +2 -2
- package/lib/{index-rYHsvtTo.js.map → index-BG79m3lF.js.map} +1 -1
- package/lib/{index-B1rmok4X.js → index-DHDtI9H5.js} +3 -3
- package/lib/{index-B1rmok4X.js.map → index-DHDtI9H5.js.map} +1 -1
- package/lib/ui/ActionButton.js +1 -1
- package/lib/ui/Badge.js +27 -13
- package/lib/ui/Badge.js.map +1 -1
- package/lib/ui/Button.js +6 -5
- package/lib/ui/Button.js.map +1 -1
- package/lib/ui/Checkbox.js +29 -26
- package/lib/ui/Checkbox.js.map +1 -1
- package/lib/ui/CodeBlock.js +7 -7
- package/lib/ui/CodeBlock.js.map +1 -1
- package/lib/ui/Collapsible.js +32 -5
- package/lib/ui/Collapsible.js.map +1 -1
- package/lib/ui/EmbeddedCodeBlock.js +26 -25
- package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
- package/lib/ui/Frame.js +81 -0
- package/lib/ui/Frame.js.map +1 -0
- package/lib/ui/Item.js +188 -0
- package/lib/ui/Item.js.map +1 -0
- package/lib/ui/NativeSelect.js +57 -0
- package/lib/ui/NativeSelect.js.map +1 -0
- package/lib/ui/Select.js +166 -116
- package/lib/ui/Select.js.map +1 -1
- package/lib/ui/Separator.js +27 -0
- package/lib/ui/Separator.js.map +1 -0
- package/lib/ui/SyntaxHighlight.js +1 -1
- package/lib/ui/Tabs.js +10 -10
- package/lib/ui/Tooltip.js +55 -28
- package/lib/ui/Tooltip.js.map +1 -1
- package/lib/zudoku.__internal.js +345 -345
- package/lib/zudoku.__internal.js.map +1 -1
- package/lib/zudoku.auth-auth0.js +7 -7
- package/lib/zudoku.auth-auth0.js.map +1 -1
- package/lib/zudoku.auth-azureb2c.js +3 -3
- package/lib/zudoku.auth-clerk.js +1 -1
- package/lib/zudoku.auth-openid.js +3 -3
- package/lib/zudoku.auth-supabase.js +30 -33
- package/lib/zudoku.auth-supabase.js.map +1 -1
- package/lib/zudoku.components.js +2 -2
- package/lib/zudoku.plugin-api-catalog.js +3 -3
- package/lib/zudoku.plugin-api-keys.js +5 -5
- package/lib/zudoku.plugin-api-keys.js.map +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +2 -2
- package/package.json +18 -13
- package/src/app/main.css +1 -1
- package/src/app/main.tsx +5 -1
- package/src/lib/auth/issuer.ts +3 -0
- package/src/lib/authentication/authentication.ts +1 -1
- package/src/lib/authentication/providers/auth0.tsx +6 -1
- package/src/lib/authentication/providers/firebase.tsx +284 -0
- package/src/lib/authentication/providers/supabase.tsx +2 -7
- package/src/lib/authentication/ui/ZudokuAuthUi.tsx +335 -0
- package/src/lib/authentication/ui/icons/Apple.tsx +10 -0
- package/src/lib/authentication/ui/icons/Facebook.tsx +15 -0
- package/src/lib/authentication/ui/icons/Github.tsx +16 -0
- package/src/lib/authentication/ui/icons/Google.tsx +16 -0
- package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -0
- package/src/lib/authentication/ui/icons/X.tsx +10 -0
- package/src/lib/components/Autocomplete.tsx +11 -2
- package/src/lib/components/Layout.tsx +3 -2
- package/src/lib/components/navigation/NavigationItem.tsx +7 -20
- package/src/lib/core/RouteGuard.tsx +8 -8
- package/src/lib/errors/ErrorAlert.tsx +1 -1
- package/src/lib/errors/RouterError.tsx +7 -2
- package/src/lib/oas/parser/index.ts +8 -3
- package/src/lib/plugins/api-keys/ProtectedRoute.tsx +11 -7
- package/src/lib/plugins/openapi/CollapsibleCode.tsx +5 -3
- package/src/lib/plugins/openapi/GeneratedExampleSidecarBox.tsx +52 -0
- package/src/lib/plugins/openapi/OperationList.tsx +7 -0
- package/src/lib/plugins/openapi/OperationListItem.tsx +10 -7
- package/src/lib/plugins/openapi/ParameterList.tsx +37 -23
- package/src/lib/plugins/openapi/ParameterListItem.tsx +105 -54
- package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +48 -7
- package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +81 -33
- package/src/lib/plugins/openapi/Sidecar.tsx +129 -65
- package/src/lib/plugins/openapi/SidecarBox.tsx +26 -4
- package/src/lib/plugins/openapi/SidecarExamples.tsx +91 -79
- package/src/lib/plugins/openapi/components/ConstValue.tsx +1 -1
- package/src/lib/plugins/openapi/components/EnumValues.tsx +2 -2
- package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -0
- package/src/lib/plugins/openapi/components/ResponseContent.tsx +63 -53
- package/src/lib/plugins/openapi/interfaces.ts +12 -0
- package/src/lib/plugins/openapi/playground/BodyPanel.tsx +246 -30
- package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +10 -6
- package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +3 -2
- package/src/lib/plugins/openapi/playground/Headers.tsx +103 -219
- package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +33 -1
- package/src/lib/plugins/openapi/playground/PathParams.tsx +26 -34
- package/src/lib/plugins/openapi/playground/Playground.tsx +73 -35
- package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +9 -30
- package/src/lib/plugins/openapi/playground/QueryParams.tsx +82 -136
- package/src/lib/plugins/openapi/playground/request-panel/MultipartField.tsx +91 -0
- package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +1 -1
- package/src/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.tsx +872 -0
- package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +349 -0
- package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +2 -6
- package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +1 -1
- package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +89 -55
- package/src/lib/plugins/openapi/schema/SchemaView.tsx +82 -53
- package/src/lib/plugins/openapi/schema/UnionView.tsx +6 -17
- package/src/lib/plugins/openapi/schema/union-helpers.ts +0 -1
- package/src/lib/plugins/openapi/util/generateSchemaExample.ts +5 -15
- package/src/lib/ui/Badge.tsx +21 -12
- package/src/lib/ui/Button.tsx +1 -0
- package/src/lib/ui/Checkbox.tsx +23 -24
- package/src/lib/ui/CodeBlock.tsx +3 -4
- package/src/lib/ui/Collapsible.tsx +26 -4
- package/src/lib/ui/EmbeddedCodeBlock.tsx +21 -19
- package/src/lib/ui/Frame.tsx +81 -0
- package/src/lib/ui/Item.tsx +192 -0
- package/src/lib/ui/NativeSelect.tsx +47 -0
- package/src/lib/ui/Select.tsx +153 -126
- package/src/lib/ui/Separator.tsx +25 -0
- package/src/lib/ui/Tooltip.tsx +54 -32
- package/src/lib/util/createVariantComponent.tsx +31 -5
- package/src/lib/util/flattenAllOf.test.ts +637 -0
- package/src/lib/util/flattenAllOf.ts +101 -0
- package/src/lib/util/readFrontmatter.ts +13 -0
- package/dist/lib/plugins/openapi/playground/InlineInput.d.ts +0 -4
- package/dist/lib/plugins/openapi/playground/InlineInput.js +0 -3
- package/dist/lib/plugins/openapi/playground/InlineInput.js.map +0 -1
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.d.ts +0 -5
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js +0 -7
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js.map +0 -1
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.d.ts +0 -4
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js +0 -10
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js.map +0 -1
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.d.ts +0 -5
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js +0 -16
- package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js.map +0 -1
- package/lib/Button-DmS4u8Lj.js.map +0 -1
- package/lib/ErrorAlert-DE3Sf66a.js.map +0 -1
- package/lib/OperationList-DCJw6wXL.js +0 -5450
- package/lib/OperationList-DCJw6wXL.js.map +0 -1
- package/lib/RouteGuard-DhU3LRr1.js +0 -81
- package/lib/RouteGuard-DhU3LRr1.js.map +0 -1
- package/lib/RouterError-VDLnrFqF.js +0 -41
- package/lib/RouterError-VDLnrFqF.js.map +0 -1
- package/lib/SchemaView-D3hm65cc.js +0 -458
- package/lib/SchemaView-D3hm65cc.js.map +0 -1
- package/lib/Select-C1DeCqKv.js +0 -372
- package/lib/Select-C1DeCqKv.js.map +0 -1
- package/lib/SyntaxHighlight-zvlnSnHB.js.map +0 -1
- package/lib/circular-CSSuz-LS.js.map +0 -1
- package/lib/createServer-CLbcVLbK.js.map +0 -1
- package/lib/index-RNAxx6IF.js +0 -3364
- package/lib/index-RNAxx6IF.js.map +0 -1
- package/src/lib/plugins/openapi/playground/InlineInput.tsx +0 -6
- package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.tsx +0 -36
- package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.tsx +0 -25
- package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.tsx +0 -42
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../../util/cn.js";
|
|
3
|
+
import { OverflowOverlay } from "../CollapsibleCode.js";
|
|
4
|
+
export const NonHighlightedCode = ({ code, className, }) => (_jsx("pre", { className: cn("relative text-(--shiki-light) dark:text-(--shiki-dark) p-2 text-xs font-mono max-h-[250px] leading-4.5 bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg) overflow-hidden", className), children: _jsxs("code", { children: [code.split("\n").length > 13 && _jsx(OverflowOverlay, {}), code] }) }));
|
|
5
|
+
//# sourceMappingURL=NonHighlightedCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NonHighlightedCode.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/components/NonHighlightedCode.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,IAAI,EACJ,SAAS,GAIV,EAAE,EAAE,CAAC,CACJ,cACE,SAAS,EAAE,EAAE,CACX,wKAAwK,EACxK,SAAS,CACV,YAED,2BACG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,KAAC,eAAe,KAAG,EACnD,IAAI,IACA,GACH,CACP,CAAC"}
|
|
@@ -2,20 +2,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import * as Tabs from "@radix-ui/react-tabs";
|
|
3
3
|
import { useState } from "react";
|
|
4
4
|
import { Markdown } from "zudoku/components";
|
|
5
|
-
import {
|
|
5
|
+
import { Badge } from "zudoku/ui/Badge.js";
|
|
6
|
+
import { NativeSelect, NativeSelectOption } from "zudoku/ui/NativeSelect.js";
|
|
6
7
|
import { cn } from "zudoku/ui/util.js";
|
|
7
8
|
import { SchemaView } from "../schema/SchemaView.js";
|
|
8
9
|
export const ResponseContent = ({ responses, selectedResponse, onSelectResponse, }) => {
|
|
9
10
|
const [selectedMediaType, setSelectedMediaType] = useState(responses[0]?.content?.[0]?.mediaType ?? "");
|
|
10
11
|
const currentResponse = responses.find((r) => r.statusCode === selectedResponse) ?? responses[0];
|
|
11
|
-
const
|
|
12
|
+
const hideTabs = responses.length === 1 && responses.at(0)?.statusCode === "200";
|
|
13
|
+
const cardHeader = (_jsxs("div", { className: "flex flex-col text-muted-foreground", children: [_jsxs("div", { className: cn("flex flex-row items-center gap-2 justify-between", !hideTabs && "px-4 py-1.5 border-b"), children: [!hideTabs && (_jsx(Tabs.List, { className: "flex flex-row font-medium text-sm gap-4", children: responses.map((response) => (_jsx(Tabs.Trigger, { value: response.statusCode, className: cn("py-0.5 h-fit -mx-2 px-2 rounded-md", "data-[state=active]:dark:ring-1 data-[state=active]:dark:ring-border data-[state=active]:bg-background data-[state=active]:drop-shadow", "data-[state=active]:font-semibold data-[state=active]:text-foreground"), children: response.statusCode }, response.statusCode))) })), currentResponse?.content && currentResponse.content.length > 1 && (_jsx(NativeSelect, { value: selectedMediaType, onChange: (e) => setSelectedMediaType(e.target.value), className: "text-xs h-fit py-1 bg-background", children: currentResponse.content.map((c) => (_jsx(NativeSelectOption, { value: c.mediaType, children: c.mediaType }, c.mediaType))) }))] }), _jsxs("div", { className: "p-2 clear-both", children: [hideTabs && (_jsx(Badge, { variant: "outline", className: "float-start me-2", children: currentResponse?.statusCode })), currentResponse?.description && (_jsx(Markdown, { className: "text-sm text-muted-foreground max-w-none", content: currentResponse.description }))] })] }));
|
|
12
14
|
return (_jsx("div", { className: "flex flex-col gap-2", children: _jsx(Tabs.Root, { value: selectedResponse, onValueChange: (value) => {
|
|
13
15
|
onSelectResponse?.(value);
|
|
14
16
|
const newResponse = responses.find((r) => r.statusCode === value);
|
|
15
17
|
setSelectedMediaType(newResponse?.content?.[0]?.mediaType ?? "");
|
|
16
|
-
}, children: responses.map((response) => {
|
|
17
|
-
const content = response.content?.find((c) => c.mediaType === selectedMediaType);
|
|
18
|
-
return (_jsx(Tabs.Content, { value: response.statusCode, children: _jsx(SchemaView, { schema: content?.schema, cardHeader: cardHeader }) }, response.statusCode));
|
|
19
|
-
}) }) }));
|
|
18
|
+
}, children: responses.map((response) => (_jsx(Tabs.Content, { value: response.statusCode, children: _jsx(SchemaView, { schema: response.content?.find((content) => content.mediaType === selectedMediaType)?.schema, cardHeader: cardHeader }) }, response.statusCode))) }) }));
|
|
20
19
|
};
|
|
21
20
|
//# sourceMappingURL=ResponseContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseContent.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/components/ResponseContent.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"ResponseContent.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/components/ResponseContent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,14 @@ export type TransformExamplesFn = (options: {
|
|
|
47
47
|
operation: OperationsFragmentFragment;
|
|
48
48
|
type: "request" | "response";
|
|
49
49
|
}) => Content[];
|
|
50
|
+
export type GenerateCodeSnippetFn = (options: {
|
|
51
|
+
selectedLang: string;
|
|
52
|
+
selectedServer: string;
|
|
53
|
+
context: ZudokuContext;
|
|
54
|
+
auth: AuthState;
|
|
55
|
+
operation: OperationsFragmentFragment;
|
|
56
|
+
example?: any | null;
|
|
57
|
+
}) => string | false;
|
|
50
58
|
type BaseOasConfig = {
|
|
51
59
|
server?: string;
|
|
52
60
|
path?: string;
|
|
@@ -55,12 +63,17 @@ type BaseOasConfig = {
|
|
|
55
63
|
schemaImports?: SchemaImports;
|
|
56
64
|
options?: {
|
|
57
65
|
examplesLanguage?: string;
|
|
66
|
+
supportedLanguages?: {
|
|
67
|
+
value: string;
|
|
68
|
+
label: string;
|
|
69
|
+
}[];
|
|
58
70
|
disablePlayground?: boolean;
|
|
59
71
|
disableSidecar?: boolean;
|
|
60
72
|
showVersionSelect?: "always" | "if-available" | "hide";
|
|
61
73
|
expandAllTags?: boolean;
|
|
62
74
|
expandApiInformation?: boolean;
|
|
63
75
|
transformExamples?: TransformExamplesFn;
|
|
76
|
+
generateCodeSnippet?: GenerateCodeSnippetFn;
|
|
64
77
|
};
|
|
65
78
|
};
|
|
66
79
|
export type OasPluginConfig = BaseOasConfig & OasSource;
|
|
@@ -1,26 +1,78 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { FileInput } from "lucide-react";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDownIcon, FileInput, Grid2x2PlusIcon, PaperclipIcon, ScanTextIcon, XIcon, } from "lucide-react";
|
|
3
|
+
import { useRef, useState } from "react";
|
|
3
4
|
import { useFormContext } from "react-hook-form";
|
|
5
|
+
import { Button } from "zudoku/components";
|
|
4
6
|
import { Collapsible, CollapsibleContent } from "zudoku/ui/Collapsible.js";
|
|
7
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "zudoku/ui/DropdownMenu.js";
|
|
5
8
|
import { Textarea } from "zudoku/ui/Textarea.js";
|
|
6
9
|
import { cn } from "../../../util/cn.js";
|
|
10
|
+
import { humanFileSize } from "../../../util/humanFileSize.js";
|
|
7
11
|
import { CollapsibleHeader, CollapsibleHeaderTrigger, } from "./CollapsibleHeader.js";
|
|
8
12
|
import ExamplesDropdown from "./ExamplesDropdown.js";
|
|
13
|
+
import ParamsGrid from "./ParamsGrid.js";
|
|
14
|
+
import { MultipartField } from "./request-panel/MultipartField.js";
|
|
15
|
+
import { useKeyValueFieldManager } from "./request-panel/useKeyValueFieldManager.js";
|
|
9
16
|
export const BodyPanel = ({ content }) => {
|
|
10
|
-
const { register, setValue, watch } = useFormContext();
|
|
17
|
+
const { register, setValue, watch, control } = useFormContext();
|
|
11
18
|
const examples = (content ?? []).flatMap((e) => e.examples);
|
|
12
|
-
const headers = watch(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
const [headers, file, bodyMode, body, multipartFormFields] = watch([
|
|
20
|
+
"headers",
|
|
21
|
+
"file",
|
|
22
|
+
"bodyMode",
|
|
23
|
+
"body",
|
|
24
|
+
"multipartFormFields",
|
|
25
|
+
]);
|
|
26
|
+
const fileInputRef = useRef(null);
|
|
27
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
28
|
+
const handleFileSelect = (selectedFile) => {
|
|
29
|
+
setValue("file", selectedFile);
|
|
30
|
+
if (!selectedFile)
|
|
31
|
+
return;
|
|
32
|
+
setValue("headers", headers.filter((h) => h.name.toLowerCase() !== "content-type" || !h.active));
|
|
33
|
+
};
|
|
34
|
+
const handleFileInputChange = (e) => {
|
|
35
|
+
const selectedFile = e.target.files?.[0] ?? null;
|
|
36
|
+
handleFileSelect(selectedFile);
|
|
37
|
+
};
|
|
38
|
+
const handleDragOver = (e) => {
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
e.stopPropagation();
|
|
41
|
+
setIsDragging(true);
|
|
42
|
+
};
|
|
43
|
+
const handleDragLeave = (e) => {
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
e.stopPropagation();
|
|
46
|
+
setIsDragging(false);
|
|
47
|
+
};
|
|
48
|
+
const handleDrop = (e) => {
|
|
49
|
+
e.preventDefault();
|
|
50
|
+
e.stopPropagation();
|
|
51
|
+
setIsDragging(false);
|
|
52
|
+
const droppedFile = e.dataTransfer.files?.[0] ?? null;
|
|
53
|
+
handleFileSelect(droppedFile);
|
|
54
|
+
};
|
|
55
|
+
const manager = useKeyValueFieldManager({
|
|
56
|
+
control,
|
|
57
|
+
name: "multipartFormFields",
|
|
58
|
+
defaultValue: { name: "", value: "", active: false },
|
|
59
|
+
isEmpty: (item) => {
|
|
60
|
+
if (item.value instanceof File)
|
|
61
|
+
return false;
|
|
62
|
+
return !item.name && !item.value;
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
return (_jsxs(Collapsible, { defaultOpen: true, children: [_jsxs(CollapsibleHeaderTrigger, { className: "items-center", children: [_jsx(FileInput, { size: 16 }), _jsxs(CollapsibleHeader, { className: "flex items-center justify-between", children: ["Body", _jsxs("div", { className: "flex items-center", children: [_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "sm", className: "hover:bg-accent hover:brightness-95 gap-2", children: [bodyMode === "text" ? (_jsxs(_Fragment, { children: [_jsx(ScanTextIcon, { size: 14 }), "Text"] })) : bodyMode === "file" ? (_jsxs(_Fragment, { children: [_jsx(PaperclipIcon, { size: 14 }), "File"] })) : (_jsxs(_Fragment, { children: [_jsx(Grid2x2PlusIcon, { size: 14 }), "Multipart"] })), _jsx(ChevronDownIcon, { size: 14 })] }) }), _jsxs(DropdownMenuContent, { className: "min-w-40", children: [_jsxs(DropdownMenuItem, { onSelect: () => setValue("bodyMode", "text"), className: "gap-2", children: [_jsx(ScanTextIcon, { size: 14 }), _jsx("span", { className: "flex-1", children: "Text" }), _jsx("span", { children: body.length > 0 && (_jsx("div", { className: "w-1.5 h-1.5 bg-primary rounded-full" })) })] }), _jsxs(DropdownMenuItem, { onSelect: () => setValue("bodyMode", "file"), className: "gap-2", children: [_jsx(PaperclipIcon, { size: 14 }), _jsx("span", { className: "flex-1", children: "File" }), _jsx("span", { children: file && (_jsx("div", { className: "w-1.5 h-1.5 bg-primary rounded-full" })) })] }), _jsxs(DropdownMenuItem, { onSelect: () => setValue("bodyMode", "multipart"), className: "gap-2", children: [_jsx(Grid2x2PlusIcon, { size: 14, strokeWidth: 1.5 }), _jsx("span", { className: "flex-1", children: "Multipart" }), _jsx("span", { children: multipartFormFields?.some((field) => field.active) && (_jsx("div", { className: "w-1.5 h-1.5 bg-primary rounded-full" })) })] })] })] }), _jsx("input", { ref: fileInputRef, type: "file", className: "hidden", onChange: handleFileInputChange }), _jsx("div", { className: "w-px mx-1 h-5 bg-border" }), content && examples.length > 0 ? (_jsx(ExamplesDropdown, { examples: content, onSelect: (example, mediaType) => {
|
|
66
|
+
setValue("body", JSON.stringify(example.value, null, 2));
|
|
67
|
+
setValue("headers", [
|
|
68
|
+
...headers.filter((h) => h.name !== "Content-Type"),
|
|
69
|
+
{
|
|
70
|
+
name: "Content-Type",
|
|
71
|
+
value: mediaType,
|
|
72
|
+
active: true,
|
|
73
|
+
},
|
|
74
|
+
]);
|
|
75
|
+
} })) : (_jsx("div", {}))] })] })] }), _jsxs(CollapsibleContent, { className: "CollapsibleContent flex flex-col gap-2", children: [bodyMode === "text" && (_jsx(Textarea, { ...register("body"), className: cn("w-full px-4 py-2.5 h-64 font-mono md:text-xs border-none rounded-none focus-visible:ring-0 transition-colors"), placeholder: "Body content" })), bodyMode === "file" && (_jsxs("div", { role: "region", "aria-label": "File upload drop zone", className: cn("flex flex-col items-center justify-center gap-4 min-h-[300px]"), onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [_jsx("button", { type: "button", onClick: () => fileInputRef.current?.click(), className: cn("flex items-center justify-center gap-2 rounded-full size-20 p-0 border border-dashed border-muted-foreground/50 hover:bg-accent/75 transition-colors", (file || isDragging) && "border-solid", isDragging && "bg-accent border-primary"), children: _jsx(PaperclipIcon, { className: cn("text-muted-foreground", isDragging && "text-primary"), size: 30 }) }), file ? (_jsxs("div", { className: "flex items-center justify-between gap-2 px-2 py-1.5 rounded-md border", children: [_jsxs("span", { className: "text-sm truncate", title: file.name, children: [file.name, " ", _jsxs("span", { className: "text-muted-foreground", children: ["(", humanFileSize(file.size), ")"] })] }), _jsx(Button, { type: "button", variant: "ghost", size: "icon-xxs", onClick: () => handleFileSelect(null), children: _jsx(XIcon, { size: 14 }) })] })) : (_jsx("span", { className: "text-lg font-semibold text-muted-foreground", children: "Select or drop a file" }))] })), bodyMode === "multipart" && (_jsx(ParamsGrid, { children: manager.fields.map((field, index) => (_jsx(MultipartField, { index: index, manager: manager }, field.id))) }))] })] }));
|
|
24
76
|
};
|
|
25
77
|
export default BodyPanel;
|
|
26
78
|
//# sourceMappingURL=BodyPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyPanel.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/BodyPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"BodyPanel.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/BodyPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { ChevronsDownUpIcon, ChevronsUpDownIcon } from "lucide-react";
|
|
3
3
|
import { CollapsibleTrigger } from "zudoku/ui/Collapsible.js";
|
|
4
4
|
import { cn } from "../../../util/cn.js";
|
|
5
5
|
export const CollapsibleHeaderTrigger = ({ children, className, }) => {
|
|
6
|
-
return (_jsxs("div", { className: cn("grid grid-cols-[max-
|
|
6
|
+
return (_jsxs("div", { className: cn("grid grid-cols-[max-content_1fr_max-content] items-center gap-2 group bg-muted w-full h-10 ps-4 pe-2 border-b", className), children: [children, _jsxs(CollapsibleTrigger, { className: cn("flex items-center gap-4 group bg-muted w-full p-2 hover:bg-accent hover:brightness-95 opacity-75 rounded-md", className), children: [_jsx(ChevronsDownUpIcon, { className: "group-data-[state=closed]:hidden shrink-0", size: 14 }), _jsx(ChevronsUpDownIcon, { className: "group-data-[state=open]:hidden shrink-0", size: 14 })] })] }));
|
|
7
7
|
};
|
|
8
8
|
export const CollapsibleHeader = ({ children, className, }) => {
|
|
9
9
|
return (_jsx("span", { className: cn("font-semibold w-full text-start", className), children: children }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsibleHeader.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/CollapsibleHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"CollapsibleHeader.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/CollapsibleHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAEzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACvC,QAAQ,EACR,SAAS,GAIV,EAAE,EAAE;IACH,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,+GAA+G,EAC/G,SAAS,CACV,aAEA,QAAQ,EACT,MAAC,kBAAkB,IACjB,SAAS,EAAE,EAAE,CACX,6GAA6G,EAC7G,SAAS,CACV,aAED,KAAC,kBAAkB,IACjB,SAAS,EAAC,2CAA2C,EACrD,IAAI,EAAE,EAAE,GACR,EACF,KAAC,kBAAkB,IACjB,SAAS,EAAC,yCAAyC,EACnD,IAAI,EAAE,EAAE,GACR,IACiB,IACjB,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,QAAQ,EACR,SAAS,GAIV,EAAE,EAAE;IACH,OAAO,CACL,eAAM,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,SAAS,CAAC,YAC9D,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { PlusCircleIcon } from "lucide-react";
|
|
|
3
3
|
import { Button } from "zudoku/ui/Button.js";
|
|
4
4
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "zudoku/ui/DropdownMenu.js";
|
|
5
5
|
const ExamplesDropdown = ({ examples, onSelect, }) => {
|
|
6
|
-
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "sm", className: "hover:bg-accent hover:brightness-95", children: ["Use Example
|
|
6
|
+
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "sm", className: "hover:bg-accent hover:brightness-95 gap-2", children: ["Use Example", _jsx(PlusCircleIcon, { size: 14 })] }) }), _jsx(DropdownMenuContent, { className: "max-w-72", children: examples.map((mediaTypeObject) => (_jsxs("div", { children: [_jsx(DropdownMenuLabel, { children: mediaTypeObject.mediaType }), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuGroup, { children: mediaTypeObject.examples?.map((example) => (_jsx(DropdownMenuItem, { onSelect: () => onSelect(example, mediaTypeObject.mediaType), children: _jsx("span", { className: "line-clamp-1", title: example.summary ?? example.name, children: example.summary ?? example.name }) }, example.name))) })] }, mediaTypeObject.mediaType))) })] }));
|
|
7
7
|
};
|
|
8
8
|
export default ExamplesDropdown;
|
|
9
9
|
//# sourceMappingURL=ExamplesDropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExamplesDropdown.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/ExamplesDropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,gBAAgB,GAAG,CAAC,EACxB,QAAQ,EACR,QAAQ,GAIT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"ExamplesDropdown.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/ExamplesDropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,gBAAgB,GAAG,CAAC,EACxB,QAAQ,EACR,QAAQ,GAIT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,2CAA2C,4BAGrD,KAAC,cAAc,IAAC,IAAI,EAAE,EAAE,GAAI,IACrB,GACW,EACtB,KAAC,mBAAmB,IAAC,SAAS,EAAC,UAAU,YACtC,QAAQ,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CACjC,0BACE,KAAC,iBAAiB,cAAE,eAAe,CAAC,SAAS,GAAqB,EAClE,KAAC,qBAAqB,KAAG,EACzB,KAAC,iBAAiB,cACf,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC1C,KAAC,gBAAgB,IAEf,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,YAE5D,eACE,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,YAErC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,GAC3B,IARF,OAAO,CAAC,IAAI,CASA,CACpB,CAAC,GACgB,KAjBZ,eAAe,CAAC,SAAS,CAkB7B,CACP,CAAC,GACkB,IACT,CAChB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,73 +1,34 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
2
|
-
import { CircleAlertIcon, LockIcon,
|
|
3
|
-
import {
|
|
4
|
-
import { Controller, useFieldArray, useFormContext, } from "react-hook-form";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CircleAlertIcon, LockIcon, TableOfContentsIcon } from "lucide-react";
|
|
3
|
+
import { useFormContext } from "react-hook-form";
|
|
5
4
|
import { Checkbox } from "zudoku/ui/Checkbox.js";
|
|
6
5
|
import { Collapsible, CollapsibleContent } from "zudoku/ui/Collapsible.js";
|
|
7
6
|
import { Tooltip, TooltipContent, TooltipTrigger } from "zudoku/ui/Tooltip.js";
|
|
8
7
|
import { Autocomplete } from "../../../components/Autocomplete.js";
|
|
9
|
-
import { Button } from "../../../ui/Button.js";
|
|
10
|
-
import { Input } from "../../../ui/Input.js";
|
|
11
8
|
import { cn } from "../../../util/cn.js";
|
|
12
9
|
import { CollapsibleHeader, CollapsibleHeaderTrigger, } from "./CollapsibleHeader.js";
|
|
13
|
-
import ParamsGrid, { ParamsGridItem } from "./ParamsGrid.js";
|
|
10
|
+
import ParamsGrid, { ParamsGridInput, ParamsGridItem, ParamsGridRemoveButton, } from "./ParamsGrid.js";
|
|
11
|
+
import { useKeyValueFieldManager } from "./request-panel/useKeyValueFieldManager.js";
|
|
12
|
+
// biome-ignore format: Easier to read
|
|
14
13
|
const headerOptions = Object.freeze([
|
|
15
|
-
"Accept",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"Cache-Control",
|
|
20
|
-
"Connection",
|
|
21
|
-
"Content-Disposition",
|
|
22
|
-
"Content-Encoding",
|
|
23
|
-
"Content-Language",
|
|
24
|
-
"Content-Length",
|
|
25
|
-
"Content-Range",
|
|
26
|
-
"Content-Security-Policy",
|
|
27
|
-
"Content-Type",
|
|
28
|
-
"Cookie",
|
|
29
|
-
"Date",
|
|
30
|
-
"ETag",
|
|
31
|
-
"Expires",
|
|
32
|
-
"Host",
|
|
33
|
-
"If-Modified-Since",
|
|
34
|
-
"Location",
|
|
35
|
-
"Origin",
|
|
36
|
-
"Pragma",
|
|
37
|
-
"Referer",
|
|
38
|
-
"Set-Cookie",
|
|
39
|
-
"User-Agent",
|
|
14
|
+
"Accept", "Accept-Encoding", "Accept-Language", "Authorization", "Cache-Control", "Connection",
|
|
15
|
+
"Content-Disposition", "Content-Encoding", "Content-Language", "Content-Length", "Content-Range",
|
|
16
|
+
"Content-Security-Policy", "Content-Type", "Cookie", "Date", "ETag", "Expires", "Host",
|
|
17
|
+
"If-Modified-Since", "Location", "Origin", "Pragma", "Referer", "Set-Cookie", "User-Agent",
|
|
40
18
|
"X-Requested-With",
|
|
41
19
|
]);
|
|
42
20
|
export const Headers = ({ control, schemaHeaders, lockedHeaders, }) => {
|
|
43
|
-
const {
|
|
21
|
+
const { watch, formState } = useFormContext();
|
|
22
|
+
const watchedHeaders = watch("headers");
|
|
23
|
+
const manager = useKeyValueFieldManager({
|
|
44
24
|
control,
|
|
45
25
|
name: "headers",
|
|
26
|
+
defaultValue: { name: "", value: "", active: false },
|
|
46
27
|
});
|
|
47
|
-
const { setValue, watch, formState } = useFormContext();
|
|
48
|
-
const valueRefs = useRef([]);
|
|
49
|
-
const nameRefs = useRef([]);
|
|
50
|
-
const watchedHeaders = watch("headers");
|
|
51
|
-
const addNewHeader = useCallback((e) => {
|
|
52
|
-
e?.stopPropagation();
|
|
53
|
-
append({ name: "", value: "", active: false }, { shouldFocus: true });
|
|
54
|
-
}, [append]);
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
if (watchedHeaders.length === 0) {
|
|
57
|
-
addNewHeader();
|
|
58
|
-
}
|
|
59
|
-
}, [watchedHeaders, addNewHeader]);
|
|
60
|
-
const handleHeaderEnter = (index) => {
|
|
61
|
-
valueRefs.current[index]?.focus();
|
|
62
|
-
};
|
|
63
|
-
const handleValueEnter = (index) => {
|
|
64
|
-
addNewHeader();
|
|
65
|
-
requestAnimationFrame(() => nameRefs.current[index + 1]?.focus());
|
|
66
|
-
};
|
|
67
28
|
const missingHeaders = schemaHeaders
|
|
68
29
|
.filter((h) => !watchedHeaders.some((f) => f.name === h.name))
|
|
69
30
|
.map(({ name }) => name);
|
|
70
|
-
const hiddenHeadersIndex = fields.flatMap((f, index) => {
|
|
31
|
+
const hiddenHeadersIndex = manager.fields.flatMap((f, index) => {
|
|
71
32
|
const keep = !lockedHeaders
|
|
72
33
|
?.map((h) => h.toLowerCase())
|
|
73
34
|
.includes(f.name.toLowerCase());
|
|
@@ -80,37 +41,16 @@ export const Headers = ({ control, schemaHeaders, lockedHeaders, }) => {
|
|
|
80
41
|
active: true,
|
|
81
42
|
locked: true,
|
|
82
43
|
})) ?? [];
|
|
83
|
-
return (_jsxs(Collapsible, { defaultOpen: true, children: [_jsxs(CollapsibleHeaderTrigger, { children: [_jsx(TableOfContentsIcon, { size:
|
|
84
|
-
return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(ParamsGridItem, { className: "opacity-50 cursor-not-allowed font-mono text-xs min-h-10", children: [_jsx(LockIcon, { size: 16 }), _jsx(Input, { value: field.name, disabled: true, className: "w-full border-0 p-0 m-0 shadow-none text-xs focus-visible:ring-0 font-mono" }), _jsx("div", { children: field.value })] }, field.id) }), _jsx(TooltipContent, { alignOffset: 10, side: "bottom", align: "start", children: _jsx("p", { children: "This header is set by the selected authentication." }) })] }, field.id));
|
|
85
|
-
}), fields.map((field, i) => {
|
|
44
|
+
return (_jsxs(Collapsible, { defaultOpen: true, children: [_jsxs(CollapsibleHeaderTrigger, { children: [_jsx(TableOfContentsIcon, { size: 14 }), _jsx(CollapsibleHeader, { children: "Headers" })] }), _jsx(CollapsibleContent, { className: "CollapsibleContent", children: _jsx("div", { className: "flex flex-col gap-2", children: _jsx("div", { className: "overflow-hidden", children: _jsxs(ParamsGrid, { children: [lockedHeaderFields.map((field) => (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(ParamsGridItem, { className: "opacity-50 cursor-not-allowed font-mono text-xs min-h-10", children: [_jsx(LockIcon, { size: 16 }), _jsx(ParamsGridInput, { value: field.name, disabled: true }), _jsx("div", { children: field.value })] }, field.id) }), _jsx(TooltipContent, { alignOffset: 10, side: "bottom", align: "start", children: _jsx("p", { children: "This header is set by the selected authentication." }) })] }, field.id))), manager.fields.map((field, i) => {
|
|
86
45
|
const currentSchemaHeader = schemaHeaders.find((h) => h.name === watchedHeaders.at(i)?.name);
|
|
87
|
-
|
|
46
|
+
const hasEnum = currentSchemaHeader?.enum &&
|
|
47
|
+
currentSchemaHeader.enum.length > 0;
|
|
48
|
+
const isHidden = hiddenHeadersIndex.includes(i);
|
|
49
|
+
const nameInputProps = manager.getNameInputProps(i);
|
|
50
|
+
const valueInputProps = manager.getValueInputProps(i);
|
|
51
|
+
return (_jsxs(ParamsGridItem, { className: cn(isHidden && "text-amber-600", isHidden &&
|
|
88
52
|
!formState.dirtyFields.headers?.[i]?.value &&
|
|
89
|
-
"hidden"), children: [_jsx(
|
|
90
|
-
field.onChange(checked);
|
|
91
|
-
} }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(CircleAlertIcon, { className: cn("text-amber-600", !hiddenHeadersIndex.includes(i) && "hidden"), size: 16 }) }), _jsx(TooltipContent, { alignOffset: 10, side: "bottom", align: "start", children: _jsx("p", { children: "This header will be overwritten by the selected authentication." }) })] })] })) }), _jsx(Controller, { control: control, name: `headers.${i}.name`, render: ({ field }) => (_jsx(Autocomplete, { ...field, placeholder: "Name", className: "border-0 p-0 m-0 shadow-none focus-visible:ring-0 bg-transparent hover:bg-transparent text-xs font-mono", options: [...missingHeaders, ...headerOptions], onEnterPress: () => handleHeaderEnter(i), onChange: (e) => {
|
|
92
|
-
field.onChange(e);
|
|
93
|
-
setValue(`headers.${i}.active`, true);
|
|
94
|
-
}, ref: (el) => {
|
|
95
|
-
nameRefs.current[i] = el;
|
|
96
|
-
} })) }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Controller, { control: control, name: `headers.${i}.value`, render: ({ field }) => {
|
|
97
|
-
const hasEnum = currentSchemaHeader?.enum &&
|
|
98
|
-
currentSchemaHeader.enum.length > 0;
|
|
99
|
-
if (!hasEnum) {
|
|
100
|
-
return (_jsx(Input, { placeholder: "Value", className: "w-full truncate border-0 p-0 m-0 shadow-none text-xs focus-visible:ring-0 font-mono", autoComplete: "off", ...field, ref: (el) => {
|
|
101
|
-
valueRefs.current[i] = el;
|
|
102
|
-
}, onKeyDown: (e) => {
|
|
103
|
-
if (e.key === "Enter" &&
|
|
104
|
-
e.currentTarget.value.trim()) {
|
|
105
|
-
handleValueEnter(i);
|
|
106
|
-
}
|
|
107
|
-
} }));
|
|
108
|
-
}
|
|
109
|
-
return (_jsx(Autocomplete, { shouldFilter: false, value: field.value, options: currentSchemaHeader.enum ?? [], onChange: (e) => {
|
|
110
|
-
field.onChange(e);
|
|
111
|
-
setValue(`headers.${i}.active`, true);
|
|
112
|
-
}, className: "border-0 p-0 m-0 shadow-none focus-visible:ring-0 bg-transparent hover:bg-transparent text-xs font-mono" }));
|
|
113
|
-
} }), _jsx(Button, { size: "icon-xs", variant: "ghost", className: "text-muted-foreground opacity-0 group-hover:brightness-95 group-hover:opacity-100", onClick: () => remove(i), type: "button", children: _jsx(XIcon, { size: 16 }) })] })] }, field.id));
|
|
53
|
+
"hidden"), children: [_jsx(Checkbox, { className: cn(isHidden && "hidden"), ...manager.getCheckboxProps(i) }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(CircleAlertIcon, { className: cn("text-amber-600", !isHidden && "hidden"), size: 16 }) }), _jsx(TooltipContent, { alignOffset: 10, side: "bottom", align: "start", children: _jsx("p", { children: "This header will be overwritten by the selected authentication." }) })] }), _jsx(ParamsGridInput, { asChild: true, children: _jsx(Autocomplete, { ...nameInputProps, value: String(manager.getValue(i, "name")), placeholder: "Name", options: [...missingHeaders, ...headerOptions], onChange: (v) => manager.setValue(i, "name", v), onSelect: (v) => manager.setValue(i, "name", v, { focus: "next" }) }) }), _jsxs("div", { className: "flex items-center gap-2", children: [!hasEnum ? (_jsx(ParamsGridInput, { placeholder: "Value", autoComplete: "off", ...valueInputProps })) : (_jsx(ParamsGridInput, { asChild: true, children: _jsx(Autocomplete, { ...valueInputProps, value: String(manager.getValue(i, "value")), shouldFilter: false, options: currentSchemaHeader.enum ?? [], onChange: (v) => manager.setValue(i, "value", v), onSelect: (v) => manager.setValue(i, "value", v, { focus: "next" }) }) })), _jsx(ParamsGridRemoveButton, { ...manager.getRemoveButtonProps(i) })] })] }, field.id));
|
|
114
54
|
})] }) }) }) })] }));
|
|
115
55
|
};
|
|
116
56
|
//# sourceMappingURL=Headers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/Headers.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/Headers.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAgB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,UAAU,EAAE,EACjB,eAAe,EACf,cAAc,EACd,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,sCAAsC;AACtC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY;IAC9F,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe;IAChG,yBAAyB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IACtF,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAC1F,kBAAkB;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACtB,OAAO,EACP,aAAa,EACb,aAAa,GAKd,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,cAAc,EAAkB,CAAC;IAC9D,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAExC,MAAM,OAAO,GAAG,uBAAuB,CAA4B;QACjE,OAAO;QACP,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;KACrD,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,aAAa;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAE3B,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC7D,MAAM,IAAI,GAAG,CAAC,aAAa;YACzB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC5B,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,kBAAkB,GACtB,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC;QACP,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;KACb,CAAC,CAAC,IAAI,EAAE,CAAC;IAEZ,OAAO,CACL,MAAC,WAAW,IAAC,WAAW,mBACtB,MAAC,wBAAwB,eACvB,KAAC,mBAAmB,IAAC,IAAI,EAAE,EAAE,GAAI,EACjC,KAAC,iBAAiB,0BAA4B,IACrB,EAC3B,KAAC,kBAAkB,IAAC,SAAS,EAAC,oBAAoB,YAChD,cAAK,SAAS,EAAC,qBAAqB,YAClC,cAAK,SAAS,EAAC,iBAAiB,YAC9B,MAAC,UAAU,eACR,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACjC,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,MAAC,cAAc,IAEb,SAAS,EAAC,0DAA0D,aAEpE,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EACtB,KAAC,eAAe,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,SAAG,EAC/C,wBAAM,KAAK,CAAC,KAAK,GAAO,KALnB,KAAK,CAAC,EAAE,CAME,GACF,EACjB,KAAC,cAAc,IAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO,YAC1D,6EAAyD,GAC1C,KAbL,KAAK,CAAC,EAAE,CAcZ,CACX,CAAC,EACD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;oCAC/B,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAC7C,CAAC;oCACF,MAAM,OAAO,GACX,mBAAmB,EAAE,IAAI;wCACzB,mBAAmB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oCACtC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oCAChD,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;oCACpD,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;oCAEtD,OAAO,CACL,MAAC,cAAc,IAEb,SAAS,EAAE,EAAE,CACX,QAAQ,IAAI,gBAAgB,EAC5B,QAAQ;4CACN,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK;4CAC1C,QAAQ,CACX,aAED,KAAC,QAAQ,IACP,SAAS,EAAE,EAAE,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAC/B,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAC/B,EACF,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,KAAC,eAAe,IACd,SAAS,EAAE,EAAE,CACX,gBAAgB,EAChB,CAAC,QAAQ,IAAI,QAAQ,CACtB,EACD,IAAI,EAAE,EAAE,GACR,GACa,EACjB,KAAC,cAAc,IACb,WAAW,EAAE,EAAE,EACf,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,OAAO,YAEb,0FAGI,GACW,IACT,EACV,KAAC,eAAe,IAAC,OAAO,kBACtB,KAAC,YAAY,OACP,cAAc,EAClB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC1C,WAAW,EAAC,MAAM,EAClB,OAAO,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,aAAa,CAAC,EAC9C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAC/C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CACd,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAEnD,GACc,EAClB,eAAK,SAAS,EAAC,yBAAyB,aACrC,CAAC,OAAO,CAAC,CAAC,CAAC,CACV,KAAC,eAAe,IACd,WAAW,EAAC,OAAO,EACnB,YAAY,EAAC,KAAK,KACd,eAAe,GACnB,CACH,CAAC,CAAC,CAAC,CACF,KAAC,eAAe,IAAC,OAAO,kBACtB,KAAC,YAAY,OACP,eAAe,EACnB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAC3C,YAAY,EAAE,KAAK,EACnB,OAAO,EAAE,mBAAmB,CAAC,IAAI,IAAI,EAAE,EACvC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAChD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CACd,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAEpD,GACc,CACnB,EACD,KAAC,sBAAsB,OACjB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,GACnC,IACE,KArED,KAAK,CAAC,EAAE,CAsEE,CAClB,CAAC;gCACJ,CAAC,CAAC,IACS,GACT,GACF,GACa,IACT,CACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
declare const ParamsGrid: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
|
|
2
2
|
className?: import("clsx").ClassValue;
|
|
3
3
|
asChild?: boolean;
|
|
4
|
-
}, "ref"> & import("react").RefAttributes<
|
|
4
|
+
}, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
5
5
|
export declare const ParamsGridItem: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
|
|
6
6
|
className?: import("clsx").ClassValue;
|
|
7
7
|
asChild?: boolean;
|
|
8
|
-
}, "ref"> & import("react").RefAttributes<
|
|
8
|
+
}, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
9
|
+
export declare const ParamsGridInput: import("react").ForwardRefExoticComponent<Omit<import("react").InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement> & {
|
|
10
|
+
className?: import("clsx").ClassValue;
|
|
11
|
+
asChild?: boolean;
|
|
12
|
+
}, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
|
|
13
|
+
export declare const ParamsGridRemoveButton: ({ onClick, className, }: {
|
|
14
|
+
onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;
|
|
15
|
+
className?: string;
|
|
16
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
9
17
|
export default ParamsGrid;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { XIcon } from "lucide-react";
|
|
3
|
+
import { Button } from "zudoku/components";
|
|
4
|
+
import { Input } from "zudoku/ui/Input.js";
|
|
5
|
+
import { cn } from "../../../util/cn.js";
|
|
1
6
|
import createVariantComponent from "../../../util/createVariantComponent.js";
|
|
2
|
-
const ParamsGrid = createVariantComponent("div", "grid grid-cols-[min-content_2fr_3fr] items-center gap-x-5");
|
|
7
|
+
const ParamsGrid = createVariantComponent("div", "grid grid-cols-[min-content_2fr_3fr] items-center gap-x-5 [&>*:last-child_[data-slot=remove-button]]:invisible");
|
|
3
8
|
export const ParamsGridItem = createVariantComponent("div", "group h-9 hover:bg-accent/75 ps-4 pe-2 grid col-span-full grid-cols-subgrid items-center border-b");
|
|
9
|
+
export const ParamsGridInput = createVariantComponent(Input, "w-full truncate border-0 p-0 m-0 shadow-none text-xs focus-visible:ring-0 font-mono");
|
|
10
|
+
export const ParamsGridRemoveButton = ({ onClick, className, }) => (_jsx(Button, { size: "icon-xs", variant: "ghost", className: cn("text-muted-foreground opacity-0 group-hover:brightness-95 focus-visible:opacity-100 group-hover:opacity-100", className), onClick: onClick, type: "button", "data-slot": "remove-button", children: _jsx(XIcon, { size: 14 }) }));
|
|
4
11
|
export default ParamsGrid;
|
|
5
12
|
//# sourceMappingURL=ParamsGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParamsGrid.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/ParamsGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,yCAAyC,CAAC;AAE7E,MAAM,UAAU,GAAG,sBAAsB,CACvC,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"ParamsGrid.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/ParamsGrid.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,sBAAsB,MAAM,yCAAyC,CAAC;AAE7E,MAAM,UAAU,GAAG,sBAAsB,CACvC,KAAK,EACL,gHAAgH,CACjH,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAClD,KAAK,EACL,mGAAmG,CACpG,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CACnD,KAAK,EACL,qFAAqF,CACtF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,OAAO,EACP,SAAS,GAIV,EAAE,EAAE,CAAC,CACJ,KAAC,MAAM,IACL,IAAI,EAAC,SAAS,EACd,OAAO,EAAC,OAAO,EACf,SAAS,EAAE,EAAE,CACX,6GAA6G,EAC7G,SAAS,CACV,EACD,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,QAAQ,eAEH,eAAe,YAEzB,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,GACZ,CACV,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Controller, useFieldArray } from "react-hook-form";
|
|
3
|
-
import { Input } from "../../../ui/Input.js";
|
|
4
3
|
import { ColorizedParam } from "../ColorizedParam.js";
|
|
5
|
-
import ParamsGrid, { ParamsGridItem } from "./ParamsGrid.js";
|
|
4
|
+
import ParamsGrid, { ParamsGridInput, ParamsGridItem } from "./ParamsGrid.js";
|
|
6
5
|
export const PathParams = ({ control, url, }) => {
|
|
7
6
|
const { fields } = useFieldArray({
|
|
8
7
|
control,
|
|
9
8
|
name: "pathParams",
|
|
10
9
|
});
|
|
11
10
|
const sortedFields = [...fields].sort((a, b) => url.indexOf(`{${a.name}}`) - url.indexOf(`{${b.name}}`));
|
|
12
|
-
return (_jsx(
|
|
11
|
+
return (_jsx(ParamsGrid, { children: sortedFields.map((field, i) => (_jsxs(ParamsGridItem, { children: [_jsx(Controller, { control: control, name: `pathParams.${i}.name`, render: () => (_jsx("div", { className: "flex items-center", children: _jsx(ColorizedParam, { slug: field.name, name: field.name, className: "font-mono text-xs px-2" }) })) }), _jsx("div", { className: "flex justify-between items-center col-span-2", children: _jsx(Controller, { control: control, name: `pathParams.${i}.value`, render: ({ field }) => (_jsx(ParamsGridInput, { ...field, required: true, placeholder: "Value" })) }) })] }, field.id))) }));
|
|
13
12
|
};
|
|
14
13
|
//# sourceMappingURL=PathParams.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathParams.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/PathParams.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PathParams.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/PathParams.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,UAAU,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG9E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,OAAO,EACP,GAAG,GAIJ,EAAE,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAA+B;QAC7D,OAAO;QACP,IAAI,EAAE,YAAY;KACnB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAClE,CAAC;IAEF,OAAO,CACL,KAAC,UAAU,cACR,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9B,MAAC,cAAc,eACb,KAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,CAAC,OAAO,EAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,cAAK,SAAS,EAAC,mBAAmB,YAChC,KAAC,cAAc,IACb,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAC,wBAAwB,GAClC,GACE,CACP,GACD,EAEF,cAAK,SAAS,EAAC,8CAA8C,YAC3D,KAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,CAAC,QAAQ,EAC7B,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACrB,KAAC,eAAe,OAAK,KAAK,EAAE,QAAQ,QAAC,WAAW,EAAC,OAAO,GAAG,CAC5D,GACD,GACE,KAvBa,KAAK,CAAC,EAAE,CAwBZ,CAClB,CAAC,GACS,CACd,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -23,6 +23,13 @@ export type PathParam = {
|
|
|
23
23
|
};
|
|
24
24
|
export type PlaygroundForm = {
|
|
25
25
|
body: string;
|
|
26
|
+
bodyMode?: "text" | "file" | "multipart";
|
|
27
|
+
file?: File | null;
|
|
28
|
+
multipartFormFields: Array<{
|
|
29
|
+
name: string;
|
|
30
|
+
value: File | string;
|
|
31
|
+
active: boolean;
|
|
32
|
+
}>;
|
|
26
33
|
queryParams: Array<{
|
|
27
34
|
name: string;
|
|
28
35
|
value: string;
|