zudoku 0.25.2 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/demo.js +0 -1
- package/dist/app/demo.js.map +1 -1
- package/dist/app/standalone.js +0 -1
- package/dist/app/standalone.js.map +1 -1
- package/dist/cli/dev/handler.js +2 -2
- package/dist/cli/dev/handler.js.map +1 -1
- package/dist/config/validators/InputSidebarSchema.d.ts +2 -2
- package/dist/config/validators/common.d.ts +28 -28
- package/dist/config/validators/icon-types.d.ts +1 -1
- package/dist/config/validators/validate.d.ts +16 -16
- package/dist/lib/components/navigation/SidebarCategory.js +1 -1
- package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
- package/dist/lib/oas/graphql/index.d.ts +3 -0
- package/dist/lib/oas/graphql/index.js +12 -13
- package/dist/lib/oas/graphql/index.js.map +1 -1
- package/dist/lib/plugins/openapi/ColorizedParam.d.ts +10 -2
- package/dist/lib/plugins/openapi/ColorizedParam.js +16 -7
- package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +3 -0
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js +3 -2
- package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js +2 -0
- package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js.map +1 -1
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +3 -2
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +3 -6
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +2 -6
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js +9 -6
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/SidecarBox.js +1 -1
- package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/{ExampleDisplay.d.ts → SidecarExamples.d.ts} +3 -6
- package/dist/lib/plugins/openapi/SidecarExamples.js +65 -0
- package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -0
- package/dist/lib/plugins/openapi/client/GraphQLClient.d.ts +1 -1
- package/dist/lib/plugins/openapi/client/GraphQLClient.js +22 -93
- package/dist/lib/plugins/openapi/client/GraphQLClient.js.map +1 -1
- package/dist/lib/plugins/openapi/client/createServer.d.ts +2 -1
- package/dist/lib/plugins/openapi/client/createServer.js +5 -2
- package/dist/lib/plugins/openapi/client/createServer.js.map +1 -1
- package/dist/lib/plugins/openapi/client/useCreateQuery.d.ts +1 -1
- package/dist/lib/plugins/openapi/client/useCreateQuery.js +2 -13
- package/dist/lib/plugins/openapi/client/useCreateQuery.js.map +1 -1
- package/dist/lib/plugins/openapi/index.d.ts +2 -1
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/EnumSelector.d.ts +8 -0
- package/dist/lib/plugins/openapi/playground/EnumSelector.js +21 -0
- package/dist/lib/plugins/openapi/playground/EnumSelector.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/PathParams.js +9 -4
- package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.d.ts +3 -0
- package/dist/lib/plugins/openapi/playground/Playground.js +5 -2
- package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/QueryParams.js +23 -8
- package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaComponents.js +2 -1
- package/dist/lib/plugins/openapi/schema/SchemaComponents.js.map +1 -1
- package/dist/lib/plugins/openapi/util/generateSchemaExample.js +19 -11
- package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
- package/dist/lib/ui/Badge.d.ts +1 -1
- package/dist/lib/ui/Badge.js +2 -1
- package/dist/lib/ui/Badge.js.map +1 -1
- package/dist/lib/ui/Button.d.ts +1 -1
- package/dist/lib/ui/Checkbox.d.ts +8 -2
- package/dist/lib/ui/Checkbox.js +13 -1
- package/dist/lib/ui/Checkbox.js.map +1 -1
- package/dist/lib/util/traverse.d.ts +8 -1
- package/dist/lib/util/traverse.js +7 -3
- package/dist/lib/util/traverse.js.map +1 -1
- package/dist/vite/api/schema-codegen.d.ts +12 -0
- package/dist/vite/api/schema-codegen.js +62 -0
- package/dist/vite/api/schema-codegen.js.map +1 -0
- package/dist/vite/api/schema-codegen.test.d.ts +1 -0
- package/dist/vite/api/schema-codegen.test.js +247 -0
- package/dist/vite/api/schema-codegen.test.js.map +1 -0
- package/dist/vite/config.js +0 -7
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/config.test.js +5 -1
- package/dist/vite/config.test.js.map +1 -1
- package/dist/vite/plugin-api.js +110 -82
- package/dist/vite/plugin-api.js.map +1 -1
- package/dist/vite/plugin-component.js +0 -1
- package/dist/vite/plugin-component.js.map +1 -1
- package/lib/{AnchorLink-DFZZbmvr.js → AnchorLink-_Vu02ceN.js} +3 -3
- package/lib/{AnchorLink-DFZZbmvr.js.map → AnchorLink-_Vu02ceN.js.map} +1 -1
- package/lib/{AuthenticationPlugin-D7G3me8L.js → AuthenticationPlugin-DNXBcsVN.js} +4 -4
- package/lib/{AuthenticationPlugin-D7G3me8L.js.map → AuthenticationPlugin-DNXBcsVN.js.map} +1 -1
- package/lib/{Button-DeAoTouo.js → Button-oroWHXAy.js} +3 -3
- package/lib/{Button-DeAoTouo.js.map → Button-oroWHXAy.js.map} +1 -1
- package/lib/{CategoryHeading-CBconmtI.js → CategoryHeading-MYL1u_6K.js} +3 -3
- package/lib/{CategoryHeading-CBconmtI.js.map → CategoryHeading-MYL1u_6K.js.map} +1 -1
- package/lib/Command-D5DE0DD7.js +611 -0
- package/lib/Command-D5DE0DD7.js.map +1 -0
- package/lib/{Markdown-CZDLNOFc.js → Markdown-BrfrjEk_.js} +1041 -1041
- package/lib/{Markdown-CZDLNOFc.js.map → Markdown-BrfrjEk_.js.map} +1 -1
- package/lib/{MdxPage-DKMbBROv.js → MdxPage-LNZLj_A5.js} +24 -24
- package/lib/{MdxPage-DKMbBROv.js.map → MdxPage-LNZLj_A5.js.map} +1 -1
- package/lib/{OperationList-BLdHAQ39.js → OperationList-PCwzTp1r.js} +1899 -1877
- package/lib/OperationList-PCwzTp1r.js.map +1 -0
- package/lib/{Route-DYwKZ_c_.js → Route-Pzk6qwIk.js} +5 -5
- package/lib/{Route-DYwKZ_c_.js.map → Route-Pzk6qwIk.js.map} +1 -1
- package/lib/{Select-B_IxRUUC.js → Select-DkOpAG0c.js} +36 -36
- package/lib/{Select-B_IxRUUC.js.map → Select-DkOpAG0c.js.map} +1 -1
- package/lib/{SlotletProvider-pfc9oejW.js → SlotletProvider-DPbx9KdU.js} +53 -53
- package/lib/{SlotletProvider-pfc9oejW.js.map → SlotletProvider-DPbx9KdU.js.map} +1 -1
- package/lib/{Spinner-DuxJLLNE.js → Spinner-C5gHXrVz.js} +2 -2
- package/lib/{Spinner-DuxJLLNE.js.map → Spinner-C5gHXrVz.js.map} +1 -1
- package/lib/{SyntaxHighlight-Bz-lOJtH.js → SyntaxHighlight-CJCSPG1F.js} +297 -301
- package/lib/{SyntaxHighlight-Bz-lOJtH.js.map → SyntaxHighlight-CJCSPG1F.js.map} +1 -1
- package/lib/{ZudokuContext-hmLMUdf2.js → ZudokuContext-D3ayHjP-.js} +357 -356
- package/lib/ZudokuContext-D3ayHjP-.js.map +1 -0
- package/lib/{chunk-D52XG6IA-Dl7HLe6j.js → chunk-SYFQ2XB5-KWlHsT7t.js} +407 -410
- package/lib/chunk-SYFQ2XB5-KWlHsT7t.js.map +1 -0
- package/lib/context-rwLGh-6_.js +22 -0
- package/lib/{context-h_UkBLvr.js.map → context-rwLGh-6_.js.map} +1 -1
- package/lib/{createServer-Bf5_6o6G.js → createServer-BcaswoFO.js} +4363 -5302
- package/lib/createServer-BcaswoFO.js.map +1 -0
- package/lib/{hook-CHq7pFyz.js → hook-DUyACbIK.js} +17 -17
- package/lib/{hook-CHq7pFyz.js.map → hook-DUyACbIK.js.map} +1 -1
- package/lib/index-CaILD1AV.js +1292 -0
- package/lib/index-CaILD1AV.js.map +1 -0
- package/lib/index-Djenk2Hj.js +36 -0
- package/lib/{index-CPNSgwSb.js.map → index-Djenk2Hj.js.map} +1 -1
- package/lib/{index-CBXSgjaE.js → index-Dl3Yl0yb.js} +65 -69
- package/lib/index-Dl3Yl0yb.js.map +1 -0
- package/lib/index-TaRXY2w1.js +43 -0
- package/lib/index-TaRXY2w1.js.map +1 -0
- package/lib/{index.esm-BSV1C092.js → index.esm-9-TF9KQB.js} +52 -52
- package/lib/{index.esm-BSV1C092.js.map → index.esm-9-TF9KQB.js.map} +1 -1
- package/lib/index.esm-CrSoEshU.js +1207 -0
- package/lib/index.esm-CrSoEshU.js.map +1 -0
- package/lib/{jsx-runtime-Dx-03ztt.js → jsx-runtime-Bdg6XQ1m.js} +135 -135
- package/lib/{jsx-runtime-Dx-03ztt.js.map → jsx-runtime-Bdg6XQ1m.js.map} +1 -1
- package/lib/post-processors/removeExtensions.js +3 -3
- package/lib/post-processors/traverse.js +11 -8
- package/lib/post-processors/traverse.js.map +1 -1
- package/lib/{prism-bash.min-DadFsM4Z.js → prism-bash.min-HHIMdNJ_.js} +4 -4
- package/lib/{prism-bash.min-DadFsM4Z.js.map → prism-bash.min-HHIMdNJ_.js.map} +1 -1
- package/lib/{prism-csharp.min-DUwvItt4.js → prism-csharp.min-bQAo2pmx.js} +33 -33
- package/lib/{prism-csharp.min-DUwvItt4.js.map → prism-csharp.min-bQAo2pmx.js.map} +1 -1
- package/lib/{prism-java.min-BtgBR4yd.js → prism-java.min-BpvsOuIa.js} +12 -12
- package/lib/{prism-java.min-BtgBR4yd.js.map → prism-java.min-BpvsOuIa.js.map} +1 -1
- package/lib/{prism-markdown.min-F3U-vPBi.js → prism-markdown.min-C0Qn0m-5.js} +30 -30
- package/lib/{prism-markdown.min-F3U-vPBi.js.map → prism-markdown.min-C0Qn0m-5.js.map} +1 -1
- package/lib/{prism-ruby.min-DeDXCp1r.js → prism-ruby.min-Dx9KO9ds.js} +16 -16
- package/lib/{prism-ruby.min-DeDXCp1r.js.map → prism-ruby.min-Dx9KO9ds.js.map} +1 -1
- package/lib/prism-typescript.min-CD7H2IYQ.js.map +1 -1
- package/lib/state-mM7uaXTW.js +202 -0
- package/lib/state-mM7uaXTW.js.map +1 -0
- package/lib/ui/Accordion.js +1 -1
- package/lib/ui/ActionButton.js +3 -3
- package/lib/ui/Alert.js +2 -2
- package/lib/ui/AlertDialog.js +1 -1
- package/lib/ui/Badge.js +4 -3
- package/lib/ui/Badge.js.map +1 -1
- package/lib/ui/Breadcrumb.js +1 -1
- package/lib/ui/Button.js +2 -2
- package/lib/ui/Callout.js +1 -1
- package/lib/ui/Card.js +1 -1
- package/lib/ui/Carousel.js +3 -3
- package/lib/ui/Carousel.js.map +1 -1
- package/lib/ui/Checkbox.js +26 -15
- package/lib/ui/Checkbox.js.map +1 -1
- package/lib/ui/Command.js +14 -550
- package/lib/ui/Command.js.map +1 -1
- package/lib/ui/Dialog.js +1 -1
- package/lib/ui/Drawer.js +520 -519
- package/lib/ui/Drawer.js.map +1 -1
- package/lib/ui/DropdownMenu.js +1 -1
- package/lib/ui/Form.js +2 -2
- package/lib/ui/HoverCard.js +1 -1
- package/lib/ui/Input.js +1 -1
- package/lib/ui/Label.js +2 -2
- package/lib/ui/Pagination.js +7 -7
- package/lib/ui/Popover.js +1 -1
- package/lib/ui/Progress.js +1 -1
- package/lib/ui/RadioGroup.js +1 -1
- package/lib/ui/ScrollArea.js +1 -1
- package/lib/ui/Select.js +1 -1
- package/lib/ui/Skeleton.js +1 -1
- package/lib/ui/Slider.js +1 -1
- package/lib/ui/Switch.js +1 -1
- package/lib/ui/Tabs.js +1 -1
- package/lib/ui/Textarea.js +1 -1
- package/lib/ui/Toggle.js +2 -2
- package/lib/ui/ToggleGroup.js +1 -1
- package/lib/ui/Tooltip.js +1 -1
- package/lib/{useExposedProps-DE9lR6MF.js → useExposedProps-BBHR7aLM.js} +2 -2
- package/lib/{useExposedProps-DE9lR6MF.js.map → useExposedProps-BBHR7aLM.js.map} +1 -1
- package/lib/zudoku.auth-auth0.js +1 -1
- package/lib/zudoku.auth-clerk.js +18 -18
- package/lib/zudoku.auth-openid.js +5 -5
- package/lib/zudoku.components.js +492 -477
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.plugin-api-catalog.js +5 -5
- package/lib/zudoku.plugin-api-keys.js +7 -7
- package/lib/zudoku.plugin-custom-pages.js +3 -3
- package/lib/zudoku.plugin-markdown.js +2 -2
- package/lib/zudoku.plugin-openapi.js +5 -5
- package/lib/zudoku.plugin-redirect.js +1 -1
- package/lib/zudoku.plugin-search-inkeep.js +9 -9
- package/package.json +48 -53
- package/src/app/demo.tsx +0 -1
- package/src/app/standalone.tsx +0 -1
- package/src/lib/components/navigation/SidebarCategory.tsx +2 -2
- package/src/lib/oas/graphql/index.ts +19 -15
- package/src/lib/plugins/openapi/ColorizedParam.tsx +29 -12
- package/src/lib/plugins/openapi/OperationList.tsx +4 -0
- package/src/lib/plugins/openapi/ParameterListItem.tsx +5 -7
- package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +2 -0
- package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +9 -8
- package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +5 -8
- package/src/lib/plugins/openapi/Sidecar.tsx +14 -7
- package/src/lib/plugins/openapi/SidecarBox.tsx +1 -1
- package/src/lib/plugins/openapi/SidecarExamples.tsx +163 -0
- package/src/lib/plugins/openapi/client/GraphQLClient.tsx +28 -120
- package/src/lib/plugins/openapi/client/createServer.ts +6 -2
- package/src/lib/plugins/openapi/client/useCreateQuery.ts +2 -17
- package/src/lib/plugins/openapi/index.tsx +2 -1
- package/src/lib/plugins/openapi/playground/EnumSelector.tsx +86 -0
- package/src/lib/plugins/openapi/playground/PathParams.tsx +72 -64
- package/src/lib/plugins/openapi/playground/Playground.tsx +26 -13
- package/src/lib/plugins/openapi/playground/QueryParams.tsx +102 -73
- package/src/lib/plugins/openapi/schema/SchemaComponents.tsx +4 -7
- package/src/lib/plugins/openapi/util/generateSchemaExample.ts +26 -11
- package/src/lib/ui/Badge.tsx +2 -1
- package/src/lib/ui/Checkbox.tsx +24 -7
- package/src/lib/util/traverse.ts +15 -5
- package/dist/lib/plugins/openapi/ExampleDisplay.js +0 -78
- package/dist/lib/plugins/openapi/ExampleDisplay.js.map +0 -1
- package/dist/lib/plugins/openapi/client/worker.d.ts +0 -4
- package/dist/lib/plugins/openapi/client/worker.js +0 -29
- package/dist/lib/plugins/openapi/client/worker.js.map +0 -1
- package/dist/lib/plugins/openapi-worker.d.ts +0 -1
- package/dist/lib/plugins/openapi-worker.js +0 -8
- package/dist/lib/plugins/openapi-worker.js.map +0 -1
- package/lib/Dialog-Bxv1yEIg.js +0 -67
- package/lib/Dialog-Bxv1yEIg.js.map +0 -1
- package/lib/OperationList-BLdHAQ39.js.map +0 -1
- package/lib/ZudokuContext-hmLMUdf2.js.map +0 -1
- package/lib/assets/index-C7jnHK4b.js +0 -4841
- package/lib/assets/index-C7jnHK4b.js.map +0 -1
- package/lib/assets/worker-Cbp2r2BQ.js +0 -18592
- package/lib/assets/worker-Cbp2r2BQ.js.map +0 -1
- package/lib/chunk-D52XG6IA-Dl7HLe6j.js.map +0 -1
- package/lib/context-h_UkBLvr.js +0 -22
- package/lib/createServer-Bf5_6o6G.js.map +0 -1
- package/lib/index-BNx95gkf.js +0 -1284
- package/lib/index-BNx95gkf.js.map +0 -1
- package/lib/index-CBXSgjaE.js.map +0 -1
- package/lib/index-CPNSgwSb.js +0 -36
- package/lib/index-DyBL--Kz.js +0 -826
- package/lib/index-DyBL--Kz.js.map +0 -1
- package/lib/index.esm-BnnBRKJX.js +0 -1214
- package/lib/index.esm-BnnBRKJX.js.map +0 -1
- package/lib/state-CFQsUZUP.js +0 -202
- package/lib/state-CFQsUZUP.js.map +0 -1
- package/lib/zudoku.openapi-worker.js +0 -15
- package/lib/zudoku.openapi-worker.js.map +0 -1
- package/src/lib/plugins/openapi/ExampleDisplay.tsx +0 -163
- package/src/lib/plugins/openapi/client/worker.ts +0 -44
- package/src/lib/plugins/openapi-worker.ts +0 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CaILD1AV.js","sources":["../src/lib/plugins/openapi/graphql/graphql.ts","../src/lib/plugins/openapi/graphql/gql.ts","../src/lib/plugins/openapi/client/GraphQLClient.tsx","../src/lib/util/pastellize.ts","../src/lib/plugins/openapi/ColorizedParam.tsx","../src/lib/plugins/openapi/playground/createUrl.ts","../src/lib/plugins/openapi/playground/Headers.tsx","../src/lib/ui/Card.tsx","../src/lib/plugins/openapi/playground/PathParams.tsx","../src/lib/ui/Checkbox.tsx","../src/lib/plugins/openapi/playground/EnumSelector.tsx","../src/lib/util/createVariantComponent.tsx","../src/lib/plugins/openapi/playground/InlineInput.tsx","../src/lib/plugins/openapi/playground/QueryParams.tsx","../src/lib/plugins/openapi/SimpleSelect.tsx","../src/lib/plugins/openapi/playground/ResponseTab.tsx","../src/lib/plugins/openapi/playground/Playground.tsx","../src/lib/plugins/openapi/playground/PlaygroundDialog.tsx","../src/lib/plugins/openapi/index.tsx"],"sourcesContent":["/* eslint-disable */\nimport type { DocumentTypeDecoration } from \"@graphql-typed-document-node/core\";\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = {\n [K in keyof T]: T[K];\n};\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & {\n [SubKey in K]?: Maybe<T[SubKey]>;\n};\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {\n [SubKey in K]: Maybe<T[SubKey]>;\n};\nexport type MakeEmpty<\n T extends { [key: string]: unknown },\n K extends keyof T,\n> = { [_ in K]?: never };\nexport type Incremental<T> =\n | T\n | {\n [P in keyof T]?: P extends \" $fragmentName\" | \"__typename\" ? T[P] : never;\n };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string; output: string };\n String: { input: string; output: string };\n Boolean: { input: boolean; output: boolean };\n Int: { input: number; output: number };\n Float: { input: number; output: number };\n /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSON: { input: any; output: any };\n /** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSONObject: { input: any; output: any };\n};\n\nexport type EncodingItem = {\n __typename?: \"EncodingItem\";\n allowReserved?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n contentType?: Maybe<Scalars[\"String\"][\"output\"]>;\n explode?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n headers?: Maybe<Scalars[\"JSONObject\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n style?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type ExampleItem = {\n __typename?: \"ExampleItem\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n externalValue?: Maybe<Scalars[\"String\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n value?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n};\n\nexport type MediaTypeObject = {\n __typename?: \"MediaTypeObject\";\n encoding?: Maybe<Array<EncodingItem>>;\n examples?: Maybe<Array<ExampleItem>>;\n mediaType: Scalars[\"String\"][\"output\"];\n schema?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n};\n\nexport type OperationItem = {\n __typename?: \"OperationItem\";\n contentTypes: Array<Scalars[\"String\"][\"output\"]>;\n deprecated?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n method: Scalars[\"String\"][\"output\"];\n operationId?: Maybe<Scalars[\"String\"][\"output\"]>;\n parameters?: Maybe<Array<ParameterItem>>;\n path: Scalars[\"String\"][\"output\"];\n requestBody?: Maybe<RequestBodyObject>;\n responses: Array<ResponseItem>;\n slug: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n tags?: Maybe<Array<TagItem>>;\n};\n\nexport type ParameterIn = \"cookie\" | \"header\" | \"path\" | \"query\";\n\nexport type ParameterItem = {\n __typename?: \"ParameterItem\";\n allowEmptyValue?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n allowReserved?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n deprecated?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n examples?: Maybe<Array<ExampleItem>>;\n explode?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n in: ParameterIn;\n name: Scalars[\"String\"][\"output\"];\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n schema?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n style?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type PathItem = {\n __typename?: \"PathItem\";\n methods: Array<Scalars[\"String\"][\"output\"]>;\n path: Scalars[\"String\"][\"output\"];\n};\n\nexport type Query = {\n __typename?: \"Query\";\n schema: Schema;\n};\n\nexport type QuerySchemaArgs = {\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n};\n\nexport type RequestBodyObject = {\n __typename?: \"RequestBodyObject\";\n content?: Maybe<Array<MediaTypeObject>>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n};\n\nexport type ResponseItem = {\n __typename?: \"ResponseItem\";\n content?: Maybe<Array<MediaTypeObject>>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n headers?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n links?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n statusCode: Scalars[\"String\"][\"output\"];\n};\n\nexport type Schema = {\n __typename?: \"Schema\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n openapi: Scalars[\"String\"][\"output\"];\n operations: Array<OperationItem>;\n paths: Array<PathItem>;\n servers: Array<Server>;\n tags: Array<SchemaTag>;\n title: Scalars[\"String\"][\"output\"];\n url: Scalars[\"String\"][\"output\"];\n version: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type SchemaOperationsArgs = {\n method?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n operationId?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n path?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n tag?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n};\n\nexport type SchemaTagsArgs = {\n name?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n};\n\nexport type SchemaTag = {\n __typename?: \"SchemaTag\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n name?: Maybe<Scalars[\"String\"][\"output\"]>;\n operations: Array<OperationItem>;\n};\n\nexport type SchemaType = \"file\" | \"raw\" | \"url\";\n\nexport type Server = {\n __typename?: \"Server\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n url: Scalars[\"String\"][\"output\"];\n};\n\nexport type TagItem = {\n __typename?: \"TagItem\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n};\n\nexport type ServersQueryQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type ServersQueryQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n };\n};\n\nexport type OperationsFragmentFragment = {\n __typename?: \"OperationItem\";\n slug: string;\n summary?: string | null;\n method: string;\n description?: string | null;\n operationId?: string | null;\n contentTypes: Array<string>;\n path: string;\n parameters?: Array<{\n __typename?: \"ParameterItem\";\n name: string;\n in: ParameterIn;\n description?: string | null;\n required?: boolean | null;\n schema?: any | null;\n style?: string | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n }> | null;\n requestBody?: {\n __typename?: \"RequestBodyObject\";\n description?: string | null;\n required?: boolean | null;\n content?: Array<{\n __typename?: \"MediaTypeObject\";\n mediaType: string;\n schema?: any | null;\n encoding?: Array<{ __typename?: \"EncodingItem\"; name: string }> | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n }> | null;\n } | null;\n responses: Array<{\n __typename?: \"ResponseItem\";\n statusCode: string;\n links?: any | null;\n description?: string | null;\n content?: Array<{\n __typename?: \"MediaTypeObject\";\n mediaType: string;\n schema?: any | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n encoding?: Array<{ __typename?: \"EncodingItem\"; name: string }> | null;\n }> | null;\n }>;\n} & { \" $fragmentName\"?: \"OperationsFragmentFragment\" };\n\nexport type AllOperationsQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type AllOperationsQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n description?: string | null;\n summary?: string | null;\n title: string;\n url: string;\n version: string;\n tags: Array<{\n __typename?: \"SchemaTag\";\n name?: string | null;\n description?: string | null;\n operations: Array<\n { __typename?: \"OperationItem\"; slug: string } & {\n \" $fragmentRefs\"?: {\n OperationsFragmentFragment: OperationsFragmentFragment;\n };\n }\n >;\n }>;\n };\n};\n\nexport type GetServerQueryQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type GetServerQueryQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n };\n};\n\nexport type GetCategoriesQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type GetCategoriesQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n tags: Array<{\n __typename: \"SchemaTag\";\n name?: string | null;\n operations: Array<{\n __typename: \"OperationItem\";\n slug: string;\n deprecated?: boolean | null;\n method: string;\n summary?: string | null;\n operationId?: string | null;\n path: string;\n }>;\n }>;\n };\n};\n\nexport class TypedDocumentString<TResult, TVariables>\n extends String\n implements DocumentTypeDecoration<TResult, TVariables>\n{\n __apiType?: DocumentTypeDecoration<TResult, TVariables>[\"__apiType\"];\n\n constructor(\n private value: string,\n public __meta__?: Record<string, any> | undefined,\n ) {\n super(value);\n }\n\n toString(): string & DocumentTypeDecoration<TResult, TVariables> {\n return this.value;\n }\n}\nexport const OperationsFragmentFragmentDoc = new TypedDocumentString(\n `\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n examples {\n name\n description\n externalValue\n value\n summary\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n examples {\n name\n description\n externalValue\n value\n summary\n }\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n}\n `,\n { fragmentName: \"OperationsFragment\" },\n) as unknown as TypedDocumentString<OperationsFragmentFragment, unknown>;\nexport const ServersQueryDocument = new TypedDocumentString(`\n query ServersQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n}\n `) as unknown as TypedDocumentString<\n ServersQueryQuery,\n ServersQueryQueryVariables\n>;\nexport const AllOperationsDocument = new TypedDocumentString(`\n query AllOperations($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n description\n summary\n title\n url\n version\n tags {\n name\n description\n operations {\n slug\n ...OperationsFragment\n }\n }\n }\n}\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n examples {\n name\n description\n externalValue\n value\n summary\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n examples {\n name\n description\n externalValue\n value\n summary\n }\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n}`) as unknown as TypedDocumentString<\n AllOperationsQuery,\n AllOperationsQueryVariables\n>;\nexport const GetServerQueryDocument = new TypedDocumentString(`\n query getServerQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetServerQueryQuery,\n GetServerQueryQueryVariables\n>;\nexport const GetCategoriesDocument = new TypedDocumentString(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n __typename\n name\n operations {\n __typename\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetCategoriesQuery,\n GetCategoriesQueryVariables\n>;\n","/* eslint-disable */\nimport * as types from \"./graphql.js\";\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size\n */\nconst documents = {\n \"\\n query ServersQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\":\n types.ServersQueryDocument,\n \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n parameters {\\n name\\n in\\n description\\n required\\n schema\\n style\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n }\\n requestBody {\\n content {\\n mediaType\\n encoding {\\n name\\n }\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n schema\\n }\\n description\\n required\\n }\\n responses {\\n statusCode\\n links\\n description\\n content {\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n mediaType\\n encoding {\\n name\\n }\\n schema\\n }\\n }\\n }\\n\":\n types.OperationsFragmentFragmentDoc,\n \"\\n query AllOperations($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n description\\n summary\\n title\\n url\\n version\\n tags {\\n name\\n description\\n operations {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n }\\n\":\n types.AllOperationsDocument,\n \"\\n query getServerQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\":\n types.GetServerQueryDocument,\n \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n __typename\\n name\\n operations {\\n __typename\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n }\\n\":\n types.GetCategoriesDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query ServersQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").ServersQueryDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n parameters {\\n name\\n in\\n description\\n required\\n schema\\n style\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n }\\n requestBody {\\n content {\\n mediaType\\n encoding {\\n name\\n }\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n schema\\n }\\n description\\n required\\n }\\n responses {\\n statusCode\\n links\\n description\\n content {\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n mediaType\\n encoding {\\n name\\n }\\n schema\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").OperationsFragmentFragmentDoc;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query AllOperations($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n description\\n summary\\n title\\n url\\n version\\n tags {\\n name\\n description\\n operations {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").AllOperationsDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query getServerQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetServerQueryDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n __typename\\n name\\n operations {\\n __typename\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetCategoriesDocument;\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n","import type { GraphQLError } from \"graphql/error/index.js\";\nimport { ZudokuError } from \"../../../util/invariant.js\";\nimport type { TypedDocumentString } from \"../graphql/graphql.js\";\nimport type { OpenApiPluginOptions } from \"../index.js\";\nimport type { LocalServer } from \"./createServer.js\";\n\nlet localServerPromise: Promise<LocalServer> | undefined;\n\ntype GraphQLResponse<TResult> = {\n errors?: GraphQLError[];\n data: TResult;\n};\n\nconst throwIfError = (response: GraphQLResponse<unknown>) => {\n if (!response.errors?.[0]) return;\n\n throw new ZudokuError(response.errors[0].message, {\n developerHint:\n \"Check your configuration value `apis.type` and `apis.input` in the Zudoku config.\",\n });\n};\n\nexport class GraphQLClient {\n constructor(private readonly config: OpenApiPluginOptions) {}\n\n #getLocalServer = async () => {\n if (!localServerPromise) {\n localServerPromise = import(\"./createServer.js\").then((m) =>\n m.createServer(this.config),\n );\n }\n return localServerPromise;\n };\n\n #executeFetch = async (init: RequestInit): Promise<Response> => {\n if (this.config.server) {\n return fetch(this.config.server, init);\n }\n\n const localServer = await this.#getLocalServer();\n return localServer.fetch(\"http://localhost/graphql\", init);\n };\n\n fetch = async <TResult, TVariables>(\n query: TypedDocumentString<TResult, TVariables>,\n ...[variables]: TVariables extends Record<string, never> ? [] : [TVariables]\n ): Promise<TResult> => {\n const operationName = query.match(/query (\\w+)/)?.[1];\n\n const response = await this.#executeFetch({\n method: \"POST\",\n body: JSON.stringify({ query, variables, operationName }),\n headers: { \"Content-Type\": \"application/json\" },\n });\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n\n const result = (await response.json()) as GraphQLResponse<TResult>;\n throwIfError(result);\n\n return result.data;\n };\n}\n","const c2n = (c: string) =>\n Math.abs(\n isNaN(parseInt(c))\n ? c.toLowerCase().charCodeAt(0) - 96\n : isNaN(parseInt(c))\n ? 0\n : parseInt(c),\n );\nconst s2n = (s: string) =>\n s.length > 1\n ? parseInt(s.split(\"\").reduce((a, c) => `${c2n(a) + c2n(c)}`))\n : c2n(s);\n\nexport const pastellize = (\n s: string,\n options: {\n saturation?: number;\n lightness?: number;\n } = {},\n) => {\n const hue = (3 * s2n(s) + 2 * s2n(s) + s2n(s)) % 360;\n const { saturation = 75, lightness = 60 } = options;\n\n return `${hue}deg ${saturation}% ${lightness}%`;\n};\n","import { useTheme } from \"next-themes\";\nimport { useEffect, useRef, type CSSProperties, type ReactNode } from \"react\";\nimport { cn } from \"../../util/cn.js\";\nimport { pastellize } from \"../../util/pastellize.js\";\n\nexport const DATA_ATTR = \"data-linked-param\";\n\nexport const usePastellizedColor = (name: string) => {\n const { resolvedTheme } = useTheme();\n\n return {\n text: pastellize(\n name,\n resolvedTheme === \"light\" ? { saturation: 95, lightness: 38 } : {},\n ),\n background: pastellize(\n name,\n resolvedTheme === \"light\" ? { saturation: 85, lightness: 40 } : {},\n ),\n };\n};\n\nexport const useParamColor = (name: string) => {\n const normalized = name.replace(/[{}]/g, \"\");\n return usePastellizedColor(normalized);\n};\n\nexport const ColorizedParam = ({\n name,\n className,\n slug,\n title,\n children,\n onClick,\n}: {\n name: string;\n className?: string;\n backgroundOpacity?: string;\n borderOpacity?: string;\n slug?: string;\n children?: ReactNode;\n title?: string;\n onClick?: () => void;\n}) => {\n const ref = useRef<HTMLSpanElement>(null);\n const normalizedSlug = slug?.replace(/[{}]/g, \"\");\n const normalized = name.replace(/[{}]/g, \"\");\n const { text, background } = usePastellizedColor(normalized);\n\n const textColor = `hsl(${text} / 100%)`;\n const backgroundColor = `hsl(${background} / 10%)`;\n const borderColor = `hsl(${background} / 50%)`;\n\n useEffect(() => {\n if (!normalizedSlug) return;\n if (!ref.current) return;\n\n const onMouseEnter = () => {\n document\n .querySelectorAll(`[${DATA_ATTR}=\"${normalizedSlug}\"]`)\n .forEach((el) => {\n if (el instanceof HTMLElement) {\n el.dataset.active = \"true\";\n }\n });\n };\n const onMouseLeave = () => {\n document\n .querySelectorAll(`[${DATA_ATTR}=\"${normalizedSlug}\"]`)\n .forEach((el) => {\n if (el instanceof HTMLElement) {\n el.dataset.active = \"false\";\n }\n });\n };\n\n const el = ref.current;\n\n el.addEventListener(\"mouseenter\", onMouseEnter);\n el.addEventListener(\"mouseleave\", onMouseLeave);\n\n return () => {\n el.removeEventListener(\"mouseenter\", onMouseEnter);\n el.removeEventListener(\"mouseleave\", onMouseLeave);\n };\n }, [normalizedSlug]);\n\n return (\n <span\n {...{ [DATA_ATTR]: normalizedSlug }}\n className={cn(\n \"relative inline-block rounded transition-all duration-100\",\n \"rounded-lg\",\n \"border border-[--border-color] p-0.5 text-[--param-color] bg-[--background-color]\",\n \"data-[active=true]:border-[--param-color] data-[active=true]:shadow data-[active=true]:-translate-y-px\",\n className,\n )}\n title={title}\n suppressHydrationWarning\n ref={ref}\n onClick={onClick}\n style={\n {\n \"--param-color\": textColor,\n \"--border-color\": borderColor,\n \"--background-color\": backgroundColor,\n } as CSSProperties\n }\n >\n {children ?? name}\n </span>\n );\n};\n","import type { PlaygroundForm } from \"./Playground.js\";\n\nexport const createUrl = (host: string, path: string, data: PlaygroundForm) => {\n const filledPath = path.replace(/(:\\w+|\\{\\w+})/g, (match) => {\n const key = match.replace(/[:{}]/g, \"\");\n const value = data.pathParams.find((part) => part.name === key)?.value;\n\n return value ?? match;\n });\n\n // Ensure host ends with a slash and path doesn't start with one,\n // so they form a correct URL, without overriding the host's path.\n const url = new URL(\n filledPath.replace(/^\\//, \"\"),\n host.endsWith(\"/\") ? host : `${host}/`,\n );\n\n data.queryParams\n .filter((param) => param.active)\n .forEach((param) => {\n url.searchParams.set(param.name, param.value);\n });\n\n return url;\n};\n","import { XIcon } from \"lucide-react\";\nimport { Control, useFieldArray, UseFormRegister } from \"react-hook-form\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { type PlaygroundForm } from \"./Playground.js\";\n\nexport const Headers = ({\n control,\n register,\n}: {\n register: UseFormRegister<PlaygroundForm>;\n control: Control<PlaygroundForm>;\n}) => {\n const { fields, append, remove } = useFieldArray<PlaygroundForm>({\n control,\n name: \"headers\",\n });\n\n return (\n <div className=\"flex flex-col gap-2\">\n <table className=\"w-full [&_td]:border [&_td]:p-1.5 [&_td]:px-2\">\n <tbody>\n {fields.map((header, i) => (\n <tr\n key={header.id}\n className=\"group has-[:focus]:bg-muted/50 hover:bg-muted/50\"\n >\n <td className=\"flex gap-2 items-center\">\n <Input\n {...register(`headers.${i}.name`)}\n placeholder=\"Name\"\n className=\"border-0 shadow-none text-xs font-mono\"\n autoComplete=\"off\"\n />\n </td>\n <td>\n <div className=\"flex items-center gap-2\">\n <Input\n placeholder={\"Value\"}\n className=\"border-0 shadow-none text-xs font-mono\"\n {...register(`headers.${i}.value`)}\n autoComplete=\"off\"\n />\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"text-muted-foreground opacity-0 group-hover:opacity-100\"\n onClick={() => {\n remove(i);\n }}\n type=\"button\"\n >\n <XIcon size={16} />\n </Button>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n <div className=\"text-end\">\n <Button\n className=\"\"\n onClick={() => append({ name: \"\", value: \"\" })}\n type=\"button\"\n variant=\"secondary\"\n >\n Add header\n </Button>\n </div>\n </div>\n );\n};\n","import * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\n","import { EraserIcon } from \"lucide-react\";\nimport { Control, Controller, useFieldArray } from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { ColorizedParam, useParamColor } from \"../ColorizedParam.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\nconst PathParamLabel = ({ name }: { name: string }) => {\n const color = useParamColor(name);\n\n return (\n <div className=\"flex items-center\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: `hsl(${color})` }}\n />\n\n <ColorizedParam\n slug={name}\n name={name}\n className=\"font-mono text-xs m-2 px-1\"\n />\n </div>\n );\n};\n\nexport const PathParams = ({\n control,\n}: {\n control: Control<PlaygroundForm>;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"pathParams\",\n });\n\n return (\n <Card className=\"rounded-lg\">\n <table className=\"w-full\">\n <tbody>\n {fields.map((part, i) => (\n <tr key={part.id} className=\"hover:bg-accent/40\">\n <td className=\"w-5/12\">\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={() => <PathParamLabel name={part.name} />}\n />\n </td>\n <td className=\"w-7/12\">\n <div className=\"flex justify-between items-center\">\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={({ field }) => (\n <Input\n {...field}\n required\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none text-xs font-mono hover:bg-accent\"\n />\n )}\n />\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={({ field }) => (\n <Button\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n aria-label=\"Clear value\"\n className={cn(\n \"ms-2 mr-1\",\n field.value.length === 0\n ? \"opacity-0 pointer-events-none\"\n : \"opacity-100\",\n )}\n title=\"Clear value\"\n onClick={() => field.onChange(\"\")}\n >\n <EraserIcon size={16} />\n </Button>\n )}\n />\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </Card>\n );\n};\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst checkboxVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary\",\n {\n variants: {\n variant: {\n default: \"border border-primary data-[state=checked]:bg-primary\",\n outline: \"border border-input data-[state=checked]:bg-accent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ninterface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, variant, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(checkboxVariants({ variant, className }))}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox, type CheckboxProps };\n","import { useState } from \"react\";\nimport {\n Command,\n CommandEmpty,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../../../ui/Command.js\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../../../ui/Popover.js\";\nimport { cn } from \"../../../util/cn.js\";\n\ninterface EnumSelectorProps {\n value: string;\n enumValues: string[];\n onChange: (value: string) => void;\n onValueSelected: () => void;\n}\n\nexport const EnumSelector = ({\n value,\n enumValues,\n onChange,\n onValueSelected,\n}: EnumSelectorProps) => {\n const [searchValue, setSearchValue] = useState(\"\");\n const [open, setOpen] = useState(false);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n className={cn(\n \"px-3 py-2 w-full border-0 shadow-none text-xs font-mono text-start hover:bg-accent/40 rounded border-transparent hover:bg-accent\",\n !value && \"text-muted-foreground\",\n )}\n >\n {value || \"Select value\"}\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0 w-[--radix-popover-trigger-width] \"\n align=\"start\"\n sideOffset={3}\n alignOffset={-3}\n side=\"bottom\"\n >\n <Command className=\"max-h-[180px]\">\n <CommandInput\n placeholder=\"Enter value\"\n className=\"h-9 bg-transparent \"\n onValueChange={setSearchValue}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n onChange(searchValue);\n onValueSelected();\n setOpen(false);\n }\n }}\n />\n <CommandList>\n <CommandEmpty>Use \"{searchValue}\"</CommandEmpty>\n {enumValues.map((enumValue) => (\n <CommandItem\n key={enumValue}\n value={enumValue}\n onSelect={(selected) => {\n onChange(selected);\n onValueSelected();\n setOpen(false);\n }}\n >\n {enumValue}\n </CommandItem>\n ))}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport type { ClassValue } from \"clsx\";\nimport * as React from \"react\";\nimport { type HTMLElementType, type JSX } from \"react\";\nimport { cn } from \"./cn.js\";\n\nconst createVariantComponent = <\n E extends HTMLElementType,\n C extends ReturnType<typeof cva>,\n>(\n tag: E,\n cvx: ClassValue | C,\n // variantProps: Array<keyof VariantProps<C>> = [],\n) => {\n const MyVariant = React.forwardRef<\n HTMLElement,\n JSX.IntrinsicElements[E] & { className?: ClassValue; asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const Comp = asChild ? Slot : tag;\n\n return React.createElement(Comp, {\n ...props,\n ref,\n className:\n typeof cvx === \"function\" ? cvx({ className }) : cn(cvx, className),\n });\n });\n\n MyVariant.displayName = `VariantComponent(${tag})`;\n\n return MyVariant;\n};\n\nexport default createVariantComponent;\n","import createVariantComponent from \"../../../util/createVariantComponent.js\";\n\nexport const InlineInput = createVariantComponent(\n \"input\",\n \"px-2 bg-transparent h-6 font-mono text-xs m-2\",\n);\n","import { EraserIcon } from \"lucide-react\";\nimport {\n Control,\n Controller,\n useFieldArray,\n useFormContext,\n} from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Checkbox } from \"zudoku/ui/Checkbox.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { EnumSelector } from \"./EnumSelector.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport {\n NO_IDENTITY,\n type PlaygroundForm,\n type QueryParam,\n} from \"./Playground.js\";\n\nexport const QueryParams = ({\n control,\n queryParams,\n}: {\n control: Control<PlaygroundForm>;\n queryParams: QueryParam[];\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"queryParams\",\n });\n const form = useFormContext<PlaygroundForm>();\n\n const requiredFields = queryParams.map((param) => Boolean(param.isRequired));\n\n const selectedIdentity = form.watch(\"identity\");\n const hasSelectedIdentity = selectedIdentity !== NO_IDENTITY;\n\n return (\n <Card className=\"rounded-lg\">\n <table className=\"w-full\">\n <tbody>\n {fields\n .filter(\n // TODO remove this hack for Accu or make it more generic\n (field) => !(hasSelectedIdentity && field.name === \"apikey\"),\n )\n .map((field, i) => {\n const currentParam = queryParams.find(\n (param) => param.name === field.name,\n );\n return (\n <tr key={field.id} className=\"hover:bg-accent/40\">\n <td className=\"w-5/12 flex items-center ps-3\">\n <Controller\n control={control}\n name={`queryParams.${i}.active`}\n render={({ field }) => (\n <Checkbox\n variant=\"outline\"\n id={`queryParams.${i}.active`}\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n )}\n />\n <Controller\n control={control}\n render={({ field }) => (\n <InlineInput asChild>\n <label\n className=\"flex items-center cursor-pointer gap-1\"\n htmlFor={`queryParams.${i}.active`}\n title={\n requiredFields[i] ? \"Required field\" : undefined\n }\n >\n {field.value}\n {requiredFields[i] && <sup> *</sup>}\n </label>\n </InlineInput>\n )}\n name={`queryParams.${i}.name`}\n />\n </td>\n <td className=\"w-7/12\">\n <div className=\"flex justify-between items-center\">\n <Controller\n control={control}\n render={({ field }) => {\n const hasEnum =\n currentParam?.enum && currentParam.enum.length > 0;\n\n if (!hasEnum) {\n return (\n <Input\n {...field}\n onChange={(e) => {\n field.onChange(e.target.value);\n if (e.target.value.length > 0) {\n form.setValue(\n `queryParams.${i}.active`,\n true,\n );\n }\n }}\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none text-xs font-mono hover:bg-accent\"\n />\n );\n }\n\n const enumValues = currentParam.enum ?? [];\n\n return (\n <EnumSelector\n value={field.value}\n enumValues={enumValues}\n onChange={field.onChange}\n onValueSelected={() => {\n form.setValue(`queryParams.${i}.active`, true);\n }}\n />\n );\n }}\n name={`queryParams.${i}.value`}\n />\n <Controller\n control={control}\n render={({ field }) => (\n <Button\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n aria-label=\"Clear value\"\n className={cn(\n \"ms-2 mr-1\",\n field.value.length === 0\n ? \"opacity-0 pointer-events-none\"\n : \"opacity-100\",\n )}\n title=\"Clear value\"\n onClick={() => field.onChange(\"\")}\n >\n <EraserIcon size={16} />\n </Button>\n )}\n name={`queryParams.${i}.value`}\n />\n </div>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </Card>\n );\n};\n","import { ChevronsUpDownIcon } from \"lucide-react\";\nimport type { ChangeEventHandler } from \"react\";\nimport { cn } from \"../../util/cn.js\";\n\nexport const SimpleSelect = ({\n value,\n onChange,\n className,\n options,\n showChevrons = true,\n}: {\n value: string;\n onChange: ChangeEventHandler<HTMLSelectElement>;\n className?: string;\n options: {\n value: string;\n label: string;\n }[];\n showChevrons?: boolean;\n}) => (\n <div className=\"grid\">\n <select\n className={cn(\n \"row-start-1 col-start-1 border border-input text-foreground px-2 py-1 pe-6\",\n \"rounded-md appearance-none bg-zinc-50 hover:bg-white dark:bg-zinc-800 hover:dark:bg-zinc-800/75\",\n className,\n )}\n value={value}\n onChange={onChange}\n >\n {options.map((option) => (\n <option value={option.value} key={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n <div\n className={cn(\n !showChevrons && \"hidden\",\n \"row-start-1 col-start-1 self-center justify-self-end relative end-2 pointer-events-none\",\n )}\n >\n <ChevronsUpDownIcon size={14} />\n </div>\n </div>\n);\n","import { useState } from \"react\";\nimport { SyntaxHighlight } from \"../../../components/SyntaxHighlight.js\";\nimport { Card } from \"../../../ui/Card.js\";\nimport { SimpleSelect } from \"../SimpleSelect.js\";\n\nconst mimeTypeToLanguage = (mimeType: string) => {\n const mimeTypeMapping = {\n \"application/json\": \"json\",\n \"text/json\": \"json\",\n \"text/html\": \"html\",\n \"text/css\": \"css\",\n \"text/javascript\": \"javascript\",\n \"application/xml\": \"xml\",\n \"application/xhtml+xml\": \"xhtml\",\n };\n\n return Object.entries(mimeTypeMapping).find(([mime]) =>\n mimeType.includes(mime),\n )?.[1];\n};\n\nconst detectLanguage = (headers: Headers) => {\n const contentType = headers.get(\"Content-Type\") || \"\";\n return mimeTypeToLanguage(contentType);\n};\n\nconst tryParseJson = (body: string) => {\n try {\n return JSON.stringify(JSON.parse(body), null, 2);\n } catch {\n return null;\n }\n};\n\nexport const ResponseTab = ({\n body = \"\",\n headers,\n}: {\n body?: string;\n headers: Headers;\n}) => {\n const detectedLanguage = detectLanguage(headers);\n const jsonContent = tryParseJson(body);\n const beautifiedBody = jsonContent || body;\n const [view, setView] = useState<\"formatted\" | \"raw\">(\n jsonContent ? \"formatted\" : \"raw\",\n );\n\n return (\n <div className=\"flex flex-col gap-2\">\n <Card className=\"shadow-none\">\n <SyntaxHighlight\n language={\n view === \"raw\" ? (jsonContent ? \"plain\" : detectedLanguage) : \"json\"\n }\n noBackground\n // playground dialog has h-5/6 ≈ 83.333vh\n className=\"overflow-x-auto p-4 text-xs max-h-[calc(83.333vh-180px)]\"\n code={view === \"raw\" ? body : beautifiedBody}\n />\n </Card>\n {jsonContent && (\n <div className=\"flex justify-end\">\n <SimpleSelect\n value={view}\n onChange={(e) => setView(e.target.value as \"formatted\" | \"raw\")}\n options={[\n { value: \"formatted\", label: \"Formatted\" },\n { value: \"raw\", label: \"Raw\" },\n ]}\n />\n </div>\n )}\n </div>\n );\n};\n","import { useMutation } from \"@tanstack/react-query\";\nimport { Fragment, useEffect, useRef, useTransition } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"zudoku/ui/Select.js\";\nimport { useSelectedServerStore } from \"../../../authentication/state.js\";\nimport { useApiIdentities } from \"../../../components/context/ZudokuContext.js\";\nimport { Spinner } from \"../../../components/Spinner.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Callout } from \"../../../ui/Callout.js\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"../../../ui/Card.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../../ui/Tabs.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport { createUrl } from \"./createUrl.js\";\nimport { Headers } from \"./Headers.js\";\nimport { PathParams } from \"./PathParams.js\";\nimport { QueryParams } from \"./QueryParams.js\";\nimport { ResponseTab } from \"./ResponseTab.js\";\n\nexport const NO_IDENTITY = \"__none\";\n\nconst statusCodeMap: Record<number, string> = {\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 204: \"No Content\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 500: \"Internal Server Error\",\n};\n\nexport type Header = {\n name: string;\n defaultValue?: string;\n};\nexport type QueryParam = {\n name: string;\n defaultValue?: string;\n defaultActive?: boolean;\n isRequired?: boolean;\n enum?: string[];\n type?: string;\n};\nexport type PathParam = {\n name: string;\n defaultValue?: string;\n isRequired?: boolean;\n};\n\nexport type PlaygroundForm = {\n body: string;\n queryParams: Array<{\n name: string;\n value: string;\n active: boolean;\n enum?: string[];\n }>;\n pathParams: Array<{ name: string; value: string }>;\n headers: Array<{\n name: string;\n value: string;\n }>;\n identity?: string;\n};\n\nexport type PlaygroundContentProps = {\n server: string;\n servers?: string[];\n url: string;\n method: string;\n headers?: Header[];\n queryParams?: QueryParam[];\n pathParams?: PathParam[];\n defaultBody?: string;\n};\n\nexport const Playground = ({\n server,\n servers,\n url,\n method,\n headers = [],\n queryParams = [],\n pathParams = [],\n defaultBody = \"\",\n}: PlaygroundContentProps) => {\n const { selectedServer, setSelectedServer } = useSelectedServerStore();\n const [, startTransition] = useTransition();\n const { register, control, handleSubmit, watch, setValue, ...form } =\n useForm<PlaygroundForm>({\n defaultValues: {\n body: defaultBody,\n queryParams: queryParams.map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n active: param.defaultActive ?? false,\n enum: param.enum ?? [],\n })),\n pathParams: pathParams.map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n })),\n headers: headers.map((header) => ({\n name: header.name,\n value: header.defaultValue ?? \"\",\n })),\n identity: NO_IDENTITY,\n },\n });\n const formState = watch();\n const identities = useApiIdentities();\n\n const setOnce = useRef(false);\n useEffect(() => {\n if (setOnce.current) return;\n const firstIdentity = identities.data?.at(0);\n if (firstIdentity) {\n setValue(\"identity\", firstIdentity.id);\n setOnce.current = true;\n }\n }, [setValue, identities.data]);\n\n const queryMutation = useMutation({\n mutationFn: async (data: PlaygroundForm) => {\n const requestUrl = createUrl(selectedServer ?? server, url, data);\n const start = performance.now();\n\n const request = new Request(requestUrl, {\n method: method.toUpperCase(),\n headers: Object.fromEntries(\n data.headers\n .filter((h) => h.name)\n .map((header) => [header.name, header.value]),\n ),\n body: data.body ? data.body : undefined,\n });\n\n if (data.identity !== NO_IDENTITY) {\n identities.data\n ?.find((i) => i.id === data.identity)\n ?.authorizeRequest(request);\n }\n try {\n const response = await fetch(request, {\n signal: AbortSignal.timeout(5000),\n });\n\n const time = performance.now() - start;\n\n const body = await response.text();\n\n return {\n status: response.status,\n headers: response.headers,\n size: body.length,\n body,\n time,\n };\n } catch (error) {\n if (error instanceof TypeError) {\n throw new Error(\n \"The request failed, possibly due to network issues or CORS policy.\",\n );\n } else {\n throw error;\n }\n }\n },\n });\n\n const path = url.split(\"/\").map((part, i, arr) => {\n const isPathParam =\n (part.startsWith(\"{\") && part.endsWith(\"}\")) || part.startsWith(\":\");\n const replaced = part.replace(/[:{}]/g, \"\");\n const value = formState.pathParams.find((p) => p.name === replaced)?.value;\n\n const pathParamValue = (\n <ColorizedParam\n backgroundOpacity=\"25%\"\n name={part}\n slug={part}\n title={\n !value\n ? `Missing value for path parameter \\`${replaced}\\``\n : undefined\n }\n >\n {value ? encodeURIComponent(value) : part}\n </ColorizedParam>\n );\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={part + i}>\n {isPathParam ? pathParamValue : part}\n {i < arr.length - 1 && \"/\"}\n <wbr />\n </Fragment>\n );\n });\n\n const headerEntries = Array.from(queryMutation.data?.headers.entries() ?? []);\n\n const urlQueryParams = formState.queryParams\n .filter((p) => p.active)\n .map((p, i, arr) => (\n <Fragment key={p.name}>\n {p.name}={encodeURIComponent(p.value).replaceAll(\"%20\", \"+\")}\n {i < arr.length - 1 && \"&\"}\n <wbr />\n </Fragment>\n ));\n\n const serverSelect = (\n <div className=\"inline-block opacity-50 hover:opacity-100 transition\">\n {servers && servers.length > 1 ? (\n <Select\n onValueChange={(value) => {\n startTransition(() => {\n setSelectedServer(value);\n });\n }}\n value={selectedServer}\n >\n <SelectTrigger className=\"p-0 border-none flex-row-reverse bg-transparent text-xs gap-0.5 h-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {servers.map((s) => (\n <SelectItem key={s} value={s}>\n {s.replace(/^https?:\\/\\//, \"\")}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <span>{server.replace(/^https?:\\/\\//, \"\")}</span>\n )}\n </div>\n );\n\n return (\n <FormProvider\n {...{ register, control, handleSubmit, watch, setValue, ...form }}\n >\n <form onSubmit={handleSubmit((data) => queryMutation.mutateAsync(data))}>\n <div className=\"grid grid-cols-[8fr_7fr] text-sm h-full\">\n <div className=\"flex flex-col gap-4 p-4 after:bg-muted-foreground/20 relative after:absolute after:w-px after:inset-0 after:left-auto\">\n <div className=\"flex gap-2 items-stretch\">\n <div className=\"flex flex-1 items-center w-full border rounded-md\">\n <div className=\"border-r p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono\">\n {method.toUpperCase()}\n </div>\n <div className=\"flex items-center flex-wrap p-2 font-mono text-xs\">\n {serverSelect}\n {path}\n {urlQueryParams.length > 0 ? \"?\" : \"\"}\n {urlQueryParams}\n </div>\n </div>\n <Button type=\"submit\" className=\"h-auto flex gap-1\">\n Send\n </Button>\n </div>\n <Tabs\n defaultValue={\n queryParams.length + pathParams.length > 0\n ? \"parameters\"\n : \"headers\"\n }\n >\n <div className=\"flex flex-wrap gap-1 justify-between\">\n <TabsList>\n {queryParams.length + pathParams.length > 0 && (\n <TabsTrigger value=\"parameters\">Parameters</TabsTrigger>\n )}\n <TabsTrigger value=\"headers\">\n Headers{\" \"}\n {formState.headers.length > 0 &&\n `(${formState.headers.length})`}\n </TabsTrigger>\n <TabsTrigger\n value=\"body\"\n disabled={\n ![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n )\n }\n >\n Body\n </TabsTrigger>\n </TabsList>\n <div className=\"flex gap-2 items-center\">\n Auth:\n <Select\n onValueChange={(value) => setValue(\"identity\", value)}\n value={formState.identity}\n defaultValue={formState.identity}\n >\n <SelectTrigger className=\"w-[180px] flex\">\n {identities.isPending ? <Spinner /> : <SelectValue />}\n </SelectTrigger>\n <SelectContent align=\"center\">\n <SelectItem value={NO_IDENTITY}>None</SelectItem>\n {identities.data?.map((identity) => (\n <SelectItem key={identity.id} value={identity.id}>\n {identity.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <TabsContent value=\"headers\">\n <Headers control={control} register={register} />\n </TabsContent>\n <TabsContent value=\"parameters\">\n {pathParams.length > 0 && (\n <div className=\"flex flex-col gap-4 my-4\">\n <span className=\"font-semibold\">Path Parameters</span>\n <PathParams control={control} />\n </div>\n )}\n {queryParams.length > 0 && (\n <div className=\"flex flex-col gap-4 my-4\">\n <span className=\"font-semibold\">Query Parameters</span>\n <QueryParams control={control} queryParams={queryParams} />\n </div>\n )}\n </TabsContent>\n <TabsContent value=\"body\">\n <textarea\n {...register(\"body\")}\n className=\"border w-full rounded p-2 bg-muted h-40\"\n />\n </TabsContent>\n </Tabs>\n </div>\n <div className=\"min-w-0 p-8 bg-muted/70\">\n {queryMutation.error ? (\n <div className=\"flex flex-col gap-2\">\n {formState.pathParams.some((p) => p.value === \"\") && (\n <Callout type=\"caution\">\n Some path parameters are missing values. Please fill them in\n to ensure the request is sent correctly.\n </Callout>\n )}\n <Card>\n <CardHeader>\n <CardTitle>Request failed</CardTitle>\n </CardHeader>\n <CardContent>\n Error:{\" \"}\n {queryMutation.error.message ||\n String(queryMutation.error) ||\n \"Unexpected error\"}\n </CardContent>\n </Card>\n </div>\n ) : queryMutation.data ? (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex gap-2\">\n <div className=\"flex text-xs gap-6\">\n <div>\n Status: {queryMutation.data.status}{\" \"}\n {statusCodeMap[queryMutation.data.status] ?? \"\"}\n </div>\n <div>Time: {queryMutation.data.time.toFixed(0)}ms</div>\n <div>Size: {queryMutation.data.size} B</div>\n </div>\n </div>\n <Tabs defaultValue=\"response\">\n <TabsList>\n <TabsTrigger value=\"response\">Response</TabsTrigger>\n <TabsTrigger value=\"headers\">\n {headerEntries.length\n ? `Headers (${headerEntries.length})`\n : \"No headers\"}\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"response\">\n <ResponseTab\n headers={queryMutation.data.headers}\n body={queryMutation.data.body}\n />\n </TabsContent>\n <TabsContent value=\"headers\">\n <Card\n // playground dialog has h-5/6 ≈ 83.333vh\n className=\"max-h-[calc(83.333vh-140px)] overflow-y-auto grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4\"\n >\n <div className=\"font-semibold\">Key</div>\n <div className=\"font-semibold\">Value</div>\n {headerEntries.map(([key, value]) => (\n <Fragment key={key}>\n <div>{key}</div>\n <div className=\"break-words\">{value}</div>\n </Fragment>\n ))}\n </Card>\n </TabsContent>\n </Tabs>\n </div>\n ) : (\n <div className=\"grid place-items-center h-full\">\n <span className=\"text-[16px] font-semibold text-muted-foreground\">\n {queryMutation.isPending ? (\n <Spinner />\n ) : (\n \"Send a request first to see the response here\"\n )}\n </span>\n </div>\n )}\n </div>\n </div>\n </form>\n </FormProvider>\n );\n};\n\nexport default Playground;\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { type PropsWithChildren, useState } from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n DialogTrigger,\n} from \"zudoku/ui/Dialog.js\";\nimport { Playground, type PlaygroundContentProps } from \"./Playground.js\";\n\nexport type PlaygroundDialogProps = PropsWithChildren<PlaygroundContentProps>;\n\nconst HeroPlayIcon = ({\n className,\n size = 16,\n}: {\n className?: string;\n size?: number;\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={size}\n height={size}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm14.024-.983a1.125 1.125 0 0 1 0 1.966l-5.603 3.113A1.125 1.125 0 0 1 9 15.113V8.887c0-.857.921-1.4 1.671-.983l5.603 3.113Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst PlaygroundDialog = (props: PlaygroundDialogProps) => {\n const [open, setOpen] = useState(false);\n return (\n <Dialog onOpenChange={(open) => setOpen(open)}>\n <DialogTrigger asChild>\n {props.children ?? (\n <button className=\"flex gap-1 items-center px-2 py-1 rounded-md transition text-xs bg-primary text-primary-foreground shadow-sm hover:bg-primary/80\">\n Test\n <HeroPlayIcon className=\"\" size={14} />\n </button>\n )}\n </DialogTrigger>\n\n <DialogContent\n className=\"max-w-screen-xl w-full h-5/6 overflow-auto p-0\"\n aria-describedby={undefined}\n >\n <VisuallyHidden>\n <DialogTitle>Playground</DialogTitle>\n </VisuallyHidden>\n {open && <Playground {...props} />}\n </DialogContent>\n </Dialog>\n );\n};\n\nexport { PlaygroundDialog };\n","import { matchPath } from \"react-router\";\nimport { type ZudokuPlugin } from \"../../core/plugins.js\";\nimport { graphql } from \"./graphql/index.js\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { CirclePlayIcon, LogInIcon } from \"lucide-react\";\nimport type { SidebarItem } from \"../../../config/validators/SidebarSchema.js\";\nimport { useAuth } from \"../../authentication/hook.js\";\nimport { ColorMap } from \"../../components/navigation/SidebarBadge.js\";\nimport type { SchemaImports } from \"../../oas/graphql/index.js\";\nimport { Button } from \"../../ui/Button.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { GraphQLClient } from \"./client/GraphQLClient.js\";\nimport { OasPluginConfig } from \"./interfaces.js\";\nimport type { PlaygroundContentProps } from \"./playground/Playground.js\";\nimport { PlaygroundDialog } from \"./playground/PlaygroundDialog.js\";\n\nconst GetCategoriesQuery = graphql(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n __typename\n name\n operations {\n __typename\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n }\n`);\n\ntype InternalOasPluginConfig = { schemaImports?: SchemaImports };\n\nconst MethodColorMap: Record<string, keyof typeof ColorMap> = {\n get: \"green\",\n post: \"blue\",\n put: \"yellow\",\n delete: \"red\",\n patch: \"purple\",\n options: \"gray\",\n head: \"gray\",\n};\n\nexport type OpenApiPluginOptions = OasPluginConfig & InternalOasPluginConfig;\n\nexport const openApiPlugin = (config: OpenApiPluginOptions): ZudokuPlugin => {\n const basePath = joinPath(config.navigationId ?? \"/reference\");\n\n const versions = config.type === \"file\" ? Object.keys(config.input) : [];\n\n const client = new GraphQLClient(config);\n\n return {\n getHead: () => {\n if (config.type === \"url\" && !config.skipPreload) {\n return (\n <link\n rel=\"preload\"\n href={config.input}\n as=\"fetch\"\n crossOrigin=\"anonymous\"\n />\n );\n }\n\n if (config.server) {\n return <link rel=\"preconnect\" href={config.server} />;\n }\n },\n getMdxComponents: () => ({\n OpenPlaygroundButton: ({\n requireAuth,\n server,\n method,\n url,\n ...props\n }: Partial<PlaygroundContentProps> & { requireAuth: boolean }) => {\n const auth = useAuth();\n // We don't have the GraphQL context here\n const serverQuery = useQuery({\n queryFn: () =>\n client.fetch(GetCategoriesQuery, {\n type: config.type,\n input: config.input,\n }),\n enabled: !server,\n queryKey: [\"playground-server\"],\n });\n\n if (requireAuth && !auth.isAuthenticated) {\n return (\n <Button\n className=\"gap-2 items-center\"\n variant=\"outline\"\n onClick={auth.login}\n >\n Login to open in Playground <LogInIcon size={16} />\n </Button>\n );\n }\n\n return (\n <PlaygroundDialog\n url={url ?? \"/\"}\n method={method ?? \"get\"}\n server={\n server ?? serverQuery.data?.schema.url ?? \"https://example.com\"\n }\n {...props}\n >\n <Button className=\"gap-2 items-center\" variant=\"outline\">\n Open in Playground <CirclePlayIcon size={16} />\n </Button>\n </PlaygroundDialog>\n );\n },\n }),\n getSidebar: async (path: string) => {\n if (!matchPath({ path: basePath, end: false }, path)) {\n return [];\n }\n\n try {\n const version =\n versions.find((v) => path === joinPath(basePath, v)) ??\n Object.keys(config.input).at(0);\n\n const data = await client.fetch(GetCategoriesQuery, {\n type: config.type,\n input: config.type === \"file\" ? config.input[version!] : config.input,\n version,\n });\n\n const categories = data.schema.tags\n .filter((tag) => tag.operations.length > 0)\n .map<SidebarItem>((tag) => ({\n type: \"category\",\n label: tag.name || \"Other endpoints\",\n collapsible: true,\n collapsed: false,\n items: tag.operations.map((operation) => ({\n type: \"link\",\n label: operation.summary ?? operation.path,\n href: `#${operation.slug}`,\n badge: {\n label: operation.method,\n color: MethodColorMap[operation.method.toLowerCase()]!,\n invert: true,\n },\n })),\n }));\n\n categories.unshift({\n type: \"link\",\n label: \"Overview\",\n href: \"#description\",\n });\n\n return categories;\n } catch {\n return [];\n }\n },\n getRoutes: () => {\n const versionsInPath = [null, ...versions];\n\n return versionsInPath.map((version) => ({\n path: basePath + (version ? `/${version}` : \"\"),\n async lazy() {\n const { OpenApiRoute } = await import(\"./Route.js\");\n return {\n element: (\n <OpenApiRoute\n basePath={basePath}\n versions={versions}\n client={client}\n config={config}\n />\n ),\n };\n },\n children: [\n {\n index: true,\n async lazy() {\n const { OperationList } = await import(\"./OperationList.js\");\n return { element: <OperationList /> };\n },\n },\n ],\n }));\n },\n };\n};\n"],"names":["TypedDocumentString","value","__meta__","__publicField","OperationsFragmentFragmentDoc","ServersQueryDocument","AllOperationsDocument","GetServerQueryDocument","GetCategoriesDocument","documents","types.ServersQueryDocument","types.OperationsFragmentFragmentDoc","types.AllOperationsDocument","types.GetServerQueryDocument","types.GetCategoriesDocument","graphql","source","localServerPromise","throwIfError","response","_a","ZudokuError","GraphQLClient","config","__privateAdd","_getLocalServer","m","_executeFetch","init","__privateGet","query","variables","operationName","result","c2n","c","s2n","s","a","pastellize","options","hue","saturation","lightness","DATA_ATTR","usePastellizedColor","name","resolvedTheme","useTheme","useParamColor","normalized","ColorizedParam","className","slug","title","children","onClick","ref","useRef","normalizedSlug","text","background","textColor","backgroundColor","borderColor","useEffect","onMouseEnter","el","onMouseLeave","jsx","cn","createUrl","host","path","data","filledPath","match","key","part","url","param","Headers","control","register","fields","append","remove","useFieldArray","jsxs","header","i","Input","Button","XIcon","Card","React","props","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","PathParamLabel","color","PathParams","Controller","field","EraserIcon","checkboxVariants","cva","Checkbox","variant","CheckboxPrimitive","Check","EnumSelector","enumValues","onChange","onValueSelected","searchValue","setSearchValue","useState","open","setOpen","Popover","PopoverTrigger","PopoverContent","Command","CommandInput","e","CommandList","CommandEmpty","enumValue","CommandItem","selected","createVariantComponent","tag","cvx","MyVariant","asChild","Comp","Slot","InlineInput","QueryParams","queryParams","form","useFormContext","requiredFields","hasSelectedIdentity","NO_IDENTITY","currentParam","SimpleSelect","showChevrons","option","ChevronsUpDownIcon","mimeTypeToLanguage","mimeType","mime","detectLanguage","headers","contentType","tryParseJson","body","ResponseTab","detectedLanguage","jsonContent","beautifiedBody","view","setView","SyntaxHighlight","statusCodeMap","Playground","server","servers","method","pathParams","defaultBody","selectedServer","setSelectedServer","useSelectedServerStore","startTransition","useTransition","handleSubmit","watch","setValue","useForm","formState","identities","useApiIdentities","setOnce","firstIdentity","queryMutation","useMutation","requestUrl","start","request","h","_b","time","error","arr","isPathParam","replaced","p","pathParamValue","Fragment","headerEntries","urlQueryParams","serverSelect","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","FormProvider","Tabs","TabsList","TabsTrigger","Spinner","identity","TabsContent","Callout","HeroPlayIcon","size","PlaygroundDialog","Dialog","DialogTrigger","DialogContent","VisuallyHidden","DialogTitle","GetCategoriesQuery","MethodColorMap","openApiPlugin","basePath","joinPath","versions","client","requireAuth","auth","useAuth","serverQuery","useQuery","LogInIcon","CirclePlayIcon","matchPath","version","v","categories","operation","OpenApiRoute","OperationList"],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { a as O } from "./cn-qaFjX9_3.js";
|
|
2
|
+
const o = (d) => typeof d == "boolean" ? `${d}` : d === 0 ? "0" : d, y = O, j = (d, u) => (n) => {
|
|
3
|
+
var s;
|
|
4
|
+
if ((u == null ? void 0 : u.variants) == null) return y(d, n == null ? void 0 : n.class, n == null ? void 0 : n.className);
|
|
5
|
+
const { variants: f, defaultVariants: l } = u, V = Object.keys(f).map((e) => {
|
|
6
|
+
const t = n == null ? void 0 : n[e], i = l == null ? void 0 : l[e];
|
|
7
|
+
if (t === null) return null;
|
|
8
|
+
const a = o(t) || o(i);
|
|
9
|
+
return f[e][a];
|
|
10
|
+
}), c = n && Object.entries(n).reduce((e, t) => {
|
|
11
|
+
let [i, a] = t;
|
|
12
|
+
return a === void 0 || (e[i] = a), e;
|
|
13
|
+
}, {}), v = u == null || (s = u.compoundVariants) === null || s === void 0 ? void 0 : s.reduce((e, t) => {
|
|
14
|
+
let { class: i, className: a, ...N } = t;
|
|
15
|
+
return Object.entries(N).every((C) => {
|
|
16
|
+
let [m, r] = C;
|
|
17
|
+
return Array.isArray(r) ? r.includes({
|
|
18
|
+
...l,
|
|
19
|
+
...c
|
|
20
|
+
}[m]) : {
|
|
21
|
+
...l,
|
|
22
|
+
...c
|
|
23
|
+
}[m] === r;
|
|
24
|
+
}) ? [
|
|
25
|
+
...e,
|
|
26
|
+
i,
|
|
27
|
+
a
|
|
28
|
+
] : e;
|
|
29
|
+
}, []);
|
|
30
|
+
return y(d, V, v, n == null ? void 0 : n.class, n == null ? void 0 : n.className);
|
|
31
|
+
};
|
|
32
|
+
export {
|
|
33
|
+
y as a,
|
|
34
|
+
j as c
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=index-Djenk2Hj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-Djenk2Hj.js","sources":["../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs"],"sourcesContent":["/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n"],"names":["falsyToString","value","cx","clsx","cva","base","config","props","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","key","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions"],"mappings":";AAeA,MAAMA,IAAgB,CAACC,MAAQ,OAAOA,KAAU,YAAY,GAAGA,CAAK,KAAKA,MAAU,IAAI,MAAMA,GAChFC,IAAKC,GACLC,IAAM,CAACC,GAAMC,MAAS,CAACC,MAAQ;AACpC,MAAIC;AACJ,OAAKF,KAAW,OAA4B,SAASA,EAAO,aAAa,KAAM,QAAOJ,EAAGG,GAAME,KAAU,OAA2B,SAASA,EAAM,OAAOA,KAAU,OAA2B,SAASA,EAAM,SAAS;AACvN,QAAM,EAAE,UAAAE,GAAU,iBAAAC,EAAe,IAAKJ,GAChCK,IAAuB,OAAO,KAAKF,CAAQ,EAAE,IAAI,CAACG,MAAU;AAC9D,UAAMC,IAAcN,KAAU,OAA2B,SAASA,EAAMK,CAAO,GACzEE,IAAqBJ,KAAoB,OAAqC,SAASA,EAAgBE,CAAO;AACpH,QAAIC,MAAgB,KAAM,QAAO;AACjC,UAAME,IAAaf,EAAca,CAAW,KAAKb,EAAcc,CAAkB;AACjF,WAAOL,EAASG,CAAO,EAAEG,CAAU;AAAA,EAC/C,CAAS,GACKC,IAAwBT,KAAS,OAAO,QAAQA,CAAK,EAAE,OAAO,CAACU,GAAKC,MAAQ;AAC9E,QAAI,CAACC,GAAKlB,CAAK,IAAIiB;AACnB,WAAIjB,MAAU,WAGdgB,EAAIE,CAAG,IAAIlB,IACJgB;AAAA,EACV,GAAE,EAAE,GACCG,IAA+Bd,KAAW,SAAsCE,IAA2BF,EAAO,sBAAsB,QAAQE,MAA6B,SAAvG,SAAyHA,EAAyB,OAAO,CAACS,GAAKC,MAAQ;AAC/O,QAAI,EAAE,OAAOG,GAAS,WAAWC,GAAa,GAAGC,EAAsB,IAAKL;AAC5E,WAAO,OAAO,QAAQK,CAAsB,EAAE,MAAM,CAACL,MAAQ;AACzD,UAAI,CAACC,GAAKlB,CAAK,IAAIiB;AACnB,aAAO,MAAM,QAAQjB,CAAK,IAAIA,EAAM,SAAS;AAAA,QACzC,GAAGS;AAAA,QACH,GAAGM;AAAA,MACvB,EAAkBG,CAAG,CAAC,IAAK;AAAA,QACP,GAAGT;AAAA,QACH,GAAGM;AAAA,MACvB,EAAmBG,CAAG,MAAMlB;AAAA,IAC5B,CAAa,IAAI;AAAA,MACD,GAAGgB;AAAA,MACHI;AAAA,MACAC;AAAA,IAChB,IAAgBL;AAAA,EACP,GAAE,EAAE;AACL,SAAOf,EAAGG,GAAMM,GAAsBS,GAA8Bb,KAAU,OAA2B,SAASA,EAAM,OAAOA,KAAU,OAA2B,SAASA,EAAM,SAAS;AACpM;","x_google_ignoreList":[0]}
|