zudoku 0.35.3 → 0.35.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/components/Layout.js +1 -1
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/plugins/openapi/ParamInfos.d.ts +6 -0
- package/dist/lib/plugins/openapi/ParamInfos.js +34 -0
- package/dist/lib/plugins/openapi/ParamInfos.js.map +1 -0
- package/dist/lib/plugins/openapi/ParameterListItem.js +5 -4
- package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +6 -8
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
- package/dist/lib/ui/Button.d.ts +2 -2
- package/dist/lib/ui/Button.js +1 -0
- package/dist/lib/ui/Button.js.map +1 -1
- package/lib/{OasProvider-7Z9UwS9y.js → OasProvider-BbSqUQka.js} +2 -2
- package/lib/{OasProvider-7Z9UwS9y.js.map → OasProvider-BbSqUQka.js.map} +1 -1
- package/lib/{OperationList-a7wnHdXv.js → OperationList-CENzwqY8.js} +1063 -1029
- package/lib/OperationList-CENzwqY8.js.map +1 -0
- package/lib/{Spinner-1KrEmx1V.js → Spinner-C6n4eOvh.js} +13 -12
- package/lib/Spinner-C6n4eOvh.js.map +1 -0
- package/lib/{index-UmhI2mj7.js → index-BVhQWA89.js} +4 -4
- package/lib/{index-UmhI2mj7.js.map → index-BVhQWA89.js.map} +1 -1
- package/lib/ui/ActionButton.js +1 -1
- package/lib/ui/Button.js +12 -11
- package/lib/ui/Button.js.map +1 -1
- package/lib/zudoku.components.js +2 -2
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.plugin-openapi.js +1 -1
- package/package.json +1 -1
- package/src/lib/components/Layout.tsx +1 -1
- package/src/lib/plugins/openapi/ParamInfos.tsx +64 -0
- package/src/lib/plugins/openapi/ParameterListItem.tsx +9 -11
- package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +17 -33
- package/src/lib/ui/Button.tsx +3 -1
- package/lib/OperationList-a7wnHdXv.js.map +0 -1
- package/lib/Spinner-1KrEmx1V.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-UmhI2mj7.js","sources":["../src/lib/plugins/openapi/client/GraphQLClient.tsx","../src/lib/plugins/openapi/graphql/graphql.ts","../src/lib/plugins/openapi/graphql/gql.ts","../src/lib/ui/Alert.tsx","../src/lib/components/PathRenderer.tsx","../src/lib/ui/Textarea.tsx","../src/lib/util/pastellize.ts","../src/lib/plugins/openapi/ColorizedParam.tsx","../src/lib/plugins/openapi/playground/createUrl.ts","../src/lib/ui/DropdownMenu.tsx","../src/lib/plugins/openapi/playground/ExamplesDropdown.tsx","../src/lib/ui/Card.tsx","../src/lib/ui/Checkbox.tsx","../src/lib/ui/Popover.tsx","../src/lib/components/Autocomplete.tsx","../src/lib/util/createVariantComponent.tsx","../src/lib/plugins/openapi/playground/ParamsGrid.tsx","../src/lib/plugins/openapi/playground/Headers.tsx","../src/lib/ui/Label.tsx","../src/lib/ui/RadioGroup.tsx","../src/lib/plugins/openapi/playground/IdentitySelector.tsx","../src/lib/plugins/openapi/playground/IdentityDialog.tsx","../src/lib/plugins/openapi/playground/PathParams.tsx","../src/lib/plugins/openapi/playground/InlineInput.tsx","../src/lib/plugins/openapi/playground/QueryParams.tsx","../src/lib/plugins/openapi/playground/rememberedIdentity.ts","../src/lib/plugins/openapi/playground/RequestLoginDialog.tsx","../src/lib/plugins/openapi/util/methodToColor.ts","../src/lib/plugins/openapi/playground/result-panel/RequestTab.tsx","../src/lib/ui/Collapsible.tsx","../src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts","../src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx","../src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx","../src/lib/plugins/openapi/playground/SubmitButton.tsx","../src/lib/plugins/openapi/playground/Playground.tsx","../src/lib/plugins/openapi/playground/PlaygroundDialog.tsx","../src/lib/plugins/openapi/util/methodColorMap.tsx","../src/lib/plugins/openapi/util/createSidebarCategory.tsx","../src/lib/plugins/openapi/util/getRoutes.tsx","../src/lib/plugins/openapi/index.tsx"],"sourcesContent":["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","/* 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 /** OpenAPI schema scalar type that handles circular references */\n JSONSchema: { 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[\"JSONSchema\"][\"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 extensions?: Maybe<Scalars[\"JSONObject\"][\"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 extensions?: Maybe<Scalars[\"JSONObject\"][\"output\"]>;\n in: ParameterIn;\n name: Scalars[\"String\"][\"output\"];\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n schema?: Maybe<Scalars[\"JSONSchema\"][\"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 extensions?: Maybe<Scalars[\"JSONObject\"][\"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 extensions?: Maybe<Scalars[\"JSONObject\"][\"output\"]>;\n openapi: Scalars[\"String\"][\"output\"];\n operations: Array<OperationItem>;\n paths: Array<PathItem>;\n servers: Array<Server>;\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n tags: Array<SchemaTag>;\n title: Scalars[\"String\"][\"output\"];\n url?: Maybe<Scalars[\"String\"][\"output\"]>;\n version: 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 untagged?: InputMaybe<Scalars[\"Boolean\"][\"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: 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 extensions?: Maybe<Scalars[\"JSONObject\"][\"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 | null;\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 deprecated?: boolean | null;\n extensions?: any | null;\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 tag?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n untagged?: InputMaybe<Scalars[\"Boolean\"][\"input\"]>;\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 | null;\n version: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n tags: Array<{\n __typename?: \"SchemaTag\";\n name: string;\n description?: string | null;\n }>;\n operations: Array<\n { __typename?: \"OperationItem\"; slug: string } & {\n \" $fragmentRefs\"?: {\n OperationsFragmentFragment: OperationsFragmentFragment;\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 | null;\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 | null;\n tags: Array<{ __typename?: \"SchemaTag\"; name: string }>;\n };\n};\n\nexport type GetOperationsQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n tag?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n}>;\n\nexport type GetOperationsQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\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 tags?: Array<{ __typename?: \"TagItem\"; name: string }> | null;\n }>;\n untagged: 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\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 deprecated\n extensions\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!, $tag: String, $untagged: Boolean) {\n schema(input: $input, type: $type) {\n servers {\n url\n }\n description\n summary\n title\n url\n version\n tags(name: $tag) {\n name\n description\n }\n operations(tag: $tag, untagged: $untagged) {\n slug\n ...OperationsFragment\n }\n }\n}\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n deprecated\n extensions\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 name\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetCategoriesQuery,\n GetCategoriesQueryVariables\n>;\nexport const GetOperationsDocument = new TypedDocumentString(`\n query GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\n schema(input: $input, type: $type) {\n operations(tag: $tag) {\n slug\n deprecated\n method\n summary\n operationId\n path\n tags {\n name\n }\n }\n untagged: operations(untagged: true) {\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetOperationsQuery,\n GetOperationsQueryVariables\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 */\ntype 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\": typeof types.ServersQueryDocument;\n \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n deprecated\\n extensions\\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\": typeof types.OperationsFragmentFragmentDoc;\n \"\\n query AllOperations(\\n $input: JSON!\\n $type: SchemaType!\\n $tag: String\\n $untagged: Boolean\\n ) {\\n schema(input: $input, type: $type) {\\n servers {\\n url\\n }\\n description\\n summary\\n title\\n url\\n version\\n tags(name: $tag) {\\n name\\n description\\n }\\n operations(tag: $tag, untagged: $untagged) {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n\": typeof 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\": typeof types.GetServerQueryDocument;\n \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n name\\n }\\n }\\n }\\n\": typeof types.GetCategoriesDocument;\n \"\\n query GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\\n schema(input: $input, type: $type) {\\n operations(tag: $tag) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n tags {\\n name\\n }\\n }\\n untagged: operations(untagged: true) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n\": typeof types.GetOperationsDocument;\n};\nconst documents: 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 deprecated\\n extensions\\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(\\n $input: JSON!\\n $type: SchemaType!\\n $tag: String\\n $untagged: Boolean\\n ) {\\n schema(input: $input, type: $type) {\\n servers {\\n url\\n }\\n description\\n summary\\n title\\n url\\n version\\n tags(name: $tag) {\\n name\\n description\\n }\\n operations(tag: $tag, untagged: $untagged) {\\n slug\\n ...OperationsFragment\\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 name\\n }\\n }\\n }\\n\":\n types.GetCategoriesDocument,\n \"\\n query GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\\n schema(input: $input, type: $type) {\\n operations(tag: $tag) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n tags {\\n name\\n }\\n }\\n untagged: operations(untagged: true) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n\":\n types.GetOperationsDocument,\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 deprecated\\n extensions\\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(\\n $input: JSON!\\n $type: SchemaType!\\n $tag: String\\n $untagged: Boolean\\n ) {\\n schema(input: $input, type: $type) {\\n servers {\\n url\\n }\\n description\\n summary\\n title\\n url\\n version\\n tags(name: $tag) {\\n name\\n description\\n }\\n operations(tag: $tag, untagged: $untagged) {\\n slug\\n ...OperationsFragment\\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 name\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetCategoriesDocument;\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 GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\\n schema(input: $input, type: $type) {\\n operations(tag: $tag) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n tags {\\n name\\n }\\n }\\n untagged: operations(untagged: true) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetOperationsDocument;\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n));\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertDescription, AlertTitle };\n","import { Fragment, type ReactNode } from \"react\";\n\ntype PathParamProps = {\n name: string;\n index: number;\n originalValue?: string;\n};\n\nexport const PathRenderer = ({\n path,\n renderParam,\n}: {\n path: string;\n renderParam: (props: PathParamProps) => ReactNode;\n}) => {\n let paramIndex = 0;\n return path.split(\"/\").map((part, i, arr) => {\n const matches = Array.from(part.matchAll(/{([^}]+)}/g));\n const elements: ReactNode[] = [];\n let lastIndex = 0;\n\n matches.forEach((match) => {\n const [originalValue, name] = match;\n if (!name) return;\n const startIndex = match.index!;\n\n if (startIndex > lastIndex) {\n elements.push(\n <Fragment key={`text-${lastIndex}-${startIndex}`}>\n {part.slice(lastIndex, startIndex)}\n </Fragment>,\n );\n }\n\n elements.push(\n <Fragment key={`param-${name}`}>\n {renderParam({ name, originalValue, index: paramIndex++ })}\n </Fragment>,\n );\n\n lastIndex = startIndex + originalValue.length;\n });\n\n if (lastIndex < part.length) {\n elements.push(\n <Fragment key={`text-${lastIndex}-${part.length}`}>\n {part.slice(lastIndex)}\n </Fragment>,\n );\n }\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={`${part}-${i}`}>\n {elements}\n {i < arr.length - 1 && \"/\"}\n <wbr />\n </Fragment>\n );\n });\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\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 // This may not contain (inline-)flex or (inline-)block otherwise it breaks the browser's full text search\n \"relative rounded transition-all duration-100 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]:bottom-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 * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\n\nimport { CheckIcon, ChevronRightIcon, DotIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <DotIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport type { Content, Example } from \"../SidecarExamples.js\";\n\nconst ExamplesDropdown = ({\n examples,\n onSelect,\n}: {\n examples: Content;\n onSelect: (example: Example, mediaType: string) => void;\n}) => {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">Use Example</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"max-w-72\">\n {examples.map((mediaTypeObject) => (\n <div key={mediaTypeObject.mediaType}>\n <DropdownMenuLabel>{mediaTypeObject.mediaType}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n {mediaTypeObject.examples?.map((example) => (\n <DropdownMenuItem\n key={example.name}\n onSelect={() => onSelect(example, mediaTypeObject.mediaType)}\n >\n <span\n className=\"line-clamp-1\"\n title={example.summary ?? example.name}\n >\n {example.summary ?? example.name}\n </span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n\nexport default ExamplesDropdown;\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 * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-[min(6px,var(--radius)-4px)] 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 \"border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary\",\n className,\n )}\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 };\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverContent, PopoverTrigger };\n","import { PopoverAnchor } from \"@radix-ui/react-popover\";\nimport { useCommandState } from \"cmdk\";\nimport { useRef, useState, type KeyboardEvent, type Ref } from \"react\";\nimport {\n Command,\n CommandInlineInput,\n CommandItem,\n CommandList,\n} from \"zudoku/ui/Command.js\";\nimport { Popover, PopoverContent } from \"zudoku/ui/Popover.js\";\nimport { cn } from \"../util/cn.js\";\n\ntype AutocompleteProps = {\n value: string;\n options: readonly string[];\n onChange: (e: string) => void;\n className?: string;\n placeholder?: string;\n onEnterPress?: (e: KeyboardEvent<HTMLInputElement>) => void;\n ref?: Ref<HTMLInputElement>;\n shouldFilter?: boolean;\n};\n\nconst AutocompletePopover = ({\n value,\n options,\n onChange,\n className,\n placeholder = \"Enter value\",\n onEnterPress,\n ref,\n}: AutocompleteProps) => {\n const [open, setOpen] = useState(false);\n const [dontClose, setDontClose] = useState(false);\n const count = useCommandState((state) => state.filtered.count);\n const inputRef = useRef<HTMLInputElement>(null);\n\n return (\n <Popover open={open}>\n <PopoverAnchor>\n <CommandInlineInput\n ref={(el) => {\n inputRef.current = el;\n if (typeof ref === \"function\") {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n value={value}\n placeholder={placeholder}\n className={cn(\"h-9 bg-transparent\", className)}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n if (dontClose) {\n return;\n }\n setOpen(false);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n setOpen(false);\n inputRef.current?.blur();\n onEnterPress?.(e);\n }\n }}\n onValueChange={(e) => onChange(e)}\n />\n </PopoverAnchor>\n <PopoverContent\n onMouseEnter={() => setDontClose(true)}\n onMouseLeave={() => setDontClose(false)}\n onOpenAutoFocus={(e) => e.preventDefault()}\n className={cn(\"p-0 w-[--radix-popover-trigger-width]\", {\n \"border-0\": count === 0,\n })}\n align=\"start\"\n side=\"bottom\"\n onWheel={(e) => {\n // See: https://github.com/radix-ui/primitives/issues/1159\n e.stopPropagation();\n }}\n onTouchMove={(e) => {\n e.stopPropagation();\n }}\n >\n <CommandList className=\"max-h-[140px]\">\n {options.map((enumValue) => (\n <CommandItem\n key={enumValue}\n value={enumValue}\n onSelect={(selected) => {\n onChange(selected);\n setOpen(false);\n }}\n className=\"cursor-pointer\"\n >\n {enumValue}\n </CommandItem>\n ))}\n </CommandList>\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Autocomplete = ({ shouldFilter, ...props }: AutocompleteProps) => {\n return (\n <Command className=\"bg-transparent\" shouldFilter={shouldFilter}>\n <AutocompletePopover {...props} />\n </Command>\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\nconst ParamsGrid = createVariantComponent(\n \"div\",\n \"grid grid-cols-[2fr_3fr] gap-2 items-center\",\n);\n\nexport const ParamsGridItem = createVariantComponent(\n \"div\",\n \"group hover:bg-accent px-3 grid col-span-full grid-cols-subgrid\",\n);\n\nexport default ParamsGrid;\n","import { XIcon } from \"lucide-react\";\nimport { useCallback, useEffect, useRef } from \"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 { Autocomplete } from \"../../../components/Autocomplete.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport ParamsGrid, { ParamsGridItem } from \"./ParamsGrid.js\";\nimport { Header, type PlaygroundForm } from \"./Playground.js\";\n\nconst headerOptions = Object.freeze([\n \"Accept\",\n \"Accept-Encoding\",\n \"Accept-Language\",\n \"Authorization\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Disposition\",\n \"Content-Encoding\",\n \"Content-Language\",\n \"Content-Length\",\n \"Content-Range\",\n \"Content-Security-Policy\",\n \"Content-Type\",\n \"Cookie\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"Host\",\n \"If-Modified-Since\",\n \"Location\",\n \"Origin\",\n \"Pragma\",\n \"Referer\",\n \"Set-Cookie\",\n \"User-Agent\",\n \"X-Requested-With\",\n]);\n\nexport const Headers = ({\n control,\n headers: schemaHeaders,\n}: {\n control: Control<PlaygroundForm>;\n headers: Header[];\n}) => {\n const { fields, append, remove } = useFieldArray<PlaygroundForm, \"headers\">({\n control,\n name: \"headers\",\n });\n const { setValue, watch } = useFormContext<PlaygroundForm>();\n const valueRefs = useRef<Array<HTMLInputElement | null>>([]);\n const nameRefs = useRef<Array<HTMLInputElement | null>>([]);\n const watchedHeaders = watch(\"headers\");\n\n const addNewHeader = useCallback(() => {\n append({ name: \"\", value: \"\", active: false });\n }, [append]);\n\n useEffect(() => {\n if (watchedHeaders.length === 0) {\n addNewHeader();\n }\n }, [watchedHeaders, addNewHeader]);\n\n const handleHeaderEnter = (index: number) => {\n valueRefs.current[index]?.focus();\n };\n\n const handleValueEnter = (index: number) => {\n addNewHeader();\n requestAnimationFrame(() => nameRefs.current[index + 1]?.focus());\n };\n\n const missingHeaders = schemaHeaders\n .filter((h) => !watchedHeaders.some((f) => f.name === h.name))\n .map(({ name }) => name);\n\n return (\n <div className=\"flex flex-col gap-2\">\n <Card className=\"overflow-hidden\">\n <ParamsGrid>\n {fields.map((field, i) => {\n const currentHeader = schemaHeaders.find(\n (h) => h.name === watch(`headers.${i}.name`),\n );\n return (\n <ParamsGridItem key={field.id}>\n <div className=\"flex items-center gap-2 \">\n <Controller\n control={control}\n name={`headers.${i}.active`}\n render={({ field }) => (\n <Checkbox\n id={`headers.${i}.active`}\n checked={field.value}\n onCheckedChange={(checked) => {\n field.onChange(checked);\n }}\n />\n )}\n />\n <Controller\n control={control}\n name={`headers.${i}.name`}\n render={({ field }) => (\n <Autocomplete\n {...field}\n placeholder=\"Name\"\n className=\"border-0 shadow-none bg-transparent text-xs font-mono\"\n options={[...missingHeaders, ...headerOptions]}\n onEnterPress={() => handleHeaderEnter(i)}\n onChange={(e) => {\n field.onChange(e);\n setValue(`headers.${i}.active`, true);\n }}\n ref={(el) => {\n nameRefs.current[i] = el;\n }}\n />\n )}\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <Controller\n control={control}\n name={`headers.${i}.value`}\n render={({ field }) => {\n const hasEnum =\n currentHeader?.enum && currentHeader.enum.length > 0;\n\n if (!hasEnum) {\n return (\n <Input\n placeholder=\"Value\"\n className=\"w-full border-0 shadow-none text-xs font-mono focus-visible:ring-0\"\n {...field}\n ref={(el) => {\n valueRefs.current[i] = el;\n }}\n onKeyDown={(e) => {\n if (\n e.key === \"Enter\" &&\n e.currentTarget.value.trim()\n ) {\n handleValueEnter(i);\n }\n }}\n autoComplete=\"off\"\n />\n );\n }\n\n return (\n <Autocomplete\n shouldFilter={false}\n value={field.value}\n options={currentHeader.enum ?? []}\n onChange={(e) => {\n field.onChange(e);\n setValue(`headers.${i}.active`, true);\n }}\n className=\"font-mono text-xs border-0\"\n />\n );\n }}\n />\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"text-muted-foreground opacity-0 group-hover:opacity-100 rounded-full w-8 h-7\"\n onClick={() => remove(i)}\n type=\"button\"\n >\n <XIcon size={16} />\n </Button>\n </div>\n </ParamsGridItem>\n );\n })}\n </ParamsGrid>\n </Card>\n <div className=\"text-end\">\n <Button\n className=\"\"\n onClick={addNewHeader}\n type=\"button\"\n variant=\"secondary\"\n >\n Add header\n </Button>\n </div>\n </div>\n );\n};\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import { Card } from \"zudoku/ui/Card.js\";\nimport { Label } from \"zudoku/ui/Label.js\";\nimport { RadioGroup, RadioGroupItem } from \"zudoku/ui/RadioGroup.js\";\nimport { type ApiIdentity } from \"../../../core/ZudokuContext.js\";\nimport { NO_IDENTITY } from \"./Playground.js\";\n\nconst IdentitySelector = ({\n identities,\n setValue,\n value,\n}: {\n identities?: ApiIdentity[];\n setValue: (value: string) => void;\n value?: string;\n}) => {\n return (\n <Card className=\"w-full overflow-hidden\">\n <RadioGroup\n onValueChange={(value) => setValue(value)}\n value={value}\n defaultValue={NO_IDENTITY}\n className=\"gap-0\"\n disabled={identities?.length === 0}\n >\n <Label\n className=\"h-12 border-b items-center flex p-4 cursor-pointer hover:bg-accent\"\n htmlFor=\"none\"\n >\n <RadioGroupItem value={NO_IDENTITY} id=\"none\">\n None\n </RadioGroupItem>\n <Label htmlFor=\"none\" className=\"ml-2\">\n None\n </Label>\n </Label>\n {identities?.map((identity) => (\n <Label\n key={identity.id}\n className=\"h-12 border-b items-center flex p-4 cursor-pointer hover:bg-accent\"\n >\n <RadioGroupItem value={identity.id} id={identity.id}>\n {identity.label}\n </RadioGroupItem>\n <Label htmlFor={identity.id} className=\"ml-2\">\n {identity.label}\n </Label>\n </Label>\n ))}\n </RadioGroup>\n </Card>\n );\n};\n\nexport default IdentitySelector;\n","import { useState } from \"react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport { Checkbox } from \"zudoku/ui/Checkbox.js\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogTitle,\n} from \"zudoku/ui/Dialog.js\";\nimport { Label } from \"zudoku/ui/Label.js\";\nimport { type ApiIdentity } from \"../../../core/ZudokuContext.js\";\nimport IdentitySelector from \"./IdentitySelector.js\";\n\nconst IdentityDialog = ({\n onSubmit,\n identities,\n open,\n onOpenChange,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onSubmit: ({\n rememberedIdentity,\n identity,\n }: {\n rememberedIdentity: boolean;\n identity?: string;\n }) => void;\n identities: ApiIdentity[];\n}) => {\n const [identity, setIdentity] = useState<string | undefined>(undefined);\n const [rememberedIdentity, setRememberedIdentity] = useState<boolean>(false);\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogTitle>Select an auth identity</DialogTitle>\n <DialogDescription>\n Please select an identity for this request.\n </DialogDescription>\n <div className=\"max-h-80 overflow-auto\">\n <IdentitySelector\n identities={identities}\n setValue={setIdentity}\n value={identity}\n />\n </div>\n <DialogFooter className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-2\">\n <Checkbox\n id=\"remember\"\n checked={rememberedIdentity}\n onCheckedChange={(checked) =>\n setRememberedIdentity(\n checked === \"indeterminate\" ? false : !!checked,\n )\n }\n />\n <Label htmlFor=\"remember\">Remember my choice</Label>\n </div>\n\n <Button\n onClick={() => onSubmit({ identity: identity, rememberedIdentity })}\n >\n Send\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport { IdentityDialog };\n","import { type Control, Controller, useFieldArray } from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport ParamsGrid, { ParamsGridItem } from \"./ParamsGrid.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\nexport const PathParams = ({\n control,\n url,\n}: {\n control: Control<PlaygroundForm>;\n url: string;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm, \"pathParams\">({\n control,\n name: \"pathParams\",\n });\n\n const sortedFields = [...fields].sort(\n (a, b) => url.indexOf(`{${a.name}}`) - url.indexOf(`{${b.name}}`),\n );\n\n return (\n <Card className=\"rounded-lg\">\n <ParamsGrid>\n {sortedFields.map((field, i) => (\n <ParamsGridItem key={field.id}>\n <Controller\n control={control}\n name={`pathParams.${i}.name`}\n render={() => (\n <div className=\"flex items-center\">\n <ColorizedParam\n slug={field.name}\n name={field.name}\n className=\"font-mono text-xs px-2\"\n />\n </div>\n )}\n />\n\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 focus-visible:ring-0\"\n />\n )}\n />\n </div>\n </ParamsGridItem>\n ))}\n </ParamsGrid>\n </Card>\n );\n};\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 {\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 { Autocomplete } from \"../../../components/Autocomplete.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport ParamsGrid, { ParamsGridItem } from \"./ParamsGrid.js\";\nimport { type PlaygroundForm, type QueryParam } 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, \"queryParams\">({\n control,\n name: \"queryParams\",\n });\n const form = useFormContext<PlaygroundForm>();\n\n const requiredFields = queryParams.map((param) => Boolean(param.isRequired));\n\n return (\n <Card className=\"rounded-lg\">\n <div className=\"w-full \">\n <ParamsGrid>\n {fields.map((field, i) => {\n const currentParam = queryParams.find(\n (param) => param.name === form.watch(`queryParams.${i}.name`),\n );\n return (\n <ParamsGridItem key={field.id}>\n <div key={field.id} className=\"flex items-center gap-2\">\n <Controller\n control={control}\n name={`queryParams.${i}.active`}\n render={({ field }) => (\n <Checkbox\n id={`queryParams.${i}.active`}\n className=\"mr-2\"\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n )}\n />\n <Controller\n control={control}\n render={({ field }) =>\n !requiredFields[i] ? (\n <Autocomplete\n value={field.value}\n options={queryParams.map((param) => param.name)}\n onChange={(e) => {\n field.onChange(e);\n }}\n className=\"border-0 font-mono text-xs bg-transparent hover:bg-transparent\"\n />\n ) : (\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 }\n name={`queryParams.${i}.name`}\n />\n </div>\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(`queryParams.${i}.active`, true);\n }\n }}\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none focus-visible:ring-0 text-xs font-mono\"\n />\n );\n }\n\n return (\n <Autocomplete\n value={field.value}\n options={currentParam.enum ?? []}\n onChange={(e) => {\n field.onChange(e);\n form.setValue(`queryParams.${i}.active`, true);\n }}\n className=\"font-mono text-xs border-0 ring-1 ring-ring\"\n />\n );\n }}\n name={`queryParams.${i}.value`}\n />\n </div>\n </ParamsGridItem>\n );\n })}\n </ParamsGrid>\n </div>\n </Card>\n );\n};\n","import { create } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\n\ninterface IdentityState {\n rememberedIdentity: string | null;\n setRememberedIdentity: (identity: string | null) => void;\n getRememberedIdentity: (availableIdentities: string[]) => string | undefined;\n}\n\nexport const useIdentityStore = create<IdentityState>()(\n persist(\n (set, get) => ({\n rememberedIdentity: null,\n setRememberedIdentity: (identity: string | null) =>\n set({ rememberedIdentity: identity }),\n getRememberedIdentity: (availableIdentities: string[]) =>\n availableIdentities.find(\n (identity) => identity === get().rememberedIdentity,\n ),\n }),\n {\n name: \"identity-storage\",\n storage: createJSONStorage(() => sessionStorage),\n },\n ),\n);\n","import { Button } from \"zudoku/ui/Button.js\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogTitle,\n} from \"zudoku/ui/Dialog.js\";\n\nconst RequestLoginDialog = ({\n open,\n setOpen,\n onSignUp,\n onLogin,\n}: {\n open: boolean;\n onSignUp?: () => void;\n onLogin?: () => void;\n setOpen: (open: boolean) => void;\n}) => {\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogContent>\n <DialogTitle>Welcome to the Playground!</DialogTitle>\n <DialogDescription>\n The Playground is a tool for developers to test and explore our APIs.\n To use the Playground, you need to login.\n </DialogDescription>\n <DialogFooter className=\"flex gap-2 sm:justify-between\">\n <Button type=\"button\" variant=\"ghost\" onClick={() => setOpen(false)}>\n Skip\n </Button>\n <div className=\"flex gap-2\">\n {onSignUp && (\n <Button type=\"button\" variant=\"outline\" onClick={onSignUp}>\n Sign Up\n </Button>\n )}\n {onLogin && (\n <Button type=\"button\" variant=\"default\" onClick={onLogin}>\n Login\n </Button>\n )}\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default RequestLoginDialog;\n","export const TextColorMap = {\n green: \"text-green-600\",\n blue: \"text-sky-600\",\n yellow: \"text-yellow-600\",\n red: \"text-red-600\",\n purple: \"text-purple-600\",\n indigo: \"text-indigo-600\",\n gray: \"text-gray-600\",\n};\n\nexport const methodToColor = {\n get: TextColorMap.green,\n post: TextColorMap.blue,\n put: TextColorMap.yellow,\n delete: TextColorMap.red,\n patch: TextColorMap.purple,\n options: TextColorMap.indigo,\n head: TextColorMap.gray,\n trace: TextColorMap.gray,\n};\n\nexport const methodForColor = (method: string) => {\n return (\n methodToColor[method.toLocaleLowerCase() as keyof typeof methodToColor] ??\n TextColorMap.gray\n );\n};\n","import { ChevronRightIcon } from \"lucide-react\";\nimport { Fragment } from \"react\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../../../../ui/Collapsible.js\";\nimport { cn } from \"../../../../util/cn.js\";\nimport { methodForColor } from \"../../util/methodToColor.js\";\n\nexport const RequestTab = ({\n method,\n url,\n headers,\n body,\n}: {\n method: string;\n url: string;\n headers: Array<[string, string]>;\n body?: string;\n}) => {\n return (\n <div className=\"flex flex-col gap-2 font-mono text-xs\">\n <div className=\"gap-2 p-2 bg-muted rounded-md\">\n <span className={cn(methodForColor(method), \"font-semibold\")}>\n {method}\n </span>\n \n <span className=\"break-all\">{url}</span> \n <span className=\"text-muted-foreground\">HTTP/1.1</span>\n </div>\n <div className=\"mx-1.5 flex flex-col gap-3\">\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex items-center gap-2 hover:text-primary group\">\n <ChevronRightIcon className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n <span className=\"font-semibold\">Headers</span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"grid grid-cols-[auto,1fr] gap-x-8 gap-y-1 pl-1.5 pt-2\">\n {headers.map(([key, value]) => (\n <Fragment key={key}>\n <div className=\"text-primary\">{key}</div>\n <div className=\"break-all\">{value}</div>\n </Fragment>\n ))}\n </div>\n </CollapsibleContent>\n </Collapsible>\n\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex items-center gap-2 hover:text-primary group\">\n <ChevronRightIcon className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n <span className=\"font-semibold\">Body</span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"pl-0 pt-2\">\n <div\n className={cn(\n \"whitespace-pre-wrap break-all bg-muted p-2 rounded-md\",\n !body && \"text-muted-foreground\",\n )}\n >\n {body ?? \"Empty body\"}\n </div>\n </div>\n </CollapsibleContent>\n </Collapsible>\n </div>\n </div>\n );\n};\n\nexport default RequestTab;\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleContent, CollapsibleTrigger };\n","type JsonValue = string | number | boolean | null | JsonObject | JsonArray;\ntype JsonObject = { [key: string]: JsonValue };\ntype JsonArray = JsonValue[];\n\nfunction inferType(value: JsonValue): string {\n if (value === null) return \"null\";\n if (Array.isArray(value)) {\n if (value.length === 0) return \"any[]\";\n const firstValue = value[0];\n if (firstValue === undefined) return \"any[]\";\n const elementType = inferType(firstValue);\n return `${elementType}[]`;\n }\n if (typeof value === \"object\") {\n return generateInterface(value);\n }\n return typeof value;\n}\n\nexport function generateInterface(obj: JsonObject, indentation = \"\"): string {\n const lines: string[] = [\"{\"];\n\n for (const [key, value] of Object.entries(obj)) {\n const propertyType = inferType(value);\n lines.push(` ${key}: ${propertyType};`);\n }\n\n lines.push(\"}\");\n return lines.join(\"\\n\");\n}\n\nexport function convertToTypes(json: JsonValue): { lines: string[] } {\n const typeDefinition = inferType(json);\n const lines = [`type GeneratedType = ${typeDefinition};`];\n return { lines };\n}\n","import { useQuery } from \"@tanstack/react-query\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport { Fragment, useState } from \"react\";\nimport { Callout } from \"zudoku/ui/Callout.js\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"zudoku/ui/Collapsible.js\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"zudoku/ui/Select.js\";\nimport { Card } from \"../../../../ui/Card.js\";\nimport { SyntaxHighlight } from \"../../../../ui/SyntaxHighlight.js\";\nimport { convertToTypes } from \"./convertToTypes.js\";\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\nconst humanFileSize = (bytes: number) => {\n const exponent = Math.floor(Math.log(bytes) / Math.log(1000.0));\n const decimal = (bytes / Math.pow(1000.0, exponent)).toFixed(\n exponent ? 2 : 0,\n );\n return `${decimal} ${exponent ? `${\"kMGTPEZY\"[exponent - 1]}B` : \"B\"}`;\n};\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: Array<[string, string]>) => {\n const contentType =\n headers.find(([key, value]) => key === \"Content-Type\")?.[1] || \"\";\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\nconst sortHeadersByRelevance = (\n headers: Array<[string, string]>,\n): Array<[string, string]> => {\n const priorityOrder = [\n \"Content-Type\",\n \"Content-Length\",\n \"Authorization\",\n \"X-RateLimit-Remaining\",\n \"X-RateLimit-Limit\",\n \"Cache-Control\",\n \"ETag\",\n ].map((key) => key.toLowerCase());\n\n return [...headers].sort(([keyA], [keyB]) => {\n const indexA = priorityOrder.indexOf(keyA.toLowerCase());\n const indexB = priorityOrder.indexOf(keyB.toLowerCase());\n if (indexA === indexB) return 0;\n if (indexA === -1) return 1;\n if (indexB === -1) return -1;\n return indexA - indexB;\n });\n};\n\nconst SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD = 64_000;\n\nexport const ResponseTab = ({\n body = \"\",\n headers,\n status,\n time,\n size,\n url,\n}: {\n body?: string;\n headers: Array<[string, string]>;\n status: number;\n time: number;\n size: number;\n url: string;\n}) => {\n const detectedLanguage = detectLanguage(headers);\n const jsonContent = tryParseJson(body);\n const beautifiedBody = jsonContent || body;\n const [view, setView] = useState<\"formatted\" | \"raw\" | \"types\">(\n jsonContent ? \"formatted\" : \"raw\",\n );\n\n const types = useQuery({\n queryKey: [\"types\", beautifiedBody],\n queryFn: async () => {\n return convertToTypes(JSON.parse(beautifiedBody));\n },\n enabled: view === \"types\",\n });\n\n const sortedHeaders = sortHeadersByRelevance([...headers]);\n const shouldDisableHighlighting = size > SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD;\n\n return (\n <div className=\"flex flex-col gap-2 h-full overflow-auto max-h-[calc(100vh-220px)] \">\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex items-center gap-2 hover:text-primary group\">\n <ChevronRightIcon className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n <span className=\"font-semibold\">Headers</span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"grid grid-cols-[auto,1fr] gap-x-8 gap-y-1 pl-1.5 pt-2 font-mono text-xs\">\n {sortedHeaders.slice(0, 5).map(([key, value]) => (\n <Fragment key={key}>\n <div className=\"text-primary whitespace-pre\">{key}</div>\n <div className=\"break-all\">{value}</div>\n </Fragment>\n ))}\n {sortedHeaders.length > 5 && (\n <Collapsible className=\"col-span-full grid-cols-subgrid grid\">\n <CollapsibleTrigger className=\"col-span-2 text-xs text-muted-foreground hover:text-primary flex items-center gap-1 py-1\">\n <ChevronRightIcon className=\"h-3 w-3 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n Show {sortedHeaders.length - 5} more headers\n </CollapsibleTrigger>\n <CollapsibleContent className=\"col-span-full grid grid-cols-subgrid gap-x-8 gap-y-1 \">\n {sortedHeaders.slice(5).map(([key, value]) => (\n <Fragment key={key}>\n <div className=\"text-primary whitespace-pre\">{key}</div>\n <div className=\"break-all\">{value}</div>\n </Fragment>\n ))}\n </CollapsibleContent>\n </Collapsible>\n )}\n </div>\n </CollapsibleContent>\n </Collapsible>\n\n <Card className=\"shadow-none\">\n {shouldDisableHighlighting && (\n <Callout type=\"info\" className=\"my-0 p-2\">\n Code highlight is disabled for responses larger than{\" \"}\n {humanFileSize(SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD)}\n </Callout>\n )}\n <SyntaxHighlight\n language={\n view === \"types\"\n ? \"typescript\"\n : view === \"raw\"\n ? jsonContent\n ? \"plain\"\n : detectedLanguage\n : \"json\"\n }\n showCopy=\"always\"\n disabled={shouldDisableHighlighting}\n noBackground\n className=\"overflow-x-auto p-4 text-xs max-h-[calc(83.333vh-180px)]\"\n code={\n (view === \"raw\"\n ? body\n : view === \"types\"\n ? types.data?.lines.join(\"\\n\")\n : beautifiedBody) ?? \"\"\n }\n />\n </Card>\n <div className=\"flex gap-2 justify-between items-center\">\n <div className=\"flex text-xs gap-2 border bg-muted rounded-md p-2 items-center h-8 font-mono divide-x\">\n <div>\n <span className=\"text-muted-foreground\">Status</span> {status}{\" \"}\n {statusCodeMap[status] ?? \"\"}\n </div>\n <div>\n <span className=\"text-muted-foreground\">Time</span>{\" \"}\n {time.toFixed(0)}ms\n </div>\n <div>\n <span className=\"text-muted-foreground\">Size</span>{\" \"}\n {humanFileSize(size)}\n </div>\n </div>\n {jsonContent && (\n <div>\n <Select\n value={view}\n onValueChange={(value) => setView(value as \"formatted\" | \"raw\")}\n >\n <SelectTrigger className=\"min-w-32\">\n <SelectValue placeholder=\"View\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"formatted\">Formatted</SelectItem>\n <SelectItem value=\"raw\">Raw</SelectItem>\n <SelectItem value=\"types\">Types</SelectItem>\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n </div>\n );\n};\n","import { type UseMutationResult } from \"@tanstack/react-query\";\nimport { Spinner } from \"../../../../components/Spinner.js\";\nimport { Button } from \"../../../../ui/Button.js\";\nimport { Callout } from \"../../../../ui/Callout.js\";\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n} from \"../../../../ui/Card.js\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"../../../../ui/Tabs.js\";\nimport { cn } from \"../../../../util/cn.js\";\nimport { type PlaygroundResult } from \"../Playground.js\";\nimport { RequestTab } from \"./RequestTab.js\";\nimport { ResponseTab } from \"./ResponseTab.js\";\n\nexport const ResultPanel = ({\n queryMutation,\n showPathParamsWarning,\n showLongRunningWarning,\n onCancel,\n}: {\n queryMutation: UseMutationResult<PlaygroundResult, Error, any>;\n showPathParamsWarning: boolean;\n showLongRunningWarning?: boolean;\n onCancel?: () => void;\n}) => {\n const status = ((queryMutation.data?.status ?? 0) / 100).toFixed(0);\n return (\n <div className=\"min-w-0 p-4 bg-muted/50\">\n {queryMutation.error ? (\n <div className=\"flex flex-col gap-2\">\n {showPathParamsWarning && (\n <Callout type=\"caution\">\n Some path parameters are missing values. Please fill them in to\n 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 <Tabs defaultValue=\"response\">\n <TabsList>\n <TabsTrigger value=\"request\">Request</TabsTrigger>\n <TabsTrigger value=\"response\">\n Response\n <span\n className={cn(\n \"text-xs font-mono ml-1\",\n status === \"2\" && \"text-green-500\",\n status === \"3\" && \"text-blue-500\",\n status === \"4\" && \"text-yellow-500\",\n status === \"5\" && \"text-red-500\",\n )}\n >\n ({queryMutation.data.status})\n </span>\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"request\">\n <RequestTab {...queryMutation.data.request} />\n </TabsContent>\n <TabsContent value=\"response\">\n <ResponseTab\n status={queryMutation.data.status}\n time={queryMutation.data.time}\n size={queryMutation.data.size}\n headers={queryMutation.data.headers}\n body={queryMutation.data.body}\n url={queryMutation.data.request.url}\n />\n </TabsContent>\n </Tabs>\n ) : (\n <div className=\"grid place-items-center h-full\">\n {queryMutation.isPending ? (\n <div className=\"flex flex-col gap-2 items-center mt-20\">\n <Spinner size={20} />\n <div\n className={cn(\n \"opacity-0 pointer-events-none transition-opacity h-20 text-sm text-muted-foreground duration-300 flex flex-col gap-2 items-center\",\n showLongRunningWarning && \"opacity-100 pointer-events-auto\",\n )}\n >\n Looks like the request is taking longer than expected.\n <Button\n onClick={onCancel}\n size=\"sm\"\n className=\"w-fit\"\n variant=\"outline\"\n >\n Cancel\n </Button>\n </div>\n </div>\n ) : (\n <span className=\"text-[16px] font-semibold text-muted-foreground\">\n Send a request first to see the response here\n </span>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default ResultPanel;\n","import { ChevronDownIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { RadioGroup, RadioGroupItem } from \"zudoku/ui/RadioGroup.js\";\nimport { ApiIdentity } from \"../../../core/ZudokuContext.js\";\nimport { NO_IDENTITY } from \"./Playground.js\";\n\nconst SubmitButton = ({\n identities,\n formRef,\n disabled,\n}: {\n identities: ApiIdentity[];\n formRef?: React.RefObject<HTMLFormElement | null>;\n disabled?: boolean;\n}) => {\n const { setValue } = useFormContext();\n const [dropdownValue, setDropdownValue] = useState<string | undefined>();\n if (identities.length === 0) {\n return <Button disabled={disabled}>Send</Button>;\n }\n return (\n <div className=\"flex\">\n <Button\n className=\"rounded-r-none inset-shadow-sm\"\n disabled={disabled}\n onClick={() => formRef?.current?.requestSubmit()}\n >\n Send\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n disabled={disabled}\n className=\"rounded-l-none border-l border-border/40 inset-shadow-sm w-6\"\n size=\"icon\"\n >\n <ChevronDownIcon className=\"w-4 h-4\" />\n </Button>\n </DropdownMenuTrigger>\n <RadioGroup value={dropdownValue}>\n <DropdownMenuContent className=\"w-56\" align=\"end\" alignOffset={-150}>\n {[{ id: NO_IDENTITY, label: \"None\" }, ...identities].map(\n (identity) => (\n <DropdownMenuItem\n key={identity.id}\n onClick={() => {\n setDropdownValue(identity.id);\n setValue(\"identity\", identity.id);\n formRef?.current?.requestSubmit();\n }}\n onMouseEnter={() => setDropdownValue(identity.id)}\n onMouseLeave={() => setDropdownValue(undefined)}\n >\n <RadioGroupItem value={identity.id} className=\"mr-2\" />\n\n {identity.label}\n </DropdownMenuItem>\n ),\n )}\n </DropdownMenuContent>\n </RadioGroup>\n </DropdownMenu>\n </div>\n );\n};\n\nexport default SubmitButton;\n","import { useMutation } from \"@tanstack/react-query\";\nimport { InfoIcon } from \"lucide-react\";\nimport { Fragment, useEffect, useRef, useState, useTransition } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { Alert, AlertDescription, AlertTitle } from \"zudoku/ui/Alert.js\";\nimport { PathRenderer } from \"../../../components/PathRenderer.js\";\n\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"zudoku/ui/Select.js\";\nimport { Textarea } from \"zudoku/ui/Textarea.js\";\nimport { useSelectedServer } from \"../../../authentication/state.js\";\nimport { useApiIdentities } from \"../../../components/context/ZudokuContext.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../../ui/Tabs.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { objectEntries } from \"../../../util/objectEntries.js\";\nimport { useLatest } from \"../../../util/useLatest.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport { type Content } from \"../SidecarExamples.js\";\nimport { createUrl } from \"./createUrl.js\";\nimport ExamplesDropdown from \"./ExamplesDropdown.js\";\nimport { Headers } from \"./Headers.js\";\nimport { IdentityDialog } from \"./IdentityDialog.js\";\nimport IdentitySelector from \"./IdentitySelector.js\";\nimport { PathParams } from \"./PathParams.js\";\nimport { QueryParams } from \"./QueryParams.js\";\nimport { useIdentityStore } from \"./rememberedIdentity.js\";\nimport RequestLoginDialog from \"./RequestLoginDialog.js\";\nimport { ResultPanel } from \"./result-panel/ResultPanel.js\";\nimport SubmitButton from \"./SubmitButton.js\";\n\nexport const NO_IDENTITY = \"__none\";\n\nexport type Header = {\n name: string;\n defaultValue?: string;\n defaultActive?: boolean;\n isRequired?: boolean;\n enum?: string[];\n type?: string;\n};\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\nconst bodyContentTypeMap = {\n Plain: \"text/plain\",\n JSON: \"application/json\",\n XML: \"application/xml\",\n YAML: \"application/yaml\",\n CSV: \"text/csv\",\n} as const;\n\nexport type PlaygroundForm = {\n body: string;\n bodyContentType: keyof typeof bodyContentTypeMap;\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 active: boolean;\n enum?: string[];\n }>;\n identity?: string;\n};\n\nexport type PlaygroundResult = {\n status: number;\n headers: Array<[string, string]>;\n size: number;\n body: string;\n time: number;\n request: {\n method: string;\n url: string;\n headers: Array<[string, string]>;\n body?: string;\n };\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 examples?: Content;\n requiresLogin?: boolean;\n onLogin?: () => void;\n onSignUp?: () => void;\n};\n\nexport const Playground = ({\n server,\n servers = [],\n url,\n method,\n headers = [],\n queryParams = [],\n pathParams = [],\n defaultBody = \"\",\n examples,\n requiresLogin = false,\n onLogin,\n onSignUp,\n}: PlaygroundContentProps) => {\n const { selectedServer, setSelectedServer } = useSelectedServer(\n servers.map((url) => ({ url })),\n );\n const [showSelectIdentity, setShowSelectIdentity] = useState(false);\n const identities = useApiIdentities();\n const { setRememberedIdentity, getRememberedIdentity } = useIdentityStore();\n const [, startTransition] = useTransition();\n const [skipLogin, setSkipLogin] = useState(false);\n const [showLongRunningWarning, setShowLongRunningWarning] = useState(false);\n const abortControllerRef = useRef<AbortController | undefined>(undefined);\n const latestSetRememberedIdentity = useLatest(setRememberedIdentity);\n\n const { register, control, handleSubmit, watch, setValue, ...form } =\n useForm<PlaygroundForm>({\n defaultValues: {\n body: defaultBody,\n bodyContentType: \"JSON\",\n queryParams: queryParams\n .map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n active: param.defaultActive ?? false,\n enum: param.enum ?? [],\n }))\n .concat([\n {\n name: \"\",\n value: \"\",\n active: false,\n enum: [],\n },\n ]),\n pathParams: pathParams.map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n })),\n headers: headers\n .map((header) => ({\n name: header.name,\n value: header.defaultValue ?? \"\",\n active: header.defaultActive ?? false,\n }))\n .concat([\n {\n name: \"\",\n value: \"\",\n active: false,\n },\n ]),\n identity: getRememberedIdentity(\n identities.data?.map((i) => i.id) ?? [],\n ),\n },\n });\n const formState = watch();\n const formRef = useRef<HTMLFormElement>(null);\n\n useEffect(() => {\n if (formState.identity) {\n latestSetRememberedIdentity.current(formState.identity);\n }\n }, [latestSetRememberedIdentity, formState.identity]);\n\n const queryMutation = useMutation({\n mutationFn: async (data: PlaygroundForm) => {\n const start = performance.now();\n\n const shouldSetContentType = !data.headers.some(\n (h) => h.active && h.name.toLowerCase() === \"content-type\",\n );\n\n const headers = Object.fromEntries([\n ...data.headers\n .filter((h) => h.name && h.active)\n .map((header) => [header.name, header.value]),\n ...(shouldSetContentType\n ? [[\"content-type\", bodyContentTypeMap[data.bodyContentType]]]\n : []),\n ]);\n\n const request = new Request(\n createUrl(server ?? selectedServer, url, data),\n {\n method: method.toUpperCase(),\n headers,\n body: data.body ? data.body : undefined,\n },\n );\n\n if (data.identity !== NO_IDENTITY) {\n await identities.data\n ?.find((i) => i.id === data.identity)\n ?.authorizeRequest(request);\n }\n\n const warningTimeout = setTimeout(\n () => setShowLongRunningWarning(true),\n 3210,\n );\n abortControllerRef.current = new AbortController();\n\n try {\n const response = await fetch(request, {\n signal: abortControllerRef.current.signal,\n });\n\n clearTimeout(warningTimeout);\n setShowLongRunningWarning(false);\n\n const time = performance.now() - start;\n const body = await response.text();\n const url = new URL(request.url);\n\n return {\n status: response.status,\n headers: Array.from(response.headers.entries()),\n size: body.length,\n body,\n time,\n request: {\n method: request.method.toUpperCase(),\n url: request.url,\n headers: [\n [\"Host\", url.host],\n [\"User-Agent\", \"Zudoku Playground\"],\n ...Array.from(request.headers.entries()),\n ],\n body: data.body ? data.body : undefined,\n },\n } satisfies PlaygroundResult;\n } catch (error) {\n clearTimeout(warningTimeout);\n setShowLongRunningWarning(false);\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 useEffect(() => {\n return () => {\n abortControllerRef.current?.abort();\n };\n }, []);\n\n const path = (\n <PathRenderer\n path={url}\n renderParam={({ name, originalValue, index }) => {\n const formValue = formState.pathParams.find(\n (param) => param.name === name,\n )?.value;\n\n return (\n <ColorizedParam\n name={name}\n backgroundOpacity=\"0\"\n slug={name}\n onClick={() => form.setFocus(`pathParams.${index}.value`)}\n >\n {formValue || originalValue}\n </ColorizedParam>\n );\n }}\n />\n );\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 {server ? (\n <span>{server.replace(/^https?:\\/\\//, \"\").replace(/\\/$/, \"\")}</span>\n ) : (\n servers.length > 1 && (\n <Select\n onValueChange={(value) => {\n startTransition(() => setSelectedServer(value));\n }}\n value={selectedServer}\n defaultValue={selectedServer}\n >\n <SelectTrigger className=\"p-0 border-none flex-row-reverse bg-transparent text-xs gap-0.5 h-auto translate-y-[4px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {servers.map((s) => (\n <SelectItem key={s} value={s}>\n {s.replace(/^https?:\\/\\//, \"\").replace(/\\/$/, \"\")}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n )}\n </div>\n );\n\n const showLogin = requiresLogin && !skipLogin;\n const isBodySupported = [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n );\n\n return (\n <FormProvider\n {...{ register, control, handleSubmit, watch, setValue, ...form }}\n >\n <form\n onSubmit={handleSubmit((data) => {\n if (identities.data?.length === 0 || data.identity) {\n queryMutation.mutate(data);\n } else {\n setShowSelectIdentity(true);\n }\n })}\n ref={formRef}\n className=\"relative\"\n >\n <IdentityDialog\n identities={identities.data ?? []}\n open={showSelectIdentity}\n onOpenChange={setShowSelectIdentity}\n onSubmit={({ rememberedIdentity, identity }) => {\n if (rememberedIdentity) {\n setValue(\"identity\", identity ?? NO_IDENTITY);\n }\n setShowSelectIdentity(false);\n queryMutation.mutate({ ...formState, identity });\n }}\n />\n <RequestLoginDialog\n open={showLogin}\n setOpen={(open) => setSkipLogin(!open)}\n onSignUp={onSignUp}\n onLogin={onLogin}\n />\n\n <div className=\"grid grid-cols-2 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 flex items-center\">\n {method.toUpperCase()}\n </div>\n <div className=\"items-center px-2 py-0.5 font-mono text-xs break-all leading-6\">\n {serverSelect}\n {path}\n {urlQueryParams.length > 0 ? \"?\" : \"\"}\n {urlQueryParams}\n </div>\n </div>\n\n <SubmitButton\n identities={identities.data ?? []}\n formRef={formRef}\n disabled={identities.isLoading || form.formState.isSubmitting}\n />\n </div>\n <Tabs defaultValue=\"parameters\">\n <div className=\"flex flex-wrap gap-1 justify-between\">\n <TabsList>\n <TabsTrigger value=\"parameters\">\n Parameters\n {(formState.pathParams.some((p) => p.value !== \"\") ||\n formState.queryParams.some((p) => p.active)) && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"headers\">\n Headers\n {formState.headers.filter((h) => h.active).length > 0 && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"auth\">\n Auth\n {formState.identity !== NO_IDENTITY && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"body\">\n Body\n {formState.body && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n </TabsList>\n </div>\n <TabsContent value=\"headers\">\n <Headers control={control} headers={headers} />\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 url={url} control={control} />\n </div>\n )}\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 </TabsContent>\n <TabsContent value=\"body\">\n {![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n ) && (\n <Alert className=\"mb-2\">\n <InfoIcon className=\"w-4 h-4\" />\n <AlertTitle>Body</AlertTitle>\n <AlertDescription>\n Body is only supported for POST, PUT, PATCH, and DELETE\n requests\n </AlertDescription>\n </Alert>\n )}\n <Textarea\n {...register(\"body\")}\n className={cn(\n \"border w-full rounded-lg bg-muted/40 p-2 h-64 font-mono text-[13px]\",\n !isBodySupported && \"h-20 bg-muted\",\n )}\n placeholder={\n !isBodySupported\n ? \"This request does not support a body\"\n : undefined\n }\n disabled={!isBodySupported}\n />\n {isBodySupported && (\n <div className=\"flex items-center gap-2 mt-2 justify-between\">\n <Select\n value={formState.bodyContentType}\n onValueChange={(value) =>\n setValue(\n \"bodyContentType\",\n value as keyof typeof bodyContentTypeMap,\n )\n }\n >\n <SelectTrigger className=\"w-[100px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {Object.keys(bodyContentTypeMap).map((format) => (\n <SelectItem key={format} value={format}>\n {format}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {examples && examples.length > 0 && (\n <ExamplesDropdown\n examples={examples}\n onSelect={(example, mediaType) => {\n setValue(\n \"body\",\n JSON.stringify(example.value, null, 2),\n );\n\n const format = objectEntries(bodyContentTypeMap).find(\n ([_, contentType]) => contentType === mediaType,\n )?.[0];\n\n if (format) {\n setValue(\"bodyContentType\", format);\n }\n }}\n />\n )}\n </div>\n )}\n </TabsContent>\n <TabsContent value=\"auth\">\n <div className=\"flex flex-col gap-4 my-4\">\n {identities.data?.length === 0 && (\n <Alert>\n <InfoIcon className=\"w-4 h-4\" />\n <AlertTitle>Authentication</AlertTitle>\n <AlertDescription>\n No identities found. Please create an identity first.\n </AlertDescription>\n </Alert>\n )}\n <div className=\"flex flex-col items-center gap-2\">\n <IdentitySelector\n value={formState.identity}\n identities={identities.data ?? []}\n setValue={(value) => setValue(\"identity\", value)}\n />\n </div>\n </div>\n </TabsContent>\n </Tabs>\n </div>\n <ResultPanel\n queryMutation={queryMutation}\n showPathParamsWarning={formState.pathParams.some(\n (p) => p.value === \"\",\n )}\n showLongRunningWarning={showLongRunningWarning}\n onCancel={() => {\n abortControllerRef.current?.abort(\n \"Request cancelled by the user\",\n );\n setShowLongRunningWarning(false);\n }}\n />\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\n type=\"button\"\n 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 >\n Test\n <HeroPlayIcon size={14} />\n </button>\n )}\n </DialogTrigger>\n\n <DialogContent\n className=\"max-w-screen-xl w-full h-5/6 overflow-hidden 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 { ColorMap } from \"../../../components/navigation/SidebarBadge.js\";\n\nexport const 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","import type { SidebarItem } from \"../../../../config/validators/SidebarSchema.js\";\nimport type { OperationResult } from \"../index.js\";\nimport { MethodColorMap } from \"./methodColorMap.js\";\n\nexport const createSidebarCategory = ({\n label,\n path,\n operations,\n collapsible,\n collapsed,\n}: {\n label: string;\n path: string;\n operations: OperationResult[];\n collapsible?: boolean;\n collapsed?: boolean;\n}): SidebarItem => ({\n type: \"category\",\n label,\n link: {\n type: \"doc\" as const,\n id: path,\n label,\n },\n collapsible,\n collapsed,\n items: operations.map((operation) => ({\n type: \"link\" as const,\n label: operation.summary ?? operation.path,\n href: `${path}#${operation.slug}`,\n ...(operation.method && {\n badge: {\n label: operation.method,\n color: MethodColorMap[operation.method.toLowerCase()]!,\n invert: true,\n } as const,\n }),\n })),\n});\n","import slugify from \"@sindresorhus/slugify\";\nimport { redirect, type RouteObject } from \"react-router\";\nimport { joinUrl } from \"../../../util/joinUrl.js\";\nimport type { GraphQLClient } from \"../client/GraphQLClient.js\";\nimport { type OpenApiPluginOptions, UNTAGGED_PATH } from \"../index.js\";\nimport type { OasPluginConfig } from \"../interfaces.js\";\n\n// Creates the main provider route that wraps operation routes.\nconst createOasProvider = (opts: {\n routePath: string;\n basePath: string;\n version?: string;\n routes: RouteObject[];\n client: GraphQLClient;\n config: OpenApiPluginOptions;\n}): RouteObject => ({\n path: opts.routePath,\n async lazy() {\n const { OasProvider } = await import(\"../OasProvider.js\");\n return {\n element: (\n <OasProvider\n basePath={opts.basePath}\n version={opts.version}\n client={opts.client}\n config={opts.config}\n />\n ),\n };\n },\n children: opts.routes,\n});\n\n// Creates a route for displaying the operation list used for both tagged and untagged operations.\nconst createRoute = ({\n path,\n tag,\n untagged,\n}: {\n path: string;\n tag?: string;\n untagged?: boolean;\n}): RouteObject => ({\n path,\n async lazy() {\n const { OperationList } = await import(\"../OperationList.js\");\n return { element: <OperationList tag={tag} untagged={untagged} /> };\n },\n});\n\n// Creates routes for a specific version, including tag-based routes and the untagged operations route.\nconst createVersionRoutes = (\n versionPath: string,\n tagPages: string[],\n): RouteObject[] => {\n const firstTagRoute = joinUrl(\n versionPath,\n tagPages[0] ? slugify(tagPages[0]) : UNTAGGED_PATH,\n );\n\n return [\n // Redirect to first tag on the index route\n { index: true, loader: () => redirect(firstTagRoute) },\n // Create routes for each tag\n ...tagPages.map((tag) =>\n createRoute({\n path: joinUrl(versionPath, slugify(tag)),\n tag,\n }),\n ),\n // Category without tagged operations\n createRoute({\n path: joinUrl(versionPath, UNTAGGED_PATH),\n untagged: true,\n }),\n ];\n};\n\nexport const getVersions = (config: OasPluginConfig) =>\n config.type === \"file\" ? Object.keys(config.input) : [];\n\nexport const getRoutes = ({\n basePath,\n config,\n client,\n}: {\n client: GraphQLClient;\n config: OpenApiPluginOptions;\n basePath: string;\n}): RouteObject[] => {\n const tagPages = config.tagPages;\n\n // If the config does not provide tag pages the catch-all\n // route handles all operations on a single page\n if (!tagPages) {\n return [\n createOasProvider({\n basePath,\n routePath: basePath,\n routes: [createRoute({ path: basePath + \"/:tag?\" })],\n client,\n config,\n }),\n ];\n }\n\n const versions = getVersions(config);\n // The latest version always is added as index path\n const versionsInPath =\n versions.length > 1 ? [undefined, ...versions] : [undefined];\n\n return versionsInPath.map((version) => {\n const versionPath = joinUrl(basePath, version);\n return createOasProvider({\n basePath,\n version,\n routePath: versionPath,\n routes: createVersionRoutes(versionPath, tagPages),\n client,\n config,\n });\n });\n};\n","import type { ResultOf } from \"@graphql-typed-document-node/core\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { CirclePlayIcon, LogInIcon } from \"lucide-react\";\nimport { type ReactNode } from \"react\";\nimport { matchPath } from \"react-router\";\nimport { useAuth } from \"../../authentication/hook.js\";\nimport { type ZudokuPlugin } from \"../../core/plugins.js\";\nimport type { SchemaImports } from \"../../oas/graphql/index.js\";\nimport { Button } from \"../../ui/Button.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { GraphQLClient } from \"./client/GraphQLClient.js\";\nimport { graphql } from \"./graphql/index.js\";\nimport { type OasPluginConfig } from \"./interfaces.js\";\nimport type { PlaygroundContentProps } from \"./playground/Playground.js\";\nimport { PlaygroundDialog } from \"./playground/PlaygroundDialog.js\";\nimport { createSidebarCategory } from \"./util/createSidebarCategory.js\";\nimport { getRoutes, getVersions } from \"./util/getRoutes.js\";\n\nconst GetCategoriesQuery = graphql(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n name\n }\n }\n }\n`);\n\nconst GetOperationsQuery = graphql(`\n query GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\n schema(input: $input, type: $type) {\n operations(tag: $tag) {\n slug\n deprecated\n method\n summary\n operationId\n path\n tags {\n name\n }\n }\n untagged: operations(untagged: true) {\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n`);\n\nexport type OperationResult = ResultOf<\n typeof GetOperationsQuery\n>[\"schema\"][\"operations\"][number];\n\ntype InternalOasPluginConfig = { schemaImports?: SchemaImports };\n\nexport type OpenApiPluginOptions = OasPluginConfig & InternalOasPluginConfig;\n\nexport const UNTAGGED_PATH = \"~endpoints\";\n\nexport const openApiPlugin = (config: OpenApiPluginOptions): ZudokuPlugin => {\n const basePath = joinUrl(config.navigationId ?? \"/reference\");\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 children,\n ...props\n }: Partial<PlaygroundContentProps> & { children: ReactNode } & Pick<\n PlaygroundContentProps,\n \"server\"\n > & {\n requireAuth: boolean;\n }) => {\n const auth = useAuth();\n\n if (!server) {\n throw new Error(\"Server is required\");\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={server}\n {...props}\n >\n <Button className=\"gap-2 items-center\" variant=\"outline\">\n {children ?? (\n <>\n Open in Playground <CirclePlayIcon size={16} />\n </>\n )}\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 const match = matchPath(\n { path: `${basePath}/:version?/:tag`, end: true },\n path,\n );\n\n try {\n const versionParam = match?.params.version;\n const version = versionParam ?? getVersions(config).at(0);\n const { type, options } = config;\n const input = type === \"file\" ? config.input[version!] : config.input;\n\n const collapsible = options?.loadTags === true || config.type === \"url\";\n const collapsed = !options?.loadTags && config.type !== \"url\";\n\n // find tag name by slug in config.tagPages\n const tagName = config.tagPages?.find(\n (tag) => slugify(tag) === match?.params.tag,\n );\n\n const [tagData, operationsData] = await Promise.all([\n client.fetch(GetCategoriesQuery, { type, input }),\n client.fetch(GetOperationsQuery, {\n type,\n input,\n tag: !options?.loadTags ? tagName : undefined,\n }),\n ]);\n\n const categories = tagData.schema.tags.flatMap((tag) => {\n const categoryPath = joinUrl(\n basePath,\n versionParam,\n slugify(tag.name),\n );\n\n const operations = operationsData.schema.operations.filter(\n (operation) =>\n operation.tags?.length !== 0 &&\n operation.tags?.map((t) => t.name).includes(tag.name),\n );\n\n // skip empty categories\n if (options?.loadTags && operations.length === 0) {\n return [];\n }\n\n return createSidebarCategory({\n label: tag.name,\n path: categoryPath,\n operations:\n match?.params.tag !== UNTAGGED_PATH || options?.loadTags\n ? operations\n : [],\n collapsible,\n collapsed,\n });\n });\n\n if (operationsData.schema.untagged.length > 0) {\n categories.push(\n createSidebarCategory({\n label: \"Other endpoints\",\n path: joinUrl(basePath, versionParam, UNTAGGED_PATH),\n operations:\n match?.params.tag === UNTAGGED_PATH || options?.loadTags\n ? operationsData.schema.untagged\n : [],\n collapsible,\n collapsed,\n }),\n );\n }\n\n return categories;\n } catch {\n return [];\n }\n },\n getRoutes: () => getRoutes({ basePath, config, client }),\n };\n};\n"],"names":["localServerPromise","throwIfError","response","_a","ZudokuError","GraphQLClient","config","__privateAdd","_getLocalServer","m","_executeFetch","init","__privateGet","__publicField","query","variables","operationName","result","TypedDocumentString","value","__meta__","OperationsFragmentFragmentDoc","ServersQueryDocument","AllOperationsDocument","GetServerQueryDocument","GetCategoriesDocument","GetOperationsDocument","documents","types.ServersQueryDocument","types.OperationsFragmentFragmentDoc","types.AllOperationsDocument","types.GetServerQueryDocument","types.GetCategoriesDocument","types.GetOperationsDocument","graphql","source","alertVariants","cva","Alert","React","className","variant","props","ref","jsx","cn","AlertTitle","AlertDescription","PathRenderer","path","renderParam","paramIndex","part","i","arr","matches","elements","lastIndex","match","originalValue","name","startIndex","Fragment","Textarea","c2n","c","s2n","s","a","pastellize","options","hue","saturation","lightness","DATA_ATTR","usePastellizedColor","resolvedTheme","useTheme","ColorizedParam","slug","title","children","onClick","useRef","normalizedSlug","normalized","text","background","textColor","backgroundColor","borderColor","useEffect","onMouseEnter","el","onMouseLeave","createUrl","host","data","filledPath","key","url","param","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuSubTrigger","inset","jsxs","ChevronRightIcon","DropdownMenuSubContent","DropdownMenuContent","sideOffset","DropdownMenuItem","DropdownMenuCheckboxItem","checked","CheckIcon","DropdownMenuRadioItem","DotIcon","DropdownMenuLabel","DropdownMenuSeparator","ExamplesDropdown","examples","onSelect","Button","mediaTypeObject","example","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Checkbox","CheckboxPrimitive","Check","Popover","PopoverPrimitive","PopoverContent","align","AutocompletePopover","onChange","placeholder","onEnterPress","open","setOpen","useState","dontClose","setDontClose","count","useCommandState","state","inputRef","PopoverAnchor","CommandInlineInput","e","CommandList","enumValue","CommandItem","selected","Autocomplete","shouldFilter","Command","createVariantComponent","tag","cvx","MyVariant","asChild","Comp","Slot","ParamsGrid","ParamsGridItem","headerOptions","Headers","control","schemaHeaders","fields","append","remove","useFieldArray","setValue","watch","useFormContext","valueRefs","nameRefs","watchedHeaders","addNewHeader","useCallback","handleHeaderEnter","index","handleValueEnter","missingHeaders","h","f","field","currentHeader","Controller","Input","XIcon","labelVariants","Label","LabelPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Circle","IdentitySelector","identities","NO_IDENTITY","identity","IdentityDialog","onSubmit","onOpenChange","setIdentity","rememberedIdentity","setRememberedIdentity","Dialog","DialogContent","DialogTitle","DialogDescription","DialogFooter","PathParams","sortedFields","b","InlineInput","QueryParams","queryParams","form","requiredFields","currentParam","useIdentityStore","create","persist","set","get","availableIdentities","createJSONStorage","RequestLoginDialog","onSignUp","onLogin","TextColorMap","methodToColor","methodForColor","method","RequestTab","headers","body","Collapsible","CollapsibleTrigger","CollapsibleContent","CollapsiblePrimitive","inferType","firstValue","generateInterface","obj","indentation","lines","propertyType","convertToTypes","json","statusCodeMap","humanFileSize","bytes","exponent","mimeTypeToLanguage","mimeType","mime","detectLanguage","contentType","tryParseJson","sortHeadersByRelevance","priorityOrder","keyA","keyB","indexA","indexB","SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD","ResponseTab","status","time","size","detectedLanguage","jsonContent","beautifiedBody","view","setView","types","useQuery","sortedHeaders","shouldDisableHighlighting","Callout","SyntaxHighlight","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","ResultPanel","queryMutation","showPathParamsWarning","showLongRunningWarning","onCancel","Tabs","TabsList","TabsTrigger","TabsContent","Spinner","SubmitButton","formRef","disabled","dropdownValue","setDropdownValue","ChevronDownIcon","bodyContentTypeMap","Playground","server","servers","pathParams","defaultBody","requiresLogin","selectedServer","setSelectedServer","useSelectedServer","showSelectIdentity","setShowSelectIdentity","useApiIdentities","getRememberedIdentity","startTransition","useTransition","skipLogin","setSkipLogin","setShowLongRunningWarning","abortControllerRef","latestSetRememberedIdentity","useLatest","register","handleSubmit","useForm","header","formState","useMutation","start","shouldSetContentType","request","_b","warningTimeout","error","formValue","urlQueryParams","p","serverSelect","showLogin","isBodySupported","FormProvider","InfoIcon","format","mediaType","objectEntries","_","HeroPlayIcon","PlaygroundDialog","DialogTrigger","VisuallyHidden","MethodColorMap","createSidebarCategory","label","operations","collapsible","collapsed","operation","createOasProvider","opts","OasProvider","createRoute","untagged","OperationList","createVersionRoutes","versionPath","tagPages","firstTagRoute","joinUrl","slugify","UNTAGGED_PATH","redirect","getVersions","getRoutes","basePath","client","versions","version","GetCategoriesQuery","GetOperationsQuery","openApiPlugin","requireAuth","auth","useAuth","LogInIcon","CirclePlayIcon","matchPath","versionParam","type","input","tagName","tagData","operationsData","categories","categoryPath","t"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-BVhQWA89.js","sources":["../src/lib/plugins/openapi/client/GraphQLClient.tsx","../src/lib/plugins/openapi/graphql/graphql.ts","../src/lib/plugins/openapi/graphql/gql.ts","../src/lib/ui/Alert.tsx","../src/lib/components/PathRenderer.tsx","../src/lib/ui/Textarea.tsx","../src/lib/util/pastellize.ts","../src/lib/plugins/openapi/ColorizedParam.tsx","../src/lib/plugins/openapi/playground/createUrl.ts","../src/lib/ui/DropdownMenu.tsx","../src/lib/plugins/openapi/playground/ExamplesDropdown.tsx","../src/lib/ui/Card.tsx","../src/lib/ui/Checkbox.tsx","../src/lib/ui/Popover.tsx","../src/lib/components/Autocomplete.tsx","../src/lib/util/createVariantComponent.tsx","../src/lib/plugins/openapi/playground/ParamsGrid.tsx","../src/lib/plugins/openapi/playground/Headers.tsx","../src/lib/ui/Label.tsx","../src/lib/ui/RadioGroup.tsx","../src/lib/plugins/openapi/playground/IdentitySelector.tsx","../src/lib/plugins/openapi/playground/IdentityDialog.tsx","../src/lib/plugins/openapi/playground/PathParams.tsx","../src/lib/plugins/openapi/playground/InlineInput.tsx","../src/lib/plugins/openapi/playground/QueryParams.tsx","../src/lib/plugins/openapi/playground/rememberedIdentity.ts","../src/lib/plugins/openapi/playground/RequestLoginDialog.tsx","../src/lib/plugins/openapi/util/methodToColor.ts","../src/lib/plugins/openapi/playground/result-panel/RequestTab.tsx","../src/lib/ui/Collapsible.tsx","../src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts","../src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx","../src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx","../src/lib/plugins/openapi/playground/SubmitButton.tsx","../src/lib/plugins/openapi/playground/Playground.tsx","../src/lib/plugins/openapi/playground/PlaygroundDialog.tsx","../src/lib/plugins/openapi/util/methodColorMap.tsx","../src/lib/plugins/openapi/util/createSidebarCategory.tsx","../src/lib/plugins/openapi/util/getRoutes.tsx","../src/lib/plugins/openapi/index.tsx"],"sourcesContent":["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","/* 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 /** OpenAPI schema scalar type that handles circular references */\n JSONSchema: { 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[\"JSONSchema\"][\"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 extensions?: Maybe<Scalars[\"JSONObject\"][\"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 extensions?: Maybe<Scalars[\"JSONObject\"][\"output\"]>;\n in: ParameterIn;\n name: Scalars[\"String\"][\"output\"];\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n schema?: Maybe<Scalars[\"JSONSchema\"][\"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 extensions?: Maybe<Scalars[\"JSONObject\"][\"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 extensions?: Maybe<Scalars[\"JSONObject\"][\"output\"]>;\n openapi: Scalars[\"String\"][\"output\"];\n operations: Array<OperationItem>;\n paths: Array<PathItem>;\n servers: Array<Server>;\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n tags: Array<SchemaTag>;\n title: Scalars[\"String\"][\"output\"];\n url?: Maybe<Scalars[\"String\"][\"output\"]>;\n version: 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 untagged?: InputMaybe<Scalars[\"Boolean\"][\"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: 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 extensions?: Maybe<Scalars[\"JSONObject\"][\"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 | null;\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 deprecated?: boolean | null;\n extensions?: any | null;\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 tag?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n untagged?: InputMaybe<Scalars[\"Boolean\"][\"input\"]>;\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 | null;\n version: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n tags: Array<{\n __typename?: \"SchemaTag\";\n name: string;\n description?: string | null;\n }>;\n operations: Array<\n { __typename?: \"OperationItem\"; slug: string } & {\n \" $fragmentRefs\"?: {\n OperationsFragmentFragment: OperationsFragmentFragment;\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 | null;\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 | null;\n tags: Array<{ __typename?: \"SchemaTag\"; name: string }>;\n };\n};\n\nexport type GetOperationsQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n tag?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n}>;\n\nexport type GetOperationsQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\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 tags?: Array<{ __typename?: \"TagItem\"; name: string }> | null;\n }>;\n untagged: 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\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 deprecated\n extensions\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!, $tag: String, $untagged: Boolean) {\n schema(input: $input, type: $type) {\n servers {\n url\n }\n description\n summary\n title\n url\n version\n tags(name: $tag) {\n name\n description\n }\n operations(tag: $tag, untagged: $untagged) {\n slug\n ...OperationsFragment\n }\n }\n}\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n deprecated\n extensions\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 name\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetCategoriesQuery,\n GetCategoriesQueryVariables\n>;\nexport const GetOperationsDocument = new TypedDocumentString(`\n query GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\n schema(input: $input, type: $type) {\n operations(tag: $tag) {\n slug\n deprecated\n method\n summary\n operationId\n path\n tags {\n name\n }\n }\n untagged: operations(untagged: true) {\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetOperationsQuery,\n GetOperationsQueryVariables\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 */\ntype 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\": typeof types.ServersQueryDocument;\n \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n deprecated\\n extensions\\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\": typeof types.OperationsFragmentFragmentDoc;\n \"\\n query AllOperations(\\n $input: JSON!\\n $type: SchemaType!\\n $tag: String\\n $untagged: Boolean\\n ) {\\n schema(input: $input, type: $type) {\\n servers {\\n url\\n }\\n description\\n summary\\n title\\n url\\n version\\n tags(name: $tag) {\\n name\\n description\\n }\\n operations(tag: $tag, untagged: $untagged) {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n\": typeof 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\": typeof types.GetServerQueryDocument;\n \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n name\\n }\\n }\\n }\\n\": typeof types.GetCategoriesDocument;\n \"\\n query GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\\n schema(input: $input, type: $type) {\\n operations(tag: $tag) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n tags {\\n name\\n }\\n }\\n untagged: operations(untagged: true) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n\": typeof types.GetOperationsDocument;\n};\nconst documents: 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 deprecated\\n extensions\\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(\\n $input: JSON!\\n $type: SchemaType!\\n $tag: String\\n $untagged: Boolean\\n ) {\\n schema(input: $input, type: $type) {\\n servers {\\n url\\n }\\n description\\n summary\\n title\\n url\\n version\\n tags(name: $tag) {\\n name\\n description\\n }\\n operations(tag: $tag, untagged: $untagged) {\\n slug\\n ...OperationsFragment\\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 name\\n }\\n }\\n }\\n\":\n types.GetCategoriesDocument,\n \"\\n query GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\\n schema(input: $input, type: $type) {\\n operations(tag: $tag) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n tags {\\n name\\n }\\n }\\n untagged: operations(untagged: true) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n\":\n types.GetOperationsDocument,\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 deprecated\\n extensions\\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(\\n $input: JSON!\\n $type: SchemaType!\\n $tag: String\\n $untagged: Boolean\\n ) {\\n schema(input: $input, type: $type) {\\n servers {\\n url\\n }\\n description\\n summary\\n title\\n url\\n version\\n tags(name: $tag) {\\n name\\n description\\n }\\n operations(tag: $tag, untagged: $untagged) {\\n slug\\n ...OperationsFragment\\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 name\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetCategoriesDocument;\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 GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\\n schema(input: $input, type: $type) {\\n operations(tag: $tag) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n tags {\\n name\\n }\\n }\\n untagged: operations(untagged: true) {\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetOperationsDocument;\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n));\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertDescription, AlertTitle };\n","import { Fragment, type ReactNode } from \"react\";\n\ntype PathParamProps = {\n name: string;\n index: number;\n originalValue?: string;\n};\n\nexport const PathRenderer = ({\n path,\n renderParam,\n}: {\n path: string;\n renderParam: (props: PathParamProps) => ReactNode;\n}) => {\n let paramIndex = 0;\n return path.split(\"/\").map((part, i, arr) => {\n const matches = Array.from(part.matchAll(/{([^}]+)}/g));\n const elements: ReactNode[] = [];\n let lastIndex = 0;\n\n matches.forEach((match) => {\n const [originalValue, name] = match;\n if (!name) return;\n const startIndex = match.index!;\n\n if (startIndex > lastIndex) {\n elements.push(\n <Fragment key={`text-${lastIndex}-${startIndex}`}>\n {part.slice(lastIndex, startIndex)}\n </Fragment>,\n );\n }\n\n elements.push(\n <Fragment key={`param-${name}`}>\n {renderParam({ name, originalValue, index: paramIndex++ })}\n </Fragment>,\n );\n\n lastIndex = startIndex + originalValue.length;\n });\n\n if (lastIndex < part.length) {\n elements.push(\n <Fragment key={`text-${lastIndex}-${part.length}`}>\n {part.slice(lastIndex)}\n </Fragment>,\n );\n }\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={`${part}-${i}`}>\n {elements}\n {i < arr.length - 1 && \"/\"}\n <wbr />\n </Fragment>\n );\n });\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\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 // This may not contain (inline-)flex or (inline-)block otherwise it breaks the browser's full text search\n \"relative rounded transition-all duration-100 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]:bottom-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 * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\n\nimport { CheckIcon, ChevronRightIcon, DotIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <DotIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport type { Content, Example } from \"../SidecarExamples.js\";\n\nconst ExamplesDropdown = ({\n examples,\n onSelect,\n}: {\n examples: Content;\n onSelect: (example: Example, mediaType: string) => void;\n}) => {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">Use Example</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"max-w-72\">\n {examples.map((mediaTypeObject) => (\n <div key={mediaTypeObject.mediaType}>\n <DropdownMenuLabel>{mediaTypeObject.mediaType}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n {mediaTypeObject.examples?.map((example) => (\n <DropdownMenuItem\n key={example.name}\n onSelect={() => onSelect(example, mediaTypeObject.mediaType)}\n >\n <span\n className=\"line-clamp-1\"\n title={example.summary ?? example.name}\n >\n {example.summary ?? example.name}\n </span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n\nexport default ExamplesDropdown;\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 * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-[min(6px,var(--radius)-4px)] 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 \"border border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary\",\n className,\n )}\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 };\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverContent, PopoverTrigger };\n","import { PopoverAnchor } from \"@radix-ui/react-popover\";\nimport { useCommandState } from \"cmdk\";\nimport { useRef, useState, type KeyboardEvent, type Ref } from \"react\";\nimport {\n Command,\n CommandInlineInput,\n CommandItem,\n CommandList,\n} from \"zudoku/ui/Command.js\";\nimport { Popover, PopoverContent } from \"zudoku/ui/Popover.js\";\nimport { cn } from \"../util/cn.js\";\n\ntype AutocompleteProps = {\n value: string;\n options: readonly string[];\n onChange: (e: string) => void;\n className?: string;\n placeholder?: string;\n onEnterPress?: (e: KeyboardEvent<HTMLInputElement>) => void;\n ref?: Ref<HTMLInputElement>;\n shouldFilter?: boolean;\n};\n\nconst AutocompletePopover = ({\n value,\n options,\n onChange,\n className,\n placeholder = \"Enter value\",\n onEnterPress,\n ref,\n}: AutocompleteProps) => {\n const [open, setOpen] = useState(false);\n const [dontClose, setDontClose] = useState(false);\n const count = useCommandState((state) => state.filtered.count);\n const inputRef = useRef<HTMLInputElement>(null);\n\n return (\n <Popover open={open}>\n <PopoverAnchor>\n <CommandInlineInput\n ref={(el) => {\n inputRef.current = el;\n if (typeof ref === \"function\") {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n value={value}\n placeholder={placeholder}\n className={cn(\"h-9 bg-transparent\", className)}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n if (dontClose) {\n return;\n }\n setOpen(false);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n setOpen(false);\n inputRef.current?.blur();\n onEnterPress?.(e);\n }\n }}\n onValueChange={(e) => onChange(e)}\n />\n </PopoverAnchor>\n <PopoverContent\n onMouseEnter={() => setDontClose(true)}\n onMouseLeave={() => setDontClose(false)}\n onOpenAutoFocus={(e) => e.preventDefault()}\n className={cn(\"p-0 w-[--radix-popover-trigger-width]\", {\n \"border-0\": count === 0,\n })}\n align=\"start\"\n side=\"bottom\"\n onWheel={(e) => {\n // See: https://github.com/radix-ui/primitives/issues/1159\n e.stopPropagation();\n }}\n onTouchMove={(e) => {\n e.stopPropagation();\n }}\n >\n <CommandList className=\"max-h-[140px]\">\n {options.map((enumValue) => (\n <CommandItem\n key={enumValue}\n value={enumValue}\n onSelect={(selected) => {\n onChange(selected);\n setOpen(false);\n }}\n className=\"cursor-pointer\"\n >\n {enumValue}\n </CommandItem>\n ))}\n </CommandList>\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Autocomplete = ({ shouldFilter, ...props }: AutocompleteProps) => {\n return (\n <Command className=\"bg-transparent\" shouldFilter={shouldFilter}>\n <AutocompletePopover {...props} />\n </Command>\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\nconst ParamsGrid = createVariantComponent(\n \"div\",\n \"grid grid-cols-[2fr_3fr] gap-2 items-center\",\n);\n\nexport const ParamsGridItem = createVariantComponent(\n \"div\",\n \"group hover:bg-accent px-3 grid col-span-full grid-cols-subgrid\",\n);\n\nexport default ParamsGrid;\n","import { XIcon } from \"lucide-react\";\nimport { useCallback, useEffect, useRef } from \"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 { Autocomplete } from \"../../../components/Autocomplete.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport ParamsGrid, { ParamsGridItem } from \"./ParamsGrid.js\";\nimport { Header, type PlaygroundForm } from \"./Playground.js\";\n\nconst headerOptions = Object.freeze([\n \"Accept\",\n \"Accept-Encoding\",\n \"Accept-Language\",\n \"Authorization\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Disposition\",\n \"Content-Encoding\",\n \"Content-Language\",\n \"Content-Length\",\n \"Content-Range\",\n \"Content-Security-Policy\",\n \"Content-Type\",\n \"Cookie\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"Host\",\n \"If-Modified-Since\",\n \"Location\",\n \"Origin\",\n \"Pragma\",\n \"Referer\",\n \"Set-Cookie\",\n \"User-Agent\",\n \"X-Requested-With\",\n]);\n\nexport const Headers = ({\n control,\n headers: schemaHeaders,\n}: {\n control: Control<PlaygroundForm>;\n headers: Header[];\n}) => {\n const { fields, append, remove } = useFieldArray<PlaygroundForm, \"headers\">({\n control,\n name: \"headers\",\n });\n const { setValue, watch } = useFormContext<PlaygroundForm>();\n const valueRefs = useRef<Array<HTMLInputElement | null>>([]);\n const nameRefs = useRef<Array<HTMLInputElement | null>>([]);\n const watchedHeaders = watch(\"headers\");\n\n const addNewHeader = useCallback(() => {\n append({ name: \"\", value: \"\", active: false });\n }, [append]);\n\n useEffect(() => {\n if (watchedHeaders.length === 0) {\n addNewHeader();\n }\n }, [watchedHeaders, addNewHeader]);\n\n const handleHeaderEnter = (index: number) => {\n valueRefs.current[index]?.focus();\n };\n\n const handleValueEnter = (index: number) => {\n addNewHeader();\n requestAnimationFrame(() => nameRefs.current[index + 1]?.focus());\n };\n\n const missingHeaders = schemaHeaders\n .filter((h) => !watchedHeaders.some((f) => f.name === h.name))\n .map(({ name }) => name);\n\n return (\n <div className=\"flex flex-col gap-2\">\n <Card className=\"overflow-hidden\">\n <ParamsGrid>\n {fields.map((field, i) => {\n const currentHeader = schemaHeaders.find(\n (h) => h.name === watch(`headers.${i}.name`),\n );\n return (\n <ParamsGridItem key={field.id}>\n <div className=\"flex items-center gap-2 \">\n <Controller\n control={control}\n name={`headers.${i}.active`}\n render={({ field }) => (\n <Checkbox\n id={`headers.${i}.active`}\n checked={field.value}\n onCheckedChange={(checked) => {\n field.onChange(checked);\n }}\n />\n )}\n />\n <Controller\n control={control}\n name={`headers.${i}.name`}\n render={({ field }) => (\n <Autocomplete\n {...field}\n placeholder=\"Name\"\n className=\"border-0 shadow-none bg-transparent text-xs font-mono\"\n options={[...missingHeaders, ...headerOptions]}\n onEnterPress={() => handleHeaderEnter(i)}\n onChange={(e) => {\n field.onChange(e);\n setValue(`headers.${i}.active`, true);\n }}\n ref={(el) => {\n nameRefs.current[i] = el;\n }}\n />\n )}\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <Controller\n control={control}\n name={`headers.${i}.value`}\n render={({ field }) => {\n const hasEnum =\n currentHeader?.enum && currentHeader.enum.length > 0;\n\n if (!hasEnum) {\n return (\n <Input\n placeholder=\"Value\"\n className=\"w-full border-0 shadow-none text-xs font-mono focus-visible:ring-0\"\n {...field}\n ref={(el) => {\n valueRefs.current[i] = el;\n }}\n onKeyDown={(e) => {\n if (\n e.key === \"Enter\" &&\n e.currentTarget.value.trim()\n ) {\n handleValueEnter(i);\n }\n }}\n autoComplete=\"off\"\n />\n );\n }\n\n return (\n <Autocomplete\n shouldFilter={false}\n value={field.value}\n options={currentHeader.enum ?? []}\n onChange={(e) => {\n field.onChange(e);\n setValue(`headers.${i}.active`, true);\n }}\n className=\"font-mono text-xs border-0\"\n />\n );\n }}\n />\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"text-muted-foreground opacity-0 group-hover:opacity-100 rounded-full w-8 h-7\"\n onClick={() => remove(i)}\n type=\"button\"\n >\n <XIcon size={16} />\n </Button>\n </div>\n </ParamsGridItem>\n );\n })}\n </ParamsGrid>\n </Card>\n <div className=\"text-end\">\n <Button\n className=\"\"\n onClick={addNewHeader}\n type=\"button\"\n variant=\"secondary\"\n >\n Add header\n </Button>\n </div>\n </div>\n );\n};\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import { Card } from \"zudoku/ui/Card.js\";\nimport { Label } from \"zudoku/ui/Label.js\";\nimport { RadioGroup, RadioGroupItem } from \"zudoku/ui/RadioGroup.js\";\nimport { type ApiIdentity } from \"../../../core/ZudokuContext.js\";\nimport { NO_IDENTITY } from \"./Playground.js\";\n\nconst IdentitySelector = ({\n identities,\n setValue,\n value,\n}: {\n identities?: ApiIdentity[];\n setValue: (value: string) => void;\n value?: string;\n}) => {\n return (\n <Card className=\"w-full overflow-hidden\">\n <RadioGroup\n onValueChange={(value) => setValue(value)}\n value={value}\n defaultValue={NO_IDENTITY}\n className=\"gap-0\"\n disabled={identities?.length === 0}\n >\n <Label\n className=\"h-12 border-b items-center flex p-4 cursor-pointer hover:bg-accent\"\n htmlFor=\"none\"\n >\n <RadioGroupItem value={NO_IDENTITY} id=\"none\">\n None\n </RadioGroupItem>\n <Label htmlFor=\"none\" className=\"ml-2\">\n None\n </Label>\n </Label>\n {identities?.map((identity) => (\n <Label\n key={identity.id}\n className=\"h-12 border-b items-center flex p-4 cursor-pointer hover:bg-accent\"\n >\n <RadioGroupItem value={identity.id} id={identity.id}>\n {identity.label}\n </RadioGroupItem>\n <Label htmlFor={identity.id} className=\"ml-2\">\n {identity.label}\n </Label>\n </Label>\n ))}\n </RadioGroup>\n </Card>\n );\n};\n\nexport default IdentitySelector;\n","import { useState } from \"react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport { Checkbox } from \"zudoku/ui/Checkbox.js\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogTitle,\n} from \"zudoku/ui/Dialog.js\";\nimport { Label } from \"zudoku/ui/Label.js\";\nimport { type ApiIdentity } from \"../../../core/ZudokuContext.js\";\nimport IdentitySelector from \"./IdentitySelector.js\";\n\nconst IdentityDialog = ({\n onSubmit,\n identities,\n open,\n onOpenChange,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onSubmit: ({\n rememberedIdentity,\n identity,\n }: {\n rememberedIdentity: boolean;\n identity?: string;\n }) => void;\n identities: ApiIdentity[];\n}) => {\n const [identity, setIdentity] = useState<string | undefined>(undefined);\n const [rememberedIdentity, setRememberedIdentity] = useState<boolean>(false);\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogTitle>Select an auth identity</DialogTitle>\n <DialogDescription>\n Please select an identity for this request.\n </DialogDescription>\n <div className=\"max-h-80 overflow-auto\">\n <IdentitySelector\n identities={identities}\n setValue={setIdentity}\n value={identity}\n />\n </div>\n <DialogFooter className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-2\">\n <Checkbox\n id=\"remember\"\n checked={rememberedIdentity}\n onCheckedChange={(checked) =>\n setRememberedIdentity(\n checked === \"indeterminate\" ? false : !!checked,\n )\n }\n />\n <Label htmlFor=\"remember\">Remember my choice</Label>\n </div>\n\n <Button\n onClick={() => onSubmit({ identity: identity, rememberedIdentity })}\n >\n Send\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport { IdentityDialog };\n","import { type Control, Controller, useFieldArray } from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport ParamsGrid, { ParamsGridItem } from \"./ParamsGrid.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\nexport const PathParams = ({\n control,\n url,\n}: {\n control: Control<PlaygroundForm>;\n url: string;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm, \"pathParams\">({\n control,\n name: \"pathParams\",\n });\n\n const sortedFields = [...fields].sort(\n (a, b) => url.indexOf(`{${a.name}}`) - url.indexOf(`{${b.name}}`),\n );\n\n return (\n <Card className=\"rounded-lg\">\n <ParamsGrid>\n {sortedFields.map((field, i) => (\n <ParamsGridItem key={field.id}>\n <Controller\n control={control}\n name={`pathParams.${i}.name`}\n render={() => (\n <div className=\"flex items-center\">\n <ColorizedParam\n slug={field.name}\n name={field.name}\n className=\"font-mono text-xs px-2\"\n />\n </div>\n )}\n />\n\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 focus-visible:ring-0\"\n />\n )}\n />\n </div>\n </ParamsGridItem>\n ))}\n </ParamsGrid>\n </Card>\n );\n};\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 {\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 { Autocomplete } from \"../../../components/Autocomplete.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport ParamsGrid, { ParamsGridItem } from \"./ParamsGrid.js\";\nimport { type PlaygroundForm, type QueryParam } 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, \"queryParams\">({\n control,\n name: \"queryParams\",\n });\n const form = useFormContext<PlaygroundForm>();\n\n const requiredFields = queryParams.map((param) => Boolean(param.isRequired));\n\n return (\n <Card className=\"rounded-lg\">\n <div className=\"w-full \">\n <ParamsGrid>\n {fields.map((field, i) => {\n const currentParam = queryParams.find(\n (param) => param.name === form.watch(`queryParams.${i}.name`),\n );\n return (\n <ParamsGridItem key={field.id}>\n <div key={field.id} className=\"flex items-center gap-2\">\n <Controller\n control={control}\n name={`queryParams.${i}.active`}\n render={({ field }) => (\n <Checkbox\n id={`queryParams.${i}.active`}\n className=\"mr-2\"\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n )}\n />\n <Controller\n control={control}\n render={({ field }) =>\n !requiredFields[i] ? (\n <Autocomplete\n value={field.value}\n options={queryParams.map((param) => param.name)}\n onChange={(e) => {\n field.onChange(e);\n }}\n className=\"border-0 font-mono text-xs bg-transparent hover:bg-transparent\"\n />\n ) : (\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 }\n name={`queryParams.${i}.name`}\n />\n </div>\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(`queryParams.${i}.active`, true);\n }\n }}\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none focus-visible:ring-0 text-xs font-mono\"\n />\n );\n }\n\n return (\n <Autocomplete\n value={field.value}\n options={currentParam.enum ?? []}\n onChange={(e) => {\n field.onChange(e);\n form.setValue(`queryParams.${i}.active`, true);\n }}\n className=\"font-mono text-xs border-0 ring-1 ring-ring\"\n />\n );\n }}\n name={`queryParams.${i}.value`}\n />\n </div>\n </ParamsGridItem>\n );\n })}\n </ParamsGrid>\n </div>\n </Card>\n );\n};\n","import { create } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\n\ninterface IdentityState {\n rememberedIdentity: string | null;\n setRememberedIdentity: (identity: string | null) => void;\n getRememberedIdentity: (availableIdentities: string[]) => string | undefined;\n}\n\nexport const useIdentityStore = create<IdentityState>()(\n persist(\n (set, get) => ({\n rememberedIdentity: null,\n setRememberedIdentity: (identity: string | null) =>\n set({ rememberedIdentity: identity }),\n getRememberedIdentity: (availableIdentities: string[]) =>\n availableIdentities.find(\n (identity) => identity === get().rememberedIdentity,\n ),\n }),\n {\n name: \"identity-storage\",\n storage: createJSONStorage(() => sessionStorage),\n },\n ),\n);\n","import { Button } from \"zudoku/ui/Button.js\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogTitle,\n} from \"zudoku/ui/Dialog.js\";\n\nconst RequestLoginDialog = ({\n open,\n setOpen,\n onSignUp,\n onLogin,\n}: {\n open: boolean;\n onSignUp?: () => void;\n onLogin?: () => void;\n setOpen: (open: boolean) => void;\n}) => {\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogContent>\n <DialogTitle>Welcome to the Playground!</DialogTitle>\n <DialogDescription>\n The Playground is a tool for developers to test and explore our APIs.\n To use the Playground, you need to login.\n </DialogDescription>\n <DialogFooter className=\"flex gap-2 sm:justify-between\">\n <Button type=\"button\" variant=\"ghost\" onClick={() => setOpen(false)}>\n Skip\n </Button>\n <div className=\"flex gap-2\">\n {onSignUp && (\n <Button type=\"button\" variant=\"outline\" onClick={onSignUp}>\n Sign Up\n </Button>\n )}\n {onLogin && (\n <Button type=\"button\" variant=\"default\" onClick={onLogin}>\n Login\n </Button>\n )}\n </div>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default RequestLoginDialog;\n","export const TextColorMap = {\n green: \"text-green-600\",\n blue: \"text-sky-600\",\n yellow: \"text-yellow-600\",\n red: \"text-red-600\",\n purple: \"text-purple-600\",\n indigo: \"text-indigo-600\",\n gray: \"text-gray-600\",\n};\n\nexport const methodToColor = {\n get: TextColorMap.green,\n post: TextColorMap.blue,\n put: TextColorMap.yellow,\n delete: TextColorMap.red,\n patch: TextColorMap.purple,\n options: TextColorMap.indigo,\n head: TextColorMap.gray,\n trace: TextColorMap.gray,\n};\n\nexport const methodForColor = (method: string) => {\n return (\n methodToColor[method.toLocaleLowerCase() as keyof typeof methodToColor] ??\n TextColorMap.gray\n );\n};\n","import { ChevronRightIcon } from \"lucide-react\";\nimport { Fragment } from \"react\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../../../../ui/Collapsible.js\";\nimport { cn } from \"../../../../util/cn.js\";\nimport { methodForColor } from \"../../util/methodToColor.js\";\n\nexport const RequestTab = ({\n method,\n url,\n headers,\n body,\n}: {\n method: string;\n url: string;\n headers: Array<[string, string]>;\n body?: string;\n}) => {\n return (\n <div className=\"flex flex-col gap-2 font-mono text-xs\">\n <div className=\"gap-2 p-2 bg-muted rounded-md\">\n <span className={cn(methodForColor(method), \"font-semibold\")}>\n {method}\n </span>\n \n <span className=\"break-all\">{url}</span> \n <span className=\"text-muted-foreground\">HTTP/1.1</span>\n </div>\n <div className=\"mx-1.5 flex flex-col gap-3\">\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex items-center gap-2 hover:text-primary group\">\n <ChevronRightIcon className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n <span className=\"font-semibold\">Headers</span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"grid grid-cols-[auto,1fr] gap-x-8 gap-y-1 pl-1.5 pt-2\">\n {headers.map(([key, value]) => (\n <Fragment key={key}>\n <div className=\"text-primary\">{key}</div>\n <div className=\"break-all\">{value}</div>\n </Fragment>\n ))}\n </div>\n </CollapsibleContent>\n </Collapsible>\n\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex items-center gap-2 hover:text-primary group\">\n <ChevronRightIcon className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n <span className=\"font-semibold\">Body</span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"pl-0 pt-2\">\n <div\n className={cn(\n \"whitespace-pre-wrap break-all bg-muted p-2 rounded-md\",\n !body && \"text-muted-foreground\",\n )}\n >\n {body ?? \"Empty body\"}\n </div>\n </div>\n </CollapsibleContent>\n </Collapsible>\n </div>\n </div>\n );\n};\n\nexport default RequestTab;\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleContent, CollapsibleTrigger };\n","type JsonValue = string | number | boolean | null | JsonObject | JsonArray;\ntype JsonObject = { [key: string]: JsonValue };\ntype JsonArray = JsonValue[];\n\nfunction inferType(value: JsonValue): string {\n if (value === null) return \"null\";\n if (Array.isArray(value)) {\n if (value.length === 0) return \"any[]\";\n const firstValue = value[0];\n if (firstValue === undefined) return \"any[]\";\n const elementType = inferType(firstValue);\n return `${elementType}[]`;\n }\n if (typeof value === \"object\") {\n return generateInterface(value);\n }\n return typeof value;\n}\n\nexport function generateInterface(obj: JsonObject, indentation = \"\"): string {\n const lines: string[] = [\"{\"];\n\n for (const [key, value] of Object.entries(obj)) {\n const propertyType = inferType(value);\n lines.push(` ${key}: ${propertyType};`);\n }\n\n lines.push(\"}\");\n return lines.join(\"\\n\");\n}\n\nexport function convertToTypes(json: JsonValue): { lines: string[] } {\n const typeDefinition = inferType(json);\n const lines = [`type GeneratedType = ${typeDefinition};`];\n return { lines };\n}\n","import { useQuery } from \"@tanstack/react-query\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport { Fragment, useState } from \"react\";\nimport { Callout } from \"zudoku/ui/Callout.js\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"zudoku/ui/Collapsible.js\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"zudoku/ui/Select.js\";\nimport { Card } from \"../../../../ui/Card.js\";\nimport { SyntaxHighlight } from \"../../../../ui/SyntaxHighlight.js\";\nimport { convertToTypes } from \"./convertToTypes.js\";\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\nconst humanFileSize = (bytes: number) => {\n const exponent = Math.floor(Math.log(bytes) / Math.log(1000.0));\n const decimal = (bytes / Math.pow(1000.0, exponent)).toFixed(\n exponent ? 2 : 0,\n );\n return `${decimal} ${exponent ? `${\"kMGTPEZY\"[exponent - 1]}B` : \"B\"}`;\n};\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: Array<[string, string]>) => {\n const contentType =\n headers.find(([key, value]) => key === \"Content-Type\")?.[1] || \"\";\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\nconst sortHeadersByRelevance = (\n headers: Array<[string, string]>,\n): Array<[string, string]> => {\n const priorityOrder = [\n \"Content-Type\",\n \"Content-Length\",\n \"Authorization\",\n \"X-RateLimit-Remaining\",\n \"X-RateLimit-Limit\",\n \"Cache-Control\",\n \"ETag\",\n ].map((key) => key.toLowerCase());\n\n return [...headers].sort(([keyA], [keyB]) => {\n const indexA = priorityOrder.indexOf(keyA.toLowerCase());\n const indexB = priorityOrder.indexOf(keyB.toLowerCase());\n if (indexA === indexB) return 0;\n if (indexA === -1) return 1;\n if (indexB === -1) return -1;\n return indexA - indexB;\n });\n};\n\nconst SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD = 64_000;\n\nexport const ResponseTab = ({\n body = \"\",\n headers,\n status,\n time,\n size,\n url,\n}: {\n body?: string;\n headers: Array<[string, string]>;\n status: number;\n time: number;\n size: number;\n url: string;\n}) => {\n const detectedLanguage = detectLanguage(headers);\n const jsonContent = tryParseJson(body);\n const beautifiedBody = jsonContent || body;\n const [view, setView] = useState<\"formatted\" | \"raw\" | \"types\">(\n jsonContent ? \"formatted\" : \"raw\",\n );\n\n const types = useQuery({\n queryKey: [\"types\", beautifiedBody],\n queryFn: async () => {\n return convertToTypes(JSON.parse(beautifiedBody));\n },\n enabled: view === \"types\",\n });\n\n const sortedHeaders = sortHeadersByRelevance([...headers]);\n const shouldDisableHighlighting = size > SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD;\n\n return (\n <div className=\"flex flex-col gap-2 h-full overflow-auto max-h-[calc(100vh-220px)] \">\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex items-center gap-2 hover:text-primary group\">\n <ChevronRightIcon className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n <span className=\"font-semibold\">Headers</span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"grid grid-cols-[auto,1fr] gap-x-8 gap-y-1 pl-1.5 pt-2 font-mono text-xs\">\n {sortedHeaders.slice(0, 5).map(([key, value]) => (\n <Fragment key={key}>\n <div className=\"text-primary whitespace-pre\">{key}</div>\n <div className=\"break-all\">{value}</div>\n </Fragment>\n ))}\n {sortedHeaders.length > 5 && (\n <Collapsible className=\"col-span-full grid-cols-subgrid grid\">\n <CollapsibleTrigger className=\"col-span-2 text-xs text-muted-foreground hover:text-primary flex items-center gap-1 py-1\">\n <ChevronRightIcon className=\"h-3 w-3 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n Show {sortedHeaders.length - 5} more headers\n </CollapsibleTrigger>\n <CollapsibleContent className=\"col-span-full grid grid-cols-subgrid gap-x-8 gap-y-1 \">\n {sortedHeaders.slice(5).map(([key, value]) => (\n <Fragment key={key}>\n <div className=\"text-primary whitespace-pre\">{key}</div>\n <div className=\"break-all\">{value}</div>\n </Fragment>\n ))}\n </CollapsibleContent>\n </Collapsible>\n )}\n </div>\n </CollapsibleContent>\n </Collapsible>\n\n <Card className=\"shadow-none\">\n {shouldDisableHighlighting && (\n <Callout type=\"info\" className=\"my-0 p-2\">\n Code highlight is disabled for responses larger than{\" \"}\n {humanFileSize(SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD)}\n </Callout>\n )}\n <SyntaxHighlight\n language={\n view === \"types\"\n ? \"typescript\"\n : view === \"raw\"\n ? jsonContent\n ? \"plain\"\n : detectedLanguage\n : \"json\"\n }\n showCopy=\"always\"\n disabled={shouldDisableHighlighting}\n noBackground\n className=\"overflow-x-auto p-4 text-xs max-h-[calc(83.333vh-180px)]\"\n code={\n (view === \"raw\"\n ? body\n : view === \"types\"\n ? types.data?.lines.join(\"\\n\")\n : beautifiedBody) ?? \"\"\n }\n />\n </Card>\n <div className=\"flex gap-2 justify-between items-center\">\n <div className=\"flex text-xs gap-2 border bg-muted rounded-md p-2 items-center h-8 font-mono divide-x\">\n <div>\n <span className=\"text-muted-foreground\">Status</span> {status}{\" \"}\n {statusCodeMap[status] ?? \"\"}\n </div>\n <div>\n <span className=\"text-muted-foreground\">Time</span>{\" \"}\n {time.toFixed(0)}ms\n </div>\n <div>\n <span className=\"text-muted-foreground\">Size</span>{\" \"}\n {humanFileSize(size)}\n </div>\n </div>\n {jsonContent && (\n <div>\n <Select\n value={view}\n onValueChange={(value) => setView(value as \"formatted\" | \"raw\")}\n >\n <SelectTrigger className=\"min-w-32\">\n <SelectValue placeholder=\"View\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"formatted\">Formatted</SelectItem>\n <SelectItem value=\"raw\">Raw</SelectItem>\n <SelectItem value=\"types\">Types</SelectItem>\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n </div>\n );\n};\n","import { type UseMutationResult } from \"@tanstack/react-query\";\nimport { Spinner } from \"../../../../components/Spinner.js\";\nimport { Button } from \"../../../../ui/Button.js\";\nimport { Callout } from \"../../../../ui/Callout.js\";\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n} from \"../../../../ui/Card.js\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"../../../../ui/Tabs.js\";\nimport { cn } from \"../../../../util/cn.js\";\nimport { type PlaygroundResult } from \"../Playground.js\";\nimport { RequestTab } from \"./RequestTab.js\";\nimport { ResponseTab } from \"./ResponseTab.js\";\n\nexport const ResultPanel = ({\n queryMutation,\n showPathParamsWarning,\n showLongRunningWarning,\n onCancel,\n}: {\n queryMutation: UseMutationResult<PlaygroundResult, Error, any>;\n showPathParamsWarning: boolean;\n showLongRunningWarning?: boolean;\n onCancel?: () => void;\n}) => {\n const status = ((queryMutation.data?.status ?? 0) / 100).toFixed(0);\n return (\n <div className=\"min-w-0 p-4 bg-muted/50\">\n {queryMutation.error ? (\n <div className=\"flex flex-col gap-2\">\n {showPathParamsWarning && (\n <Callout type=\"caution\">\n Some path parameters are missing values. Please fill them in to\n 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 <Tabs defaultValue=\"response\">\n <TabsList>\n <TabsTrigger value=\"request\">Request</TabsTrigger>\n <TabsTrigger value=\"response\">\n Response\n <span\n className={cn(\n \"text-xs font-mono ml-1\",\n status === \"2\" && \"text-green-500\",\n status === \"3\" && \"text-blue-500\",\n status === \"4\" && \"text-yellow-500\",\n status === \"5\" && \"text-red-500\",\n )}\n >\n ({queryMutation.data.status})\n </span>\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"request\">\n <RequestTab {...queryMutation.data.request} />\n </TabsContent>\n <TabsContent value=\"response\">\n <ResponseTab\n status={queryMutation.data.status}\n time={queryMutation.data.time}\n size={queryMutation.data.size}\n headers={queryMutation.data.headers}\n body={queryMutation.data.body}\n url={queryMutation.data.request.url}\n />\n </TabsContent>\n </Tabs>\n ) : (\n <div className=\"grid place-items-center h-full\">\n {queryMutation.isPending ? (\n <div className=\"flex flex-col gap-2 items-center mt-20\">\n <Spinner size={20} />\n <div\n className={cn(\n \"opacity-0 pointer-events-none transition-opacity h-20 text-sm text-muted-foreground duration-300 flex flex-col gap-2 items-center\",\n showLongRunningWarning && \"opacity-100 pointer-events-auto\",\n )}\n >\n Looks like the request is taking longer than expected.\n <Button\n onClick={onCancel}\n size=\"sm\"\n className=\"w-fit\"\n variant=\"outline\"\n >\n Cancel\n </Button>\n </div>\n </div>\n ) : (\n <span className=\"text-[16px] font-semibold text-muted-foreground\">\n Send a request first to see the response here\n </span>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default ResultPanel;\n","import { ChevronDownIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { RadioGroup, RadioGroupItem } from \"zudoku/ui/RadioGroup.js\";\nimport { ApiIdentity } from \"../../../core/ZudokuContext.js\";\nimport { NO_IDENTITY } from \"./Playground.js\";\n\nconst SubmitButton = ({\n identities,\n formRef,\n disabled,\n}: {\n identities: ApiIdentity[];\n formRef?: React.RefObject<HTMLFormElement | null>;\n disabled?: boolean;\n}) => {\n const { setValue } = useFormContext();\n const [dropdownValue, setDropdownValue] = useState<string | undefined>();\n if (identities.length === 0) {\n return <Button disabled={disabled}>Send</Button>;\n }\n return (\n <div className=\"flex\">\n <Button\n className=\"rounded-r-none inset-shadow-sm\"\n disabled={disabled}\n onClick={() => formRef?.current?.requestSubmit()}\n >\n Send\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n disabled={disabled}\n className=\"rounded-l-none border-l border-border/40 inset-shadow-sm w-6\"\n size=\"icon\"\n >\n <ChevronDownIcon className=\"w-4 h-4\" />\n </Button>\n </DropdownMenuTrigger>\n <RadioGroup value={dropdownValue}>\n <DropdownMenuContent className=\"w-56\" align=\"end\" alignOffset={-150}>\n {[{ id: NO_IDENTITY, label: \"None\" }, ...identities].map(\n (identity) => (\n <DropdownMenuItem\n key={identity.id}\n onClick={() => {\n setDropdownValue(identity.id);\n setValue(\"identity\", identity.id);\n formRef?.current?.requestSubmit();\n }}\n onMouseEnter={() => setDropdownValue(identity.id)}\n onMouseLeave={() => setDropdownValue(undefined)}\n >\n <RadioGroupItem value={identity.id} className=\"mr-2\" />\n\n {identity.label}\n </DropdownMenuItem>\n ),\n )}\n </DropdownMenuContent>\n </RadioGroup>\n </DropdownMenu>\n </div>\n );\n};\n\nexport default SubmitButton;\n","import { useMutation } from \"@tanstack/react-query\";\nimport { InfoIcon } from \"lucide-react\";\nimport { Fragment, useEffect, useRef, useState, useTransition } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { Alert, AlertDescription, AlertTitle } from \"zudoku/ui/Alert.js\";\nimport { PathRenderer } from \"../../../components/PathRenderer.js\";\n\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"zudoku/ui/Select.js\";\nimport { Textarea } from \"zudoku/ui/Textarea.js\";\nimport { useSelectedServer } from \"../../../authentication/state.js\";\nimport { useApiIdentities } from \"../../../components/context/ZudokuContext.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../../ui/Tabs.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { objectEntries } from \"../../../util/objectEntries.js\";\nimport { useLatest } from \"../../../util/useLatest.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport { type Content } from \"../SidecarExamples.js\";\nimport { createUrl } from \"./createUrl.js\";\nimport ExamplesDropdown from \"./ExamplesDropdown.js\";\nimport { Headers } from \"./Headers.js\";\nimport { IdentityDialog } from \"./IdentityDialog.js\";\nimport IdentitySelector from \"./IdentitySelector.js\";\nimport { PathParams } from \"./PathParams.js\";\nimport { QueryParams } from \"./QueryParams.js\";\nimport { useIdentityStore } from \"./rememberedIdentity.js\";\nimport RequestLoginDialog from \"./RequestLoginDialog.js\";\nimport { ResultPanel } from \"./result-panel/ResultPanel.js\";\nimport SubmitButton from \"./SubmitButton.js\";\n\nexport const NO_IDENTITY = \"__none\";\n\nexport type Header = {\n name: string;\n defaultValue?: string;\n defaultActive?: boolean;\n isRequired?: boolean;\n enum?: string[];\n type?: string;\n};\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\nconst bodyContentTypeMap = {\n Plain: \"text/plain\",\n JSON: \"application/json\",\n XML: \"application/xml\",\n YAML: \"application/yaml\",\n CSV: \"text/csv\",\n} as const;\n\nexport type PlaygroundForm = {\n body: string;\n bodyContentType: keyof typeof bodyContentTypeMap;\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 active: boolean;\n enum?: string[];\n }>;\n identity?: string;\n};\n\nexport type PlaygroundResult = {\n status: number;\n headers: Array<[string, string]>;\n size: number;\n body: string;\n time: number;\n request: {\n method: string;\n url: string;\n headers: Array<[string, string]>;\n body?: string;\n };\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 examples?: Content;\n requiresLogin?: boolean;\n onLogin?: () => void;\n onSignUp?: () => void;\n};\n\nexport const Playground = ({\n server,\n servers = [],\n url,\n method,\n headers = [],\n queryParams = [],\n pathParams = [],\n defaultBody = \"\",\n examples,\n requiresLogin = false,\n onLogin,\n onSignUp,\n}: PlaygroundContentProps) => {\n const { selectedServer, setSelectedServer } = useSelectedServer(\n servers.map((url) => ({ url })),\n );\n const [showSelectIdentity, setShowSelectIdentity] = useState(false);\n const identities = useApiIdentities();\n const { setRememberedIdentity, getRememberedIdentity } = useIdentityStore();\n const [, startTransition] = useTransition();\n const [skipLogin, setSkipLogin] = useState(false);\n const [showLongRunningWarning, setShowLongRunningWarning] = useState(false);\n const abortControllerRef = useRef<AbortController | undefined>(undefined);\n const latestSetRememberedIdentity = useLatest(setRememberedIdentity);\n\n const { register, control, handleSubmit, watch, setValue, ...form } =\n useForm<PlaygroundForm>({\n defaultValues: {\n body: defaultBody,\n bodyContentType: \"JSON\",\n queryParams: queryParams\n .map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n active: param.defaultActive ?? false,\n enum: param.enum ?? [],\n }))\n .concat([\n {\n name: \"\",\n value: \"\",\n active: false,\n enum: [],\n },\n ]),\n pathParams: pathParams.map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n })),\n headers: headers\n .map((header) => ({\n name: header.name,\n value: header.defaultValue ?? \"\",\n active: header.defaultActive ?? false,\n }))\n .concat([\n {\n name: \"\",\n value: \"\",\n active: false,\n },\n ]),\n identity: getRememberedIdentity(\n identities.data?.map((i) => i.id) ?? [],\n ),\n },\n });\n const formState = watch();\n const formRef = useRef<HTMLFormElement>(null);\n\n useEffect(() => {\n if (formState.identity) {\n latestSetRememberedIdentity.current(formState.identity);\n }\n }, [latestSetRememberedIdentity, formState.identity]);\n\n const queryMutation = useMutation({\n mutationFn: async (data: PlaygroundForm) => {\n const start = performance.now();\n\n const shouldSetContentType = !data.headers.some(\n (h) => h.active && h.name.toLowerCase() === \"content-type\",\n );\n\n const headers = Object.fromEntries([\n ...data.headers\n .filter((h) => h.name && h.active)\n .map((header) => [header.name, header.value]),\n ...(shouldSetContentType\n ? [[\"content-type\", bodyContentTypeMap[data.bodyContentType]]]\n : []),\n ]);\n\n const request = new Request(\n createUrl(server ?? selectedServer, url, data),\n {\n method: method.toUpperCase(),\n headers,\n body: data.body ? data.body : undefined,\n },\n );\n\n if (data.identity !== NO_IDENTITY) {\n await identities.data\n ?.find((i) => i.id === data.identity)\n ?.authorizeRequest(request);\n }\n\n const warningTimeout = setTimeout(\n () => setShowLongRunningWarning(true),\n 3210,\n );\n abortControllerRef.current = new AbortController();\n\n try {\n const response = await fetch(request, {\n signal: abortControllerRef.current.signal,\n });\n\n clearTimeout(warningTimeout);\n setShowLongRunningWarning(false);\n\n const time = performance.now() - start;\n const body = await response.text();\n const url = new URL(request.url);\n\n return {\n status: response.status,\n headers: Array.from(response.headers.entries()),\n size: body.length,\n body,\n time,\n request: {\n method: request.method.toUpperCase(),\n url: request.url,\n headers: [\n [\"Host\", url.host],\n [\"User-Agent\", \"Zudoku Playground\"],\n ...Array.from(request.headers.entries()),\n ],\n body: data.body ? data.body : undefined,\n },\n } satisfies PlaygroundResult;\n } catch (error) {\n clearTimeout(warningTimeout);\n setShowLongRunningWarning(false);\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 useEffect(() => {\n return () => {\n abortControllerRef.current?.abort();\n };\n }, []);\n\n const path = (\n <PathRenderer\n path={url}\n renderParam={({ name, originalValue, index }) => {\n const formValue = formState.pathParams.find(\n (param) => param.name === name,\n )?.value;\n\n return (\n <ColorizedParam\n name={name}\n backgroundOpacity=\"0\"\n slug={name}\n onClick={() => form.setFocus(`pathParams.${index}.value`)}\n >\n {formValue || originalValue}\n </ColorizedParam>\n );\n }}\n />\n );\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 {server ? (\n <span>{server.replace(/^https?:\\/\\//, \"\").replace(/\\/$/, \"\")}</span>\n ) : (\n servers.length > 1 && (\n <Select\n onValueChange={(value) => {\n startTransition(() => setSelectedServer(value));\n }}\n value={selectedServer}\n defaultValue={selectedServer}\n >\n <SelectTrigger className=\"p-0 border-none flex-row-reverse bg-transparent text-xs gap-0.5 h-auto translate-y-[4px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {servers.map((s) => (\n <SelectItem key={s} value={s}>\n {s.replace(/^https?:\\/\\//, \"\").replace(/\\/$/, \"\")}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n )}\n </div>\n );\n\n const showLogin = requiresLogin && !skipLogin;\n const isBodySupported = [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n );\n\n return (\n <FormProvider\n {...{ register, control, handleSubmit, watch, setValue, ...form }}\n >\n <form\n onSubmit={handleSubmit((data) => {\n if (identities.data?.length === 0 || data.identity) {\n queryMutation.mutate(data);\n } else {\n setShowSelectIdentity(true);\n }\n })}\n ref={formRef}\n className=\"relative\"\n >\n <IdentityDialog\n identities={identities.data ?? []}\n open={showSelectIdentity}\n onOpenChange={setShowSelectIdentity}\n onSubmit={({ rememberedIdentity, identity }) => {\n if (rememberedIdentity) {\n setValue(\"identity\", identity ?? NO_IDENTITY);\n }\n setShowSelectIdentity(false);\n queryMutation.mutate({ ...formState, identity });\n }}\n />\n <RequestLoginDialog\n open={showLogin}\n setOpen={(open) => setSkipLogin(!open)}\n onSignUp={onSignUp}\n onLogin={onLogin}\n />\n\n <div className=\"grid grid-cols-2 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 flex items-center\">\n {method.toUpperCase()}\n </div>\n <div className=\"items-center px-2 py-0.5 font-mono text-xs break-all leading-6\">\n {serverSelect}\n {path}\n {urlQueryParams.length > 0 ? \"?\" : \"\"}\n {urlQueryParams}\n </div>\n </div>\n\n <SubmitButton\n identities={identities.data ?? []}\n formRef={formRef}\n disabled={identities.isLoading || form.formState.isSubmitting}\n />\n </div>\n <Tabs defaultValue=\"parameters\">\n <div className=\"flex flex-wrap gap-1 justify-between\">\n <TabsList>\n <TabsTrigger value=\"parameters\">\n Parameters\n {(formState.pathParams.some((p) => p.value !== \"\") ||\n formState.queryParams.some((p) => p.active)) && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"headers\">\n Headers\n {formState.headers.filter((h) => h.active).length > 0 && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"auth\">\n Auth\n {formState.identity !== NO_IDENTITY && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"body\">\n Body\n {formState.body && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n </TabsList>\n </div>\n <TabsContent value=\"headers\">\n <Headers control={control} headers={headers} />\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 url={url} control={control} />\n </div>\n )}\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 </TabsContent>\n <TabsContent value=\"body\">\n {![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n ) && (\n <Alert className=\"mb-2\">\n <InfoIcon className=\"w-4 h-4\" />\n <AlertTitle>Body</AlertTitle>\n <AlertDescription>\n Body is only supported for POST, PUT, PATCH, and DELETE\n requests\n </AlertDescription>\n </Alert>\n )}\n <Textarea\n {...register(\"body\")}\n className={cn(\n \"border w-full rounded-lg bg-muted/40 p-2 h-64 font-mono text-[13px]\",\n !isBodySupported && \"h-20 bg-muted\",\n )}\n placeholder={\n !isBodySupported\n ? \"This request does not support a body\"\n : undefined\n }\n disabled={!isBodySupported}\n />\n {isBodySupported && (\n <div className=\"flex items-center gap-2 mt-2 justify-between\">\n <Select\n value={formState.bodyContentType}\n onValueChange={(value) =>\n setValue(\n \"bodyContentType\",\n value as keyof typeof bodyContentTypeMap,\n )\n }\n >\n <SelectTrigger className=\"w-[100px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {Object.keys(bodyContentTypeMap).map((format) => (\n <SelectItem key={format} value={format}>\n {format}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {examples && examples.length > 0 && (\n <ExamplesDropdown\n examples={examples}\n onSelect={(example, mediaType) => {\n setValue(\n \"body\",\n JSON.stringify(example.value, null, 2),\n );\n\n const format = objectEntries(bodyContentTypeMap).find(\n ([_, contentType]) => contentType === mediaType,\n )?.[0];\n\n if (format) {\n setValue(\"bodyContentType\", format);\n }\n }}\n />\n )}\n </div>\n )}\n </TabsContent>\n <TabsContent value=\"auth\">\n <div className=\"flex flex-col gap-4 my-4\">\n {identities.data?.length === 0 && (\n <Alert>\n <InfoIcon className=\"w-4 h-4\" />\n <AlertTitle>Authentication</AlertTitle>\n <AlertDescription>\n No identities found. Please create an identity first.\n </AlertDescription>\n </Alert>\n )}\n <div className=\"flex flex-col items-center gap-2\">\n <IdentitySelector\n value={formState.identity}\n identities={identities.data ?? []}\n setValue={(value) => setValue(\"identity\", value)}\n />\n </div>\n </div>\n </TabsContent>\n </Tabs>\n </div>\n <ResultPanel\n queryMutation={queryMutation}\n showPathParamsWarning={formState.pathParams.some(\n (p) => p.value === \"\",\n )}\n showLongRunningWarning={showLongRunningWarning}\n onCancel={() => {\n abortControllerRef.current?.abort(\n \"Request cancelled by the user\",\n );\n setShowLongRunningWarning(false);\n }}\n />\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\n type=\"button\"\n 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 >\n Test\n <HeroPlayIcon size={14} />\n </button>\n )}\n </DialogTrigger>\n\n <DialogContent\n className=\"max-w-screen-xl w-full h-5/6 overflow-hidden 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 { ColorMap } from \"../../../components/navigation/SidebarBadge.js\";\n\nexport const 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","import type { SidebarItem } from \"../../../../config/validators/SidebarSchema.js\";\nimport type { OperationResult } from \"../index.js\";\nimport { MethodColorMap } from \"./methodColorMap.js\";\n\nexport const createSidebarCategory = ({\n label,\n path,\n operations,\n collapsible,\n collapsed,\n}: {\n label: string;\n path: string;\n operations: OperationResult[];\n collapsible?: boolean;\n collapsed?: boolean;\n}): SidebarItem => ({\n type: \"category\",\n label,\n link: {\n type: \"doc\" as const,\n id: path,\n label,\n },\n collapsible,\n collapsed,\n items: operations.map((operation) => ({\n type: \"link\" as const,\n label: operation.summary ?? operation.path,\n href: `${path}#${operation.slug}`,\n ...(operation.method && {\n badge: {\n label: operation.method,\n color: MethodColorMap[operation.method.toLowerCase()]!,\n invert: true,\n } as const,\n }),\n })),\n});\n","import slugify from \"@sindresorhus/slugify\";\nimport { redirect, type RouteObject } from \"react-router\";\nimport { joinUrl } from \"../../../util/joinUrl.js\";\nimport type { GraphQLClient } from \"../client/GraphQLClient.js\";\nimport { type OpenApiPluginOptions, UNTAGGED_PATH } from \"../index.js\";\nimport type { OasPluginConfig } from \"../interfaces.js\";\n\n// Creates the main provider route that wraps operation routes.\nconst createOasProvider = (opts: {\n routePath: string;\n basePath: string;\n version?: string;\n routes: RouteObject[];\n client: GraphQLClient;\n config: OpenApiPluginOptions;\n}): RouteObject => ({\n path: opts.routePath,\n async lazy() {\n const { OasProvider } = await import(\"../OasProvider.js\");\n return {\n element: (\n <OasProvider\n basePath={opts.basePath}\n version={opts.version}\n client={opts.client}\n config={opts.config}\n />\n ),\n };\n },\n children: opts.routes,\n});\n\n// Creates a route for displaying the operation list used for both tagged and untagged operations.\nconst createRoute = ({\n path,\n tag,\n untagged,\n}: {\n path: string;\n tag?: string;\n untagged?: boolean;\n}): RouteObject => ({\n path,\n async lazy() {\n const { OperationList } = await import(\"../OperationList.js\");\n return { element: <OperationList tag={tag} untagged={untagged} /> };\n },\n});\n\n// Creates routes for a specific version, including tag-based routes and the untagged operations route.\nconst createVersionRoutes = (\n versionPath: string,\n tagPages: string[],\n): RouteObject[] => {\n const firstTagRoute = joinUrl(\n versionPath,\n tagPages[0] ? slugify(tagPages[0]) : UNTAGGED_PATH,\n );\n\n return [\n // Redirect to first tag on the index route\n { index: true, loader: () => redirect(firstTagRoute) },\n // Create routes for each tag\n ...tagPages.map((tag) =>\n createRoute({\n path: joinUrl(versionPath, slugify(tag)),\n tag,\n }),\n ),\n // Category without tagged operations\n createRoute({\n path: joinUrl(versionPath, UNTAGGED_PATH),\n untagged: true,\n }),\n ];\n};\n\nexport const getVersions = (config: OasPluginConfig) =>\n config.type === \"file\" ? Object.keys(config.input) : [];\n\nexport const getRoutes = ({\n basePath,\n config,\n client,\n}: {\n client: GraphQLClient;\n config: OpenApiPluginOptions;\n basePath: string;\n}): RouteObject[] => {\n const tagPages = config.tagPages;\n\n // If the config does not provide tag pages the catch-all\n // route handles all operations on a single page\n if (!tagPages) {\n return [\n createOasProvider({\n basePath,\n routePath: basePath,\n routes: [createRoute({ path: basePath + \"/:tag?\" })],\n client,\n config,\n }),\n ];\n }\n\n const versions = getVersions(config);\n // The latest version always is added as index path\n const versionsInPath =\n versions.length > 1 ? [undefined, ...versions] : [undefined];\n\n return versionsInPath.map((version) => {\n const versionPath = joinUrl(basePath, version);\n return createOasProvider({\n basePath,\n version,\n routePath: versionPath,\n routes: createVersionRoutes(versionPath, tagPages),\n client,\n config,\n });\n });\n};\n","import type { ResultOf } from \"@graphql-typed-document-node/core\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { CirclePlayIcon, LogInIcon } from \"lucide-react\";\nimport { type ReactNode } from \"react\";\nimport { matchPath } from \"react-router\";\nimport { useAuth } from \"../../authentication/hook.js\";\nimport { type ZudokuPlugin } from \"../../core/plugins.js\";\nimport type { SchemaImports } from \"../../oas/graphql/index.js\";\nimport { Button } from \"../../ui/Button.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { GraphQLClient } from \"./client/GraphQLClient.js\";\nimport { graphql } from \"./graphql/index.js\";\nimport { type OasPluginConfig } from \"./interfaces.js\";\nimport type { PlaygroundContentProps } from \"./playground/Playground.js\";\nimport { PlaygroundDialog } from \"./playground/PlaygroundDialog.js\";\nimport { createSidebarCategory } from \"./util/createSidebarCategory.js\";\nimport { getRoutes, getVersions } from \"./util/getRoutes.js\";\n\nconst GetCategoriesQuery = graphql(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n name\n }\n }\n }\n`);\n\nconst GetOperationsQuery = graphql(`\n query GetOperations($input: JSON!, $type: SchemaType!, $tag: String) {\n schema(input: $input, type: $type) {\n operations(tag: $tag) {\n slug\n deprecated\n method\n summary\n operationId\n path\n tags {\n name\n }\n }\n untagged: operations(untagged: true) {\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n`);\n\nexport type OperationResult = ResultOf<\n typeof GetOperationsQuery\n>[\"schema\"][\"operations\"][number];\n\ntype InternalOasPluginConfig = { schemaImports?: SchemaImports };\n\nexport type OpenApiPluginOptions = OasPluginConfig & InternalOasPluginConfig;\n\nexport const UNTAGGED_PATH = \"~endpoints\";\n\nexport const openApiPlugin = (config: OpenApiPluginOptions): ZudokuPlugin => {\n const basePath = joinUrl(config.navigationId ?? \"/reference\");\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 children,\n ...props\n }: Partial<PlaygroundContentProps> & { children: ReactNode } & Pick<\n PlaygroundContentProps,\n \"server\"\n > & {\n requireAuth: boolean;\n }) => {\n const auth = useAuth();\n\n if (!server) {\n throw new Error(\"Server is required\");\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={server}\n {...props}\n >\n <Button className=\"gap-2 items-center\" variant=\"outline\">\n {children ?? (\n <>\n Open in Playground <CirclePlayIcon size={16} />\n </>\n )}\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 const match = matchPath(\n { path: `${basePath}/:version?/:tag`, end: true },\n path,\n );\n\n try {\n const versionParam = match?.params.version;\n const version = versionParam ?? getVersions(config).at(0);\n const { type, options } = config;\n const input = type === \"file\" ? config.input[version!] : config.input;\n\n const collapsible = options?.loadTags === true || config.type === \"url\";\n const collapsed = !options?.loadTags && config.type !== \"url\";\n\n // find tag name by slug in config.tagPages\n const tagName = config.tagPages?.find(\n (tag) => slugify(tag) === match?.params.tag,\n );\n\n const [tagData, operationsData] = await Promise.all([\n client.fetch(GetCategoriesQuery, { type, input }),\n client.fetch(GetOperationsQuery, {\n type,\n input,\n tag: !options?.loadTags ? tagName : undefined,\n }),\n ]);\n\n const categories = tagData.schema.tags.flatMap((tag) => {\n const categoryPath = joinUrl(\n basePath,\n versionParam,\n slugify(tag.name),\n );\n\n const operations = operationsData.schema.operations.filter(\n (operation) =>\n operation.tags?.length !== 0 &&\n operation.tags?.map((t) => t.name).includes(tag.name),\n );\n\n // skip empty categories\n if (options?.loadTags && operations.length === 0) {\n return [];\n }\n\n return createSidebarCategory({\n label: tag.name,\n path: categoryPath,\n operations:\n match?.params.tag !== UNTAGGED_PATH || options?.loadTags\n ? operations\n : [],\n collapsible,\n collapsed,\n });\n });\n\n if (operationsData.schema.untagged.length > 0) {\n categories.push(\n createSidebarCategory({\n label: \"Other endpoints\",\n path: joinUrl(basePath, versionParam, UNTAGGED_PATH),\n operations:\n match?.params.tag === UNTAGGED_PATH || options?.loadTags\n ? operationsData.schema.untagged\n : [],\n collapsible,\n collapsed,\n }),\n );\n }\n\n return categories;\n } catch {\n return [];\n }\n },\n getRoutes: () => getRoutes({ basePath, config, client }),\n };\n};\n"],"names":["localServerPromise","throwIfError","response","_a","ZudokuError","GraphQLClient","config","__privateAdd","_getLocalServer","m","_executeFetch","init","__privateGet","__publicField","query","variables","operationName","result","TypedDocumentString","value","__meta__","OperationsFragmentFragmentDoc","ServersQueryDocument","AllOperationsDocument","GetServerQueryDocument","GetCategoriesDocument","GetOperationsDocument","documents","types.ServersQueryDocument","types.OperationsFragmentFragmentDoc","types.AllOperationsDocument","types.GetServerQueryDocument","types.GetCategoriesDocument","types.GetOperationsDocument","graphql","source","alertVariants","cva","Alert","React","className","variant","props","ref","jsx","cn","AlertTitle","AlertDescription","PathRenderer","path","renderParam","paramIndex","part","i","arr","matches","elements","lastIndex","match","originalValue","name","startIndex","Fragment","Textarea","c2n","c","s2n","s","a","pastellize","options","hue","saturation","lightness","DATA_ATTR","usePastellizedColor","resolvedTheme","useTheme","ColorizedParam","slug","title","children","onClick","useRef","normalizedSlug","normalized","text","background","textColor","backgroundColor","borderColor","useEffect","onMouseEnter","el","onMouseLeave","createUrl","host","data","filledPath","key","url","param","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuSubTrigger","inset","jsxs","ChevronRightIcon","DropdownMenuSubContent","DropdownMenuContent","sideOffset","DropdownMenuItem","DropdownMenuCheckboxItem","checked","CheckIcon","DropdownMenuRadioItem","DotIcon","DropdownMenuLabel","DropdownMenuSeparator","ExamplesDropdown","examples","onSelect","Button","mediaTypeObject","example","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Checkbox","CheckboxPrimitive","Check","Popover","PopoverPrimitive","PopoverContent","align","AutocompletePopover","onChange","placeholder","onEnterPress","open","setOpen","useState","dontClose","setDontClose","count","useCommandState","state","inputRef","PopoverAnchor","CommandInlineInput","e","CommandList","enumValue","CommandItem","selected","Autocomplete","shouldFilter","Command","createVariantComponent","tag","cvx","MyVariant","asChild","Comp","Slot","ParamsGrid","ParamsGridItem","headerOptions","Headers","control","schemaHeaders","fields","append","remove","useFieldArray","setValue","watch","useFormContext","valueRefs","nameRefs","watchedHeaders","addNewHeader","useCallback","handleHeaderEnter","index","handleValueEnter","missingHeaders","h","f","field","currentHeader","Controller","Input","XIcon","labelVariants","Label","LabelPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Circle","IdentitySelector","identities","NO_IDENTITY","identity","IdentityDialog","onSubmit","onOpenChange","setIdentity","rememberedIdentity","setRememberedIdentity","Dialog","DialogContent","DialogTitle","DialogDescription","DialogFooter","PathParams","sortedFields","b","InlineInput","QueryParams","queryParams","form","requiredFields","currentParam","useIdentityStore","create","persist","set","get","availableIdentities","createJSONStorage","RequestLoginDialog","onSignUp","onLogin","TextColorMap","methodToColor","methodForColor","method","RequestTab","headers","body","Collapsible","CollapsibleTrigger","CollapsibleContent","CollapsiblePrimitive","inferType","firstValue","generateInterface","obj","indentation","lines","propertyType","convertToTypes","json","statusCodeMap","humanFileSize","bytes","exponent","mimeTypeToLanguage","mimeType","mime","detectLanguage","contentType","tryParseJson","sortHeadersByRelevance","priorityOrder","keyA","keyB","indexA","indexB","SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD","ResponseTab","status","time","size","detectedLanguage","jsonContent","beautifiedBody","view","setView","types","useQuery","sortedHeaders","shouldDisableHighlighting","Callout","SyntaxHighlight","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","ResultPanel","queryMutation","showPathParamsWarning","showLongRunningWarning","onCancel","Tabs","TabsList","TabsTrigger","TabsContent","Spinner","SubmitButton","formRef","disabled","dropdownValue","setDropdownValue","ChevronDownIcon","bodyContentTypeMap","Playground","server","servers","pathParams","defaultBody","requiresLogin","selectedServer","setSelectedServer","useSelectedServer","showSelectIdentity","setShowSelectIdentity","useApiIdentities","getRememberedIdentity","startTransition","useTransition","skipLogin","setSkipLogin","setShowLongRunningWarning","abortControllerRef","latestSetRememberedIdentity","useLatest","register","handleSubmit","useForm","header","formState","useMutation","start","shouldSetContentType","request","_b","warningTimeout","error","formValue","urlQueryParams","p","serverSelect","showLogin","isBodySupported","FormProvider","InfoIcon","format","mediaType","objectEntries","_","HeroPlayIcon","PlaygroundDialog","DialogTrigger","VisuallyHidden","MethodColorMap","createSidebarCategory","label","operations","collapsible","collapsed","operation","createOasProvider","opts","OasProvider","createRoute","untagged","OperationList","createVersionRoutes","versionPath","tagPages","firstTagRoute","joinUrl","slugify","UNTAGGED_PATH","redirect","getVersions","getRoutes","basePath","client","versions","version","GetCategoriesQuery","GetOperationsQuery","openApiPlugin","requireAuth","auth","useAuth","LogInIcon","CirclePlayIcon","matchPath","versionParam","type","input","tagName","tagData","operationsData","categories","categoryPath","t"],"mappings":"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"}
|