@mintlify/msft-sdk 1.1.24 → 1.1.26

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.
Files changed (156) hide show
  1. package/dist/api-playground/ApiPlayground/ApiPlaygroundContext.js.map +1 -1
  2. package/dist/api-playground/ApiPlayground/Request/BodySection.js.map +1 -1
  3. package/dist/api-playground/ApiPlayground/Request/ParameterSection.js.map +1 -1
  4. package/dist/api-playground/ApiPlayground/Request/PlaygroundModal.js +46 -45
  5. package/dist/api-playground/ApiPlayground/Request/PlaygroundModal.js.map +1 -1
  6. package/dist/api-playground/ApiPlayground/Request/SecuritySection.js.map +1 -1
  7. package/dist/api-playground/ApiPlayground/Request/ServerSection.js.map +1 -1
  8. package/dist/api-playground/ApiPlayground/Request/index.js +18 -18
  9. package/dist/api-playground/ApiPlayground/Request/index.js.map +1 -1
  10. package/dist/api-playground/ApiPlayground/Request/inputs/ArrayInput.js.map +1 -1
  11. package/dist/api-playground/ApiPlayground/Request/inputs/FileInput.js.map +1 -1
  12. package/dist/api-playground/ApiPlayground/Request/inputs/NullInput.js.map +1 -1
  13. package/dist/api-playground/ApiPlayground/Request/inputs/NumberInput.js.map +1 -1
  14. package/dist/api-playground/ApiPlayground/Request/inputs/ObjectInput.js.map +1 -1
  15. package/dist/api-playground/ApiPlayground/Request/inputs/RecursiveInput.js.map +1 -1
  16. package/dist/api-playground/ApiPlayground/Request/inputs/SelectInput.js.map +1 -1
  17. package/dist/api-playground/ApiPlayground/Request/inputs/StringInput.js.map +1 -1
  18. package/dist/api-playground/ApiPlayground/Request/inputs/TextInput.js.map +1 -1
  19. package/dist/api-playground/ApiPlayground/Response/CopyFileToClipboardButton.js.map +1 -1
  20. package/dist/api-playground/ApiPlayground/Response/DownloadFileButton.js.map +1 -1
  21. package/dist/api-playground/ApiPlayground/Response/ResponseBody/CodeResponseContent.js.map +1 -1
  22. package/dist/api-playground/ApiPlayground/Response/ResponseBody/index.js.map +1 -1
  23. package/dist/api-playground/ApiPlayground/Response/ResponseError.js.map +1 -1
  24. package/dist/api-playground/ApiPlayground/Response/ResponseHeaders.js.map +1 -1
  25. package/dist/api-playground/ApiPlayground/Response/ResponsePlaceholder.js.map +1 -1
  26. package/dist/api-playground/ApiPlayground/Response/ResponseTable.js.map +1 -1
  27. package/dist/api-playground/ApiPlayground/Response/ResponseTopbar.js.map +1 -1
  28. package/dist/api-playground/ApiPlayground/Response/index.js.map +1 -1
  29. package/dist/api-playground/ApiPlayground/components/AdditionalPropertyButton.js.map +1 -1
  30. package/dist/api-playground/ApiPlayground/components/ArrayCount.js.map +1 -1
  31. package/dist/api-playground/ApiPlayground/components/EndpointsMenu.js +20 -21
  32. package/dist/api-playground/ApiPlayground/components/EndpointsMenu.js.map +1 -1
  33. package/dist/api-playground/ApiPlayground/components/EndpointsMenuLink.js +10 -11
  34. package/dist/api-playground/ApiPlayground/components/EndpointsMenuLink.js.map +1 -1
  35. package/dist/api-playground/ApiPlayground/components/InputContainer.js.map +1 -1
  36. package/dist/api-playground/ApiPlayground/components/InputSectionContainer.js.map +1 -1
  37. package/dist/api-playground/ApiPlayground/components/ObjectExpandButton.js.map +1 -1
  38. package/dist/api-playground/ApiPlayground/components/PathHeader.js.map +1 -1
  39. package/dist/api-playground/ApiPlayground/components/PlaygroundModalWrapper.js.map +1 -1
  40. package/dist/api-playground/ApiPlayground/components/TrashButton.js.map +1 -1
  41. package/dist/api-playground/ApiPlayground/components/TypeDropdown.js.map +1 -1
  42. package/dist/api-playground/ApiPlayground/index.js +30 -30
  43. package/dist/api-playground/ApiPlayground/index.js.map +1 -1
  44. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/NumberMetadata.js.map +1 -1
  45. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/StringMetadata.js.map +1 -1
  46. package/dist/api-playground/EndpointFields/ParamFields/PrimitiveParamField/index.js.map +1 -1
  47. package/dist/api-playground/EndpointFields/ParamFields/RecursiveParamField.js.map +1 -1
  48. package/dist/api-playground/EndpointFields/components/Description.js.map +1 -1
  49. package/dist/api-playground/EndpointFields/components/OneOfDropdown.js.map +1 -1
  50. package/dist/api-playground/EndpointFields/components/OptionDropdown.js.map +1 -1
  51. package/dist/api-playground/EndpointFields/components/SectionHeading.js.map +1 -1
  52. package/dist/api-playground/EndpointFields/index.js.map +1 -1
  53. package/dist/api-playground-2/Api.js.map +1 -1
  54. package/dist/api-playground-2/ApiExamples.js.map +1 -1
  55. package/dist/api-playground-2/ApiFields.js.map +1 -1
  56. package/dist/api-playground-2/components/EndpointFields/EndpointSecurity.js.map +1 -1
  57. package/dist/api-playground-2/components/EndpointFields/fields/NumberMetadata.js.map +1 -1
  58. package/dist/api-playground-2/components/EndpointFields/fields/PrimitiveParamField.js.map +1 -1
  59. package/dist/api-playground-2/components/EndpointFields/fields/SimpleArrayParamField.js.map +1 -1
  60. package/dist/api-playground-2/components/EndpointFields/fields/SimpleObjectParamField.js.map +1 -1
  61. package/dist/api-playground-2/components/EndpointFields/fields/SimplePrimitiveParamField.js.map +1 -1
  62. package/dist/api-playground-2/components/EndpointFields/fields/StringMetadata.js.map +1 -1
  63. package/dist/api-playground-2/components/Example/RequestExample.js +17 -15
  64. package/dist/api-playground-2/components/Example/RequestExample.js.map +1 -1
  65. package/dist/api-playground-2/components/Example/ResponseExample.js.map +1 -1
  66. package/dist/api-playground-2/components/Request/InputSectionContainer.js.map +1 -1
  67. package/dist/api-playground-2/components/TypeDropdown.js.map +1 -1
  68. package/dist/api-playground-2/constants/index.js +12 -3
  69. package/dist/api-playground-2/constants/index.js.map +1 -1
  70. package/dist/api-playground-2/contexts/ApiPlaygroundContext.js.map +1 -1
  71. package/dist/api-playground-2/generators/generateInteractiveCodeSample.js +10 -10
  72. package/dist/api-playground-2/generators/generateInteractiveCodeSample.js.map +1 -1
  73. package/dist/api-playground-2/generators/generateSnippetMap.js +24 -24
  74. package/dist/api-playground-2/generators/generateSnippetMap.js.map +1 -1
  75. package/dist/api-playground-2/hooks/useSendPlaygroundRequest.js.map +1 -1
  76. package/dist/api-playground-2/schemaGraph/addUniqueKeysToSchema.js +41 -0
  77. package/dist/api-playground-2/schemaGraph/addUniqueKeysToSchema.js.map +1 -0
  78. package/dist/api-playground-2/schemaGraph/errors.js +19 -0
  79. package/dist/api-playground-2/schemaGraph/errors.js.map +1 -0
  80. package/dist/api-playground-2/schemaGraph/getApiReferenceDataFromGraph.js +26 -0
  81. package/dist/api-playground-2/schemaGraph/getApiReferenceDataFromGraph.js.map +1 -0
  82. package/dist/api-playground-2/schemaGraph/getDocumentProperties.js +58 -0
  83. package/dist/api-playground-2/schemaGraph/getDocumentProperties.js.map +1 -0
  84. package/dist/api-playground-2/schemaGraph/getSchemaGraphOperationData.js +77 -0
  85. package/dist/api-playground-2/schemaGraph/getSchemaGraphOperationData.js.map +1 -0
  86. package/dist/api-playground-2/schemaGraph/getSchemaGraphSchemaData.js +16 -0
  87. package/dist/api-playground-2/schemaGraph/getSchemaGraphSchemaData.js.map +1 -0
  88. package/dist/api-playground-2/schemaGraph/processExamples.js +111 -34
  89. package/dist/api-playground-2/schemaGraph/processExamples.js.map +1 -1
  90. package/dist/api-playground-2/schemaGraph/reduceCompositions.js +283 -0
  91. package/dist/api-playground-2/schemaGraph/reduceCompositions.js.map +1 -0
  92. package/dist/api-playground-2/schemaGraph/resolveGraphNode.js +61 -0
  93. package/dist/api-playground-2/schemaGraph/resolveGraphNode.js.map +1 -0
  94. package/dist/api-playground-2/schemaGraph/resolveOperationWithDependencies.js +149 -0
  95. package/dist/api-playground-2/schemaGraph/resolveOperationWithDependencies.js.map +1 -0
  96. package/dist/api-playground-2/schemaGraph/resolveSchemaWithDependencies.js +33 -0
  97. package/dist/api-playground-2/schemaGraph/resolveSchemaWithDependencies.js.map +1 -0
  98. package/dist/api-playground-2/schemaGraph/sortSchemaByRequired.js +35 -0
  99. package/dist/api-playground-2/schemaGraph/sortSchemaByRequired.js.map +1 -0
  100. package/dist/api-playground-2/schemaGraph/utils.js +144 -98
  101. package/dist/api-playground-2/schemaGraph/utils.js.map +1 -1
  102. package/dist/common/parseApiTargetFromMetadata.js +24 -0
  103. package/dist/common/parseApiTargetFromMetadata.js.map +1 -0
  104. package/dist/common/parseOpenApiString.js +42 -0
  105. package/dist/common/parseOpenApiString.js.map +1 -0
  106. package/dist/components/Api/ApiReferenceProvider.js +6 -15
  107. package/dist/components/Api/ApiReferenceProvider.js.map +1 -1
  108. package/dist/components/Api/ErrorBoundary.js.map +1 -1
  109. package/dist/components/Api/Expandable.js.map +1 -1
  110. package/dist/components/Api/Markdown.js.map +1 -1
  111. package/dist/components/Api/MethodPill.js.map +1 -1
  112. package/dist/components/Api/Param.js.map +1 -1
  113. package/dist/components/Api/colors.js.map +1 -1
  114. package/dist/components/content-components/CodeGroupSelect/CodeGroupCopyButton.js.map +1 -1
  115. package/dist/components/content-components/CodeGroupSelect/CodeSelectDropdown.js.map +1 -1
  116. package/dist/components/content-components/CodeGroupSelect/index.js.map +1 -1
  117. package/dist/components/content-components/code-block.js.map +1 -1
  118. package/dist/components/content-components/code-group.js.map +1 -1
  119. package/dist/components/content-components/code-snippet.js.map +1 -1
  120. package/dist/components/content-components/code-snippets.js.map +1 -1
  121. package/dist/components/content-components/getNodeText.js.map +1 -1
  122. package/dist/components/docsLayout.js +29 -27
  123. package/dist/components/docsLayout.js.map +1 -1
  124. package/dist/components/nav-tree/index.js +165 -156
  125. package/dist/components/nav-tree/index.js.map +1 -1
  126. package/dist/contexts/CodeExampleLabelContext.js.map +1 -1
  127. package/dist/contexts/ConfigContext.js +61 -12
  128. package/dist/contexts/ConfigContext.js.map +1 -1
  129. package/dist/contexts/EndpointLocationContext.js.map +1 -1
  130. package/dist/contexts/MDXContentContext.js +0 -1
  131. package/dist/contexts/MDXContentContext.js.map +1 -1
  132. package/dist/hooks/useApiPlaygroundDisplay.js.map +1 -1
  133. package/dist/hooks/useApiPlaygroundInputs.js.map +1 -1
  134. package/dist/hooks/useBaseUrlOptions.js.map +1 -1
  135. package/dist/hooks/useEndpoint.js.map +1 -1
  136. package/dist/hooks/useKeyboardShortcut.js.map +1 -1
  137. package/dist/hooks/useMDXContent.js.map +1 -1
  138. package/dist/hooks/useMDXContentController/useApiPlaygroundInputs.js.map +1 -1
  139. package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiBaseIndexCallback.js.map +1 -1
  140. package/dist/hooks/useMDXContentController/useMDXContentCallbacks/useSetApiPlaygroundInputsCallback.js.map +1 -1
  141. package/dist/hooks/usePlaygroundSchemaOptions.js.map +1 -1
  142. package/dist/hooks/usePrefilledInputs/index.js.map +1 -1
  143. package/dist/hooks/usePrefilledInputs/storedServerVariables.js.map +1 -1
  144. package/dist/hooks/useSecurityOption.js.map +1 -1
  145. package/dist/hooks/useSendPlaygroundRequest.js.map +1 -1
  146. package/dist/index.d.ts +129 -11
  147. package/dist/index.js +156 -144
  148. package/dist/index.js.map +1 -1
  149. package/dist/styles.css +1 -1
  150. package/package.json +1 -1
  151. package/dist/hooks/useCurrentPath.js +0 -17
  152. package/dist/hooks/useCurrentPath.js.map +0 -1
  153. package/dist/utils/decodeSlug.js +0 -8
  154. package/dist/utils/decodeSlug.js.map +0 -1
  155. package/dist/utils/optionallyAddLeadingSlash.js +0 -7
  156. package/dist/utils/optionallyAddLeadingSlash.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/api-playground-2/schemaGraph/utils.ts"],"sourcesContent":["import { openApiToSchemaGraph } from '@mintlify/validation';\nimport type {\n ApiPlaygroundInputs,\n ArraySchemaObject,\n MediaObject,\n ParameterObject,\n GraphNode,\n SchemaObject,\n DataSchema,\n} from '@mintlify/validation';\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\nimport {\n CIRCULAR_REF_KEY,\n combinationKeys,\n initialApiPlaygroundInputs,\n MAX_SCHEMA_COMBINATION_SIZE,\n stringFileFormats,\n apiPlaygroundInputKeys,\n} from '@/api-playground-2/constants';\nimport type {\n ApiReferenceDataV2,\n CircularRefObject,\n DifferentiatedType,\n ResolvedSchemaObject,\n ReducedSchema,\n} from '@/api-playground-2/types';\n\nimport { PlaygroundInputValue } from '../hooks/usePlaygroundInputsStore';\nimport { cn } from '@/utils/cn';\n\nexport { cn };\n\nexport function isCircularRef(value: unknown): value is CircularRefObject {\n return (\n typeof value === 'object' &&\n value !== null &&\n CIRCULAR_REF_KEY in value &&\n typeof value[CIRCULAR_REF_KEY] === 'string'\n );\n}\n\nexport const isResolvedSchemaObject = (obj: unknown): obj is ResolvedSchemaObject => {\n return isSchemaObject(obj) && ('isCircular' in obj || 'isRequired' in obj);\n};\n\nexport const createEmptyReducedSchema = (): ReducedSchema => ({ oneOf: [] });\nexport const createUnknownReducedSchema = (): ReducedSchema => ({ oneOf: [{}] });\n\nexport const isPlainRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const isReducedSchema = (schema: unknown): schema is ReducedSchema =>\n isSchemaObject(schema) && Array.isArray(schema.oneOf);\n\n/**\n * Given an OpenAPI 3.1 schema, this function will attempt to determine the schema type\n * based on the properties present in the schema. This is useful for assigning types to\n * schemas that are missing a type.\n *\n * For example, if a schema has no type but has `schema.properties`, we can infer the\n * intended type is `object`.\n *\n * Used in the Conversion step.\n *\n * @param schema\n * @returns if exactly one type can be inferred, the string corresponding to that type; otherwise `undefined`\n */\nexport const inferType = (\n schema: Omit<SchemaObject, 'type'>\n): OpenAPIV3_1.ArraySchemaObjectType | OpenAPIV3_1.NonArraySchemaObjectType | undefined => {\n let type: OpenAPIV3_1.ArraySchemaObjectType | OpenAPIV3_1.NonArraySchemaObjectType | undefined;\n if (\n schema.format !== undefined ||\n schema.pattern !== undefined ||\n schema.minLength !== undefined ||\n schema.maxLength !== undefined ||\n schema.enum?.every((option) => typeof option === 'string')\n ) {\n type = 'string';\n }\n if (\n schema.multipleOf !== undefined ||\n schema.minimum !== undefined ||\n schema.maximum !== undefined ||\n schema.exclusiveMinimum !== undefined ||\n schema.exclusiveMaximum !== undefined ||\n schema.enum?.every((option) => typeof option === 'number')\n ) {\n if (type !== undefined) {\n return undefined;\n }\n type = 'number';\n }\n if (\n ('items' in schema && schema.items !== undefined) ||\n schema.minItems !== undefined ||\n schema.maxItems !== undefined ||\n schema.uniqueItems !== undefined\n ) {\n if (type !== undefined) {\n return undefined;\n }\n type = 'array';\n }\n if (\n schema.additionalProperties !== undefined ||\n schema.properties !== undefined ||\n schema.minProperties !== undefined ||\n schema.maxProperties !== undefined\n ) {\n if (type !== undefined) {\n return undefined;\n }\n type = 'object';\n }\n\n return type;\n};\n\nexport const isSchemaObject = (obj: unknown): obj is SchemaObject => {\n if (!isPlainRecord(obj)) {\n return false;\n }\n\n return (\n 'type' in obj ||\n 'properties' in obj ||\n 'oneOf' in obj ||\n 'anyOf' in obj ||\n 'allOf' in obj ||\n 'items' in obj ||\n 'additionalProperties' in obj ||\n 'enum' in obj ||\n 'const' in obj ||\n 'format' in obj ||\n 'pattern' in obj ||\n 'minimum' in obj ||\n 'maximum' in obj ||\n 'minLength' in obj ||\n 'maxLength' in obj ||\n 'minItems' in obj ||\n 'maxItems' in obj ||\n 'minProperties' in obj ||\n 'maxProperties' in obj ||\n 'required' in obj ||\n 'nullable' in obj ||\n 'description' in obj\n );\n};\n\nexport const isArrayObject = (obj: unknown): obj is ArraySchemaObject => {\n return isSchemaObject(obj) && obj.type === 'array';\n};\n\nexport function hasCombinationKey(obj: Record<string, unknown>): boolean {\n return combinationKeys.some((key) => key in obj);\n}\n\nexport function shouldTruncateForSize(schema: OpenAPIV3_1.SchemaObject): boolean {\n const oneOfSize = Array.isArray(schema.oneOf) ? schema.oneOf.length : 1;\n const anyOfSize = Array.isArray(schema.anyOf) ? schema.anyOf.length : 1;\n const allOfSize = Array.isArray(schema.allOf) ? schema.allOf.length : 1;\n\n const combinations: number[] = [oneOfSize, anyOfSize, allOfSize];\n\n // go three levels deep to estimate if combinations may explode\n combinationKeys.forEach((key) => {\n if (schema[key as keyof OpenAPIV3_1.SchemaObject]) {\n const subSchema = schema[key as keyof OpenAPIV3_1.SchemaObject];\n combinations.push(Object.keys(subSchema).length);\n combinationKeys.forEach((subSchemaKey) => {\n if (subSchema[subSchemaKey as keyof OpenAPIV3_1.SchemaObject]) {\n const subSubSchema = subSchema[subSchemaKey as keyof OpenAPIV3_1.SchemaObject];\n combinations.push(Object.keys(subSubSchema).length);\n combinationKeys.forEach((subSubSchemaKey) => {\n if (subSubSchema[subSubSchemaKey as keyof OpenAPIV3_1.SchemaObject]) {\n const subSubSubSchema =\n subSubSchema[subSubSchemaKey as keyof OpenAPIV3_1.SchemaObject];\n combinations.push(Object.keys(subSubSubSchema).length);\n }\n });\n }\n });\n }\n });\n\n const totalCombinations = combinations.reduce((acc, curr) => acc * curr, 1);\n\n return totalCombinations > MAX_SCHEMA_COMBINATION_SIZE;\n}\n\n// similar to RecursiveParamField/renderTruncatedNextProperties\nexport function createTruncatedNextProperties(\n schema: OpenAPIV3_1.SchemaObject\n): OpenAPIV3_1.SchemaObject {\n const truncatedSchema = { ...schema };\n\n // Remove all composition properties to prevent further recursion\n delete truncatedSchema.oneOf;\n delete truncatedSchema.anyOf;\n delete truncatedSchema.allOf;\n\n if (truncatedSchema.type === 'array') {\n truncatedSchema.items = {};\n } else if (truncatedSchema.type === 'object') {\n truncatedSchema.properties = {};\n if (\n truncatedSchema.additionalProperties &&\n typeof truncatedSchema.additionalProperties === 'object'\n ) {\n truncatedSchema.additionalProperties = {};\n }\n }\n\n return truncatedSchema;\n}\n\nexport function createTruncatedReducedSchema(schema: OpenAPIV3_1.SchemaObject): ReducedSchema {\n const truncatedSchema = createTruncatedNextProperties(schema);\n // For reduction, we need to wrap in oneOf\n return { oneOf: [truncatedSchema] };\n}\n\nexport function collectCombinationSizes(\n value: unknown,\n remainingDepth: number,\n combinations: number[]\n): void {\n if (remainingDepth === 0 || value === undefined || value === null) {\n return;\n }\n\n if (Array.isArray(value)) {\n combinations.push(value.length);\n if (remainingDepth > 1) {\n value.forEach((item) => collectCombinationSizes(item, remainingDepth - 1, combinations));\n }\n return;\n }\n\n if (isPlainRecord(value)) {\n combinations.push(Object.keys(value).length);\n if (remainingDepth > 1) {\n Object.values(value).forEach((item) =>\n collectCombinationSizes(item, remainingDepth - 1, combinations)\n );\n }\n }\n}\n\nexport const addKeyIfDefined = <D, K extends keyof D>(\n key: K,\n value: D[K] | undefined,\n destination: D\n) => {\n if (value !== undefined) {\n destination[key] = value;\n }\n};\n\nexport const copyKeyIfDefined = <D, K extends keyof D>(\n key: K,\n source: Pick<D, K>,\n destination: D\n) => {\n if (source[key] !== undefined) {\n destination[key] = source[key];\n }\n};\n\nexport const takeLast = <T extends keyof OpenAPIV3_1.SchemaObject>(\n schema1: OpenAPIV3_1.SchemaObject,\n schema2: OpenAPIV3_1.SchemaObject,\n key: T\n): OpenAPIV3_1.SchemaObject[T] => {\n return schema2[key] ?? schema1[key];\n};\n\nexport const combine = <T extends keyof OpenAPIV3_1.SchemaObject>(\n schema1: OpenAPIV3_1.SchemaObject,\n schema2: OpenAPIV3_1.SchemaObject,\n key: T,\n transform: (\n a: NonNullable<OpenAPIV3_1.SchemaObject[T]>,\n b: NonNullable<OpenAPIV3_1.SchemaObject[T]>\n ) => OpenAPIV3_1.SchemaObject[T]\n): OpenAPIV3_1.SchemaObject[T] => {\n return schema1[key] !== undefined && schema2[key] !== undefined\n ? transform(schema1[key], schema2[key])\n : schema1[key] ?? schema2[key];\n};\n\nexport const copyExampleIfDefined = (\n source: Pick<OpenAPIV3_1.SchemaObject, 'example' | 'examples'>,\n destination: Pick<DataSchema, 'example'>\n) => {\n const example = source.example !== undefined ? source.example : source.examples?.[0];\n if (example !== undefined) {\n destination.example = example;\n }\n};\n\n// Testing utility for quick and dirty schema graph conversion\nexport const convertSchemaToGraph = (\n schema: OpenAPIV3_1.SchemaObject,\n skipClone: boolean = false\n) => {\n let spec: OpenAPIV3_1.Document;\n if ('openapi' in schema) {\n spec = schema as OpenAPIV3_1.Document;\n } else {\n spec = {\n openapi: '3.1.0',\n info: { title: 'Test', version: '1.0.0' },\n paths: {},\n components: {\n schemas: {\n TestSchema: schema,\n },\n },\n };\n }\n if (!skipClone) {\n const clonedSpec = JSON.parse(JSON.stringify(spec));\n return openApiToSchemaGraph({\n spec: clonedSpec,\n filename: 'test.json',\n originalFileLocation: 'test.json',\n });\n }\n return openApiToSchemaGraph({\n spec,\n filename: 'test.json',\n originalFileLocation: 'test.json',\n });\n};\n\nexport const flattenSingleOneOf = <T extends GraphNode & { oneOf?: SchemaObject[] }>(\n node: T\n): T => {\n if (node.oneOf && node.oneOf.length === 1) {\n return node.oneOf[0] as T;\n }\n return node;\n};\n\nexport const flattenSchemaOneOfs = (schema: SchemaObject): SchemaObject => {\n let result = { ...schema } as SchemaObject;\n\n // recursively flatten into each combinator\n if (result.properties && typeof result.properties === 'object') {\n const flattened: Record<string, SchemaObject> = {};\n for (const [key, value] of Object.entries(result.properties)) {\n if (isSchemaObject(value)) {\n flattened[key] = flattenSchemaOneOfs(value);\n } else {\n flattened[key] = value as SchemaObject;\n }\n }\n result.properties = flattened;\n }\n\n if ('items' in result && result.items && typeof result.items === 'object') {\n if (isSchemaObject(result.items)) {\n result.items = flattenSchemaOneOfs(result.items);\n }\n }\n\n if (\n result.additionalProperties &&\n typeof result.additionalProperties === 'object' &&\n isSchemaObject(result.additionalProperties)\n ) {\n result.additionalProperties = flattenSchemaOneOfs(result.additionalProperties);\n }\n if (result.oneOf && Array.isArray(result.oneOf) && result.oneOf.length > 1) {\n const oneOfArray = result.oneOf;\n const mappedOneOf = (oneOfArray as unknown[]).map((item: unknown) => {\n if (isSchemaObject(item)) {\n return flattenSchemaOneOfs(item);\n }\n return item as SchemaObject;\n });\n result.oneOf = mappedOneOf as SchemaObject[];\n }\n\n if (\n 'oneOf' in result &&\n result.oneOf &&\n Array.isArray(result.oneOf) &&\n result.oneOf.length === 1\n ) {\n const singleItem = result.oneOf[0];\n if (isSchemaObject(singleItem)) {\n result = { ...result, ...singleItem } as SchemaObject;\n delete (result as { oneOf?: unknown[] }).oneOf;\n return flattenSchemaOneOfs(result);\n }\n }\n\n return result;\n};\n\nexport const calculateMaxDepth = (obj: unknown, currentDepth = 0): number => {\n if (obj === null || typeof obj !== 'object') {\n return currentDepth;\n }\n\n if (Array.isArray(obj)) {\n if (obj.length === 0) return currentDepth;\n return Math.max(...obj.map((item) => calculateMaxDepth(item, currentDepth)));\n }\n\n const depths = Object.entries(obj).map(([key, value]) => {\n if (key === 'type' || key === 'title') {\n return currentDepth;\n }\n return calculateMaxDepth(value, currentDepth + 1);\n });\n\n return depths.length > 0 ? Math.max(...depths) : currentDepth;\n};\n\n// converts standard schema types to differentiated types that were used in v1 and oneOf type\nexport const getDifferentiatedType = (schema: ResolvedSchemaObject): DifferentiatedType => {\n if (schema.oneOf) {\n return 'oneOf';\n }\n if (schema.enum) {\n switch (schema.type) {\n case 'string':\n return 'enum<string>';\n case 'number':\n return 'enum<number>';\n case 'integer':\n return 'enum<integer>';\n default:\n return schema.type;\n }\n }\n if (schema.format && stringFileFormats.includes(schema.format)) {\n return 'file';\n }\n return schema.type;\n};\n\nexport const isEnum = (schema: SchemaObject): boolean => {\n return 'enum' in schema && schema.enum !== undefined;\n};\n\nexport const getSchemaPlaceholder = (schema: SchemaObject): string | undefined => {\n return 'placeholder' in schema && typeof schema.placeholder === 'string'\n ? schema.placeholder\n : undefined;\n};\n\nexport const isStringSchema = (schema: SchemaObject): boolean => {\n return schema.type === 'string';\n};\n\nexport const isNumberSchema = (schema: SchemaObject): boolean => {\n return schema.type === 'number' || schema.type === 'integer';\n};\n\nexport const mapResponseExamples = (apiReferenceData: ApiReferenceDataV2) => {\n const responseCodeMediaObjectMap: Record<string, MediaObject> = {};\n Object.entries(apiReferenceData.operation?.responses ?? {}).forEach(([responseCode, UUID]) => {\n const response = apiReferenceData.dependencies?.responses?.[UUID];\n if (response && response.content) {\n responseCodeMediaObjectMap[responseCode] = response.content;\n }\n });\n return responseCodeMediaObjectMap;\n};\n\nexport const generatePrefillRequestData = (\n apiReferenceData: ApiReferenceDataV2\n): ApiPlaygroundInputs[] => {\n const requestBodyContent = apiReferenceData.dependencies?.requestBody?.content;\n if (requestBodyContent === undefined) {\n return [initialApiPlaygroundInputs];\n }\n const requestBodyContentTypes = Object.keys(requestBodyContent);\n const contentType = requestBodyContentTypes[0];\n if (!contentType) {\n return [initialApiPlaygroundInputs];\n }\n const requestBodyContentExamples = Object.values(requestBodyContent[contentType]?.examples ?? {});\n const examples: ApiPlaygroundInputs[] = [];\n for (const example of requestBodyContentExamples) {\n if ('value' in example) {\n examples.push({\n ...initialApiPlaygroundInputs,\n body: example.value,\n });\n }\n }\n\n return examples;\n};\n\nexport const getParametersPerSection = (\n apiReferenceData: ApiReferenceDataV2\n): {\n header: ParameterObject[];\n path: ParameterObject[];\n query: ParameterObject[];\n cookie: ParameterObject[];\n} => {\n const parameters = apiReferenceData.dependencies?.parameters;\n if (parameters) {\n const parameterObjects = Object.values(parameters);\n const headerParameters = parameterObjects.filter(\n (parameter) => !('in' in parameter) || parameter.in === 'header'\n );\n const cookieParameters = parameterObjects.filter((parameter) => parameter.in === 'cookie');\n const pathParameters = parameterObjects.filter((parameter) => parameter.in === 'path');\n const queryParameters = parameterObjects.filter((parameter) => parameter.in === 'query');\n return {\n header: headerParameters,\n path: pathParameters,\n query: queryParameters,\n cookie: cookieParameters,\n };\n }\n return { header: [], path: [], query: [], cookie: [] };\n};\n\nexport const getSchemaDefault = (schema: object | undefined): unknown | undefined => {\n let defaultValue = undefined;\n if (!schema) {\n return undefined;\n }\n if (typeof schema === 'object' && 'default' in schema) {\n defaultValue = schema.default;\n }\n if (typeof schema === 'object' && 'x-default' in schema) {\n defaultValue = schema['x-default'];\n }\n return defaultValue;\n};\n\nexport const getUniqueInputKey = (\n inputKeyPrefix: string,\n schema: ResolvedSchemaObject,\n arrayIndex?: number,\n key?: string\n) => {\n if (!schema.uniqueKey) {\n return inputKeyPrefix;\n } else {\n const arrayIndexOrKey = arrayIndex || key;\n return `${inputKeyPrefix ? inputKeyPrefix + '.' : ''}${schema.uniqueKey}${arrayIndexOrKey ? '.' + arrayIndexOrKey : ''}`;\n }\n};\n\nexport const convertAnySchemaToOneOfs = (): SchemaObject => {\n return {\n oneOf: [\n {\n type: 'string',\n },\n {\n type: 'number',\n },\n {\n type: 'boolean',\n },\n {\n type: 'object',\n properties: {},\n },\n {\n type: 'array',\n items: {\n oneOf: [\n { type: 'string' },\n { type: 'number' },\n { type: 'boolean' },\n { type: 'object', properties: {} },\n { type: 'array', items: {} },\n { type: 'null' },\n ],\n },\n },\n {\n type: 'null',\n },\n ],\n };\n};\n\nexport const getRequestBodyContentType = (\n apiReferenceData: ApiReferenceDataV2,\n contentTypeIndex: number\n): string | undefined => {\n const requestBodyContent = apiReferenceData.dependencies?.requestBody?.content;\n if (requestBodyContent === undefined) {\n return undefined;\n }\n const requestBodyContentTypes = Object.keys(requestBodyContent);\n return requestBodyContentTypes[contentTypeIndex];\n};\n\nexport const escapeDots = (key: string): string => {\n return key.replace(/\\./g, '\\\\.');\n};\n\nexport const mapParamInToPlaygroundInputKey = (parameterIn: string): string => {\n switch (parameterIn) {\n case 'header':\n return apiPlaygroundInputKeys.header;\n case 'path':\n return apiPlaygroundInputKeys.path;\n case 'query':\n return apiPlaygroundInputKeys.query;\n case 'cookie':\n return apiPlaygroundInputKeys.cookie;\n default:\n return apiPlaygroundInputKeys.header;\n }\n};\n\n// CLANKED AS HELL. TODO: Refactor.\nexport const unflattenInputs = (\n inputs: Record<string, PlaygroundInputValue>\n): ApiPlaygroundInputs => {\n const result: ApiPlaygroundInputs = {\n server: {},\n header: {},\n path: {},\n query: {},\n cookie: {},\n body: undefined,\n };\n\n Object.entries(inputs).forEach(([key, value]) => {\n // skip undefined/null values\n if (value === undefined || value === null) {\n return;\n }\n // split on . but not on \\. (escaped dots), then unescape the parts\n const parts = key.split(/(?<!\\\\)\\./).map((part) => part.replace(/\\\\\\./g, '.'));\n if (parts.length < 2) {\n if (key === 'body') {\n result.body = value;\n }\n return;\n }\n\n const [section, ...keyPath] = parts;\n\n const validKeys = Object.values(apiPlaygroundInputKeys);\n if (!section || !validKeys.includes(section)) {\n return;\n }\n\n if (section !== apiPlaygroundInputKeys.body) {\n setNestedValue(\n result[section as keyof ApiPlaygroundInputs] as Record<string, unknown>,\n [...keyPath],\n value\n );\n } else {\n if ([...keyPath].length === 0) {\n result.body = value;\n } else {\n // Initialize body as object if it's undefined\n if (result.body === undefined || typeof result.body !== 'object') {\n result.body = {};\n }\n setNestedValue(result.body as Record<string, unknown>, keyPath, value);\n }\n }\n });\n\n // Convert array-like objects (objects with only numeric keys) to actual arrays\n return convertArrayLikeToArray(result) as ApiPlaygroundInputs;\n};\n\n// Check if an object should be converted to an array (all keys are numeric strings)\nconst isArrayLike = (obj: unknown): obj is Record<string, unknown> => {\n if (!isPlainRecord(obj)) {\n return false;\n }\n const keys = Object.keys(obj);\n if (keys.length === 0) {\n return false;\n }\n // Check if all keys are numeric strings\n return keys.every((k) => /^\\d+$/.test(k));\n};\n\n// Recursively convert array-like objects to arrays\nconst convertArrayLikeToArray = (value: unknown): unknown => {\n if (value === null || value === undefined) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(convertArrayLikeToArray);\n }\n\n if (isPlainRecord(value)) {\n if (isArrayLike(value)) {\n // Convert object with numeric keys to array\n // Sort keys numerically and map to values\n const keys = Object.keys(value).sort((a, b) => Number(a) - Number(b));\n const arr = keys.map((k) => value[k]);\n // Recursively convert nested values\n return arr.map(convertArrayLikeToArray);\n }\n\n // Recursively process regular objects\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n result[key] = convertArrayLikeToArray(val);\n }\n return result;\n }\n\n return value;\n};\n\n// recursively set a value in a nested object\nconst setNestedValue = (obj: Record<string, unknown>, keyPath: string[], value: unknown) => {\n // First pass: filter out keys we want to skip\n const filteredKeys: string[] = [];\n for (let i = 0; i < keyPath.length; i++) {\n const key = keyPath[i];\n if (key === 'oneOf') {\n // Skip this key and the next one (the oneOf index)\n i++;\n continue;\n }\n if (key === 'additionalProperties' || key === 'items') {\n // Skip these keys\n continue;\n }\n if (key) {\n filteredKeys.push(key);\n }\n }\n\n // Second pass: navigate through/create nested structure and set value\n let current = obj;\n for (let i = 0; i < filteredKeys.length; i++) {\n const key = filteredKeys[i];\n if (i === filteredKeys.length - 1) {\n // Last key - set the value\n if (key) {\n current[key] = value;\n }\n } else {\n // Not the last key - ensure nested object exists\n if (key && (!current[key] || typeof current[key] !== 'object')) {\n current[key] = {};\n }\n if (key) {\n current = current[key] as Record<string, unknown>;\n }\n }\n }\n};\n// CLANK ENDS HERE\n\nexport const filterSchemasWithConsts = (\n schemas: ResolvedSchemaObject[]\n): ResolvedSchemaObject[] => {\n const filteredSchemas = schemas.filter((schema) => {\n if ('enum' in schema && schema.enum && 'const' in schema) {\n return schema.enum.includes(schema.const);\n }\n return true;\n });\n return filteredSchemas;\n};\n\nexport const getBodyDefaultsFromSchema = (schema: SchemaObject): Record<string, unknown> => {\n const bodyDefaults: Record<string, unknown> = {};\n\n if ('uniqueKey' in schema && schema.uniqueKey !== undefined) {\n const defaultValue = getSchemaDefault(schema);\n if (defaultValue !== undefined) {\n const inputKey = `${apiPlaygroundInputKeys.body}.${schema.uniqueKey}`;\n bodyDefaults[inputKey] = defaultValue;\n }\n }\n\n if ('oneOf' in schema && Array.isArray(schema.oneOf)) {\n schema.oneOf.forEach((subSchema) => {\n if (isSchemaObject(subSchema)) {\n const subDefaults = getBodyDefaultsFromSchema(subSchema);\n Object.assign(bodyDefaults, subDefaults);\n }\n });\n }\n\n if (schema.type === 'object' && schema.properties) {\n Object.values(schema.properties).forEach((propSchema) => {\n if (isSchemaObject(propSchema)) {\n const propDefaults = getBodyDefaultsFromSchema(propSchema);\n Object.assign(bodyDefaults, propDefaults);\n }\n });\n }\n\n if (\n schema.additionalProperties &&\n typeof schema.additionalProperties === 'object' &&\n isSchemaObject(schema.additionalProperties)\n ) {\n const addPropsDefaults = getBodyDefaultsFromSchema(schema.additionalProperties);\n Object.assign(bodyDefaults, addPropsDefaults);\n }\n\n if (schema.type === 'array' && 'items' in schema && isSchemaObject(schema.items)) {\n const itemsDefaults = getBodyDefaultsFromSchema(schema.items);\n Object.assign(bodyDefaults, itemsDefaults);\n }\n\n return bodyDefaults;\n};"],"names":["isCircularRef","value","CIRCULAR_REF_KEY","isPlainRecord","isSchemaObject","obj","isArrayObject","getDifferentiatedType","schema","stringFileFormats","isEnum","getSchemaPlaceholder","isStringSchema","isNumberSchema","mapResponseExamples","apiReferenceData","responseCodeMediaObjectMap","_a","responseCode","UUID","response","_b","generatePrefillRequestData","requestBodyContent","initialApiPlaygroundInputs","contentType","requestBodyContentExamples","_c","examples","example","getParametersPerSection","parameters","parameterObjects","headerParameters","parameter","cookieParameters","pathParameters","queryParameters","getSchemaDefault","defaultValue","getUniqueInputKey","inputKeyPrefix","arrayIndex","key","arrayIndexOrKey","convertAnySchemaToOneOfs","getRequestBodyContentType","contentTypeIndex","escapeDots","mapParamInToPlaygroundInputKey","parameterIn","apiPlaygroundInputKeys","unflattenInputs","inputs","result","parts","part","section","keyPath","validKeys","setNestedValue","convertArrayLikeToArray","isArrayLike","keys","k","a","b","val","filteredKeys","current","filterSchemasWithConsts","schemas","getBodyDefaultsFromSchema","bodyDefaults","inputKey","subSchema","subDefaults","propSchema","propDefaults","addPropsDefaults","itemsDefaults"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/api-playground-2/schemaGraph/utils.ts"],"sourcesContent":["import { openApiToSchemaGraph } from '@mintlify/validation';\nimport type {\n ApiPlaygroundInputs,\n ArraySchemaObject,\n MediaObject,\n ParameterObject,\n GraphNode,\n SchemaObject,\n DataSchema,\n} from '@mintlify/validation';\nimport type { OpenAPIV3_1 } from 'openapi-types';\n\nimport {\n CIRCULAR_REF_KEY,\n combinationKeys,\n initialApiPlaygroundInputs,\n MAX_SCHEMA_COMBINATION_SIZE,\n stringFileFormats,\n apiPlaygroundInputKeys,\n} from '@/api-playground-2/constants';\nimport type {\n ApiReferenceDataV2,\n CircularRefObject,\n DifferentiatedType,\n ResolvedSchemaObject,\n ReducedSchema,\n} from '@/api-playground-2/types';\n\nimport { PlaygroundInputValue } from '../hooks/usePlaygroundInputsStore';\nimport { cn } from '@/utils/cn';\n\nexport { cn };\n\nexport function isCircularRef(value: unknown): value is CircularRefObject {\n return (\n typeof value === 'object' &&\n value !== null &&\n CIRCULAR_REF_KEY in value &&\n typeof value[CIRCULAR_REF_KEY] === 'string'\n );\n}\n\nexport const isResolvedSchemaObject = (obj: unknown): obj is ResolvedSchemaObject => {\n return isSchemaObject(obj) && ('isCircular' in obj || 'isRequired' in obj);\n};\n\nexport const createEmptyReducedSchema = (): ReducedSchema => ({ oneOf: [] });\nexport const createUnknownReducedSchema = (): ReducedSchema => ({ oneOf: [{}] });\n\nexport const isPlainRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const isReducedSchema = (schema: unknown): schema is ReducedSchema =>\n isSchemaObject(schema) && Array.isArray(schema.oneOf);\n\n/**\n * Given an OpenAPI 3.1 schema, this function will attempt to determine the schema type\n * based on the properties present in the schema. This is useful for assigning types to\n * schemas that are missing a type.\n *\n * For example, if a schema has no type but has `schema.properties`, we can infer the\n * intended type is `object`.\n *\n * Used in the Conversion step.\n *\n * @param schema\n * @returns if exactly one type can be inferred, the string corresponding to that type; otherwise `undefined`\n */\nexport const inferType = (\n schema: Omit<SchemaObject, 'type'>\n): OpenAPIV3_1.ArraySchemaObjectType | OpenAPIV3_1.NonArraySchemaObjectType | undefined => {\n let type: OpenAPIV3_1.ArraySchemaObjectType | OpenAPIV3_1.NonArraySchemaObjectType | undefined;\n if (\n schema.format !== undefined ||\n schema.pattern !== undefined ||\n schema.minLength !== undefined ||\n schema.maxLength !== undefined ||\n schema.enum?.every((option) => typeof option === 'string')\n ) {\n type = 'string';\n }\n if (\n schema.multipleOf !== undefined ||\n schema.minimum !== undefined ||\n schema.maximum !== undefined ||\n schema.exclusiveMinimum !== undefined ||\n schema.exclusiveMaximum !== undefined ||\n schema.enum?.every((option) => typeof option === 'number')\n ) {\n if (type !== undefined) {\n return undefined;\n }\n type = 'number';\n }\n if (\n ('items' in schema && schema.items !== undefined) ||\n schema.minItems !== undefined ||\n schema.maxItems !== undefined ||\n schema.uniqueItems !== undefined\n ) {\n if (type !== undefined) {\n return undefined;\n }\n type = 'array';\n }\n if (\n schema.additionalProperties !== undefined ||\n schema.properties !== undefined ||\n schema.minProperties !== undefined ||\n schema.maxProperties !== undefined\n ) {\n if (type !== undefined) {\n return undefined;\n }\n type = 'object';\n }\n\n return type;\n};\n\nexport const isSchemaObject = (obj: unknown): obj is SchemaObject => {\n if (!isPlainRecord(obj)) {\n return false;\n }\n\n return (\n 'type' in obj ||\n 'properties' in obj ||\n 'oneOf' in obj ||\n 'anyOf' in obj ||\n 'allOf' in obj ||\n 'items' in obj ||\n 'additionalProperties' in obj ||\n 'enum' in obj ||\n 'const' in obj ||\n 'format' in obj ||\n 'pattern' in obj ||\n 'minimum' in obj ||\n 'maximum' in obj ||\n 'minLength' in obj ||\n 'maxLength' in obj ||\n 'minItems' in obj ||\n 'maxItems' in obj ||\n 'minProperties' in obj ||\n 'maxProperties' in obj ||\n 'required' in obj ||\n 'nullable' in obj ||\n 'description' in obj\n );\n};\n\nexport const isArrayObject = (obj: unknown): obj is ArraySchemaObject => {\n return isSchemaObject(obj) && obj.type === 'array';\n};\n\nexport function hasCombinationKey(obj: Record<string, unknown>): boolean {\n return combinationKeys.some((key) => key in obj);\n}\n\nexport function shouldTruncateForSize(schema: OpenAPIV3_1.SchemaObject): boolean {\n const oneOfSize = Array.isArray(schema.oneOf) ? schema.oneOf.length : 1;\n const anyOfSize = Array.isArray(schema.anyOf) ? schema.anyOf.length : 1;\n const allOfSize = Array.isArray(schema.allOf) ? schema.allOf.length : 1;\n\n const combinations: number[] = [oneOfSize, anyOfSize, allOfSize];\n\n // go three levels deep to estimate if combinations may explode\n combinationKeys.forEach((key) => {\n if (schema[key as keyof OpenAPIV3_1.SchemaObject]) {\n const subSchema = schema[key as keyof OpenAPIV3_1.SchemaObject];\n combinations.push(Object.keys(subSchema).length);\n combinationKeys.forEach((subSchemaKey) => {\n if (subSchema[subSchemaKey as keyof OpenAPIV3_1.SchemaObject]) {\n const subSubSchema = subSchema[subSchemaKey as keyof OpenAPIV3_1.SchemaObject];\n combinations.push(Object.keys(subSubSchema).length);\n combinationKeys.forEach((subSubSchemaKey) => {\n if (subSubSchema[subSubSchemaKey as keyof OpenAPIV3_1.SchemaObject]) {\n const subSubSubSchema =\n subSubSchema[subSubSchemaKey as keyof OpenAPIV3_1.SchemaObject];\n combinations.push(Object.keys(subSubSubSchema).length);\n }\n });\n }\n });\n }\n });\n\n const totalCombinations = combinations.reduce((acc, curr) => acc * curr, 1);\n\n return totalCombinations > MAX_SCHEMA_COMBINATION_SIZE;\n}\n\n// similar to RecursiveParamField/renderTruncatedNextProperties\nexport function createTruncatedNextProperties(\n schema: OpenAPIV3_1.SchemaObject\n): OpenAPIV3_1.SchemaObject {\n const truncatedSchema = { ...schema };\n\n // Remove all composition properties to prevent further recursion\n delete truncatedSchema.oneOf;\n delete truncatedSchema.anyOf;\n delete truncatedSchema.allOf;\n\n if (truncatedSchema.type === 'array') {\n truncatedSchema.items = {};\n } else if (truncatedSchema.type === 'object') {\n truncatedSchema.properties = {};\n if (\n truncatedSchema.additionalProperties &&\n typeof truncatedSchema.additionalProperties === 'object'\n ) {\n truncatedSchema.additionalProperties = {};\n }\n }\n\n return truncatedSchema;\n}\n\nexport function createTruncatedReducedSchema(schema: OpenAPIV3_1.SchemaObject): ReducedSchema {\n const truncatedSchema = createTruncatedNextProperties(schema);\n // For reduction, we need to wrap in oneOf\n return { oneOf: [truncatedSchema] };\n}\n\nexport function collectCombinationSizes(\n value: unknown,\n remainingDepth: number,\n combinations: number[]\n): void {\n if (remainingDepth === 0 || value === undefined || value === null) {\n return;\n }\n\n if (Array.isArray(value)) {\n combinations.push(value.length);\n if (remainingDepth > 1) {\n value.forEach((item) => collectCombinationSizes(item, remainingDepth - 1, combinations));\n }\n return;\n }\n\n if (isPlainRecord(value)) {\n combinations.push(Object.keys(value).length);\n if (remainingDepth > 1) {\n Object.values(value).forEach((item) =>\n collectCombinationSizes(item, remainingDepth - 1, combinations)\n );\n }\n }\n}\n\nexport const addKeyIfDefined = <D, K extends keyof D>(\n key: K,\n value: D[K] | undefined,\n destination: D\n) => {\n if (value !== undefined) {\n destination[key] = value;\n }\n};\n\nexport const copyKeyIfDefined = <D, K extends keyof D>(\n key: K,\n source: Pick<D, K>,\n destination: D\n) => {\n if (source[key] !== undefined) {\n destination[key] = source[key];\n }\n};\n\nexport const takeLast = <T extends keyof OpenAPIV3_1.SchemaObject>(\n schema1: OpenAPIV3_1.SchemaObject,\n schema2: OpenAPIV3_1.SchemaObject,\n key: T\n): OpenAPIV3_1.SchemaObject[T] => {\n return schema2[key] ?? schema1[key];\n};\n\nexport const combine = <T extends keyof OpenAPIV3_1.SchemaObject>(\n schema1: OpenAPIV3_1.SchemaObject,\n schema2: OpenAPIV3_1.SchemaObject,\n key: T,\n transform: (\n a: NonNullable<OpenAPIV3_1.SchemaObject[T]>,\n b: NonNullable<OpenAPIV3_1.SchemaObject[T]>\n ) => OpenAPIV3_1.SchemaObject[T]\n): OpenAPIV3_1.SchemaObject[T] => {\n return schema1[key] !== undefined && schema2[key] !== undefined\n ? transform(schema1[key], schema2[key])\n : schema1[key] ?? schema2[key];\n};\n\nexport const copyExampleIfDefined = (\n source: Pick<OpenAPIV3_1.SchemaObject, 'example' | 'examples'>,\n destination: Pick<DataSchema, 'example'>\n) => {\n const example = source.example !== undefined ? source.example : source.examples?.[0];\n if (example !== undefined) {\n destination.example = example;\n }\n};\n\n// Testing utility for quick and dirty schema graph conversion\nexport const convertSchemaToGraph = (\n schema: OpenAPIV3_1.SchemaObject,\n skipClone: boolean = false\n) => {\n let spec: OpenAPIV3_1.Document;\n if ('openapi' in schema) {\n spec = schema as OpenAPIV3_1.Document;\n } else {\n spec = {\n openapi: '3.1.0',\n info: { title: 'Test', version: '1.0.0' },\n paths: {},\n components: {\n schemas: {\n TestSchema: schema,\n },\n },\n };\n }\n if (!skipClone) {\n const clonedSpec = JSON.parse(JSON.stringify(spec));\n return openApiToSchemaGraph({\n spec: clonedSpec,\n filename: 'test.json',\n originalFileLocation: 'test.json',\n });\n }\n return openApiToSchemaGraph({\n spec,\n filename: 'test.json',\n originalFileLocation: 'test.json',\n });\n};\n\nexport const flattenSingleOneOf = <T extends GraphNode & { oneOf?: SchemaObject[] }>(\n node: T\n): T => {\n if (node.oneOf && node.oneOf.length === 1) {\n return node.oneOf[0] as T;\n }\n return node;\n};\n\nexport const flattenSchemaOneOfs = (schema: SchemaObject): SchemaObject => {\n let result = { ...schema } as SchemaObject;\n\n // recursively flatten into each combinator\n if (result.properties && typeof result.properties === 'object') {\n const flattened: Record<string, SchemaObject> = {};\n for (const [key, value] of Object.entries(result.properties)) {\n if (isSchemaObject(value)) {\n flattened[key] = flattenSchemaOneOfs(value);\n } else {\n flattened[key] = value as SchemaObject;\n }\n }\n result.properties = flattened;\n }\n\n if ('items' in result && result.items && typeof result.items === 'object') {\n if (isSchemaObject(result.items)) {\n result.items = flattenSchemaOneOfs(result.items);\n }\n }\n\n if (\n result.additionalProperties &&\n typeof result.additionalProperties === 'object' &&\n isSchemaObject(result.additionalProperties)\n ) {\n result.additionalProperties = flattenSchemaOneOfs(result.additionalProperties);\n }\n if (result.oneOf && Array.isArray(result.oneOf) && result.oneOf.length > 1) {\n const oneOfArray = result.oneOf;\n const mappedOneOf = (oneOfArray as unknown[]).map((item: unknown) => {\n if (isSchemaObject(item)) {\n return flattenSchemaOneOfs(item);\n }\n return item as SchemaObject;\n });\n result.oneOf = mappedOneOf as SchemaObject[];\n }\n\n if (\n 'oneOf' in result &&\n result.oneOf &&\n Array.isArray(result.oneOf) &&\n result.oneOf.length === 1\n ) {\n const singleItem = result.oneOf[0];\n if (isSchemaObject(singleItem)) {\n result = { ...result, ...singleItem } as SchemaObject;\n delete (result as { oneOf?: unknown[] }).oneOf;\n return flattenSchemaOneOfs(result);\n }\n }\n\n return result;\n};\n\nexport const calculateMaxDepth = (obj: unknown, currentDepth = 0): number => {\n if (obj === null || typeof obj !== 'object') {\n return currentDepth;\n }\n\n if (Array.isArray(obj)) {\n if (obj.length === 0) return currentDepth;\n return Math.max(...obj.map((item) => calculateMaxDepth(item, currentDepth)));\n }\n\n const depths = Object.entries(obj).map(([key, value]) => {\n if (key === 'type' || key === 'title') {\n return currentDepth;\n }\n return calculateMaxDepth(value, currentDepth + 1);\n });\n\n return depths.length > 0 ? Math.max(...depths) : currentDepth;\n};\n\n// converts standard schema types to differentiated types that were used in v1 and oneOf type\nexport const getDifferentiatedType = (schema: ResolvedSchemaObject): DifferentiatedType => {\n if (schema.oneOf) {\n return 'oneOf';\n }\n if (schema.enum) {\n switch (schema.type) {\n case 'string':\n return 'enum<string>';\n case 'number':\n return 'enum<number>';\n case 'integer':\n return 'enum<integer>';\n default:\n return schema.type;\n }\n }\n if (schema.format && stringFileFormats.includes(schema.format)) {\n return 'file';\n }\n return schema.type;\n};\n\nexport const isEnum = (schema: SchemaObject): boolean => {\n return 'enum' in schema && schema.enum !== undefined;\n};\n\nexport const getSchemaPlaceholder = (schema: SchemaObject): string | undefined => {\n return 'placeholder' in schema && typeof schema.placeholder === 'string'\n ? schema.placeholder\n : undefined;\n};\n\nexport const isStringSchema = (schema: SchemaObject): boolean => {\n return schema.type === 'string';\n};\n\nexport const isNumberSchema = (schema: SchemaObject): boolean => {\n return schema.type === 'number' || schema.type === 'integer';\n};\n\nexport const mapResponseExamples = (apiReferenceData: ApiReferenceDataV2) => {\n const responseCodeMediaObjectMap: Record<string, MediaObject> = {};\n Object.entries(apiReferenceData.operation?.responses ?? {}).forEach(([responseCode, UUID]) => {\n const response = apiReferenceData.dependencies?.responses?.[UUID];\n if (response && response.content) {\n responseCodeMediaObjectMap[responseCode] = response.content;\n }\n });\n return responseCodeMediaObjectMap;\n};\n\nexport const generatePrefillRequestData = (\n apiReferenceData: ApiReferenceDataV2\n): ApiPlaygroundInputs[] => {\n const requestBodyContent = apiReferenceData.dependencies?.requestBody?.content;\n if (requestBodyContent === undefined) {\n return [initialApiPlaygroundInputs];\n }\n const requestBodyContentTypes = Object.keys(requestBodyContent);\n const contentType = requestBodyContentTypes[0];\n if (!contentType) {\n return [initialApiPlaygroundInputs];\n }\n const requestBodyContentExamples = Object.values(requestBodyContent[contentType]?.examples ?? {});\n const examples: ApiPlaygroundInputs[] = [];\n for (const example of requestBodyContentExamples) {\n if ('value' in example) {\n examples.push({\n ...initialApiPlaygroundInputs,\n body: example.value,\n });\n }\n }\n\n return examples;\n};\n\nexport const getParametersPerSection = (\n apiReferenceData: ApiReferenceDataV2\n): {\n header: ParameterObject[];\n path: ParameterObject[];\n query: ParameterObject[];\n cookie: ParameterObject[];\n} => {\n const parameters = apiReferenceData.dependencies?.parameters;\n if (parameters) {\n const parameterObjects = Object.values(parameters);\n const headerParameters = parameterObjects.filter(\n (parameter) => !('in' in parameter) || parameter.in === 'header'\n );\n const cookieParameters = parameterObjects.filter((parameter) => parameter.in === 'cookie');\n const pathParameters = parameterObjects.filter((parameter) => parameter.in === 'path');\n const queryParameters = parameterObjects.filter((parameter) => parameter.in === 'query');\n return {\n header: headerParameters,\n path: pathParameters,\n query: queryParameters,\n cookie: cookieParameters,\n };\n }\n return { header: [], path: [], query: [], cookie: [] };\n};\n\nexport const getSchemaDefault = (schema: object | undefined): unknown | undefined => {\n let defaultValue = undefined;\n if (!schema) {\n return undefined;\n }\n if (typeof schema === 'object' && 'default' in schema) {\n defaultValue = schema.default;\n }\n if (typeof schema === 'object' && 'x-default' in schema) {\n defaultValue = schema['x-default'];\n }\n return defaultValue;\n};\n\nexport const getUniqueInputKey = (\n inputKeyPrefix: string,\n schema: ResolvedSchemaObject,\n arrayIndex?: number,\n key?: string\n) => {\n if (!schema.uniqueKey) {\n return inputKeyPrefix;\n } else {\n const arrayIndexOrKey = arrayIndex || key;\n return `${inputKeyPrefix ? inputKeyPrefix + '.' : ''}${schema.uniqueKey}${arrayIndexOrKey ? '.' + arrayIndexOrKey : ''}`;\n }\n};\n\nexport const convertAnySchemaToOneOfs = (): SchemaObject => {\n return {\n oneOf: [\n {\n type: 'string',\n },\n {\n type: 'number',\n },\n {\n type: 'boolean',\n },\n {\n type: 'object',\n properties: {},\n },\n {\n type: 'array',\n items: {\n oneOf: [\n { type: 'string' },\n { type: 'number' },\n { type: 'boolean' },\n { type: 'object', properties: {} },\n { type: 'array', items: {} },\n { type: 'null' },\n ],\n },\n },\n {\n type: 'null',\n },\n ],\n };\n};\n\nexport const getRequestBodyContentType = (\n apiReferenceData: ApiReferenceDataV2,\n contentTypeIndex: number\n): string | undefined => {\n const requestBodyContent = apiReferenceData.dependencies?.requestBody?.content;\n if (requestBodyContent === undefined) {\n return undefined;\n }\n const requestBodyContentTypes = Object.keys(requestBodyContent);\n return requestBodyContentTypes[contentTypeIndex];\n};\n\nexport const escapeDots = (key: string): string => {\n return key.replace(/\\./g, '\\\\.');\n};\n\nexport const mapParamInToPlaygroundInputKey = (parameterIn: string): string => {\n switch (parameterIn) {\n case 'header':\n return apiPlaygroundInputKeys.header;\n case 'path':\n return apiPlaygroundInputKeys.path;\n case 'query':\n return apiPlaygroundInputKeys.query;\n case 'cookie':\n return apiPlaygroundInputKeys.cookie;\n default:\n return apiPlaygroundInputKeys.header;\n }\n};\n\n// CLANKED AS HELL. TODO: Refactor.\nexport const unflattenInputs = (\n inputs: Record<string, PlaygroundInputValue>\n): ApiPlaygroundInputs => {\n const result: ApiPlaygroundInputs = {\n server: {},\n header: {},\n path: {},\n query: {},\n cookie: {},\n body: undefined,\n };\n\n Object.entries(inputs).forEach(([key, value]) => {\n // skip undefined/null values\n if (value === undefined || value === null) {\n return;\n }\n // split on . but not on \\. (escaped dots), then unescape the parts\n const parts = key.split(/(?<!\\\\)\\./).map((part) => part.replace(/\\\\\\./g, '.'));\n if (parts.length < 2) {\n if (key === 'body') {\n result.body = value;\n }\n return;\n }\n\n const [section, ...keyPath] = parts;\n\n const validKeys = Object.values(apiPlaygroundInputKeys);\n if (!section || !validKeys.includes(section)) {\n return;\n }\n\n if (section !== apiPlaygroundInputKeys.body) {\n setNestedValue(\n result[section as keyof ApiPlaygroundInputs] as Record<string, unknown>,\n [...keyPath],\n value\n );\n } else {\n if ([...keyPath].length === 0) {\n result.body = value;\n } else {\n // Initialize body as object if it's undefined\n if (result.body === undefined || typeof result.body !== 'object') {\n result.body = {};\n }\n setNestedValue(result.body as Record<string, unknown>, keyPath, value);\n }\n }\n });\n\n // Convert array-like objects (objects with only numeric keys) to actual arrays\n return convertArrayLikeToArray(result) as ApiPlaygroundInputs;\n};\n\n// Check if an object should be converted to an array (all keys are numeric strings)\nconst isArrayLike = (obj: unknown): obj is Record<string, unknown> => {\n if (!isPlainRecord(obj)) {\n return false;\n }\n const keys = Object.keys(obj);\n if (keys.length === 0) {\n return false;\n }\n // Check if all keys are numeric strings\n return keys.every((k) => /^\\d+$/.test(k));\n};\n\n// Recursively convert array-like objects to arrays\nconst convertArrayLikeToArray = (value: unknown): unknown => {\n if (value === null || value === undefined) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(convertArrayLikeToArray);\n }\n\n if (isPlainRecord(value)) {\n if (isArrayLike(value)) {\n // Convert object with numeric keys to array\n // Sort keys numerically and map to values\n const keys = Object.keys(value).sort((a, b) => Number(a) - Number(b));\n const arr = keys.map((k) => value[k]);\n // Recursively convert nested values\n return arr.map(convertArrayLikeToArray);\n }\n\n // Recursively process regular objects\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n result[key] = convertArrayLikeToArray(val);\n }\n return result;\n }\n\n return value;\n};\n\n// recursively set a value in a nested object\nconst setNestedValue = (obj: Record<string, unknown>, keyPath: string[], value: unknown) => {\n // First pass: filter out keys we want to skip\n const filteredKeys: string[] = [];\n for (let i = 0; i < keyPath.length; i++) {\n const key = keyPath[i];\n if (key === 'oneOf') {\n // Skip this key and the next one (the oneOf index)\n i++;\n continue;\n }\n if (key === 'additionalProperties' || key === 'items') {\n // Skip these keys\n continue;\n }\n if (key) {\n filteredKeys.push(key);\n }\n }\n\n // Second pass: navigate through/create nested structure and set value\n let current = obj;\n for (let i = 0; i < filteredKeys.length; i++) {\n const key = filteredKeys[i];\n if (i === filteredKeys.length - 1) {\n // Last key - set the value\n if (key) {\n current[key] = value;\n }\n } else {\n // Not the last key - ensure nested object exists\n if (key && (!current[key] || typeof current[key] !== 'object')) {\n current[key] = {};\n }\n if (key) {\n current = current[key] as Record<string, unknown>;\n }\n }\n }\n};\n// CLANK ENDS HERE\n\nexport const filterSchemasWithConsts = (\n schemas: ResolvedSchemaObject[]\n): ResolvedSchemaObject[] => {\n const filteredSchemas = schemas.filter((schema) => {\n if ('enum' in schema && schema.enum && 'const' in schema) {\n return schema.enum.includes(schema.const);\n }\n return true;\n });\n return filteredSchemas;\n};\n\nexport const getBodyDefaultsFromSchema = (schema: SchemaObject): Record<string, unknown> => {\n const bodyDefaults: Record<string, unknown> = {};\n\n if ('uniqueKey' in schema && schema.uniqueKey !== undefined) {\n const defaultValue = getSchemaDefault(schema);\n if (defaultValue !== undefined) {\n const inputKey = `${apiPlaygroundInputKeys.body}.${schema.uniqueKey}`;\n bodyDefaults[inputKey] = defaultValue;\n }\n }\n\n if ('oneOf' in schema && Array.isArray(schema.oneOf)) {\n schema.oneOf.forEach((subSchema) => {\n if (isSchemaObject(subSchema)) {\n const subDefaults = getBodyDefaultsFromSchema(subSchema);\n Object.assign(bodyDefaults, subDefaults);\n }\n });\n }\n\n if (schema.type === 'object' && schema.properties) {\n Object.values(schema.properties).forEach((propSchema) => {\n if (isSchemaObject(propSchema)) {\n const propDefaults = getBodyDefaultsFromSchema(propSchema);\n Object.assign(bodyDefaults, propDefaults);\n }\n });\n }\n\n if (\n schema.additionalProperties &&\n typeof schema.additionalProperties === 'object' &&\n isSchemaObject(schema.additionalProperties)\n ) {\n const addPropsDefaults = getBodyDefaultsFromSchema(schema.additionalProperties);\n Object.assign(bodyDefaults, addPropsDefaults);\n }\n\n if (schema.type === 'array' && 'items' in schema && isSchemaObject(schema.items)) {\n const itemsDefaults = getBodyDefaultsFromSchema(schema.items);\n Object.assign(bodyDefaults, itemsDefaults);\n }\n\n return bodyDefaults;\n};"],"names":["isCircularRef","value","CIRCULAR_REF_KEY","createEmptyReducedSchema","createUnknownReducedSchema","isPlainRecord","isReducedSchema","schema","isSchemaObject","obj","isArrayObject","shouldTruncateForSize","oneOfSize","anyOfSize","allOfSize","combinations","combinationKeys","key","subSchema","subSchemaKey","subSubSchema","subSubSchemaKey","subSubSubSchema","acc","curr","MAX_SCHEMA_COMBINATION_SIZE","takeLast","schema1","schema2","combine","transform","flattenSingleOneOf","node","flattenSchemaOneOfs","result","flattened","mappedOneOf","item","singleItem","getDifferentiatedType","stringFileFormats","isEnum","getSchemaPlaceholder","isStringSchema","isNumberSchema","mapResponseExamples","apiReferenceData","responseCodeMediaObjectMap","_a","responseCode","UUID","response","_b","generatePrefillRequestData","requestBodyContent","initialApiPlaygroundInputs","contentType","requestBodyContentExamples","_c","examples","example","getParametersPerSection","parameters","parameterObjects","headerParameters","parameter","cookieParameters","pathParameters","queryParameters","getSchemaDefault","defaultValue","getUniqueInputKey","inputKeyPrefix","arrayIndex","arrayIndexOrKey","convertAnySchemaToOneOfs","getRequestBodyContentType","contentTypeIndex","escapeDots","mapParamInToPlaygroundInputKey","parameterIn","apiPlaygroundInputKeys","unflattenInputs","inputs","parts","part","section","keyPath","validKeys","setNestedValue","convertArrayLikeToArray","isArrayLike","keys","k","a","b","val","filteredKeys","i","current","filterSchemasWithConsts","schemas","getBodyDefaultsFromSchema","bodyDefaults","inputKey","subDefaults","propSchema","propDefaults","addPropsDefaults","itemsDefaults"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { parseOpenApiSchemaString as t, parseOpenApiString as n } from "./parseOpenApiString.js";
2
+ const a = (p) => {
3
+ const r = p["openapi-schema"];
4
+ if (typeof r == "string" && r.length > 0)
5
+ return {
6
+ type: "schema",
7
+ ...t(r)
8
+ };
9
+ const e = p.openapi;
10
+ if (typeof e == "string" && e.length > 0)
11
+ try {
12
+ return {
13
+ type: "operation",
14
+ ...n(e)
15
+ };
16
+ } catch (o) {
17
+ console.error(`unable to parse value "${e}" for field "openapi":`, o);
18
+ return;
19
+ }
20
+ };
21
+ export {
22
+ a as parseApiTargetFromMetadata
23
+ };
24
+ //# sourceMappingURL=parseApiTargetFromMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseApiTargetFromMetadata.js","sources":["../../src/common/parseApiTargetFromMetadata.ts"],"sourcesContent":["import { PageMetaTags } from '@mintlify/models';\nimport { parseOpenApiString, parseOpenApiSchemaString } from './parseOpenApiString';\n\nexport type SchemaTargetType = {\n type: 'schema';\n} & ReturnType<typeof parseOpenApiSchemaString>;\n\nexport type OperationTargetType = {\n type: 'operation';\n} & ReturnType<typeof parseOpenApiString>;\n\n\nexport const parseApiTargetFromMetadata = (\n metadata: PageMetaTags\n): SchemaTargetType | OperationTargetType | undefined => {\n const openapiSchema = metadata['openapi-schema'];\n if (typeof openapiSchema === 'string' && openapiSchema.length > 0) {\n return {\n type: 'schema',\n ...parseOpenApiSchemaString(openapiSchema),\n };\n }\n\n const openapi = metadata.openapi;\n if (typeof openapi === 'string' && openapi.length > 0) {\n try {\n return {\n type: 'operation',\n ...parseOpenApiString(openapi),\n };\n } catch (error) {\n console.error(`unable to parse value \"${openapi}\" for field \"openapi\":`, error);\n return undefined;\n }\n }\n\n return undefined;\n};"],"names":["parseApiTargetFromMetadata","metadata","openapiSchema","parseOpenApiSchemaString","openapi","parseOpenApiString","error"],"mappings":";AAYO,MAAMA,IAA6B,CACxCC,MACuD;AACvD,QAAMC,IAAgBD,EAAS,gBAAgB;AAC/C,MAAI,OAAOC,KAAkB,YAAYA,EAAc,SAAS;AAC9D,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAGC,EAAyBD,CAAa;AAAA,IAAA;AAI7C,QAAME,IAAUH,EAAS;AACzB,MAAI,OAAOG,KAAY,YAAYA,EAAQ,SAAS;AAClD,QAAI;AACF,aAAO;AAAA,QACL,MAAM;AAAA,QACN,GAAGC,EAAmBD,CAAO;AAAA,MAAA;AAAA,IAEjC,SAASE,GAAO;AACd,cAAQ,MAAM,0BAA0BF,CAAO,0BAA0BE,CAAK;AAC9E;AAAA,IACF;AAIJ;"}
@@ -0,0 +1,42 @@
1
+ import { OpenAPIV3 as i } from "openapi-types";
2
+ const p = Object.values(i.HttpMethods).concat(
3
+ "webhook"
4
+ ), l = (o) => {
5
+ const e = o.trim().split(/\s+/);
6
+ let r, t, n;
7
+ if (e.length > 3)
8
+ throw new Error("improperly formatted openapi string");
9
+ if (e[0] && e[1] && e[2])
10
+ [r, t, n] = e;
11
+ else if (e[0] && e[1])
12
+ [t, n] = e;
13
+ else
14
+ throw new Error("improperly formatted openapi string");
15
+ if (t = t.toLowerCase(), !p.includes(t))
16
+ throw new Error("invalid http method");
17
+ return {
18
+ method: t,
19
+ endpoint: n,
20
+ filename: r
21
+ };
22
+ }, m = (o) => {
23
+ const e = o.trim().split(/\s+/);
24
+ let r, t;
25
+ if (e.length > 2)
26
+ throw new Error("improperly formatted openapi schema string");
27
+ if (e[0] && e[1])
28
+ [r, t] = e;
29
+ else if (e[0])
30
+ [t] = e;
31
+ else
32
+ throw new Error("improperly formatted openapi schema string");
33
+ return {
34
+ name: t,
35
+ filename: r
36
+ };
37
+ };
38
+ export {
39
+ m as parseOpenApiSchemaString,
40
+ l as parseOpenApiString
41
+ };
42
+ //# sourceMappingURL=parseOpenApiString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseOpenApiString.js","sources":["../../src/common/parseOpenApiString.ts"],"sourcesContent":["import { OpenAPIV3 } from 'openapi-types';\n\nconst VALID_METHODS: string[] = Object.values(OpenAPIV3.HttpMethods).concat(\n 'webhook' as OpenAPIV3.HttpMethods\n);\n\n/**\n *\n * @param str either the openapi or api string defined in the frontmatter\n * @returns method: API method (GET, POST, PUT, DELETE, PATCH)\n * endpoint: API endpoint\n * filename: filename of the openapi file (if applicable)\n * returns undefined for any of the values (fails silently)\n */\nexport const potentiallyParseOpenApiString = (\n str: string\n):\n | {\n method: OpenAPIV3.HttpMethods;\n endpoint: string;\n filename?: string;\n }\n | undefined => {\n const components = str.trim().split(/\\s+/);\n let filename: string | undefined;\n let method: string;\n let endpoint: string;\n\n if (components.length > 3) {\n // improperly formatted openapi string\n return undefined;\n } else if (components[0] && components[1] && components[2]) {\n [filename, method, endpoint] = components;\n } else if (components[0] && components[1]) {\n [method, endpoint] = components;\n } else {\n // improperly formatted openapi string\n return undefined;\n }\n\n if (method) {\n method = method.toLowerCase();\n if (!VALID_METHODS.includes(method)) {\n // invalid http method\n return undefined;\n }\n }\n\n return {\n method: method as OpenAPIV3.HttpMethods,\n endpoint,\n filename,\n };\n};\n\n/**\n *\n * @param str either the openapi or api string defined in the frontmatter\n * @returns method: API method (GET, POST, PUT, DELETE, PATCH)\n * endpoint: API endpoint\n * filename: filename of the openapi file (if applicable)\n */\nexport const parseOpenApiString = (\n str: string\n): {\n method: OpenAPIV3.HttpMethods;\n endpoint: string;\n filename?: string;\n} => {\n const components = str.trim().split(/\\s+/);\n let filename: string | undefined;\n let method: string;\n let endpoint: string;\n\n if (components.length > 3) {\n throw new Error('improperly formatted openapi string');\n } else if (components[0] && components[1] && components[2]) {\n [filename, method, endpoint] = components;\n } else if (components[0] && components[1]) {\n [method, endpoint] = components;\n } else {\n throw new Error('improperly formatted openapi string');\n }\n\n method = method.toLowerCase();\n\n if (!VALID_METHODS.includes(method)) {\n throw new Error('invalid http method');\n }\n\n return {\n method: method as OpenAPIV3.HttpMethods,\n endpoint,\n filename,\n };\n};\n\n/**\n * same as above, but for openapi-schema frontmatter\n */\nexport const parseOpenApiSchemaString = (\n str: string\n): {\n name: string;\n filename?: string;\n} => {\n const components = str.trim().split(/\\s+/);\n let filename: string | undefined;\n let name: string;\n\n if (components.length > 2) {\n throw new Error('improperly formatted openapi schema string');\n } else if (components[0] && components[1]) {\n [filename, name] = components;\n } else if (components[0]) {\n [name] = components;\n } else {\n throw new Error('improperly formatted openapi schema string');\n }\n\n return {\n name,\n filename,\n };\n};\n"],"names":["VALID_METHODS","OpenAPIV3","parseOpenApiString","str","components","filename","method","endpoint","parseOpenApiSchemaString","name"],"mappings":";AAEA,MAAMA,IAA0B,OAAO,OAAOC,EAAU,WAAW,EAAE;AAAA,EACnE;AACF,GA0DaC,IAAqB,CAChCC,MAKG;AACH,QAAMC,IAAaD,EAAI,KAAA,EAAO,MAAM,KAAK;AACzC,MAAIE,GACAC,GACAC;AAEJ,MAAIH,EAAW,SAAS;AACtB,UAAM,IAAI,MAAM,qCAAqC;AACvD,MAAWA,EAAW,CAAC,KAAKA,EAAW,CAAC,KAAKA,EAAW,CAAC;AACvD,KAACC,GAAUC,GAAQC,CAAQ,IAAIH;AAAA,WACtBA,EAAW,CAAC,KAAKA,EAAW,CAAC;AACtC,KAACE,GAAQC,CAAQ,IAAIH;AAAA;AAErB,UAAM,IAAI,MAAM,qCAAqC;AAKvD,MAFAE,IAASA,EAAO,YAAA,GAEZ,CAACN,EAAc,SAASM,CAAM;AAChC,UAAM,IAAI,MAAM,qBAAqB;AAGvC,SAAO;AAAA,IACL,QAAAA;AAAA,IACA,UAAAC;AAAA,IACA,UAAAF;AAAA,EAAA;AAEJ,GAKaG,IAA2B,CACtCL,MAIG;AACH,QAAMC,IAAaD,EAAI,KAAA,EAAO,MAAM,KAAK;AACzC,MAAIE,GACAI;AAEJ,MAAIL,EAAW,SAAS;AACtB,UAAM,IAAI,MAAM,4CAA4C;MACnDA,EAAW,CAAC,KAAKA,EAAW,CAAC;AACtC,KAACC,GAAUI,CAAI,IAAIL;AAAA,WACVA,EAAW,CAAC;AACrB,KAACK,CAAI,IAAIL;AAAA;AAET,UAAM,IAAI,MAAM,4CAA4C;AAG9D,SAAO;AAAA,IACL,MAAAK;AAAA,IACA,UAAAJ;AAAA,EAAA;AAEJ;"}
@@ -1,19 +1,10 @@
1
- import { jsx as c } from "react/jsx-runtime";
2
- import { createContext as i, useContext as f } from "react";
3
- const t = i(void 0);
4
- function p() {
5
- return f(t);
6
- }
7
- function s({
8
- apiReferenceData2: e,
9
- docsConfig: o,
10
- mdxExtracts: r,
11
- children: n
12
- }) {
13
- return /* @__PURE__ */ c(t.Provider, { value: { apiReferenceData2: e, docsConfig: o, mdxExtracts: r }, children: n });
1
+ import "react/jsx-runtime";
2
+ import { useContext as e, createContext as t } from "react";
3
+ const o = t(void 0);
4
+ function i() {
5
+ return e(o);
14
6
  }
15
7
  export {
16
- s as ApiReferenceProvider2,
17
- p as useApiReference
8
+ i as useApiReference
18
9
  };
19
10
  //# sourceMappingURL=ApiReferenceProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiReferenceProvider.js","sources":["../../../src/components/Api/ApiReferenceProvider.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react';\n\ninterface ApiReferenceContextValue {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n}\n\nconst ApiReferenceContext = createContext<ApiReferenceContextValue | undefined>(undefined);\n\nexport function useApiReference() {\n const context = useContext(ApiReferenceContext);\n return context;\n}\n\ninterface ApiReferenceProvider2Props {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n children: React.ReactNode;\n}\n\nexport function ApiReferenceProvider2({\n apiReferenceData2,\n docsConfig,\n mdxExtracts,\n children,\n}: ApiReferenceProvider2Props) {\n return (\n <ApiReferenceContext.Provider value={{ apiReferenceData2, docsConfig, mdxExtracts }}>\n {children}\n </ApiReferenceContext.Provider>\n );\n}\n"],"names":["ApiReferenceContext","createContext","useApiReference","useContext","ApiReferenceProvider2","apiReferenceData2","docsConfig","mdxExtracts","children","jsx"],"mappings":";;AAQA,MAAMA,IAAsBC,EAAoD,MAAS;AAElF,SAASC,IAAkB;AAEhC,SADgBC,EAAWH,CAAmB;AAEhD;AASO,SAASI,EAAsB;AAAA,EACpC,mBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AACF,GAA+B;AAC7B,SACE,gBAAAC,EAACT,EAAoB,UAApB,EAA6B,OAAO,EAAE,mBAAAK,GAAmB,YAAAC,GAAY,aAAAC,KACnE,UAAAC,GACH;AAEJ;"}
1
+ {"version":3,"file":"ApiReferenceProvider.js","sources":["../../../src/components/Api/ApiReferenceProvider.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react';\n\ninterface ApiReferenceContextValue {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n}\n\nconst ApiReferenceContext = createContext<ApiReferenceContextValue | undefined>(undefined);\n\nexport function useApiReference() {\n const context = useContext(ApiReferenceContext);\n return context;\n}\n\ninterface ApiReferenceProvider2Props {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n children: React.ReactNode;\n}\n\nexport function ApiReferenceProvider2({\n apiReferenceData2,\n docsConfig,\n mdxExtracts,\n children,\n}: ApiReferenceProvider2Props) {\n return (\n <ApiReferenceContext.Provider value={{ apiReferenceData2, docsConfig, mdxExtracts }}>\n {children}\n </ApiReferenceContext.Provider>\n );\n}\n"],"names":["ApiReferenceContext","createContext","useApiReference","useContext"],"mappings":";;AAQA,MAAMA,IAAsBC,EAAoD,MAAS;AAElF,SAASC,IAAkB;AAEhC,SADgBC,EAAWH,CAAmB;AAEhD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary.js","sources":["../../../src/components/Api/ErrorBoundary.tsx"],"sourcesContent":["'use client';\n\nimport React, { ReactNode } from 'react';\n\nclass ErrorBoundary extends React.Component<{ children: ReactNode }, { hasError: boolean }> {\n constructor(props: { children: ReactNode }) {\n super(props);\n this.state = { hasError: false };\n }\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\n console.log({ error, errorInfo });\n }\n render() {\n if (this.state.hasError) {\n return null;\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n"],"names":["ErrorBoundary","React","props","error","errorInfo"],"mappings":";AAIA,MAAMA,UAAsBC,EAAM,UAA0D;AAAA,EAC1F,YAAYC,GAAgC;AAC1C,UAAMA,CAAK,GACX,KAAK,QAAQ,EAAE,UAAU,GAAA;AAAA,EAC3B;AAAA,EACA,OAAO,2BAA2B;AAChC,WAAO,EAAE,UAAU,GAAA;AAAA,EACrB;AAAA,EACA,kBAAkBC,GAAcC,GAAkC;AAChE,YAAQ,IAAI,EAAE,OAAAD,GAAO,WAAAC,EAAA,CAAW;AAAA,EAClC;AAAA,EACA,SAAS;AACP,WAAI,KAAK,MAAM,WACN,OAEF,KAAK,MAAM;AAAA,EACpB;AACF;"}
1
+ {"version":3,"file":"ErrorBoundary.js","sources":["../../../src/components/Api/ErrorBoundary.tsx"],"sourcesContent":["\nimport React, { ReactNode } from 'react';\n\nclass ErrorBoundary extends React.Component<{ children: ReactNode }, { hasError: boolean }> {\n constructor(props: { children: ReactNode }) {\n super(props);\n this.state = { hasError: false };\n }\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\n console.log({ error, errorInfo });\n }\n render() {\n if (this.state.hasError) {\n return null;\n }\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n"],"names":["ErrorBoundary","React","props","error","errorInfo"],"mappings":";AAGA,MAAMA,UAAsBC,EAAM,UAA0D;AAAA,EAC1F,YAAYC,GAAgC;AAC1C,UAAMA,CAAK,GACX,KAAK,QAAQ,EAAE,UAAU,GAAA;AAAA,EAC3B;AAAA,EACA,OAAO,2BAA2B;AAChC,WAAO,EAAE,UAAU,GAAA;AAAA,EACrB;AAAA,EACA,kBAAkBC,GAAcC,GAAkC;AAChE,YAAQ,IAAI,EAAE,OAAAD,GAAO,WAAAC,EAAA,CAAW;AAAA,EAClC;AAAA,EACA,SAAS;AACP,WAAI,KAAK,MAAM,WACN,OAEF,KAAK,MAAM;AAAA,EACpB;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Expandable.js","sources":["../../../src/components/Api/Expandable.tsx"],"sourcesContent":["\"use client\";\n\nimport { ReactNode, useContext, useEffect, useRef, useState } from \"react\";\n\nimport { EndpointLocationContext } from \"@/contexts/EndpointLocationContext\";\nimport { useSelectedLocale } from \"@/utils/locales\";\nimport { useExpandableMemory } from \"@/hooks/useExpandableMemory\";\nimport { Classes } from \"@/api-playground-2/types\";\nimport { ChevronRightFilled } from '@fluentui/react-icons';\nimport { cn } from \"@/api-playground-2/schemaGraph/utils\";\nimport { scrollElementIntoView } from \"@/utils/scrollElementIntoView\";\n\nconst EXPANDABLE_CONTENT_CLASS = \"expandable-content\";\n\nexport interface ExpandableProps {\n title?: string;\n defaultOpen?: boolean;\n onChange?: (open: boolean) => void;\n lazy?: boolean;\n children?: ReactNode;\n uniqueParamId?: string;\n}\n\nexport function Expandable({\n title,\n defaultOpen = false,\n onChange: onChangeProp,\n lazy,\n children,\n uniqueParamId,\n}: ExpandableProps) {\n const { hasScrolledToAnchorRef } = useContext(EndpointLocationContext);\n\n const locale = useSelectedLocale();\n // if uniqueParamId is provided, we use session storage to\n // track if a user manually toggled the param field expandable\n const shouldUseSessionStorage = !!uniqueParamId;\n const { isExpanded, onManualToggle } = useExpandableMemory(\n uniqueParamId || \"\",\n defaultOpen\n );\n\n // in case we ever render an expandable that is not a param field,\n // we can just use regular state to track it\n const [localOpen, setLocalOpen] = useState(defaultOpen);\n\n const open = defaultOpen || shouldUseSessionStorage ? isExpanded : localOpen;\n\n // setShouldRenderChildren should only ever be called with true - we never want to unmount stateful components\n const [shouldRenderChildren, setShouldRenderChildren] = useState(\n open || !lazy\n );\n\n const expandableRef = useRef<HTMLDetailsElement>(null);\n\n const openClosestExpandables = (element: HTMLElement) => {\n let parent = element.closest(`.${EXPANDABLE_CONTENT_CLASS}`);\n while (parent) {\n const button = parent.previousElementSibling as HTMLButtonElement;\n if (button.getAttribute(\"aria-expanded\") === \"false\") {\n button.click();\n }\n parent =\n parent.parentElement?.closest(`.${EXPANDABLE_CONTENT_CLASS}`) ?? null;\n }\n };\n\n useEffect(() => {\n const checkHashAndExpand = () => {\n scrollElementIntoView({\n shouldReturnEarly: !!hasScrolledToAnchorRef?.current,\n checkIfShouldScroll(targetEl) {\n return (\n !!expandableRef.current && expandableRef.current.contains(targetEl)\n );\n },\n preScrollCallback(targetEl) {\n if (shouldUseSessionStorage) {\n onManualToggle(true);\n } else {\n setLocalOpen(true);\n }\n openClosestExpandables(targetEl);\n },\n postScrollCallback() {\n if (hasScrolledToAnchorRef) hasScrolledToAnchorRef.current = true;\n },\n });\n };\n\n checkHashAndExpand();\n window.addEventListener(\"hashchange\", checkHashAndExpand);\n return () => {\n window.removeEventListener(\"hashchange\", checkHashAndExpand);\n };\n }, [shouldUseSessionStorage, onManualToggle, hasScrolledToAnchorRef]);\n\n const onChange = (open: boolean) => {\n setShouldRenderChildren(true);\n\n if (onChangeProp) {\n onChangeProp(open);\n }\n };\n\n const setOpenState = (newOpenState: boolean) => {\n if (shouldUseSessionStorage) {\n onManualToggle(newOpenState);\n } else {\n setLocalOpen(newOpenState);\n }\n\n onChange(newOpenState);\n };\n\n return (\n <details\n key={title}\n ref={expandableRef}\n open={open}\n onToggle={(e) => {\n const newState = e.currentTarget.open;\n if (newState !== open) {\n setOpenState(newState);\n }\n }}\n className={cn(Classes.Expandable, \"mint:mt-4 mint:mb-4 mint:border-standard mint:rounded-xl\")}\n data-testid={uniqueParamId + \"-children\"}\n >\n <summary\n className={cn(\n \"not-prose mint:text-sm mint:flex mint:flex-row mint:items-center mint:content-center mint:w-full mint:cursor-pointer\",\n \"mint:text-gray-600 mint:hover:text-gray-900 mint:dark:text-gray-300 mint:dark:hover:text-gray-200 mint:py-3 mint:px-3.5 mint:hover:bg-gray-50/50 mint:dark:hover:bg-white/5 mint:rounded-t-xl\",\n \"mint:list-none mint:[&::-webkit-details-marker]:hidden\",\n !open && \"mint:rounded-b-xl\"\n )}\n aria-controls=\"Children attributes\"\n aria-expanded={open}\n data-component-part=\"expandable-button\"\n >\n <ChevronRightFilled\n className={cn(\n \"mint:h-2.5 mint:w-2.5 mint:text-gray-500 mint:dark:text-gray-400 mint:shrink-0 mint:transition-transform\",\n open && \"mint:rotate-180\"\n )}\n />\n <div className=\"mint:ml-3 mint:leading-tight mint:text-left\">\n <p className=\"mint:m-0\" contentEditable={false}>\n {open ? locale[\"hide\"] : locale[\"show\"]}{\" \"}\n {title || locale[\"childAttributes\"]}\n </p>\n </div>\n </summary>\n <div\n id={title + \"Children\"}\n className={cn(\n EXPANDABLE_CONTENT_CLASS,\n \"mint:mx-3 mint:px-2 mint:border-t mint:border-gray-100 mint:dark:border-white/10\"\n )}\n data-component-part={EXPANDABLE_CONTENT_CLASS}\n >\n {shouldRenderChildren && children}\n </div>\n </details>\n );\n}\n"],"names":["EXPANDABLE_CONTENT_CLASS","Expandable","title","defaultOpen","onChangeProp","lazy","children","uniqueParamId","hasScrolledToAnchorRef","useContext","EndpointLocationContext","locale","useSelectedLocale","shouldUseSessionStorage","isExpanded","onManualToggle","useExpandableMemory","localOpen","setLocalOpen","useState","open","shouldRenderChildren","setShouldRenderChildren","expandableRef","useRef","openClosestExpandables","element","parent","button","_a","useEffect","checkHashAndExpand","scrollElementIntoView","targetEl","onChange","setOpenState","newOpenState","jsxs","e","newState","cn","Classes","jsx","ChevronRightFilled"],"mappings":"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"}
1
+ {"version":3,"file":"Expandable.js","sources":["../../../src/components/Api/Expandable.tsx"],"sourcesContent":["\nimport { ReactNode, useContext, useEffect, useRef, useState } from \"react\";\n\nimport { EndpointLocationContext } from \"@/contexts/EndpointLocationContext\";\nimport { useSelectedLocale } from \"@/utils/locales\";\nimport { useExpandableMemory } from \"@/hooks/useExpandableMemory\";\nimport { Classes } from \"@/api-playground-2/types\";\nimport { ChevronRightFilled } from '@fluentui/react-icons';\nimport { cn } from \"@/api-playground-2/schemaGraph/utils\";\nimport { scrollElementIntoView } from \"@/utils/scrollElementIntoView\";\n\nconst EXPANDABLE_CONTENT_CLASS = \"expandable-content\";\n\nexport interface ExpandableProps {\n title?: string;\n defaultOpen?: boolean;\n onChange?: (open: boolean) => void;\n lazy?: boolean;\n children?: ReactNode;\n uniqueParamId?: string;\n}\n\nexport function Expandable({\n title,\n defaultOpen = false,\n onChange: onChangeProp,\n lazy,\n children,\n uniqueParamId,\n}: ExpandableProps) {\n const { hasScrolledToAnchorRef } = useContext(EndpointLocationContext);\n\n const locale = useSelectedLocale();\n // if uniqueParamId is provided, we use session storage to\n // track if a user manually toggled the param field expandable\n const shouldUseSessionStorage = !!uniqueParamId;\n const { isExpanded, onManualToggle } = useExpandableMemory(\n uniqueParamId || \"\",\n defaultOpen\n );\n\n // in case we ever render an expandable that is not a param field,\n // we can just use regular state to track it\n const [localOpen, setLocalOpen] = useState(defaultOpen);\n\n const open = defaultOpen || shouldUseSessionStorage ? isExpanded : localOpen;\n\n // setShouldRenderChildren should only ever be called with true - we never want to unmount stateful components\n const [shouldRenderChildren, setShouldRenderChildren] = useState(\n open || !lazy\n );\n\n const expandableRef = useRef<HTMLDetailsElement>(null);\n\n const openClosestExpandables = (element: HTMLElement) => {\n let parent = element.closest(`.${EXPANDABLE_CONTENT_CLASS}`);\n while (parent) {\n const button = parent.previousElementSibling as HTMLButtonElement;\n if (button.getAttribute(\"aria-expanded\") === \"false\") {\n button.click();\n }\n parent =\n parent.parentElement?.closest(`.${EXPANDABLE_CONTENT_CLASS}`) ?? null;\n }\n };\n\n useEffect(() => {\n const checkHashAndExpand = () => {\n scrollElementIntoView({\n shouldReturnEarly: !!hasScrolledToAnchorRef?.current,\n checkIfShouldScroll(targetEl) {\n return (\n !!expandableRef.current && expandableRef.current.contains(targetEl)\n );\n },\n preScrollCallback(targetEl) {\n if (shouldUseSessionStorage) {\n onManualToggle(true);\n } else {\n setLocalOpen(true);\n }\n openClosestExpandables(targetEl);\n },\n postScrollCallback() {\n if (hasScrolledToAnchorRef) hasScrolledToAnchorRef.current = true;\n },\n });\n };\n\n checkHashAndExpand();\n window.addEventListener(\"hashchange\", checkHashAndExpand);\n return () => {\n window.removeEventListener(\"hashchange\", checkHashAndExpand);\n };\n }, [shouldUseSessionStorage, onManualToggle, hasScrolledToAnchorRef]);\n\n const onChange = (open: boolean) => {\n setShouldRenderChildren(true);\n\n if (onChangeProp) {\n onChangeProp(open);\n }\n };\n\n const setOpenState = (newOpenState: boolean) => {\n if (shouldUseSessionStorage) {\n onManualToggle(newOpenState);\n } else {\n setLocalOpen(newOpenState);\n }\n\n onChange(newOpenState);\n };\n\n return (\n <details\n key={title}\n ref={expandableRef}\n open={open}\n onToggle={(e) => {\n const newState = e.currentTarget.open;\n if (newState !== open) {\n setOpenState(newState);\n }\n }}\n className={cn(Classes.Expandable, \"mint:mt-4 mint:mb-4 mint:border-standard mint:rounded-xl\")}\n data-testid={uniqueParamId + \"-children\"}\n >\n <summary\n className={cn(\n \"not-prose mint:text-sm mint:flex mint:flex-row mint:items-center mint:content-center mint:w-full mint:cursor-pointer\",\n \"mint:text-gray-600 mint:hover:text-gray-900 mint:dark:text-gray-300 mint:dark:hover:text-gray-200 mint:py-3 mint:px-3.5 mint:hover:bg-gray-50/50 mint:dark:hover:bg-white/5 mint:rounded-t-xl\",\n \"mint:list-none mint:[&::-webkit-details-marker]:hidden\",\n !open && \"mint:rounded-b-xl\"\n )}\n aria-controls=\"Children attributes\"\n aria-expanded={open}\n data-component-part=\"expandable-button\"\n >\n <ChevronRightFilled\n className={cn(\n \"mint:h-2.5 mint:w-2.5 mint:text-gray-500 mint:dark:text-gray-400 mint:shrink-0 mint:transition-transform\",\n open && \"mint:rotate-180\"\n )}\n />\n <div className=\"mint:ml-3 mint:leading-tight mint:text-left\">\n <p className=\"mint:m-0\" contentEditable={false}>\n {open ? locale[\"hide\"] : locale[\"show\"]}{\" \"}\n {title || locale[\"childAttributes\"]}\n </p>\n </div>\n </summary>\n <div\n id={title + \"Children\"}\n className={cn(\n EXPANDABLE_CONTENT_CLASS,\n \"mint:mx-3 mint:px-2 mint:border-t mint:border-gray-100 mint:dark:border-white/10\"\n )}\n data-component-part={EXPANDABLE_CONTENT_CLASS}\n >\n {shouldRenderChildren && children}\n </div>\n </details>\n );\n}\n"],"names":["EXPANDABLE_CONTENT_CLASS","Expandable","title","defaultOpen","onChangeProp","lazy","children","uniqueParamId","hasScrolledToAnchorRef","useContext","EndpointLocationContext","locale","useSelectedLocale","shouldUseSessionStorage","isExpanded","onManualToggle","useExpandableMemory","localOpen","setLocalOpen","useState","open","shouldRenderChildren","setShouldRenderChildren","expandableRef","useRef","openClosestExpandables","element","parent","button","_a","useEffect","checkHashAndExpand","scrollElementIntoView","targetEl","onChange","setOpenState","newOpenState","jsxs","e","newState","cn","Classes","jsx","ChevronRightFilled"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.js","sources":["../../../src/components/Api/Markdown.tsx"],"sourcesContent":["'use client';\n\nimport ReactMarkdown, { Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { CodeBlock } from '../content-components/code-block';\nimport { getNodeText } from '../content-components/getNodeText';\nimport { cn } from \"../../utils/cn\";\n\nconst commonRemarkPlugins = [remarkGfm];\n\nexport function Markdown({\n children,\n className,\n components,\n showCopyButton = false,\n}: {\n children: string;\n className?: string;\n components?: Partial<Components> | null | undefined;\n showCopyButton?: boolean;\n}) {\n\n return (\n <div className={className}>\n <ReactMarkdown\n remarkPlugins={commonRemarkPlugins}\n components={{\n p: ({ children }) => <p className=\"mint:break-words\">{children}</p>,\n pre: ({ children, ...props }) => {\n if (\n typeof children === 'object' &&\n children !== null &&\n 'props' in children &&\n typeof children.props === 'object' &&\n children.props !== null &&\n 'className' in children.props &&\n children.props.className === 'language-suggestions'\n ) {\n return children;\n }\n\n const codeString = getNodeText(children);\n\n return (\n <div className=\"mint:relative\">\n <pre\n {...props}\n className={props.className}\n >\n {children}\n </pre>\n {showCopyButton && (\n <div className=\"mint:absolute mint:top-2 mint:right-2\">\n <CodeBlock children={codeString} />\n </div>\n )}\n </div>\n );\n },\n ...components,\n }}\n >\n {children}\n </ReactMarkdown>\n </div>\n );\n}\n\nexport const MarkdownWithoutHeaders = ({\n children,\n className,\n}: {\n children: string;\n className?: string;\n}) => {\n const headingClass = 'mint:text-base mint:font-medium';\n return (\n <Markdown\n components={{\n h1: ({ children }) => <h1 className={headingClass}>{children}</h1>,\n h2: ({ children }) => <h2 className={headingClass}>{children}</h2>,\n h3: ({ children }) => <h3 className={headingClass}>{children}</h3>,\n h4: ({ children }) => <h4 className={headingClass}>{children}</h4>,\n h5: ({ children }) => <h5 className={headingClass}>{children}</h5>,\n h6: ({ children }) => <h6 className={headingClass}>{children}</h6>,\n }}\n className={className}\n >\n {children}\n </Markdown>\n );\n};\n"],"names":["commonRemarkPlugins","remarkGfm","Markdown","children","className","components","showCopyButton","jsx","ReactMarkdown","props","codeString","getNodeText","jsxs","CodeBlock","MarkdownWithoutHeaders","headingClass"],"mappings":";;;;;AASA,MAAMA,IAAsB,CAACC,CAAS;AAE/B,SAASC,EAAS;AAAA,EACvB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC,IAAiB;AACnB,GAKG;AAED,SACE,gBAAAC,EAAC,SAAI,WAAAH,GACH,UAAA,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAeR;AAAA,MACf,YAAY;AAAA,QACV,GAAG,CAAC,EAAE,UAAAG,EAAAA,MAAe,gBAAAI,EAAC,KAAA,EAAE,WAAU,oBAAoB,UAAAJ,EAAAA,CAAS;AAAA,QAC/D,KAAK,CAAC,EAAE,UAAAA,GAAU,GAAGM,QAAY;AAC/B,cACE,OAAON,KAAa,YACpBA,MAAa,QACb,WAAWA,KACX,OAAOA,EAAS,SAAU,YAC1BA,EAAS,UAAU,QACnB,eAAeA,EAAS,SACxBA,EAAS,MAAM,cAAc;AAE7B,mBAAOA;AAGT,gBAAMO,IAAaC,EAAYR,CAAQ;AAEvC,iBACE,gBAAAS,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,YAAA,gBAAAL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACE,GAAGE;AAAA,gBACJ,WAAWA,EAAM;AAAA,gBAEhB,UAAAN;AAAAA,cAAA;AAAA,YAAA;AAAA,YAEFG,uBACE,OAAA,EAAI,WAAU,yCACb,UAAA,gBAAAC,EAACM,GAAA,EAAU,UAAUH,EAAA,CAAY,EAAA,CACnC;AAAA,UAAA,GAEJ;AAAA,QAEJ;AAAA,QACA,GAAGL;AAAA,MAAA;AAAA,MAGJ,UAAAF;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEO,MAAMW,IAAyB,CAAC;AAAA,EACrC,UAAAX;AAAA,EACA,WAAAC;AACF,MAGM;AACJ,QAAMW,IAAe;AACrB,SACE,gBAAAR;AAAA,IAACL;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,QACV,IAAI,CAAC,EAAE,UAAAC,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,QAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,MAAA;AAAA,MAE/D,WAAAC;AAAA,MAEC,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"Markdown.js","sources":["../../../src/components/Api/Markdown.tsx"],"sourcesContent":["\nimport ReactMarkdown, { Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { CodeBlock } from '../content-components/code-block';\nimport { getNodeText } from '../content-components/getNodeText';\nimport { cn } from \"../../utils/cn\";\n\nconst commonRemarkPlugins = [remarkGfm];\n\nexport function Markdown({\n children,\n className,\n components,\n showCopyButton = false,\n}: {\n children: string;\n className?: string;\n components?: Partial<Components> | null | undefined;\n showCopyButton?: boolean;\n}) {\n\n return (\n <div className={className}>\n <ReactMarkdown\n remarkPlugins={commonRemarkPlugins}\n components={{\n p: ({ children }) => <p className=\"mint:break-words\">{children}</p>,\n pre: ({ children, ...props }) => {\n if (\n typeof children === 'object' &&\n children !== null &&\n 'props' in children &&\n typeof children.props === 'object' &&\n children.props !== null &&\n 'className' in children.props &&\n children.props.className === 'language-suggestions'\n ) {\n return children;\n }\n\n const codeString = getNodeText(children);\n\n return (\n <div className=\"mint:relative\">\n <pre\n {...props}\n className={props.className}\n >\n {children}\n </pre>\n {showCopyButton && (\n <div className=\"mint:absolute mint:top-2 mint:right-2\">\n <CodeBlock children={codeString} />\n </div>\n )}\n </div>\n );\n },\n ...components,\n }}\n >\n {children}\n </ReactMarkdown>\n </div>\n );\n}\n\nexport const MarkdownWithoutHeaders = ({\n children,\n className,\n}: {\n children: string;\n className?: string;\n}) => {\n const headingClass = 'mint:text-base mint:font-medium';\n return (\n <Markdown\n components={{\n h1: ({ children }) => <h1 className={headingClass}>{children}</h1>,\n h2: ({ children }) => <h2 className={headingClass}>{children}</h2>,\n h3: ({ children }) => <h3 className={headingClass}>{children}</h3>,\n h4: ({ children }) => <h4 className={headingClass}>{children}</h4>,\n h5: ({ children }) => <h5 className={headingClass}>{children}</h5>,\n h6: ({ children }) => <h6 className={headingClass}>{children}</h6>,\n }}\n className={className}\n >\n {children}\n </Markdown>\n );\n};\n"],"names":["commonRemarkPlugins","remarkGfm","Markdown","children","className","components","showCopyButton","jsx","ReactMarkdown","props","codeString","getNodeText","jsxs","CodeBlock","MarkdownWithoutHeaders","headingClass"],"mappings":";;;;;AAQA,MAAMA,IAAsB,CAACC,CAAS;AAE/B,SAASC,EAAS;AAAA,EACvB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC,IAAiB;AACnB,GAKG;AAED,SACE,gBAAAC,EAAC,SAAI,WAAAH,GACH,UAAA,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAeR;AAAA,MACf,YAAY;AAAA,QACV,GAAG,CAAC,EAAE,UAAAG,EAAAA,MAAe,gBAAAI,EAAC,KAAA,EAAE,WAAU,oBAAoB,UAAAJ,EAAAA,CAAS;AAAA,QAC/D,KAAK,CAAC,EAAE,UAAAA,GAAU,GAAGM,QAAY;AAC/B,cACE,OAAON,KAAa,YACpBA,MAAa,QACb,WAAWA,KACX,OAAOA,EAAS,SAAU,YAC1BA,EAAS,UAAU,QACnB,eAAeA,EAAS,SACxBA,EAAS,MAAM,cAAc;AAE7B,mBAAOA;AAGT,gBAAMO,IAAaC,EAAYR,CAAQ;AAEvC,iBACE,gBAAAS,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,YAAA,gBAAAL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACE,GAAGE;AAAA,gBACJ,WAAWA,EAAM;AAAA,gBAEhB,UAAAN;AAAAA,cAAA;AAAA,YAAA;AAAA,YAEFG,uBACE,OAAA,EAAI,WAAU,yCACb,UAAA,gBAAAC,EAACM,GAAA,EAAU,UAAUH,EAAA,CAAY,EAAA,CACnC;AAAA,UAAA,GAEJ;AAAA,QAEJ;AAAA,QACA,GAAGL;AAAA,MAAA;AAAA,MAGJ,UAAAF;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEO,MAAMW,IAAyB,CAAC;AAAA,EACrC,UAAAX;AAAA,EACA,WAAAC;AACF,MAGM;AACJ,QAAMW,IAAe;AACrB,SACE,gBAAAR;AAAA,IAACL;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,QACV,IAAI,CAAC,EAAE,UAAAC,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,EAAAA,MAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,QAC7D,IAAI,CAAC,EAAE,UAAAA,QAAe,gBAAAI,EAAC,MAAA,EAAG,WAAWQ,GAAe,UAAAZ,EAAAA,CAAS;AAAA,MAAA;AAAA,MAE/D,WAAAC;AAAA,MAEC,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MethodPill.js","sources":["../../../src/components/Api/MethodPill.tsx"],"sourcesContent":["'use client';\n\nimport { getMethodColor, getShortenedMethodName } from './colors';\nimport { cn } from '../../utils/cn';\n\ntype MethodPillProps = {\n isActive: boolean;\n method: 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head' | 'options' | 'trace' | string;\n shortMethod?: boolean;\n className?: string;\n};\n\nexport const MethodPill = ({ isActive = false, method, shortMethod = false, className }: MethodPillProps) => {\n const upperMethod = method.toUpperCase();\n const shortenedMethod = getShortenedMethodName(upperMethod);\n const { activeNavPillBg, activeNavPillText, inactiveNavPillText, inactiveNavPillBg } =\n getMethodColor(method);\n return (\n <span\n className={cn(\n shortMethod\n ? 'mint:px-1 mint:py-0.5 mint:rounded-md mint:text-[0.55rem] mint:leading-tight mint:font-bold'\n : 'mint:px-2 mint:py-0.5 mint:rounded-md mint:text-sm mint:leading-tight mint:font-bold',\n isActive\n ? `${activeNavPillBg} ${activeNavPillText}`\n : `${inactiveNavPillBg} ${inactiveNavPillText}`,\n className\n )}\n >\n {shortMethod ? shortenedMethod : upperMethod}\n </span>\n );\n};\n"],"names":["MethodPill","isActive","method","shortMethod","className","upperMethod","shortenedMethod","getShortenedMethodName","activeNavPillBg","activeNavPillText","inactiveNavPillText","inactiveNavPillBg","getMethodColor","jsx","cn"],"mappings":";;;AAYO,MAAMA,IAAa,CAAC,EAAE,UAAAC,IAAW,IAAO,QAAAC,GAAQ,aAAAC,IAAc,IAAO,WAAAC,QAAiC;AAC3G,QAAMC,IAAcH,EAAO,YAAA,GACrBI,IAAkBC,EAAuBF,CAAW,GACpD,EAAE,iBAAAG,GAAiB,mBAAAC,GAAmB,qBAAAC,GAAqB,mBAAAC,EAAA,IAC/DC,EAAeV,CAAM;AACvB,SACE,gBAAAW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTX,IACI,gGACA;AAAA,QACJF,IACI,GAAGO,CAAe,IAAIC,CAAiB,KACvC,GAAGE,CAAiB,IAAID,CAAmB;AAAA,QAC/CN;AAAA,MAAA;AAAA,MAGD,cAAcE,IAAkBD;AAAA,IAAA;AAAA,EAAA;AAGvC;"}
1
+ {"version":3,"file":"MethodPill.js","sources":["../../../src/components/Api/MethodPill.tsx"],"sourcesContent":["\nimport { getMethodColor, getShortenedMethodName } from './colors';\nimport { cn } from '../../utils/cn';\n\ntype MethodPillProps = {\n isActive: boolean;\n method: 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head' | 'options' | 'trace' | string;\n shortMethod?: boolean;\n className?: string;\n};\n\nexport const MethodPill = ({ isActive = false, method, shortMethod = false, className }: MethodPillProps) => {\n const upperMethod = method.toUpperCase();\n const shortenedMethod = getShortenedMethodName(upperMethod);\n const { activeNavPillBg, activeNavPillText, inactiveNavPillText, inactiveNavPillBg } =\n getMethodColor(method);\n return (\n <span\n className={cn(\n shortMethod\n ? 'mint:px-1 mint:py-0.5 mint:rounded-md mint:text-[0.55rem] mint:leading-tight mint:font-bold'\n : 'mint:px-2 mint:py-0.5 mint:rounded-md mint:text-sm mint:leading-tight mint:font-bold',\n isActive\n ? `${activeNavPillBg} ${activeNavPillText}`\n : `${inactiveNavPillBg} ${inactiveNavPillText}`,\n className\n )}\n >\n {shortMethod ? shortenedMethod : upperMethod}\n </span>\n );\n};\n"],"names":["MethodPill","isActive","method","shortMethod","className","upperMethod","shortenedMethod","getShortenedMethodName","activeNavPillBg","activeNavPillText","inactiveNavPillText","inactiveNavPillBg","getMethodColor","jsx","cn"],"mappings":";;;AAWO,MAAMA,IAAa,CAAC,EAAE,UAAAC,IAAW,IAAO,QAAAC,GAAQ,aAAAC,IAAc,IAAO,WAAAC,QAAiC;AAC3G,QAAMC,IAAcH,EAAO,YAAA,GACrBI,IAAkBC,EAAuBF,CAAW,GACpD,EAAE,iBAAAG,GAAiB,mBAAAC,GAAmB,qBAAAC,GAAqB,mBAAAC,EAAA,IAC/DC,EAAeV,CAAM;AACvB,SACE,gBAAAW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTX,IACI,gGACA;AAAA,QACJF,IACI,GAAGO,CAAe,IAAIC,CAAiB,KACvC,GAAGE,CAAiB,IAAID,CAAmB;AAAA,QAC/CN;AAAA,MAAA;AAAA,MAGD,cAAcE,IAAkBD;AAAA,IAAA;AAAA,EAAA;AAGvC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Param.js","sources":["../../../src/components/Api/Param.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback, useEffect, useRef, useState, useMemo, useContext } from 'react';\n\nimport { buildRecursiveParamFieldId } from '@/api-playground/EndpointFields/ParamFields/RecursiveParamField';\nimport { OptionDropdown } from '@/api-playground/EndpointFields/components/OptionDropdown';\nimport { EndpointLocationContext } from '@/contexts/EndpointLocationContext';\nimport { useSelectedLocale } from '@/utils/locales';\nimport { LinkMultipleRegular } from '@fluentui/react-icons';\nimport { setParamFieldDefault } from '@/utils/api-playground/paramFieldDefaults';\nimport { parseDefaultByType } from '@/utils/api-playground/parseDefaultByType';\nimport { cn } from '@/api-playground-2/schemaGraph/utils';\nimport { copyToClipboard } from '@/utils/copyToClipboard';\nimport { scrollElementIntoView } from '@/utils/scrollElementIntoView';\nimport { FieldType } from '@/api-playground-2/types/api';\nimport { Classes } from '@/api-playground-2/types';\n\nconst MAX_DEFAULT_VALUE_LENGTH = 50;\n\nexport type ParamProps = {\n query?: string;\n path?: string;\n body?: string;\n header?: string;\n children: React.ReactNode;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: any;\n type?: string;\n location?: string;\n required?: boolean;\n deprecated?: boolean;\n hidden?: boolean;\n placeholder?: string;\n enum?: string[];\n id?: string;\n pre?: string[];\n post?: string[];\n};\n\nexport function InfoPill({\n children,\n prefix,\n className,\n}: {\n children: React.ReactNode;\n prefix?: string;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'mint:flex mint:items-center mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200 mint:font-medium mint:break-all',\n className\n )}\n data-component-part=\"field-info-pill\"\n >\n {prefix && <span className=\"mint:text-gray-400 mint:dark:text-gray-500\">{prefix}</span>}\n <span>{children}</span>\n </div>\n );\n}\n\nexport function RequiredPill() {\n return (\n <div\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-red-100/50 mint:dark:bg-red-400/10 mint:text-red-600 mint:dark:text-red-300 mint:font-medium mint:whitespace-nowrap\"\n data-component-part=\"field-required-pill\"\n >\n required\n </div>\n );\n}\n\nexport function DeprecatedPill() {\n return (\n <div\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-amber-100/50 mint:dark:bg-amber-400/10 mint:text-amber-600 mint:dark:text-amber-300 mint:font-medium mint:whitespace-nowrap\"\n data-component-part=\"field-deprecated-pill\"\n >\n deprecated\n </div>\n );\n}\n\nexport function ParamField({\n query,\n path,\n body,\n header,\n children,\n default: defaultValue,\n type,\n location,\n required = false,\n deprecated = false,\n hidden = false,\n id,\n pre,\n post,\n}: ParamProps) {\n const name = query || path || body || header;\n\n useEffect(() => {\n if (name && defaultValue !== undefined) {\n const loc = query ? 'query' : path ? 'path' : header ? 'header' : body ? 'body' : undefined;\n\n if (loc) {\n const parsed = parseDefaultByType(\n type,\n typeof defaultValue === 'string' ? defaultValue : JSON.stringify(defaultValue)\n );\n setParamFieldDefault(loc, name, parsed);\n }\n }\n }, [name, defaultValue, query, path, header, location]);\n\n if (name == null) {\n return null;\n }\n\n return (\n <GenericParam\n name={name}\n defaultValue={defaultValue}\n type={type}\n location={location}\n required={required}\n deprecated={deprecated}\n hidden={hidden}\n id={id}\n pre={pre}\n post={post}\n >\n {children}\n </GenericParam>\n );\n}\n\nexport function ParamHead({\n name,\n typeLabel,\n location,\n required,\n deprecated,\n fieldType,\n defaultValue,\n typeOptions,\n selectedTypeOptionIndex,\n onSelectTypeOption,\n parentName,\n id,\n pre,\n post,\n style,\n explode,\n}: {\n name?: string | null;\n typeLabel?: string;\n fieldType?: FieldType;\n location?: string;\n required?: boolean;\n deprecated?: boolean;\n defaultValue?: unknown;\n typeOptions?: string[];\n selectedTypeOptionIndex?: number;\n onSelectTypeOption?: (index: number) => void;\n parentName?: string;\n id?: string;\n pre?: string[];\n post?: string[];\n style?: string;\n explode?: boolean;\n}) {\n const { hasScrolledToAnchorRef } = useContext(EndpointLocationContext);\n const locale = useSelectedLocale();\n const pillsRef = useRef<HTMLDivElement>(null);\n const [isMultiLine, setIsMultiLine] = useState(false);\n const paramId = id ?? buildRecursiveParamFieldId(fieldType, name, parentName);\n\n const copyAnchorLink = useCallback(() => {\n if (paramId) {\n void copyToClipboard(window.location.href.split('#')[0] + '#' + paramId);\n window.location.hash = paramId;\n }\n }, [paramId]);\n\n useEffect(() => {\n const ref = pillsRef.current;\n if (!ref) return;\n\n function checkHeight() {\n const height = ref?.offsetHeight ?? 0;\n setIsMultiLine(height > 28);\n }\n\n checkHeight();\n const resizeObserver = new ResizeObserver(checkHeight);\n resizeObserver.observe(ref);\n\n return () => {\n resizeObserver.unobserve(ref);\n };\n }, []);\n\n useEffect(() => {\n scrollElementIntoView({\n id: paramId,\n shouldReturnEarly: !!hasScrolledToAnchorRef?.current || !paramId || !!parentName,\n checkIfShouldScroll(_targetEl, hash) {\n return hash === paramId;\n },\n postScrollCallback() {\n if (hasScrolledToAnchorRef) hasScrolledToAnchorRef.current = true;\n },\n });\n }, [hasScrolledToAnchorRef, paramId, parentName]);\n\n const paramInfo = !parentName ? (\n name\n ) : style === 'deepObject' && explode ? (\n <>\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">{parentName}</span>\n {name}\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">]</span>\n </>\n ) : (\n <>\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">{parentName}</span>\n {name}\n </>\n );\n\n return name == null ? null : (\n <div\n className='mint:flex mint:font-mono mint:text-sm mint:group/param-head mint:param-head mint:break-all mint:relative'\n id={paramId}\n key={paramId}\n >\n <div className=\"mint:flex-1 mint:flex mint:content-start mint:py-0.5 mint:mr-5\">\n <div className=\"mint:flex mint:items-center mint:flex-wrap mint:gap-2 mint:mt-2\">\n {paramId && (\n <div className=\"mint:absolute\">\n <a\n href={`#${paramId}`}\n className={cn(\n parentName ? 'mint:-ml-[2.1rem]' : 'mint:-ml-10',\n 'mint:flex mint:items-center mint:opacity-0 mint:border-0 mint:group-hover/param-head:opacity-100 mint:focus:opacity-100 mint:focus:outline-0 mint:py-2 mint:[.expandable-content_&]:-ml-[2.1rem] mint:group/link'\n )}\n aria-label={locale['aria.navigateToHeader']}\n onClick={copyAnchorLink}\n >\n &#8203;\n <div className=\"mint:w-6 mint:h-6 mint:rounded-md mint:flex mint:items-center mint:justify-center mint:shadow-sm mint:text-gray-400 mint:dark:text-white/50 mint:dark:bg-background-dark mint:dark:brightness-[1.35] mint:dark:ring-1 mint:dark:hover:brightness-150 mint:bg-white mint:ring-1 mint:ring-gray-400/30 mint:dark:ring-gray-700/25 mint:hover:ring-gray-400/60 mint:dark:hover:ring-white/20 mint:group-focus/link:border-2 mint:group-focus/link:border-primary mint:dark:group-focus/link:border-primary-light\">\n <LinkMultipleRegular />\n </div>\n </a>\n </div>\n )}\n {pre?.map((item, i) => (\n <div\n key={i}\n className=\"mint:px-2 mint:py-0.5 mint:mb-2 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200\"\n data-component-part=\"field-meta-pre\"\n >\n {item}\n </div>\n ))}\n {(parentName || name) && (\n <div\n className=\"mint:font-semibold mint:text-[#643FB2] mint:mt-2 mint:mb-2 mint:dark:text-[#C9AAF9] mint:cursor-pointer mint:overflow-wrap-anywhere\"\n data-component-part=\"field-name\"\n onClick={copyAnchorLink}\n >\n {paramInfo}\n </div>\n )}\n <div\n ref={pillsRef}\n className={cn(\n 'mint:inline mint:items-center mint:gap-2 mint:text-xs mint:font-medium mint:[&_div]:inline mint:[&_div]:mr-2',\n isMultiLine ? 'mint:[&_div]:leading-6' : 'mint:[&_div]:leading-5'\n )}\n data-component-part=\"field-meta\"\n >\n {typeOptions && typeOptions.length > 1 && onSelectTypeOption ? (\n <OptionDropdown\n options={typeOptions}\n selectedIndex={selectedTypeOptionIndex}\n onSelectOption={onSelectTypeOption}\n />\n ) : (\n typeLabel && <InfoPill>{typeLabel}</InfoPill>\n )}\n {location && <InfoPill>{location}</InfoPill>}\n {defaultValue != null && (\n <InfoPill prefix=\"default:\">\n {typeof defaultValue === 'string'\n ? defaultValue === ''\n ? '\"\"'\n : defaultValue\n : JSON.stringify(defaultValue)}\n </InfoPill>\n )}\n {required && <RequiredPill />}\n {deprecated && <DeprecatedPill />}\n {post?.map((item, i) => (\n <div\n key={i}\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200\"\n data-component-part=\"field-meta-post\"\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// TODO: Remove from components\nexport type GenericParamProps = {\n name: string;\n type?: string;\n location?: string;\n defaultValue?: string;\n required?: boolean;\n deprecated?: boolean;\n hidden?: boolean;\n id?: string;\n children: React.ReactNode;\n pre?: string[];\n post?: string[];\n};\n\nexport function GenericParam({\n name,\n type,\n location,\n defaultValue,\n required = false,\n deprecated = false,\n hidden = false,\n id,\n pre,\n post,\n children,\n}: GenericParamProps) {\n const stringifiedDefaultValue = useMemo(() => {\n if (typeof defaultValue === 'object') {\n // don't display values with nested objects; looks bad on one line\n const containsNestedObject = Object.values(defaultValue).some(\n (value) => typeof value === 'object'\n );\n if (containsNestedObject) {\n return null;\n }\n }\n\n const stringifiedValue = JSON.stringify(defaultValue);\n if (\n stringifiedValue &&\n stringifiedValue.length > 0 &&\n stringifiedValue.length < MAX_DEFAULT_VALUE_LENGTH\n ) {\n return stringifiedValue;\n }\n return null;\n }, [defaultValue]);\n\n if (hidden) {\n return null;\n }\n return (\n <div\n className={cn(\n Classes.Field,\n 'mint:pt-2.5 mint:pb-5 mint:my-2.5 mint:border-gray-50 mint:dark:border-gray-800/50 mint:border-b'\n )}\n >\n <ParamHead\n name={name}\n typeLabel={type}\n location={location}\n required={required}\n deprecated={deprecated}\n defaultValue={stringifiedDefaultValue}\n id={id}\n pre={pre}\n post={post}\n />\n {children && (\n <div\n className=\"mint:mt-4 mint:mb-4 mint:prose-sm mint:prose-gray mint:dark:prose-invert mint:[&_.prose>p:first-child]:mt-0 mint:[&_.prose>p:last-child]:mb-0\"\n data-component-part=\"field-content\"\n >\n {children}\n </div>\n )}\n </div>\n );\n}\n"],"names":["InfoPill","children","prefix","className","jsxs","cn","jsx","RequiredPill","DeprecatedPill","ParamHead","name","typeLabel","location","required","deprecated","fieldType","defaultValue","typeOptions","selectedTypeOptionIndex","onSelectTypeOption","parentName","id","pre","post","style","explode","hasScrolledToAnchorRef","useContext","EndpointLocationContext","locale","useSelectedLocale","pillsRef","useRef","isMultiLine","setIsMultiLine","useState","paramId","buildRecursiveParamFieldId","copyAnchorLink","useCallback","copyToClipboard","useEffect","ref","checkHeight","height","resizeObserver","scrollElementIntoView","_targetEl","hash","paramInfo","Fragment","LinkMultipleRegular","item","i","OptionDropdown"],"mappings":";;;;;;;;;;;;AAuCO,SAASA,EAAS;AAAA,EACvB,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AACF,GAIG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAEF,uBAAoB;AAAA,MAEnB,UAAA;AAAA,QAAAD,KAAU,gBAAAI,EAAC,QAAA,EAAK,WAAU,8CAA8C,UAAAJ,GAAO;AAAA,QAChF,gBAAAI,EAAC,UAAM,UAAAL,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGtB;AAEO,SAASM,IAAe;AAC7B,SACE,gBAAAD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,uBAAoB;AAAA,MACrB,UAAA;AAAA,IAAA;AAAA,EAAA;AAIL;AAEO,SAASE,IAAiB;AAC/B,SACE,gBAAAF;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,uBAAoB;AAAA,MACrB,UAAA;AAAA,IAAA;AAAA,EAAA;AAIL;AAwDO,SAASG,GAAU;AAAA,EACxB,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,IAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AACF,GAiBG;AACD,QAAM,EAAE,wBAAAC,EAAA,IAA2BC,EAAWC,CAAuB,GAC/DC,IAASC,EAAA,GACTC,IAAWC,EAAuB,IAAI,GACtC,CAACC,GAAaC,CAAc,IAAIC,EAAS,EAAK,GAC9CC,IAAUf,KAAMgB,EAA2BtB,GAAWL,GAAMU,CAAU,GAEtEkB,IAAiBC,EAAY,MAAM;AACvC,IAAIH,MACGI,EAAgB,OAAO,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,IAAI,MAAMJ,CAAO,GACvE,OAAO,SAAS,OAAOA;AAAA,EAE3B,GAAG,CAACA,CAAO,CAAC;AAEZ,EAAAK,EAAU,MAAM;AACd,UAAMC,IAAMX,EAAS;AACrB,QAAI,CAACW,EAAK;AAEV,aAASC,IAAc;AACrB,YAAMC,KAASF,KAAA,gBAAAA,EAAK,iBAAgB;AACpC,MAAAR,EAAeU,IAAS,EAAE;AAAA,IAC5B;AAEA,IAAAD,EAAA;AACA,UAAME,IAAiB,IAAI,eAAeF,CAAW;AACrD,WAAAE,EAAe,QAAQH,CAAG,GAEnB,MAAM;AACX,MAAAG,EAAe,UAAUH,CAAG;AAAA,IAC9B;AAAA,EACF,GAAG,CAAA,CAAE,GAELD,EAAU,MAAM;AACd,IAAAK,EAAsB;AAAA,MACpB,IAAIV;AAAA,MACJ,mBAAmB,CAAC,EAACV,KAAA,QAAAA,EAAwB,YAAW,CAACU,KAAW,CAAC,CAAChB;AAAA,MACtE,oBAAoB2B,GAAWC,GAAM;AACnC,eAAOA,MAASZ;AAAA,MAClB;AAAA,MACA,qBAAqB;AACnB,QAAIV,QAA+C,UAAU;AAAA,MAC/D;AAAA,IAAA,CACD;AAAA,EACH,GAAG,CAACA,GAAwBU,GAAShB,CAAU,CAAC;AAEhD,QAAM6B,IAAa7B,IAEfI,MAAU,gBAAgBC,IAC5B,gBAAArB,EAAA8C,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA5C,EAAC,QAAA,EAAK,WAAU,8CAA8C,UAAAc,GAAW;AAAA,IACxEV;AAAA,IACD,gBAAAJ,EAAC,QAAA,EAAK,WAAU,8CAA6C,UAAA,IAAA,CAAC;AAAA,EAAA,EAAA,CAChE,IAEA,gBAAAF,EAAA8C,GAAA,EACE,UAAA;AAAA,IAAA,gBAAA5C,EAAC,QAAA,EAAK,WAAU,8CAA8C,UAAAc,GAAW;AAAA,IACxEV;AAAA,EAAA,GACH,IAXAA;AAcF,SAAOA,KAAQ,OAAO,OACpB,gBAAAJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,IAAI8B;AAAA,MAGJ,4BAAC,OAAA,EAAI,WAAU,kEACb,UAAA,gBAAAhC,EAAC,OAAA,EAAI,WAAU,mEACZ,UAAA;AAAA,QAAAgC,KACC,gBAAA9B,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA,gBAAAF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM,IAAIgC,CAAO;AAAA,YACjB,WAAW/B;AAAA,cACTe,IAAa,sBAAsB;AAAA,cACnC;AAAA,YAAA;AAAA,YAEF,cAAYS,EAAO,uBAAuB;AAAA,YAC1C,SAASS;AAAA,YACV,UAAA;AAAA,cAAA;AAAA,gCAEE,OAAA,EAAI,WAAU,ifACb,UAAA,gBAAAhC,EAAC6C,KAAoB,EAAA,CACvB;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QAED7B,KAAA,gBAAAA,EAAK,IAAI,CAAC8B,GAAMC,MACf,gBAAA/C;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAU;AAAA,YACV,uBAAoB;AAAA,YAEnB,UAAA8C;AAAA,UAAA;AAAA,UAJIC;AAAA,QAAA;AAAA,SAOPjC,KAAcV,MACd,gBAAAJ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,uBAAoB;AAAA,YACpB,SAASgC;AAAA,YAER,UAAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAGL,gBAAA7C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK2B;AAAA,YACL,WAAW1B;AAAA,cACT;AAAA,cACA4B,IAAc,2BAA2B;AAAA,YAAA;AAAA,YAE3C,uBAAoB;AAAA,YAEnB,UAAA;AAAA,cAAAhB,KAAeA,EAAY,SAAS,KAAKE,IACxC,gBAAAb;AAAA,gBAACgD;AAAA,gBAAA;AAAA,kBACC,SAASrC;AAAA,kBACT,eAAeC;AAAA,kBACf,gBAAgBC;AAAA,gBAAA;AAAA,cAAA,IAGlBR,KAAa,gBAAAL,EAACN,GAAA,EAAU,UAAAW,EAAA,CAAU;AAAA,cAEnCC,KAAY,gBAAAN,EAACN,GAAA,EAAU,UAAAY,EAAA,CAAS;AAAA,cAChCI,KAAgB,QACf,gBAAAV,EAACN,GAAA,EAAS,QAAO,YACd,UAAA,OAAOgB,KAAiB,WACrBA,MAAiB,KACf,OACAA,IACF,KAAK,UAAUA,CAAY,GACjC;AAAA,cAEDH,uBAAaN,GAAA,EAAa;AAAA,cAC1BO,uBAAeN,GAAA,EAAe;AAAA,cAC9Be,KAAA,gBAAAA,EAAM,IAAI,CAAC6B,GAAMC,MAChB,gBAAA/C;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,WAAU;AAAA,kBACV,uBAAoB;AAAA,kBAEnB,UAAA8C;AAAA,gBAAA;AAAA,gBAJIC;AAAA,cAAA;AAAA,YAMR;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CACF,EAAA,CACF;AAAA,IAAA;AAAA,IAhFKjB;AAAA,EAAA;AAmFX;"}
1
+ {"version":3,"file":"Param.js","sources":["../../../src/components/Api/Param.tsx"],"sourcesContent":["\nimport React, { useCallback, useEffect, useRef, useState, useMemo, useContext } from 'react';\n\nimport { buildRecursiveParamFieldId } from '@/api-playground/EndpointFields/ParamFields/RecursiveParamField';\nimport { OptionDropdown } from '@/api-playground/EndpointFields/components/OptionDropdown';\nimport { EndpointLocationContext } from '@/contexts/EndpointLocationContext';\nimport { useSelectedLocale } from '@/utils/locales';\nimport { LinkMultipleRegular } from '@fluentui/react-icons';\nimport { setParamFieldDefault } from '@/utils/api-playground/paramFieldDefaults';\nimport { parseDefaultByType } from '@/utils/api-playground/parseDefaultByType';\nimport { cn } from '@/api-playground-2/schemaGraph/utils';\nimport { copyToClipboard } from '@/utils/copyToClipboard';\nimport { scrollElementIntoView } from '@/utils/scrollElementIntoView';\nimport { FieldType } from '@/api-playground-2/types/api';\nimport { Classes } from '@/api-playground-2/types';\n\nconst MAX_DEFAULT_VALUE_LENGTH = 50;\n\nexport type ParamProps = {\n query?: string;\n path?: string;\n body?: string;\n header?: string;\n children: React.ReactNode;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: any;\n type?: string;\n location?: string;\n required?: boolean;\n deprecated?: boolean;\n hidden?: boolean;\n placeholder?: string;\n enum?: string[];\n id?: string;\n pre?: string[];\n post?: string[];\n};\n\nexport function InfoPill({\n children,\n prefix,\n className,\n}: {\n children: React.ReactNode;\n prefix?: string;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'mint:flex mint:items-center mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200 mint:font-medium mint:break-all',\n className\n )}\n data-component-part=\"field-info-pill\"\n >\n {prefix && <span className=\"mint:text-gray-400 mint:dark:text-gray-500\">{prefix}</span>}\n <span>{children}</span>\n </div>\n );\n}\n\nexport function RequiredPill() {\n return (\n <div\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-red-100/50 mint:dark:bg-red-400/10 mint:text-red-600 mint:dark:text-red-300 mint:font-medium mint:whitespace-nowrap\"\n data-component-part=\"field-required-pill\"\n >\n required\n </div>\n );\n}\n\nexport function DeprecatedPill() {\n return (\n <div\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-amber-100/50 mint:dark:bg-amber-400/10 mint:text-amber-600 mint:dark:text-amber-300 mint:font-medium mint:whitespace-nowrap\"\n data-component-part=\"field-deprecated-pill\"\n >\n deprecated\n </div>\n );\n}\n\nexport function ParamField({\n query,\n path,\n body,\n header,\n children,\n default: defaultValue,\n type,\n location,\n required = false,\n deprecated = false,\n hidden = false,\n id,\n pre,\n post,\n}: ParamProps) {\n const name = query || path || body || header;\n\n useEffect(() => {\n if (name && defaultValue !== undefined) {\n const loc = query ? 'query' : path ? 'path' : header ? 'header' : body ? 'body' : undefined;\n\n if (loc) {\n const parsed = parseDefaultByType(\n type,\n typeof defaultValue === 'string' ? defaultValue : JSON.stringify(defaultValue)\n );\n setParamFieldDefault(loc, name, parsed);\n }\n }\n }, [name, defaultValue, query, path, header, location]);\n\n if (name == null) {\n return null;\n }\n\n return (\n <GenericParam\n name={name}\n defaultValue={defaultValue}\n type={type}\n location={location}\n required={required}\n deprecated={deprecated}\n hidden={hidden}\n id={id}\n pre={pre}\n post={post}\n >\n {children}\n </GenericParam>\n );\n}\n\nexport function ParamHead({\n name,\n typeLabel,\n location,\n required,\n deprecated,\n fieldType,\n defaultValue,\n typeOptions,\n selectedTypeOptionIndex,\n onSelectTypeOption,\n parentName,\n id,\n pre,\n post,\n style,\n explode,\n}: {\n name?: string | null;\n typeLabel?: string;\n fieldType?: FieldType;\n location?: string;\n required?: boolean;\n deprecated?: boolean;\n defaultValue?: unknown;\n typeOptions?: string[];\n selectedTypeOptionIndex?: number;\n onSelectTypeOption?: (index: number) => void;\n parentName?: string;\n id?: string;\n pre?: string[];\n post?: string[];\n style?: string;\n explode?: boolean;\n}) {\n const { hasScrolledToAnchorRef } = useContext(EndpointLocationContext);\n const locale = useSelectedLocale();\n const pillsRef = useRef<HTMLDivElement>(null);\n const [isMultiLine, setIsMultiLine] = useState(false);\n const paramId = id ?? buildRecursiveParamFieldId(fieldType, name, parentName);\n\n const copyAnchorLink = useCallback(() => {\n if (paramId) {\n void copyToClipboard(window.location.href.split('#')[0] + '#' + paramId);\n window.location.hash = paramId;\n }\n }, [paramId]);\n\n useEffect(() => {\n const ref = pillsRef.current;\n if (!ref) return;\n\n function checkHeight() {\n const height = ref?.offsetHeight ?? 0;\n setIsMultiLine(height > 28);\n }\n\n checkHeight();\n const resizeObserver = new ResizeObserver(checkHeight);\n resizeObserver.observe(ref);\n\n return () => {\n resizeObserver.unobserve(ref);\n };\n }, []);\n\n useEffect(() => {\n scrollElementIntoView({\n id: paramId,\n shouldReturnEarly: !!hasScrolledToAnchorRef?.current || !paramId || !!parentName,\n checkIfShouldScroll(_targetEl, hash) {\n return hash === paramId;\n },\n postScrollCallback() {\n if (hasScrolledToAnchorRef) hasScrolledToAnchorRef.current = true;\n },\n });\n }, [hasScrolledToAnchorRef, paramId, parentName]);\n\n const paramInfo = !parentName ? (\n name\n ) : style === 'deepObject' && explode ? (\n <>\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">{parentName}</span>\n {name}\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">]</span>\n </>\n ) : (\n <>\n <span className=\"mint:text-gray-500 mint:dark:text-gray-400\">{parentName}</span>\n {name}\n </>\n );\n\n return name == null ? null : (\n <div\n className='mint:flex mint:font-mono mint:text-sm mint:group/param-head mint:param-head mint:break-all mint:relative'\n id={paramId}\n key={paramId}\n >\n <div className=\"mint:flex-1 mint:flex mint:content-start mint:py-0.5 mint:mr-5\">\n <div className=\"mint:flex mint:items-center mint:flex-wrap mint:gap-2 mint:mt-2\">\n {paramId && (\n <div className=\"mint:absolute\">\n <a\n href={`#${paramId}`}\n className={cn(\n parentName ? 'mint:-ml-[2.1rem]' : 'mint:-ml-10',\n 'mint:flex mint:items-center mint:opacity-0 mint:border-0 mint:group-hover/param-head:opacity-100 mint:focus:opacity-100 mint:focus:outline-0 mint:py-2 mint:[.expandable-content_&]:-ml-[2.1rem] mint:group/link'\n )}\n aria-label={locale['aria.navigateToHeader']}\n onClick={copyAnchorLink}\n >\n &#8203;\n <div className=\"mint:w-6 mint:h-6 mint:rounded-md mint:flex mint:items-center mint:justify-center mint:shadow-sm mint:text-gray-400 mint:dark:text-white/50 mint:dark:bg-background-dark mint:dark:brightness-[1.35] mint:dark:ring-1 mint:dark:hover:brightness-150 mint:bg-white mint:ring-1 mint:ring-gray-400/30 mint:dark:ring-gray-700/25 mint:hover:ring-gray-400/60 mint:dark:hover:ring-white/20 mint:group-focus/link:border-2 mint:group-focus/link:border-primary mint:dark:group-focus/link:border-primary-light\">\n <LinkMultipleRegular />\n </div>\n </a>\n </div>\n )}\n {pre?.map((item, i) => (\n <div\n key={i}\n className=\"mint:px-2 mint:py-0.5 mint:mb-2 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200\"\n data-component-part=\"field-meta-pre\"\n >\n {item}\n </div>\n ))}\n {(parentName || name) && (\n <div\n className=\"mint:font-semibold mint:text-[#643FB2] mint:mt-2 mint:mb-2 mint:dark:text-[#C9AAF9] mint:cursor-pointer mint:overflow-wrap-anywhere\"\n data-component-part=\"field-name\"\n onClick={copyAnchorLink}\n >\n {paramInfo}\n </div>\n )}\n <div\n ref={pillsRef}\n className={cn(\n 'mint:inline mint:items-center mint:gap-2 mint:text-xs mint:font-medium mint:[&_div]:inline mint:[&_div]:mr-2',\n isMultiLine ? 'mint:[&_div]:leading-6' : 'mint:[&_div]:leading-5'\n )}\n data-component-part=\"field-meta\"\n >\n {typeOptions && typeOptions.length > 1 && onSelectTypeOption ? (\n <OptionDropdown\n options={typeOptions}\n selectedIndex={selectedTypeOptionIndex}\n onSelectOption={onSelectTypeOption}\n />\n ) : (\n typeLabel && <InfoPill>{typeLabel}</InfoPill>\n )}\n {location && <InfoPill>{location}</InfoPill>}\n {defaultValue != null && (\n <InfoPill prefix=\"default:\">\n {typeof defaultValue === 'string'\n ? defaultValue === ''\n ? '\"\"'\n : defaultValue\n : JSON.stringify(defaultValue)}\n </InfoPill>\n )}\n {required && <RequiredPill />}\n {deprecated && <DeprecatedPill />}\n {post?.map((item, i) => (\n <div\n key={i}\n className=\"mint:px-2 mint:py-0.5 mint:rounded-md mint:bg-gray-100/50 mint:dark:bg-white/5 mint:text-gray-600 mint:dark:text-gray-200\"\n data-component-part=\"field-meta-post\"\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// TODO: Remove from components\nexport type GenericParamProps = {\n name: string;\n type?: string;\n location?: string;\n defaultValue?: string;\n required?: boolean;\n deprecated?: boolean;\n hidden?: boolean;\n id?: string;\n children: React.ReactNode;\n pre?: string[];\n post?: string[];\n};\n\nexport function GenericParam({\n name,\n type,\n location,\n defaultValue,\n required = false,\n deprecated = false,\n hidden = false,\n id,\n pre,\n post,\n children,\n}: GenericParamProps) {\n const stringifiedDefaultValue = useMemo(() => {\n if (typeof defaultValue === 'object') {\n // don't display values with nested objects; looks bad on one line\n const containsNestedObject = Object.values(defaultValue).some(\n (value) => typeof value === 'object'\n );\n if (containsNestedObject) {\n return null;\n }\n }\n\n const stringifiedValue = JSON.stringify(defaultValue);\n if (\n stringifiedValue &&\n stringifiedValue.length > 0 &&\n stringifiedValue.length < MAX_DEFAULT_VALUE_LENGTH\n ) {\n return stringifiedValue;\n }\n return null;\n }, [defaultValue]);\n\n if (hidden) {\n return null;\n }\n return (\n <div\n className={cn(\n Classes.Field,\n 'mint:pt-2.5 mint:pb-5 mint:my-2.5 mint:border-gray-50 mint:dark:border-gray-800/50 mint:border-b'\n )}\n >\n <ParamHead\n name={name}\n typeLabel={type}\n location={location}\n required={required}\n deprecated={deprecated}\n defaultValue={stringifiedDefaultValue}\n id={id}\n pre={pre}\n post={post}\n />\n {children && (\n <div\n className=\"mint:mt-4 mint:mb-4 mint:prose-sm mint:prose-gray mint:dark:prose-invert mint:[&_.prose>p:first-child]:mt-0 mint:[&_.prose>p:last-child]:mb-0\"\n data-component-part=\"field-content\"\n >\n {children}\n </div>\n )}\n </div>\n );\n}\n"],"names":["InfoPill","children","prefix","className","jsxs","cn","jsx","RequiredPill","DeprecatedPill","ParamHead","name","typeLabel","location","required","deprecated","fieldType","defaultValue","typeOptions","selectedTypeOptionIndex","onSelectTypeOption","parentName","id","pre","post","style","explode","hasScrolledToAnchorRef","useContext","EndpointLocationContext","locale","useSelectedLocale","pillsRef","useRef","isMultiLine","setIsMultiLine","useState","paramId","buildRecursiveParamFieldId","copyAnchorLink","useCallback","copyToClipboard","useEffect","ref","checkHeight","height","resizeObserver","scrollElementIntoView","_targetEl","hash","paramInfo","Fragment","LinkMultipleRegular","item","i","OptionDropdown"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sources":["../../../src/components/Api/colors.tsx"],"sourcesContent":["'use client';\n\nexport const getMethodColor = (method?: string) => {\n switch (method?.toUpperCase()) {\n case 'GET':\n return {\n activeNavPillBg: 'mint:bg-[#2AB673]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-green-700 mint:dark:text-green-400',\n inactiveNavPillBg: 'mint:bg-green-400/20 mint:dark:bg-green-400/20',\n paramStyle: 'mint:text-[#2AB673] mint:bg-[#2AB673]/10 mint:border-[#2AB673]/30',\n };\n case 'POST':\n case 'WEBHOOK':\n return {\n activeNavPillBg: 'mint:bg-[#3064E3]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-blue-700 mint:dark:text-blue-400',\n inactiveNavPillBg: 'mint:bg-blue-400/20 mint:dark:bg-blue-400/20',\n paramStyle: 'mint:text-[#3064E3] mint:bg-[#3064E3]/10 mint:border-[#3064E3]/30',\n };\n case 'PUT':\n return {\n activeNavPillBg: 'mint:bg-[#C28C30]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-yellow-700 mint:dark:text-yellow-400',\n inactiveNavPillBg: 'mint:bg-yellow-400/20 mint:dark:bg-yellow-400/20',\n paramStyle: 'mint:text-[#C28C30] mint:bg-[#C28C30]/10 mint:border-[#C28C30]/30',\n };\n case 'DELETE':\n return {\n activeNavPillBg: 'mint:bg-[#CB3A32]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-red-700 mint:dark:text-red-400',\n inactiveNavPillBg: 'mint:bg-red-400/20 mint:dark:bg-red-400/20',\n paramStyle: 'mint:text-[#CB3A32] mint:bg-[#CB3A32]/10 mint:border-[#CB3A32]/30',\n };\n case 'OPTIONS':\n return {\n activeNavPillBg: 'mint:bg-[#9341FB]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-purple-700 mint:dark:text-purple-400',\n inactiveNavPillBg: 'mint:bg-purple-400/20 mint:dark:bg-purple-400/20',\n paramStyle: 'mint:text-[#9341FB] mint:bg-[#9341FB]/10 mint:border-[#9341FB]/30',\n };\n case 'HEAD':\n return {\n activeNavPillBg: 'mint:bg-[#0e7490]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-cyan-700 mint:dark:text-cyan-400',\n inactiveNavPillBg: 'mint:bg-cyan-400/20 mint:dark:bg-cyan-400/20',\n paramStyle: 'mint:text-[#0e7490] mint:text-[#00d3f2] mint:bg-[#00d3f2]/10 mint:border-[#00d3f2]/30',\n };\n case 'PATCH':\n return {\n activeNavPillBg: 'mint:bg-[#DA622B]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-orange-700 mint:dark:text-orange-400',\n inactiveNavPillBg: 'mint:bg-orange-400/20 mint:dark:bg-orange-400/20',\n paramStyle: 'mint:text-[#DA622B] mint:bg-[#DA622B]/10 mint:border-[#DA622B]/30',\n };\n case 'TRACE':\n return {\n activeNavPillBg: 'mint:bg-[#BD30D3]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-fuchsia-700 mint:dark:text-fuchsia-400',\n inactiveNavPillBg: 'mint:bg-fuchsia-400/20 mint:dark:bg-fuchsia-400/20',\n paramStyle: 'mint:text-[#BD30D3] mint:bg-[#BD30D3]/10 mint:border-[#BD30D3]/30',\n };\n case 'WEBSOCKET':\n return {\n activeNavPillBg: 'mint:bg-[#F54A00] mint:dark:bg-[#FF6900]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-[#F54A00] mint:dark:text-[#FF6900]',\n inactiveNavPillBg: 'mint:bg-[#FFEDD4] mint:dark:bg-[#FF6900]/20',\n paramStyle:\n 'mint:text-[#F54A00] mint:bg-[#FFEDD4]/10 mint:border-[#FFEDD4]/30 mint:dark:text-[#FF6900] mint:dark:bg-[#FF6900]/10 mint:dark:border-[#FF6900]/30',\n };\n case 'DEPRECATED':\n return {\n activeNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n activeNavPillText: 'mint:text-[#14151A] mint:dark:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-[#14151A] mint:dark:text-[#FFFFFF]',\n inactiveNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n };\n default:\n return {\n activeNavPillBg: 'mint:bg-gray-600',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-gray-700 mint:dark:text-gray-400',\n inactiveNavPillBg: 'mint:bg-gray-400/20 mint:dark:bg-gray-400/20',\n paramStyle: 'mint:text-gray-600 mint:bg-gray-600/10 mint:border-gray-600/30',\n };\n }\n};\n\nexport const getShortenedMethodName = (method?: string): string | undefined => {\n const upperCase = method?.toUpperCase();\n switch (upperCase) {\n case 'DELETE':\n return 'DEL';\n case 'WEBHOOK':\n return 'HOOK';\n case 'WEBSOCKET':\n return 'WSS';\n default:\n return upperCase;\n }\n};\n"],"names":["getMethodColor","method","getShortenedMethodName","upperCase"],"mappings":"AAEO,MAAMA,IAAiB,CAACC,MAAoB;AACjD,UAAQA,KAAA,gBAAAA,EAAQ,eAAY;AAAA,IAC1B,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YACE;AAAA,MAAA;AAAA,IAEN,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,MAAA;AAAA,IAEvB;AACE,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,EACd;AAEN,GAEaC,IAAyB,CAACD,MAAwC;AAC7E,QAAME,IAAYF,KAAA,gBAAAA,EAAQ;AAC1B,UAAQE,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAOA;AAAA,EAAA;AAEb;"}
1
+ {"version":3,"file":"colors.js","sources":["../../../src/components/Api/colors.tsx"],"sourcesContent":["\nexport const getMethodColor = (method?: string) => {\n switch (method?.toUpperCase()) {\n case 'GET':\n return {\n activeNavPillBg: 'mint:bg-[#2AB673]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-green-700 mint:dark:text-green-400',\n inactiveNavPillBg: 'mint:bg-green-400/20 mint:dark:bg-green-400/20',\n paramStyle: 'mint:text-[#2AB673] mint:bg-[#2AB673]/10 mint:border-[#2AB673]/30',\n };\n case 'POST':\n case 'WEBHOOK':\n return {\n activeNavPillBg: 'mint:bg-[#3064E3]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-blue-700 mint:dark:text-blue-400',\n inactiveNavPillBg: 'mint:bg-blue-400/20 mint:dark:bg-blue-400/20',\n paramStyle: 'mint:text-[#3064E3] mint:bg-[#3064E3]/10 mint:border-[#3064E3]/30',\n };\n case 'PUT':\n return {\n activeNavPillBg: 'mint:bg-[#C28C30]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-yellow-700 mint:dark:text-yellow-400',\n inactiveNavPillBg: 'mint:bg-yellow-400/20 mint:dark:bg-yellow-400/20',\n paramStyle: 'mint:text-[#C28C30] mint:bg-[#C28C30]/10 mint:border-[#C28C30]/30',\n };\n case 'DELETE':\n return {\n activeNavPillBg: 'mint:bg-[#CB3A32]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-red-700 mint:dark:text-red-400',\n inactiveNavPillBg: 'mint:bg-red-400/20 mint:dark:bg-red-400/20',\n paramStyle: 'mint:text-[#CB3A32] mint:bg-[#CB3A32]/10 mint:border-[#CB3A32]/30',\n };\n case 'OPTIONS':\n return {\n activeNavPillBg: 'mint:bg-[#9341FB]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-purple-700 mint:dark:text-purple-400',\n inactiveNavPillBg: 'mint:bg-purple-400/20 mint:dark:bg-purple-400/20',\n paramStyle: 'mint:text-[#9341FB] mint:bg-[#9341FB]/10 mint:border-[#9341FB]/30',\n };\n case 'HEAD':\n return {\n activeNavPillBg: 'mint:bg-[#0e7490]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-cyan-700 mint:dark:text-cyan-400',\n inactiveNavPillBg: 'mint:bg-cyan-400/20 mint:dark:bg-cyan-400/20',\n paramStyle: 'mint:text-[#0e7490] mint:text-[#00d3f2] mint:bg-[#00d3f2]/10 mint:border-[#00d3f2]/30',\n };\n case 'PATCH':\n return {\n activeNavPillBg: 'mint:bg-[#DA622B]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-orange-700 mint:dark:text-orange-400',\n inactiveNavPillBg: 'mint:bg-orange-400/20 mint:dark:bg-orange-400/20',\n paramStyle: 'mint:text-[#DA622B] mint:bg-[#DA622B]/10 mint:border-[#DA622B]/30',\n };\n case 'TRACE':\n return {\n activeNavPillBg: 'mint:bg-[#BD30D3]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-fuchsia-700 mint:dark:text-fuchsia-400',\n inactiveNavPillBg: 'mint:bg-fuchsia-400/20 mint:dark:bg-fuchsia-400/20',\n paramStyle: 'mint:text-[#BD30D3] mint:bg-[#BD30D3]/10 mint:border-[#BD30D3]/30',\n };\n case 'WEBSOCKET':\n return {\n activeNavPillBg: 'mint:bg-[#F54A00] mint:dark:bg-[#FF6900]',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-[#F54A00] mint:dark:text-[#FF6900]',\n inactiveNavPillBg: 'mint:bg-[#FFEDD4] mint:dark:bg-[#FF6900]/20',\n paramStyle:\n 'mint:text-[#F54A00] mint:bg-[#FFEDD4]/10 mint:border-[#FFEDD4]/30 mint:dark:text-[#FF6900] mint:dark:bg-[#FF6900]/10 mint:dark:border-[#FF6900]/30',\n };\n case 'DEPRECATED':\n return {\n activeNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n activeNavPillText: 'mint:text-[#14151A] mint:dark:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-[#14151A] mint:dark:text-[#FFFFFF]',\n inactiveNavPillBg: 'mint:bg-[#F7F7F8] mint:dark:bg-[#14151A]',\n };\n default:\n return {\n activeNavPillBg: 'mint:bg-gray-600',\n activeNavPillText: 'mint:text-[#FFFFFF]',\n inactiveNavPillText: 'mint:text-gray-700 mint:dark:text-gray-400',\n inactiveNavPillBg: 'mint:bg-gray-400/20 mint:dark:bg-gray-400/20',\n paramStyle: 'mint:text-gray-600 mint:bg-gray-600/10 mint:border-gray-600/30',\n };\n }\n};\n\nexport const getShortenedMethodName = (method?: string): string | undefined => {\n const upperCase = method?.toUpperCase();\n switch (upperCase) {\n case 'DELETE':\n return 'DEL';\n case 'WEBHOOK':\n return 'HOOK';\n case 'WEBSOCKET':\n return 'WSS';\n default:\n return upperCase;\n }\n};\n"],"names":["getMethodColor","method","getShortenedMethodName","upperCase"],"mappings":"AACO,MAAMA,IAAiB,CAACC,MAAoB;AACjD,UAAQA,KAAA,gBAAAA,EAAQ,eAAY;AAAA,IAC1B,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,IAEhB,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YACE;AAAA,MAAA;AAAA,IAEN,KAAK;AACH,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,MAAA;AAAA,IAEvB;AACE,aAAO;AAAA,QACL,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,QACrB,mBAAmB;AAAA,QACnB,YAAY;AAAA,MAAA;AAAA,EACd;AAEN,GAEaC,IAAyB,CAACD,MAAwC;AAC7E,QAAME,IAAYF,KAAA,gBAAAA,EAAQ;AAC1B,UAAQE,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAOA;AAAA,EAAA;AAEb;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CodeGroupCopyButton.js","sources":["../../../../src/components/content-components/CodeGroupSelect/CodeGroupCopyButton.tsx"],"sourcesContent":["'use client';\n\n\nimport { CopyToClipboardButton } from '../code-block';\n\ntype CodeGroupCopyButtonProps = {\n code: string;\n};\n\nexport const CodeGroupCopyButton = ({ code }: CodeGroupCopyButtonProps) => {\n\n return (\n <div data-testid=\"code-group-select-copy-button\">\n <CopyToClipboardButton textToCopy={code} />\n </div>\n );\n};\n"],"names":["CodeGroupCopyButton","code","jsx","CopyToClipboardButton"],"mappings":";;AASO,MAAMA,IAAsB,CAAC,EAAE,MAAAC,QAGlC,gBAAAC,EAAC,SAAI,eAAY,iCACf,4BAACC,GAAA,EAAsB,YAAYF,GAAM,EAAA,CAC3C;"}
1
+ {"version":3,"file":"CodeGroupCopyButton.js","sources":["../../../../src/components/content-components/CodeGroupSelect/CodeGroupCopyButton.tsx"],"sourcesContent":["\n\nimport { CopyToClipboardButton } from '../code-block';\n\ntype CodeGroupCopyButtonProps = {\n code: string;\n};\n\nexport const CodeGroupCopyButton = ({ code }: CodeGroupCopyButtonProps) => {\n\n return (\n <div data-testid=\"code-group-select-copy-button\">\n <CopyToClipboardButton textToCopy={code} />\n </div>\n );\n};\n"],"names":["CodeGroupCopyButton","code","jsx","CopyToClipboardButton"],"mappings":";;AAQO,MAAMA,IAAsB,CAAC,EAAE,MAAAC,QAGlC,gBAAAC,EAAC,SAAI,eAAY,iCACf,4BAACC,GAAA,EAAsB,YAAYF,GAAM,EAAA,CAC3C;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CodeSelectDropdown.js","sources":["../../../../src/components/content-components/CodeGroupSelect/CodeSelectDropdown.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDownFilled } from '@fluentui/react-icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../../Api/dropdown-menu';\nimport { cn } from \"../../../utils/cn\";\n\ninterface CodeSelectDropdownProps {\n selectedOption?: string;\n setSelectedOption: (option: string) => void;\n options: string[];\n}\n\nexport const CodeSelectDropdown = ({\n selectedOption,\n setSelectedOption,\n options,\n}: CodeSelectDropdownProps) => {\n const hasOptions = options.length > 1;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n disabled={!hasOptions}\n className={cn(\n 'mint:select-none mint:bg-transparent mint:px-2 mint:py-[5px] mint:text-xs mint:font-medium mint:min-w-16 mint:flex-1 mint:dark:bg-transparent mint:dark:text-gray-200 mint:text-gray-600',\n )}\n >\n <div className=\"mint:flex mint:gap-1.5 mint:items-center mint:px-2 mint:py-1 mint:group-hover:hover:bg-primary-light/10 mint:rounded-lg mint:min-w-16\">\n <p className=\"mint:truncate\">{selectedOption}</p>\n {hasOptions && <ChevronDownFilled className=\"mint:w-3 mint:h-3 mint:text-gray-500 mint:dark:text-gray-400 mint:shrink-0\" />}\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className={cn(\n 'mint:overflow-y-auto', 'mint:bg-white mint:dark:bg-zinc-950'\n )}\n >\n {options.map((option, i) => (\n <DropdownMenuItem\n key={i}\n onSelect={() => setSelectedOption(option)}\n className={cn(\n 'mint:py-1.5 mint:text-xs',\n option === selectedOption && 'mint:text-[#643FB2] mint:dark:text-[#C9AAF9] mint:font-medium',\n option !== selectedOption &&\n 'mint:text-gray-500 mint:dark:text-white/50',\n )}\n >\n {option}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["CodeSelectDropdown","selectedOption","setSelectedOption","options","hasOptions","DropdownMenu","jsx","DropdownMenuTrigger","cn","jsxs","ChevronDownFilled","DropdownMenuContent","option","i","DropdownMenuItem"],"mappings":";;;;AAkBO,MAAMA,IAAqB,CAAC;AAAA,EACjC,gBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,SAAAC;AACF,MAA+B;AAC7B,QAAMC,IAAaD,EAAQ,SAAS;AAEpC,2BACGE,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAU,CAACH;AAAA,QACX,WAAWI;AAAA,UACT;AAAA,QAAA;AAAA,QAGF,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,yIACb,UAAA;AAAA,UAAA,gBAAAH,EAAC,KAAA,EAAE,WAAU,iBAAiB,UAAAL,GAAe;AAAA,UAC5CG,KAAc,gBAAAE,EAACI,GAAA,EAAkB,WAAU,6EAAA,CAA6E;AAAA,QAAA,EAAA,CAC3H;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAAJ;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,WAAWH;AAAA,UACT;AAAA,UAAwB;AAAA,QAAA;AAAA,QAGzB,UAAAL,EAAQ,IAAI,CAACS,GAAQC,MACpB,gBAAAP;AAAA,UAACQ;AAAA,UAAA;AAAA,YAEC,UAAU,MAAMZ,EAAkBU,CAAM;AAAA,YACxC,WAAWJ;AAAA,cACT;AAAA,cACAI,MAAWX,KAAkB;AAAA,cAC7BW,MAAWX,KACT;AAAA,YAAA;AAAA,YAGH,UAAAW;AAAA,UAAA;AAAA,UATIC;AAAA,QAAA,CAWR;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;"}
1
+ {"version":3,"file":"CodeSelectDropdown.js","sources":["../../../../src/components/content-components/CodeGroupSelect/CodeSelectDropdown.tsx"],"sourcesContent":["\nimport { ChevronDownFilled } from '@fluentui/react-icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../../Api/dropdown-menu';\nimport { cn } from \"../../../utils/cn\";\n\ninterface CodeSelectDropdownProps {\n selectedOption?: string;\n setSelectedOption: (option: string) => void;\n options: string[];\n}\n\nexport const CodeSelectDropdown = ({\n selectedOption,\n setSelectedOption,\n options,\n}: CodeSelectDropdownProps) => {\n const hasOptions = options.length > 1;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n disabled={!hasOptions}\n className={cn(\n 'mint:select-none mint:bg-transparent mint:px-2 mint:py-[5px] mint:text-xs mint:font-medium mint:min-w-16 mint:flex-1 mint:dark:bg-transparent mint:dark:text-gray-200 mint:text-gray-600',\n )}\n >\n <div className=\"mint:flex mint:gap-1.5 mint:items-center mint:px-2 mint:py-1 mint:group-hover:hover:bg-primary-light/10 mint:rounded-lg mint:min-w-16\">\n <p className=\"mint:truncate\">{selectedOption}</p>\n {hasOptions && <ChevronDownFilled className=\"mint:w-3 mint:h-3 mint:text-gray-500 mint:dark:text-gray-400 mint:shrink-0\" />}\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className={cn(\n 'mint:overflow-y-auto', 'mint:bg-white mint:dark:bg-zinc-950'\n )}\n >\n {options.map((option, i) => (\n <DropdownMenuItem\n key={i}\n onSelect={() => setSelectedOption(option)}\n className={cn(\n 'mint:py-1.5 mint:text-xs',\n option === selectedOption && 'mint:text-[#643FB2] mint:dark:text-[#C9AAF9] mint:font-medium',\n option !== selectedOption &&\n 'mint:text-gray-500 mint:dark:text-white/50',\n )}\n >\n {option}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["CodeSelectDropdown","selectedOption","setSelectedOption","options","hasOptions","DropdownMenu","jsx","DropdownMenuTrigger","cn","jsxs","ChevronDownFilled","DropdownMenuContent","option","i","DropdownMenuItem"],"mappings":";;;;AAiBO,MAAMA,IAAqB,CAAC;AAAA,EACjC,gBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,SAAAC;AACF,MAA+B;AAC7B,QAAMC,IAAaD,EAAQ,SAAS;AAEpC,2BACGE,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,UAAU,CAACH;AAAA,QACX,WAAWI;AAAA,UACT;AAAA,QAAA;AAAA,QAGF,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,yIACb,UAAA;AAAA,UAAA,gBAAAH,EAAC,KAAA,EAAE,WAAU,iBAAiB,UAAAL,GAAe;AAAA,UAC5CG,KAAc,gBAAAE,EAACI,GAAA,EAAkB,WAAU,6EAAA,CAA6E;AAAA,QAAA,EAAA,CAC3H;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAAJ;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,WAAWH;AAAA,UACT;AAAA,UAAwB;AAAA,QAAA;AAAA,QAGzB,UAAAL,EAAQ,IAAI,CAACS,GAAQC,MACpB,gBAAAP;AAAA,UAACQ;AAAA,UAAA;AAAA,YAEC,UAAU,MAAMZ,EAAkBU,CAAM;AAAA,YACxC,WAAWJ;AAAA,cACT;AAAA,cACAI,MAAWX,KAAkB;AAAA,cAC7BW,MAAWX,KACT;AAAA,YAAA;AAAA,YAGH,UAAAW;AAAA,UAAA;AAAA,UATIC;AAAA,QAAA,CAWR;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;"}