@djangocfg/ui-tools 2.1.119 → 2.1.120

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 (63) hide show
  1. package/dist/JsonTree-G2TPWQ4C.mjs +4 -0
  2. package/dist/{JsonTree-6RYAOPSS.mjs.map → JsonTree-G2TPWQ4C.mjs.map} +1 -1
  3. package/dist/JsonTree-TWXUBBIG.cjs +10 -0
  4. package/dist/{JsonTree-7OH6CIHT.cjs.map → JsonTree-TWXUBBIG.cjs.map} +1 -1
  5. package/dist/{Mermaid.client-PNXEC6YL.cjs → Mermaid.client-AF4WOQZR.cjs} +9 -11
  6. package/dist/Mermaid.client-AF4WOQZR.cjs.map +1 -0
  7. package/dist/{Mermaid.client-OKACITCW.mjs → Mermaid.client-W4QXJX7Q.mjs} +9 -11
  8. package/dist/Mermaid.client-W4QXJX7Q.mjs.map +1 -0
  9. package/dist/{PlaygroundLayout-SYMEAG3J.cjs → PlaygroundLayout-RZMJWH3Y.cjs} +25 -25
  10. package/dist/{PlaygroundLayout-SYMEAG3J.cjs.map → PlaygroundLayout-RZMJWH3Y.cjs.map} +1 -1
  11. package/dist/{PlaygroundLayout-UQRBU5RH.mjs → PlaygroundLayout-UQABCZ6K.mjs} +4 -4
  12. package/dist/{PlaygroundLayout-UQRBU5RH.mjs.map → PlaygroundLayout-UQABCZ6K.mjs.map} +1 -1
  13. package/dist/{chunk-UOMPPIED.mjs → chunk-4G4UGMOP.mjs} +3 -3
  14. package/dist/chunk-4G4UGMOP.mjs.map +1 -0
  15. package/dist/{chunk-47T5ECYV.cjs → chunk-CY3CQS26.cjs} +3 -3
  16. package/dist/chunk-CY3CQS26.cjs.map +1 -0
  17. package/dist/{chunk-5QT3QYFZ.cjs → chunk-EGYUND4E.cjs} +2 -2
  18. package/dist/chunk-EGYUND4E.cjs.map +1 -0
  19. package/dist/{chunk-DI3HUXHK.cjs → chunk-OYLQZT62.cjs} +2 -2
  20. package/dist/chunk-OYLQZT62.cjs.map +1 -0
  21. package/dist/{chunk-W6YHQI4F.mjs → chunk-OYYCGIBF.mjs} +2 -2
  22. package/dist/chunk-OYYCGIBF.mjs.map +1 -0
  23. package/dist/{chunk-G6PRZP5I.mjs → chunk-XZZ22EHP.mjs} +2 -2
  24. package/dist/chunk-XZZ22EHP.mjs.map +1 -0
  25. package/dist/{components-EASJYK45.mjs → components-4YSJ5ALL.mjs} +3 -3
  26. package/dist/{components-CJ2IB65O.cjs.map → components-4YSJ5ALL.mjs.map} +1 -1
  27. package/dist/{components-CJ2IB65O.cjs → components-BSTP3VLD.cjs} +7 -7
  28. package/dist/{components-EASJYK45.mjs.map → components-BSTP3VLD.cjs.map} +1 -1
  29. package/dist/index.cjs +27 -27
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.d.cts +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.mjs +10 -10
  34. package/dist/index.mjs.map +1 -1
  35. package/package.json +9 -12
  36. package/src/tools/AudioPlayer/AudioPlayer.story.tsx +102 -0
  37. package/src/tools/Gallery/Gallery.story.tsx +231 -0
  38. package/src/tools/Gallery/components/compact/GalleryCompact.tsx +72 -7
  39. package/src/tools/Gallery/components/preview/GalleryCarousel.tsx +83 -1
  40. package/src/tools/JsonForm/JsonForm.story.tsx +134 -0
  41. package/src/tools/JsonTree/JsonTree.story.tsx +140 -0
  42. package/src/tools/JsonTree/index.tsx +1 -1
  43. package/src/tools/LottiePlayer/LottiePlayer.story.tsx +95 -0
  44. package/src/tools/Map/Map.story.tsx +300 -0
  45. package/src/tools/Mermaid/Mermaid.story.tsx +131 -0
  46. package/src/tools/Mermaid/hooks/useMermaidCleanup.ts +2 -5
  47. package/src/tools/Mermaid/hooks/useMermaidRenderer.ts +7 -1
  48. package/src/tools/Mermaid/hooks/useMermaidValidation.ts +4 -2
  49. package/src/tools/Mermaid/index.tsx +1 -1
  50. package/src/tools/PrettyCode/PrettyCode.story.tsx +116 -0
  51. package/src/tools/PrettyCode/index.tsx +1 -1
  52. package/src/tools/VideoPlayer/VideoPlayer.story.tsx +87 -0
  53. package/src/tools/VideoPlayer/utils/resolvers.ts +2 -2
  54. package/dist/JsonTree-6RYAOPSS.mjs +0 -4
  55. package/dist/JsonTree-7OH6CIHT.cjs +0 -10
  56. package/dist/Mermaid.client-OKACITCW.mjs.map +0 -1
  57. package/dist/Mermaid.client-PNXEC6YL.cjs.map +0 -1
  58. package/dist/chunk-47T5ECYV.cjs.map +0 -1
  59. package/dist/chunk-5QT3QYFZ.cjs.map +0 -1
  60. package/dist/chunk-DI3HUXHK.cjs.map +0 -1
  61. package/dist/chunk-G6PRZP5I.mjs.map +0 -1
  62. package/dist/chunk-UOMPPIED.mjs.map +0 -1
  63. package/dist/chunk-W6YHQI4F.mjs.map +0 -1
@@ -407,5 +407,5 @@ exports.getVersionStats = getVersionStats;
407
407
  exports.isValidJson = isValidJson;
408
408
  exports.parseRequestHeaders = parseRequestHeaders;
409
409
  exports.usePlaygroundContext = usePlaygroundContext;
410
- //# sourceMappingURL=chunk-DI3HUXHK.cjs.map
411
- //# sourceMappingURL=chunk-DI3HUXHK.cjs.map
410
+ //# sourceMappingURL=chunk-OYLQZT62.cjs.map
411
+ //# sourceMappingURL=chunk-OYLQZT62.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools/PrettyCode/index.tsx","../src/tools/OpenapiViewer/utils/apiKeyManager.ts","../src/tools/OpenapiViewer/utils/versionManager.ts","../src/tools/OpenapiViewer/constants.ts","../src/tools/OpenapiViewer/utils/formatters.ts","../src/tools/OpenapiViewer/context/PlaygroundContext.tsx"],"names":["lazy","__name","jsx","jsxs","Suspense","createContext","useContext","useState","React","useEffect","consola","useCallback"],"mappings":"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","file":"chunk-OYLQZT62.cjs","sourcesContent":["/**\n * PrettyCode Component - Dynamic Import Wrapper\n *\n * Lazy loads the heavy Prism library (~500KB) only when needed.\n * This significantly reduces the initial bundle size.\n */\n\n'use client';\n\nimport React, { lazy, Suspense } from 'react';\nimport type { Language } from 'prism-react-renderer';\n\n// Lazy load the client component\nconst PrettyCodeClient = lazy(() => import('./PrettyCode.client'));\n\n// Loading fallback component\nconst LoadingFallback = () => (\n <div className=\"relative rounded-sm border border-border overflow-hidden bg-muted dark:bg-zinc-900\">\n <div className=\"p-4\">\n <div className=\"flex items-center gap-2\">\n <div className=\"animate-pulse h-4 w-4 rounded-full bg-muted-foreground/20\"></div>\n <span className=\"text-xs text-muted-foreground\">Loading code...</span>\n </div>\n </div>\n </div>\n);\n\nexport interface PrettyCodeProps {\n data: string | object;\n language: Language;\n className?: string;\n mode?: 'dark' | 'light';\n inline?: boolean;\n customBg?: string;\n isCompact?: boolean;\n}\n\nconst PrettyCode: React.FC<PrettyCodeProps> = (props) => {\n return (\n <Suspense fallback={<LoadingFallback />}>\n <PrettyCodeClient {...props} />\n </Suspense>\n );\n};\n\nexport default PrettyCode;\nexport type { Language };\n","/**\n * API Key Management Utility\n *\n * Provides centralized functions for managing API keys in headers and requests.\n * This utility can be used across different components that need to handle API keys.\n */\n\nimport type { ApiKey } from '../types';\n\nexport type { ApiKey };\n\nexport interface HeadersWithApiKey {\n [key: string]: string;\n}\n\n/**\n * Add API key to request headers\n * @param headers - Existing headers object\n * @param apiKey - API key object or string\n * @returns Headers with API key added\n */\nexport function addApiKeyToHeaders(headers: HeadersWithApiKey, apiKey: ApiKey | string | null): HeadersWithApiKey {\n if (!apiKey) {\n return headers;\n }\n\n const keyValue = typeof apiKey === 'string' ? apiKey : (apiKey.id || '');\n\n return {\n ...headers,\n 'X-API-Key': keyValue,\n };\n}\n\n/**\n * Remove API key from headers object\n * @param headers - Headers object\n * @returns Headers without API key\n */\nexport function removeApiKeyFromHeaders(headers: HeadersWithApiKey): HeadersWithApiKey {\n const { 'X-API-Key': removed, ...remainingHeaders } = headers;\n return remainingHeaders;\n}\n\n/**\n * Remove API key from headers JSON string\n * @param headersJson - JSON string of headers\n * @returns JSON string without API key\n */\nexport function removeApiKeyFromHeadersJson(headersJson: string): string {\n try {\n const headers = JSON.parse(headersJson);\n const updatedHeaders = removeApiKeyFromHeaders(headers);\n return JSON.stringify(updatedHeaders, null, 2);\n } catch (error) {\n console.error('Error parsing headers JSON:', error);\n return headersJson;\n }\n}\n\n/**\n * Update headers JSON string with API key\n * @param headersJson - JSON string of headers\n * @param apiKey - API key object or string\n * @returns Updated JSON string\n */\nexport function updateHeadersJsonWithApiKey(headersJson: string, apiKey: ApiKey | string | null): string {\n try {\n const headers = JSON.parse(headersJson);\n const updatedHeaders = addApiKeyToHeaders(headers, apiKey);\n return JSON.stringify(updatedHeaders, null, 2);\n } catch (error) {\n console.error('Error parsing headers JSON:', error);\n return headersJson;\n }\n}\n\n/**\n * Find API key by ID in a list of API keys\n * @param apiKeys - Array of API keys\n * @param keyId - ID of the API key to find\n * @returns API key object or null\n */\nexport function findApiKeyById(apiKeys: ApiKey[], keyId: string): ApiKey | null {\n return apiKeys.find((key) => key.id === keyId) || null;\n}\n\n/**\n * Validate API key format\n * @param apiKey - API key string to validate\n * @returns Whether the API key format is valid\n */\nexport function validateApiKeyFormat(apiKey: string): boolean {\n // Basic validation - adjust based on your API key format requirements\n return typeof apiKey === 'string' && apiKey.length > 0 && apiKey.trim() !== '';\n}\n\n/**\n * Create default headers with API key\n * @param apiKey - API key object or string\n * @returns Default headers with API key\n */\nexport function createDefaultHeaders(apiKey?: ApiKey | string): HeadersWithApiKey {\n const defaultHeaders: HeadersWithApiKey = {\n 'Content-Type': 'application/json',\n };\n\n if (apiKey) {\n return addApiKeyToHeaders(defaultHeaders, apiKey);\n }\n\n return defaultHeaders;\n}\n\n/**\n * Merge headers with API key\n * @param baseHeaders - Base headers object\n * @param additionalHeaders - Additional headers to merge\n * @param apiKey - API key to add\n * @returns Merged headers with API key\n */\nexport function mergeHeadersWithApiKey(baseHeaders: HeadersWithApiKey, additionalHeaders: HeadersWithApiKey, apiKey?: ApiKey | string): HeadersWithApiKey {\n const mergedHeaders = { ...baseHeaders, ...additionalHeaders };\n\n if (apiKey) {\n return addApiKeyToHeaders(mergedHeaders, apiKey);\n }\n\n return mergedHeaders;\n}\n\n/**\n * Log API key usage (for debugging/analytics)\n * @param apiKey - API key that was used\n * @param endpoint - Endpoint that was called\n * @param success - Whether the request was successful\n */\nexport function logApiKeyUsage(apiKey: ApiKey | string, endpoint: string, success: boolean): void {\n const keyValue = typeof apiKey === 'string' ? apiKey : (apiKey.id || '');\n const keyName = typeof apiKey === 'string' ? 'Unknown' : apiKey.name;\n\n console.log(`API Key Usage:`, {\n keyName,\n keyValue: keyValue.substring(0, 8) + '...',\n endpoint,\n success,\n timestamp: new Date().toISOString(),\n });\n}\n","/**\n * API Version Management Utilities\n * Handles version detection, filtering, and URL transformation\n */\n\nimport type { ApiEndpoint } from '../types';\n\nexport interface ApiVersion {\n id: string;\n name: string;\n description: string;\n isDefault: boolean;\n}\n\n// Available API versions\nexport const API_VERSIONS: ApiVersion[] = [\n {\n id: 'v1',\n name: 'v1',\n description: 'Current stable version',\n isDefault: true,\n },\n];\n\n/**\n * Detect version from endpoint path\n */\nexport const detectEndpointVersion = (path: string): string => {\n // Check for versioned paths like /api/vehicles_api/v1/...\n const versionMatch = path.match(/\\/api\\/[^/]+\\/(v\\d+)\\//);\n if (versionMatch && versionMatch[1]) {\n return versionMatch[1];\n }\n \n // If no version found, default to v1\n return 'v1';\n};\n\n/**\n * Check if endpoint belongs to specific version\n */\nexport const isEndpointInVersion = (endpoint: ApiEndpoint, version: string): boolean => {\n const endpointVersion = detectEndpointVersion(endpoint.path);\n return endpointVersion === version;\n};\n\n/**\n * Filter endpoints by version\n */\nexport const filterEndpointsByVersion = (endpoints: ApiEndpoint[], version: string): ApiEndpoint[] => {\n return endpoints.filter(endpoint => isEndpointInVersion(endpoint, version));\n};\n\n/**\n * Remove duplicate endpoints across versions\n * Keeps only the specified version, removes duplicates from other versions\n */\nexport const deduplicateEndpoints = (endpoints: ApiEndpoint[], preferredVersion: string): ApiEndpoint[] => {\n const endpointMap = new Map<string, ApiEndpoint>();\n \n // Group endpoints by normalized path (without version)\n const groupedEndpoints = new Map<string, ApiEndpoint[]>();\n \n endpoints.forEach(endpoint => {\n const normalizedPath = normalizeEndpointPath(endpoint.path);\n if (!groupedEndpoints.has(normalizedPath)) {\n groupedEndpoints.set(normalizedPath, []);\n }\n groupedEndpoints.get(normalizedPath)!.push(endpoint);\n });\n \n // For each group, pick the endpoint from preferred version\n groupedEndpoints.forEach((endpointGroup, normalizedPath) => {\n let selectedEndpoint: ApiEndpoint | null = null;\n \n // Try to find endpoint in preferred version\n const versionEndpoint = endpointGroup.find(ep => isEndpointInVersion(ep, preferredVersion));\n if (versionEndpoint) {\n selectedEndpoint = versionEndpoint;\n } else if (endpointGroup.length > 0) {\n // Fallback to first available endpoint\n selectedEndpoint = endpointGroup[0] || null;\n }\n \n if (selectedEndpoint) {\n endpointMap.set(normalizedPath, selectedEndpoint);\n }\n });\n \n return Array.from(endpointMap.values());\n};\n\n/**\n * Normalize endpoint path by removing version prefix\n * /api/vehicles_api/v1/vehicles/ -> /api/vehicles_api/vehicles/\n * /api/vehicles_api/vehicles/ -> /api/vehicles_api/vehicles/\n */\nexport const normalizeEndpointPath = (path: string): string => {\n // Remove version prefix like /v1/, /v2/, etc.\n return path.replace(/\\/v\\d+\\//, '/');\n};\n\n/**\n * Convert endpoint path to specific version\n */\nexport const convertEndpointToVersion = (endpoint: ApiEndpoint, targetVersion: string): ApiEndpoint => {\n const currentVersion = detectEndpointVersion(endpoint.path);\n \n // If already in target version, return as is\n if (currentVersion === targetVersion) {\n return endpoint;\n }\n \n let newPath = endpoint.path;\n \n // Replace version: /api/vehicles_api/v1/vehicles/ -> /api/vehicles_api/v2/vehicles/\n newPath = newPath.replace(/\\/v\\d+\\//, `/${targetVersion}/`);\n \n return {\n ...endpoint,\n path: newPath,\n };\n};\n\n/**\n * Get version info by ID\n */\nexport const getVersionById = (versionId: string): ApiVersion | undefined => {\n return API_VERSIONS.find(v => v.id === versionId);\n};\n\n/**\n * Get default version\n */\nexport const getDefaultVersion = (): ApiVersion => {\n const defaultVersion = API_VERSIONS.find(v => v.isDefault);\n if (defaultVersion) {\n return defaultVersion;\n }\n \n // Fallback to first version if no default is set\n if (API_VERSIONS.length > 0 && API_VERSIONS[0]) {\n return API_VERSIONS[0];\n }\n \n // This should never happen, but TypeScript requires it\n throw new Error('No API versions defined');\n};\n\n/**\n * Get version statistics from endpoints\n */\nexport const getVersionStats = (endpoints: ApiEndpoint[]): Record<string, number> => {\n const stats: Record<string, number> = {};\n \n API_VERSIONS.forEach(version => {\n stats[version.id] = filterEndpointsByVersion(endpoints, version.id).length;\n });\n \n return stats;\n};\n","// HTTP method colors mapping\nexport const HTTP_METHOD_COLORS = {\n GET: 'success',\n POST: 'primary',\n PUT: 'warning',\n DELETE: 'error',\n PATCH: 'default',\n} as const;\n\n// HTTP status code colors mapping\nexport const HTTP_STATUS_COLORS = {\n '2': 'success',\n '3': 'default',\n '4': 'warning',\n '5': 'error',\n} as const;\n\n// Default request headers\nexport const DEFAULT_HEADERS = {\n 'Content-Type': 'application/json',\n} as const;\n\n// Playground steps configuration\nexport const PLAYGROUND_STEPS = ['endpoints', 'request', 'response'] as const;\n\nexport const STEP_CONFIG = {\n endpoints: {\n title: 'API Endpoints',\n description: 'Browse and select API endpoints',\n },\n request: {\n title: 'Request Builder',\n description: 'Configure your API request',\n },\n response: {\n title: 'Response Viewer',\n description: 'View API response and details',\n },\n} as const;\n","import type { ApiKey } from '../types';\nimport { HTTP_METHOD_COLORS, HTTP_STATUS_COLORS } from '../constants';\n\nexport const getMethodColor = (\n method: string\n): 'success' | 'primary' | 'warning' | 'error' | 'default' => {\n return HTTP_METHOD_COLORS[method.toUpperCase() as keyof typeof HTTP_METHOD_COLORS] || 'default';\n};\n\nexport const getStatusColor = (\n status: number\n): 'success' | 'warning' | 'error' | 'default' => {\n const firstDigit = Math.floor(status / 100).toString();\n return HTTP_STATUS_COLORS[firstDigit as keyof typeof HTTP_STATUS_COLORS] || 'default';\n};\n\nexport const formatApiKeyDisplay = (apiKey: ApiKey): string => {\n const preview = apiKey.id.substring(0, 8);\n return `${apiKey.name} (${preview}...)`;\n};\n\nexport const isValidJson = (str: string): boolean => {\n if (!str || typeof str !== 'string') return false;\n try {\n JSON.parse(str);\n return true;\n } catch {\n return false;\n }\n};\n\nexport const formatRequestHeaders = (headers: Record<string, string>): string => {\n return JSON.stringify(headers, null, 2);\n};\n\nexport const parseRequestHeaders = (headersString: string): Record<string, string> => {\n if (!headersString || typeof headersString !== 'string') {\n return { 'Content-Type': 'application/json' };\n }\n\n try {\n const parsed = JSON.parse(headersString);\n return typeof parsed === 'object' && parsed !== null ? parsed : { 'Content-Type': 'application/json' };\n } catch {\n return { 'Content-Type': 'application/json' };\n }\n};\n\n// Substitute URL parameters like {id}, {userId}, etc.\nexport const substituteUrlParameters = (\n url: string,\n parameters: Record<string, string>\n): string => {\n let substitutedUrl = url;\n\n Object.entries(parameters).forEach(([key, value]) => {\n if (value && value.trim() !== '') {\n // Replace both {key} and %7Bkey%7D patterns (URL encoded version)\n const patterns = [\n new RegExp(`\\\\{${key}\\\\}`, 'g'),\n new RegExp(`%7B${key}%7D`, 'gi'),\n ];\n\n patterns.forEach((pattern) => {\n substitutedUrl = substitutedUrl.replace(pattern, encodeURIComponent(value));\n });\n }\n });\n\n return substitutedUrl;\n};\n","'use client';\n\nimport consola from 'consola';\nimport React, {\n createContext, ReactNode, useCallback, useContext, useEffect, useState\n} from 'react';\n\nimport type {\n ApiEndpoint, ApiResponse, PlaygroundConfig, PlaygroundContextType, PlaygroundState,\n PlaygroundStep\n} from '../types';\nimport { parseRequestHeaders, substituteUrlParameters } from '../utils';\nimport { getDefaultVersion } from '../utils/versionManager';\n\nconst createInitialState = (): PlaygroundState => ({\n // Step management\n currentStep: 'endpoints',\n steps: ['endpoints', 'request', 'response'],\n\n // Endpoint selection\n selectedEndpoint: null,\n selectedCategory: 'All',\n searchTerm: '',\n selectedVersion: getDefaultVersion().id,\n\n // Request configuration\n requestUrl: '',\n requestMethod: 'GET',\n requestHeaders: '{\\n \"Content-Type\": \"application/json\"\\n}',\n requestBody: '',\n selectedApiKey: null,\n manualApiToken: '',\n parameters: {},\n\n // Response\n response: null,\n loading: false,\n\n // UI state\n sidebarOpen: false,\n});\n\nconst PlaygroundContext = createContext<PlaygroundContextType | undefined>(undefined);\n\nexport const usePlaygroundContext = () => {\n const context = useContext(PlaygroundContext);\n if (!context) {\n throw new Error('usePlaygroundContext must be used within a PlaygroundProvider');\n }\n return context;\n};\n\ninterface PlaygroundProviderProps {\n children: ReactNode;\n config: PlaygroundConfig;\n}\n\nexport const PlaygroundProvider: React.FC<PlaygroundProviderProps> = ({ children, config }) => {\n const [state, setState] = useState<PlaygroundState>(() => createInitialState());\n\n // TODO: Get API keys from CFG context - temporarily disabled\n // const { apiKeys: apiKeysResponse, isLoadingApiKeys } = useApiKeysContext();\n // const apiKeys = (apiKeysResponse && apiKeysResponse.results) ? apiKeysResponse.results : [];\n const apiKeys = React.useMemo(() => [], []);\n const isLoadingApiKeys = false;\n\n const updateState = (updates: Partial<PlaygroundState>) => {\n setState((prev) => ({ ...prev, ...updates }));\n };\n\n // Auto-select first API key when available\n useEffect(() => {\n if (!isLoadingApiKeys && apiKeys.length > 0 && !state.selectedApiKey) {\n updateState({ selectedApiKey: apiKeys[0]?.id || null });\n }\n }, [apiKeys, isLoadingApiKeys, state.selectedApiKey]);\n\n // Update headers when API key changes\n useEffect(() => {\n try {\n setState(prev => {\n const headers = parseRequestHeaders(prev.requestHeaders);\n let hasChanged = false;\n\n if (prev.selectedApiKey) {\n const apiKey = apiKeys.find(k => k.id === prev.selectedApiKey);\n\n if (apiKey) {\n // Add API key to headers only if it changed\n if (headers['X-API-Key'] !== apiKey.id) {\n headers['X-API-Key'] = apiKey.id;\n hasChanged = true;\n }\n } else {\n // Selected API key no longer exists, clear selection\n return { ...prev, selectedApiKey: null };\n }\n } else {\n // Remove API key from headers if no key is selected\n if (headers['X-API-Key']) {\n delete headers['X-API-Key'];\n hasChanged = true;\n }\n }\n\n // Only update if headers actually changed\n if (hasChanged) {\n const updatedHeaders = JSON.stringify(headers, null, 2);\n return { ...prev, requestHeaders: updatedHeaders };\n }\n\n return prev;\n });\n } catch (error) {\n consola.error('Error updating headers:', error);\n }\n }, [state.selectedApiKey, apiKeys]); // Removed state.requestHeaders dependency\n\n // Update URL when parameters change\n useEffect(() => {\n if (state.selectedEndpoint && state.parameters) {\n // Path is already a full URL from the endpoint\n const updatedUrl = substituteUrlParameters(state.selectedEndpoint.path, state.parameters);\n\n // Only update if URL actually changed to avoid infinite loop\n if (updatedUrl !== state.requestUrl) {\n updateState({ requestUrl: updatedUrl });\n }\n }\n }, [state.parameters, state.selectedEndpoint, state.requestUrl]);\n\n // Step management\n const setCurrentStep = (step: PlaygroundStep) => {\n updateState({ currentStep: step });\n };\n\n const goToNextStep = () => {\n const currentIndex = state.steps.indexOf(state.currentStep);\n if (currentIndex < state.steps.length - 1) {\n updateState({ currentStep: state.steps[currentIndex + 1] });\n }\n };\n\n const goToPreviousStep = () => {\n const currentIndex = state.steps.indexOf(state.currentStep);\n if (currentIndex > 0) {\n updateState({ currentStep: state.steps[currentIndex - 1] });\n }\n };\n\n // Endpoint management\n const setSelectedEndpoint = (endpoint: ApiEndpoint | null) => {\n if (endpoint) {\n // All endpoints are GET only\n // Path is already a full URL from the endpoint\n updateState({\n selectedEndpoint: endpoint,\n requestMethod: 'GET',\n requestUrl: endpoint.path,\n parameters: {}, // Reset parameters when endpoint changes\n currentStep: 'request'\n });\n } else {\n updateState({ selectedEndpoint: endpoint });\n }\n };\n\n const setSelectedCategory = (category: string) => {\n updateState({ selectedCategory: category });\n };\n\n const setSearchTerm = (term: string) => {\n updateState({ searchTerm: term });\n };\n\n const setSelectedVersion = (version: string) => {\n updateState({ selectedVersion: version });\n };\n\n // Request management\n const setRequestUrl = (url: string) => {\n updateState({ requestUrl: url });\n };\n\n const setRequestMethod = (method: string) => {\n updateState({ requestMethod: method });\n };\n\n const setRequestHeaders = (headers: string) => {\n updateState({ requestHeaders: headers });\n };\n\n const setRequestBody = (body: string) => {\n updateState({ requestBody: body });\n };\n\n const setSelectedApiKey = (apiKeyId: string | null) => {\n updateState({ selectedApiKey: apiKeyId });\n };\n\n const setManualApiToken = (manualApiToken: string) => {\n updateState({ manualApiToken });\n };\n\n const setParameters = (parameters: Record<string, string>) => {\n updateState({ parameters });\n };\n\n // Response management\n const setResponse = (response: ApiResponse | null) => {\n updateState({ response });\n };\n\n const setLoading = (loading: boolean) => {\n updateState({ loading });\n };\n\n // UI management\n const setSidebarOpen = (sidebarOpen: boolean) => {\n updateState({ sidebarOpen });\n };\n\n // Actions\n const clearAll = useCallback(() => {\n setState(createInitialState());\n }, []);\n\n const sendRequest = useCallback(async () => {\n if (!state.requestUrl) {\n consola.error('No URL provided');\n return;\n }\n\n setLoading(true);\n setResponse(null);\n\n try {\n const headers = parseRequestHeaders(state.requestHeaders);\n\n // Bearer token priority: manual token → JWT token from localStorage\n let bearerToken: string | null = null;\n\n if (state.manualApiToken) {\n // Use manual token if provided\n bearerToken = state.manualApiToken;\n } else {\n // Try to get JWT token from localStorage\n if (typeof window !== 'undefined') {\n bearerToken = window.localStorage.getItem('auth_token');\n }\n }\n\n if (bearerToken) {\n headers['Authorization'] = `Bearer ${bearerToken}`;\n }\n\n const requestOptions: RequestInit = {\n method: state.requestMethod,\n headers,\n };\n\n if (state.requestBody && state.requestMethod !== 'GET') {\n requestOptions.body = state.requestBody;\n }\n\n const response = await fetch(state.requestUrl, requestOptions);\n const responseText = await response.text();\n\n let responseData;\n try {\n responseData = JSON.parse(responseText);\n } catch {\n responseData = responseText;\n }\n\n setResponse({\n status: response.status,\n statusText: response.statusText,\n headers: Object.fromEntries(response.headers.entries()),\n data: responseData,\n });\n\n consola.success(`Request successful: ${state.requestMethod} ${state.requestUrl}`);\n\n // Auto-advance to response step\n updateState({ currentStep: 'response' });\n } catch (error) {\n consola.error('Request failed:', error);\n setResponse({\n error: error instanceof Error ? error.message : 'Request failed',\n });\n } finally {\n setLoading(false);\n }\n }, [state, setLoading, setResponse]);\n\n const contextValue: PlaygroundContextType = {\n // State\n state,\n config,\n apiKeys,\n apiKeysLoading: isLoadingApiKeys,\n\n // Step management\n setCurrentStep,\n goToNextStep,\n goToPreviousStep,\n\n // Endpoint management\n setSelectedEndpoint,\n setSelectedCategory,\n setSearchTerm,\n setSelectedVersion,\n\n // Request management\n setRequestUrl,\n setRequestMethod,\n setRequestHeaders,\n setRequestBody,\n setSelectedApiKey,\n setManualApiToken,\n setParameters,\n\n // Response management\n setResponse,\n setLoading,\n\n // UI management\n setSidebarOpen,\n\n // Actions\n clearAll,\n sendRequest,\n };\n\n return <PlaygroundContext.Provider value={contextValue}>{children}</PlaygroundContext.Provider>;\n}; "]}
@@ -183,5 +183,5 @@ var JsonTreeComponent = /* @__PURE__ */ __name(({ title, data, config = {}, json
183
183
  var JsonTree_default = JsonTreeComponent;
184
184
 
185
185
  export { JsonTree_default };
186
- //# sourceMappingURL=chunk-W6YHQI4F.mjs.map
187
- //# sourceMappingURL=chunk-W6YHQI4F.mjs.map
186
+ //# sourceMappingURL=chunk-OYYCGIBF.mjs.map
187
+ //# sourceMappingURL=chunk-OYYCGIBF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools/JsonTree/index.tsx"],"names":[],"mappings":"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","file":"chunk-OYYCGIBF.mjs","sourcesContent":["'use client';\n\nimport { ChevronDown, ChevronUp, Download } from 'lucide-react';\nimport React, { useState } from 'react';\nimport { CommonExternalProps, JSONTree } from 'react-json-tree';\n\nimport { Button, CopyButton } from '@djangocfg/ui-core/components';\n\nexport type { Language } from 'prism-react-renderer';\n\nexport interface JsonTreeConfig {\n /** Maximum depth to expand automatically (default: 2) */\n maxAutoExpandDepth?: number;\n /** Maximum items in array to auto-expand (default: 10) */\n maxAutoExpandArrayItems?: number;\n /** Maximum object keys to auto-expand (default: 5) */\n maxAutoExpandObjectKeys?: number;\n /** Maximum string length before truncation (default: 200) */\n maxStringLength?: number;\n /** Collection limit for performance (default: 50) */\n collectionLimit?: number;\n /** Whether to show collection info (array length, object keys count) */\n showCollectionInfo?: boolean;\n /** Whether to show expand/collapse all buttons */\n showExpandControls?: boolean;\n /** Whether to show copy/download buttons */\n showActionButtons?: boolean;\n /** Custom CSS classes for the container */\n className?: string;\n /** Whether to preserve object key order (default: true) */\n preserveKeyOrder?: boolean;\n}\n\nexport interface JsonTreeComponentProps {\n title?: string;\n data: unknown;\n config?: JsonTreeConfig;\n /** Override for react-json-tree props */\n jsonTreeProps?: Partial<CommonExternalProps>;\n}\n\nconst JsonTreeComponent = ({ title, data, config = {}, jsonTreeProps = {} }: JsonTreeComponentProps) => {\n // State for expand/collapse all\n const [expandAll, setExpandAll] = useState<boolean | null>(null);\n const [renderKey, setRenderKey] = useState(0);\n \n // Default configuration\n const {\n maxAutoExpandDepth = 2,\n maxAutoExpandArrayItems = 10,\n maxAutoExpandObjectKeys = 5,\n maxStringLength = 200,\n collectionLimit = 50,\n showCollectionInfo = true,\n showExpandControls = true,\n showActionButtons = true,\n className = '',\n preserveKeyOrder = true,\n } = config;\n \n // JSON Tree theme optimized for dark theme\n const jsonTreeTheme = {\n scheme: 'djangocfg-dark',\n base00: 'transparent', // Background\n base01: '#1a1a1a', // Lighter background\n base02: '#2a2a2a', // Selection background\n base03: '#6b7280', // Comments, invisibles\n base04: '#9ca3af', // Dark foreground\n base05: '#e5e7eb', // Default foreground\n base06: '#f3f4f6', // Light foreground\n base07: '#ffffff', // Lightest foreground\n base08: '#ef4444', // Red - for null, undefined\n base09: '#f97316', // Orange - for numbers\n base0A: '#eab308', // Yellow - for strings\n base0B: '#22c55e', // Green - for booleans (true)\n base0C: '#06b6d4', // Cyan - for dates, regex\n base0D: '#3b82f6', // Blue - for keys\n base0E: '#a855f7', // Purple - for functions\n base0F: '#f43f5e', // Pink - for deprecations\n };\n\n // Smart expansion logic\n const shouldExpandNodeInitially = (keyPath: readonly (string | number)[], nodeData: unknown, level: number) => {\n // If user explicitly clicked \"Expand All\", expand everything\n if (expandAll === true) return true;\n\n // If user explicitly clicked \"Collapse All\", collapse everything\n if (expandAll === false) return false;\n\n // Default auto-expansion (expandAll === null)\n // Always expand up to maxAutoExpandDepth\n if (level <= maxAutoExpandDepth) return true;\n\n // For arrays, expand if they have less than maxAutoExpandArrayItems\n if (Array.isArray(nodeData) && nodeData.length <= maxAutoExpandArrayItems) return true;\n\n // For objects, expand if they have less than maxAutoExpandObjectKeys\n if (nodeData && typeof nodeData === 'object' && !Array.isArray(nodeData)) {\n const keys = Object.keys(nodeData);\n return keys.length <= maxAutoExpandObjectKeys;\n }\n\n return false;\n };\n\n // Collection info display\n const getItemString = showCollectionInfo \n ? (nodeType: string, nodeData: unknown) => {\n if (nodeType === 'Array') {\n const length = Array.isArray(nodeData) ? nodeData.length : 0;\n return length > 0 ? <span className=\"text-muted-foreground text-sm\">({length} items)</span> : null;\n }\n if (nodeType === 'Object') {\n const keys = nodeData && typeof nodeData === 'object' ? Object.keys(nodeData) : [];\n return keys.length > 0 ? <span className=\"text-muted-foreground text-sm\">({keys.length} keys)</span> : null;\n }\n return null;\n }\n : () => null;\n\n // Value processing for better display\n const postprocessValue = (value: unknown) => {\n // Truncate very long strings\n if (typeof value === 'string' && value.length > maxStringLength) {\n return value.substring(0, maxStringLength) + '... (truncated)';\n }\n return value;\n };\n\n // Custom node detection for special formatting\n const isCustomNode = (value: unknown) => {\n // Mark URLs as custom nodes for special styling\n if (typeof value === 'string' && (value.startsWith('http://') || value.startsWith('https://'))) {\n return true;\n }\n return false;\n };\n\n // JSON string for copy/download\n const jsonString = JSON.stringify(data, null, 2);\n\n // Action handlers\n const handleDownload = () => {\n const blob = new Blob([jsonString], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = 'data.json';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n };\n\n return (\n <div className={`relative border border-border rounded-sm h-full overflow-hidden ${className}`}>\n {/* Header with title and controls */}\n {(title || showExpandControls || showActionButtons) && (\n <div className=\"p-4 border-b border-border bg-muted/50 rounded-t-sm\">\n <div className=\"flex items-center justify-between\">\n {title && (\n <h6 className=\"text-lg font-semibold text-foreground\">{title}</h6>\n )}\n \n {(showExpandControls || showActionButtons) && (\n <div className=\"flex items-center space-x-2\">\n {/* Expand/Collapse Controls */}\n {showExpandControls && (\n <Button\n variant={expandAll === true ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => {\n const newState = expandAll === true ? false : true;\n setExpandAll(newState);\n setRenderKey(prev => prev + 1);\n }}\n className=\"h-8 px-2\"\n >\n {expandAll === true ? (\n <>\n <ChevronUp className=\"h-3 w-3\" />\n <span className=\"ml-1 text-xs\">Collapse All</span>\n </>\n ) : (\n <>\n <ChevronDown className=\"h-3 w-3\" />\n <span className=\"ml-1 text-xs\">Expand All</span>\n </>\n )}\n </Button>\n )}\n \n {/* Action Buttons */}\n {showActionButtons && (\n <>\n <CopyButton\n value={jsonString}\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 px-2\"\n iconClassName=\"h-3 w-3\"\n >\n Copy\n </CopyButton>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handleDownload}\n className=\"h-8 px-2\"\n >\n <Download className=\"h-3 w-3\" />\n <span className=\"ml-1 text-xs hidden sm:inline\">Download</span>\n </Button>\n </>\n )}\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* JSON Tree Content */}\n <div className=\"h-full overflow-auto p-4\">\n <JSONTree\n key={renderKey} // Force re-render when expand/collapse state changes\n data={data}\n theme={jsonTreeTheme}\n invertTheme={false}\n hideRoot={true}\n shouldExpandNodeInitially={shouldExpandNodeInitially}\n getItemString={getItemString}\n postprocessValue={postprocessValue}\n isCustomNode={isCustomNode}\n collectionLimit={collectionLimit}\n sortObjectKeys={!preserveKeyOrder}\n {...jsonTreeProps}\n />\n </div>\n </div>\n );\n};\n\nexport default JsonTreeComponent; "]}
@@ -389,5 +389,5 @@ var PlaygroundProvider = /* @__PURE__ */ __name(({ children, config }) => {
389
389
  }, "PlaygroundProvider");
390
390
 
391
391
  export { API_VERSIONS, PlaygroundProvider, PrettyCode_default, deduplicateEndpoints, findApiKeyById, getMethodColor, getStatusColor, getVersionById, getVersionStats, isValidJson, parseRequestHeaders, usePlaygroundContext };
392
- //# sourceMappingURL=chunk-G6PRZP5I.mjs.map
393
- //# sourceMappingURL=chunk-G6PRZP5I.mjs.map
392
+ //# sourceMappingURL=chunk-XZZ22EHP.mjs.map
393
+ //# sourceMappingURL=chunk-XZZ22EHP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools/PrettyCode/index.tsx","../src/tools/OpenapiViewer/utils/apiKeyManager.ts","../src/tools/OpenapiViewer/utils/versionManager.ts","../src/tools/OpenapiViewer/constants.ts","../src/tools/OpenapiViewer/utils/formatters.ts","../src/tools/OpenapiViewer/context/PlaygroundContext.tsx"],"names":["React","jsx"],"mappings":"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","file":"chunk-XZZ22EHP.mjs","sourcesContent":["/**\n * PrettyCode Component - Dynamic Import Wrapper\n *\n * Lazy loads the heavy Prism library (~500KB) only when needed.\n * This significantly reduces the initial bundle size.\n */\n\n'use client';\n\nimport React, { lazy, Suspense } from 'react';\nimport type { Language } from 'prism-react-renderer';\n\n// Lazy load the client component\nconst PrettyCodeClient = lazy(() => import('./PrettyCode.client'));\n\n// Loading fallback component\nconst LoadingFallback = () => (\n <div className=\"relative rounded-sm border border-border overflow-hidden bg-muted dark:bg-zinc-900\">\n <div className=\"p-4\">\n <div className=\"flex items-center gap-2\">\n <div className=\"animate-pulse h-4 w-4 rounded-full bg-muted-foreground/20\"></div>\n <span className=\"text-xs text-muted-foreground\">Loading code...</span>\n </div>\n </div>\n </div>\n);\n\nexport interface PrettyCodeProps {\n data: string | object;\n language: Language;\n className?: string;\n mode?: 'dark' | 'light';\n inline?: boolean;\n customBg?: string;\n isCompact?: boolean;\n}\n\nconst PrettyCode: React.FC<PrettyCodeProps> = (props) => {\n return (\n <Suspense fallback={<LoadingFallback />}>\n <PrettyCodeClient {...props} />\n </Suspense>\n );\n};\n\nexport default PrettyCode;\nexport type { Language };\n","/**\n * API Key Management Utility\n *\n * Provides centralized functions for managing API keys in headers and requests.\n * This utility can be used across different components that need to handle API keys.\n */\n\nimport type { ApiKey } from '../types';\n\nexport type { ApiKey };\n\nexport interface HeadersWithApiKey {\n [key: string]: string;\n}\n\n/**\n * Add API key to request headers\n * @param headers - Existing headers object\n * @param apiKey - API key object or string\n * @returns Headers with API key added\n */\nexport function addApiKeyToHeaders(headers: HeadersWithApiKey, apiKey: ApiKey | string | null): HeadersWithApiKey {\n if (!apiKey) {\n return headers;\n }\n\n const keyValue = typeof apiKey === 'string' ? apiKey : (apiKey.id || '');\n\n return {\n ...headers,\n 'X-API-Key': keyValue,\n };\n}\n\n/**\n * Remove API key from headers object\n * @param headers - Headers object\n * @returns Headers without API key\n */\nexport function removeApiKeyFromHeaders(headers: HeadersWithApiKey): HeadersWithApiKey {\n const { 'X-API-Key': removed, ...remainingHeaders } = headers;\n return remainingHeaders;\n}\n\n/**\n * Remove API key from headers JSON string\n * @param headersJson - JSON string of headers\n * @returns JSON string without API key\n */\nexport function removeApiKeyFromHeadersJson(headersJson: string): string {\n try {\n const headers = JSON.parse(headersJson);\n const updatedHeaders = removeApiKeyFromHeaders(headers);\n return JSON.stringify(updatedHeaders, null, 2);\n } catch (error) {\n console.error('Error parsing headers JSON:', error);\n return headersJson;\n }\n}\n\n/**\n * Update headers JSON string with API key\n * @param headersJson - JSON string of headers\n * @param apiKey - API key object or string\n * @returns Updated JSON string\n */\nexport function updateHeadersJsonWithApiKey(headersJson: string, apiKey: ApiKey | string | null): string {\n try {\n const headers = JSON.parse(headersJson);\n const updatedHeaders = addApiKeyToHeaders(headers, apiKey);\n return JSON.stringify(updatedHeaders, null, 2);\n } catch (error) {\n console.error('Error parsing headers JSON:', error);\n return headersJson;\n }\n}\n\n/**\n * Find API key by ID in a list of API keys\n * @param apiKeys - Array of API keys\n * @param keyId - ID of the API key to find\n * @returns API key object or null\n */\nexport function findApiKeyById(apiKeys: ApiKey[], keyId: string): ApiKey | null {\n return apiKeys.find((key) => key.id === keyId) || null;\n}\n\n/**\n * Validate API key format\n * @param apiKey - API key string to validate\n * @returns Whether the API key format is valid\n */\nexport function validateApiKeyFormat(apiKey: string): boolean {\n // Basic validation - adjust based on your API key format requirements\n return typeof apiKey === 'string' && apiKey.length > 0 && apiKey.trim() !== '';\n}\n\n/**\n * Create default headers with API key\n * @param apiKey - API key object or string\n * @returns Default headers with API key\n */\nexport function createDefaultHeaders(apiKey?: ApiKey | string): HeadersWithApiKey {\n const defaultHeaders: HeadersWithApiKey = {\n 'Content-Type': 'application/json',\n };\n\n if (apiKey) {\n return addApiKeyToHeaders(defaultHeaders, apiKey);\n }\n\n return defaultHeaders;\n}\n\n/**\n * Merge headers with API key\n * @param baseHeaders - Base headers object\n * @param additionalHeaders - Additional headers to merge\n * @param apiKey - API key to add\n * @returns Merged headers with API key\n */\nexport function mergeHeadersWithApiKey(baseHeaders: HeadersWithApiKey, additionalHeaders: HeadersWithApiKey, apiKey?: ApiKey | string): HeadersWithApiKey {\n const mergedHeaders = { ...baseHeaders, ...additionalHeaders };\n\n if (apiKey) {\n return addApiKeyToHeaders(mergedHeaders, apiKey);\n }\n\n return mergedHeaders;\n}\n\n/**\n * Log API key usage (for debugging/analytics)\n * @param apiKey - API key that was used\n * @param endpoint - Endpoint that was called\n * @param success - Whether the request was successful\n */\nexport function logApiKeyUsage(apiKey: ApiKey | string, endpoint: string, success: boolean): void {\n const keyValue = typeof apiKey === 'string' ? apiKey : (apiKey.id || '');\n const keyName = typeof apiKey === 'string' ? 'Unknown' : apiKey.name;\n\n console.log(`API Key Usage:`, {\n keyName,\n keyValue: keyValue.substring(0, 8) + '...',\n endpoint,\n success,\n timestamp: new Date().toISOString(),\n });\n}\n","/**\n * API Version Management Utilities\n * Handles version detection, filtering, and URL transformation\n */\n\nimport type { ApiEndpoint } from '../types';\n\nexport interface ApiVersion {\n id: string;\n name: string;\n description: string;\n isDefault: boolean;\n}\n\n// Available API versions\nexport const API_VERSIONS: ApiVersion[] = [\n {\n id: 'v1',\n name: 'v1',\n description: 'Current stable version',\n isDefault: true,\n },\n];\n\n/**\n * Detect version from endpoint path\n */\nexport const detectEndpointVersion = (path: string): string => {\n // Check for versioned paths like /api/vehicles_api/v1/...\n const versionMatch = path.match(/\\/api\\/[^/]+\\/(v\\d+)\\//);\n if (versionMatch && versionMatch[1]) {\n return versionMatch[1];\n }\n \n // If no version found, default to v1\n return 'v1';\n};\n\n/**\n * Check if endpoint belongs to specific version\n */\nexport const isEndpointInVersion = (endpoint: ApiEndpoint, version: string): boolean => {\n const endpointVersion = detectEndpointVersion(endpoint.path);\n return endpointVersion === version;\n};\n\n/**\n * Filter endpoints by version\n */\nexport const filterEndpointsByVersion = (endpoints: ApiEndpoint[], version: string): ApiEndpoint[] => {\n return endpoints.filter(endpoint => isEndpointInVersion(endpoint, version));\n};\n\n/**\n * Remove duplicate endpoints across versions\n * Keeps only the specified version, removes duplicates from other versions\n */\nexport const deduplicateEndpoints = (endpoints: ApiEndpoint[], preferredVersion: string): ApiEndpoint[] => {\n const endpointMap = new Map<string, ApiEndpoint>();\n \n // Group endpoints by normalized path (without version)\n const groupedEndpoints = new Map<string, ApiEndpoint[]>();\n \n endpoints.forEach(endpoint => {\n const normalizedPath = normalizeEndpointPath(endpoint.path);\n if (!groupedEndpoints.has(normalizedPath)) {\n groupedEndpoints.set(normalizedPath, []);\n }\n groupedEndpoints.get(normalizedPath)!.push(endpoint);\n });\n \n // For each group, pick the endpoint from preferred version\n groupedEndpoints.forEach((endpointGroup, normalizedPath) => {\n let selectedEndpoint: ApiEndpoint | null = null;\n \n // Try to find endpoint in preferred version\n const versionEndpoint = endpointGroup.find(ep => isEndpointInVersion(ep, preferredVersion));\n if (versionEndpoint) {\n selectedEndpoint = versionEndpoint;\n } else if (endpointGroup.length > 0) {\n // Fallback to first available endpoint\n selectedEndpoint = endpointGroup[0] || null;\n }\n \n if (selectedEndpoint) {\n endpointMap.set(normalizedPath, selectedEndpoint);\n }\n });\n \n return Array.from(endpointMap.values());\n};\n\n/**\n * Normalize endpoint path by removing version prefix\n * /api/vehicles_api/v1/vehicles/ -> /api/vehicles_api/vehicles/\n * /api/vehicles_api/vehicles/ -> /api/vehicles_api/vehicles/\n */\nexport const normalizeEndpointPath = (path: string): string => {\n // Remove version prefix like /v1/, /v2/, etc.\n return path.replace(/\\/v\\d+\\//, '/');\n};\n\n/**\n * Convert endpoint path to specific version\n */\nexport const convertEndpointToVersion = (endpoint: ApiEndpoint, targetVersion: string): ApiEndpoint => {\n const currentVersion = detectEndpointVersion(endpoint.path);\n \n // If already in target version, return as is\n if (currentVersion === targetVersion) {\n return endpoint;\n }\n \n let newPath = endpoint.path;\n \n // Replace version: /api/vehicles_api/v1/vehicles/ -> /api/vehicles_api/v2/vehicles/\n newPath = newPath.replace(/\\/v\\d+\\//, `/${targetVersion}/`);\n \n return {\n ...endpoint,\n path: newPath,\n };\n};\n\n/**\n * Get version info by ID\n */\nexport const getVersionById = (versionId: string): ApiVersion | undefined => {\n return API_VERSIONS.find(v => v.id === versionId);\n};\n\n/**\n * Get default version\n */\nexport const getDefaultVersion = (): ApiVersion => {\n const defaultVersion = API_VERSIONS.find(v => v.isDefault);\n if (defaultVersion) {\n return defaultVersion;\n }\n \n // Fallback to first version if no default is set\n if (API_VERSIONS.length > 0 && API_VERSIONS[0]) {\n return API_VERSIONS[0];\n }\n \n // This should never happen, but TypeScript requires it\n throw new Error('No API versions defined');\n};\n\n/**\n * Get version statistics from endpoints\n */\nexport const getVersionStats = (endpoints: ApiEndpoint[]): Record<string, number> => {\n const stats: Record<string, number> = {};\n \n API_VERSIONS.forEach(version => {\n stats[version.id] = filterEndpointsByVersion(endpoints, version.id).length;\n });\n \n return stats;\n};\n","// HTTP method colors mapping\nexport const HTTP_METHOD_COLORS = {\n GET: 'success',\n POST: 'primary',\n PUT: 'warning',\n DELETE: 'error',\n PATCH: 'default',\n} as const;\n\n// HTTP status code colors mapping\nexport const HTTP_STATUS_COLORS = {\n '2': 'success',\n '3': 'default',\n '4': 'warning',\n '5': 'error',\n} as const;\n\n// Default request headers\nexport const DEFAULT_HEADERS = {\n 'Content-Type': 'application/json',\n} as const;\n\n// Playground steps configuration\nexport const PLAYGROUND_STEPS = ['endpoints', 'request', 'response'] as const;\n\nexport const STEP_CONFIG = {\n endpoints: {\n title: 'API Endpoints',\n description: 'Browse and select API endpoints',\n },\n request: {\n title: 'Request Builder',\n description: 'Configure your API request',\n },\n response: {\n title: 'Response Viewer',\n description: 'View API response and details',\n },\n} as const;\n","import type { ApiKey } from '../types';\nimport { HTTP_METHOD_COLORS, HTTP_STATUS_COLORS } from '../constants';\n\nexport const getMethodColor = (\n method: string\n): 'success' | 'primary' | 'warning' | 'error' | 'default' => {\n return HTTP_METHOD_COLORS[method.toUpperCase() as keyof typeof HTTP_METHOD_COLORS] || 'default';\n};\n\nexport const getStatusColor = (\n status: number\n): 'success' | 'warning' | 'error' | 'default' => {\n const firstDigit = Math.floor(status / 100).toString();\n return HTTP_STATUS_COLORS[firstDigit as keyof typeof HTTP_STATUS_COLORS] || 'default';\n};\n\nexport const formatApiKeyDisplay = (apiKey: ApiKey): string => {\n const preview = apiKey.id.substring(0, 8);\n return `${apiKey.name} (${preview}...)`;\n};\n\nexport const isValidJson = (str: string): boolean => {\n if (!str || typeof str !== 'string') return false;\n try {\n JSON.parse(str);\n return true;\n } catch {\n return false;\n }\n};\n\nexport const formatRequestHeaders = (headers: Record<string, string>): string => {\n return JSON.stringify(headers, null, 2);\n};\n\nexport const parseRequestHeaders = (headersString: string): Record<string, string> => {\n if (!headersString || typeof headersString !== 'string') {\n return { 'Content-Type': 'application/json' };\n }\n\n try {\n const parsed = JSON.parse(headersString);\n return typeof parsed === 'object' && parsed !== null ? parsed : { 'Content-Type': 'application/json' };\n } catch {\n return { 'Content-Type': 'application/json' };\n }\n};\n\n// Substitute URL parameters like {id}, {userId}, etc.\nexport const substituteUrlParameters = (\n url: string,\n parameters: Record<string, string>\n): string => {\n let substitutedUrl = url;\n\n Object.entries(parameters).forEach(([key, value]) => {\n if (value && value.trim() !== '') {\n // Replace both {key} and %7Bkey%7D patterns (URL encoded version)\n const patterns = [\n new RegExp(`\\\\{${key}\\\\}`, 'g'),\n new RegExp(`%7B${key}%7D`, 'gi'),\n ];\n\n patterns.forEach((pattern) => {\n substitutedUrl = substitutedUrl.replace(pattern, encodeURIComponent(value));\n });\n }\n });\n\n return substitutedUrl;\n};\n","'use client';\n\nimport consola from 'consola';\nimport React, {\n createContext, ReactNode, useCallback, useContext, useEffect, useState\n} from 'react';\n\nimport type {\n ApiEndpoint, ApiResponse, PlaygroundConfig, PlaygroundContextType, PlaygroundState,\n PlaygroundStep\n} from '../types';\nimport { parseRequestHeaders, substituteUrlParameters } from '../utils';\nimport { getDefaultVersion } from '../utils/versionManager';\n\nconst createInitialState = (): PlaygroundState => ({\n // Step management\n currentStep: 'endpoints',\n steps: ['endpoints', 'request', 'response'],\n\n // Endpoint selection\n selectedEndpoint: null,\n selectedCategory: 'All',\n searchTerm: '',\n selectedVersion: getDefaultVersion().id,\n\n // Request configuration\n requestUrl: '',\n requestMethod: 'GET',\n requestHeaders: '{\\n \"Content-Type\": \"application/json\"\\n}',\n requestBody: '',\n selectedApiKey: null,\n manualApiToken: '',\n parameters: {},\n\n // Response\n response: null,\n loading: false,\n\n // UI state\n sidebarOpen: false,\n});\n\nconst PlaygroundContext = createContext<PlaygroundContextType | undefined>(undefined);\n\nexport const usePlaygroundContext = () => {\n const context = useContext(PlaygroundContext);\n if (!context) {\n throw new Error('usePlaygroundContext must be used within a PlaygroundProvider');\n }\n return context;\n};\n\ninterface PlaygroundProviderProps {\n children: ReactNode;\n config: PlaygroundConfig;\n}\n\nexport const PlaygroundProvider: React.FC<PlaygroundProviderProps> = ({ children, config }) => {\n const [state, setState] = useState<PlaygroundState>(() => createInitialState());\n\n // TODO: Get API keys from CFG context - temporarily disabled\n // const { apiKeys: apiKeysResponse, isLoadingApiKeys } = useApiKeysContext();\n // const apiKeys = (apiKeysResponse && apiKeysResponse.results) ? apiKeysResponse.results : [];\n const apiKeys = React.useMemo(() => [], []);\n const isLoadingApiKeys = false;\n\n const updateState = (updates: Partial<PlaygroundState>) => {\n setState((prev) => ({ ...prev, ...updates }));\n };\n\n // Auto-select first API key when available\n useEffect(() => {\n if (!isLoadingApiKeys && apiKeys.length > 0 && !state.selectedApiKey) {\n updateState({ selectedApiKey: apiKeys[0]?.id || null });\n }\n }, [apiKeys, isLoadingApiKeys, state.selectedApiKey]);\n\n // Update headers when API key changes\n useEffect(() => {\n try {\n setState(prev => {\n const headers = parseRequestHeaders(prev.requestHeaders);\n let hasChanged = false;\n\n if (prev.selectedApiKey) {\n const apiKey = apiKeys.find(k => k.id === prev.selectedApiKey);\n\n if (apiKey) {\n // Add API key to headers only if it changed\n if (headers['X-API-Key'] !== apiKey.id) {\n headers['X-API-Key'] = apiKey.id;\n hasChanged = true;\n }\n } else {\n // Selected API key no longer exists, clear selection\n return { ...prev, selectedApiKey: null };\n }\n } else {\n // Remove API key from headers if no key is selected\n if (headers['X-API-Key']) {\n delete headers['X-API-Key'];\n hasChanged = true;\n }\n }\n\n // Only update if headers actually changed\n if (hasChanged) {\n const updatedHeaders = JSON.stringify(headers, null, 2);\n return { ...prev, requestHeaders: updatedHeaders };\n }\n\n return prev;\n });\n } catch (error) {\n consola.error('Error updating headers:', error);\n }\n }, [state.selectedApiKey, apiKeys]); // Removed state.requestHeaders dependency\n\n // Update URL when parameters change\n useEffect(() => {\n if (state.selectedEndpoint && state.parameters) {\n // Path is already a full URL from the endpoint\n const updatedUrl = substituteUrlParameters(state.selectedEndpoint.path, state.parameters);\n\n // Only update if URL actually changed to avoid infinite loop\n if (updatedUrl !== state.requestUrl) {\n updateState({ requestUrl: updatedUrl });\n }\n }\n }, [state.parameters, state.selectedEndpoint, state.requestUrl]);\n\n // Step management\n const setCurrentStep = (step: PlaygroundStep) => {\n updateState({ currentStep: step });\n };\n\n const goToNextStep = () => {\n const currentIndex = state.steps.indexOf(state.currentStep);\n if (currentIndex < state.steps.length - 1) {\n updateState({ currentStep: state.steps[currentIndex + 1] });\n }\n };\n\n const goToPreviousStep = () => {\n const currentIndex = state.steps.indexOf(state.currentStep);\n if (currentIndex > 0) {\n updateState({ currentStep: state.steps[currentIndex - 1] });\n }\n };\n\n // Endpoint management\n const setSelectedEndpoint = (endpoint: ApiEndpoint | null) => {\n if (endpoint) {\n // All endpoints are GET only\n // Path is already a full URL from the endpoint\n updateState({\n selectedEndpoint: endpoint,\n requestMethod: 'GET',\n requestUrl: endpoint.path,\n parameters: {}, // Reset parameters when endpoint changes\n currentStep: 'request'\n });\n } else {\n updateState({ selectedEndpoint: endpoint });\n }\n };\n\n const setSelectedCategory = (category: string) => {\n updateState({ selectedCategory: category });\n };\n\n const setSearchTerm = (term: string) => {\n updateState({ searchTerm: term });\n };\n\n const setSelectedVersion = (version: string) => {\n updateState({ selectedVersion: version });\n };\n\n // Request management\n const setRequestUrl = (url: string) => {\n updateState({ requestUrl: url });\n };\n\n const setRequestMethod = (method: string) => {\n updateState({ requestMethod: method });\n };\n\n const setRequestHeaders = (headers: string) => {\n updateState({ requestHeaders: headers });\n };\n\n const setRequestBody = (body: string) => {\n updateState({ requestBody: body });\n };\n\n const setSelectedApiKey = (apiKeyId: string | null) => {\n updateState({ selectedApiKey: apiKeyId });\n };\n\n const setManualApiToken = (manualApiToken: string) => {\n updateState({ manualApiToken });\n };\n\n const setParameters = (parameters: Record<string, string>) => {\n updateState({ parameters });\n };\n\n // Response management\n const setResponse = (response: ApiResponse | null) => {\n updateState({ response });\n };\n\n const setLoading = (loading: boolean) => {\n updateState({ loading });\n };\n\n // UI management\n const setSidebarOpen = (sidebarOpen: boolean) => {\n updateState({ sidebarOpen });\n };\n\n // Actions\n const clearAll = useCallback(() => {\n setState(createInitialState());\n }, []);\n\n const sendRequest = useCallback(async () => {\n if (!state.requestUrl) {\n consola.error('No URL provided');\n return;\n }\n\n setLoading(true);\n setResponse(null);\n\n try {\n const headers = parseRequestHeaders(state.requestHeaders);\n\n // Bearer token priority: manual token → JWT token from localStorage\n let bearerToken: string | null = null;\n\n if (state.manualApiToken) {\n // Use manual token if provided\n bearerToken = state.manualApiToken;\n } else {\n // Try to get JWT token from localStorage\n if (typeof window !== 'undefined') {\n bearerToken = window.localStorage.getItem('auth_token');\n }\n }\n\n if (bearerToken) {\n headers['Authorization'] = `Bearer ${bearerToken}`;\n }\n\n const requestOptions: RequestInit = {\n method: state.requestMethod,\n headers,\n };\n\n if (state.requestBody && state.requestMethod !== 'GET') {\n requestOptions.body = state.requestBody;\n }\n\n const response = await fetch(state.requestUrl, requestOptions);\n const responseText = await response.text();\n\n let responseData;\n try {\n responseData = JSON.parse(responseText);\n } catch {\n responseData = responseText;\n }\n\n setResponse({\n status: response.status,\n statusText: response.statusText,\n headers: Object.fromEntries(response.headers.entries()),\n data: responseData,\n });\n\n consola.success(`Request successful: ${state.requestMethod} ${state.requestUrl}`);\n\n // Auto-advance to response step\n updateState({ currentStep: 'response' });\n } catch (error) {\n consola.error('Request failed:', error);\n setResponse({\n error: error instanceof Error ? error.message : 'Request failed',\n });\n } finally {\n setLoading(false);\n }\n }, [state, setLoading, setResponse]);\n\n const contextValue: PlaygroundContextType = {\n // State\n state,\n config,\n apiKeys,\n apiKeysLoading: isLoadingApiKeys,\n\n // Step management\n setCurrentStep,\n goToNextStep,\n goToPreviousStep,\n\n // Endpoint management\n setSelectedEndpoint,\n setSelectedCategory,\n setSearchTerm,\n setSelectedVersion,\n\n // Request management\n setRequestUrl,\n setRequestMethod,\n setRequestHeaders,\n setRequestBody,\n setSelectedApiKey,\n setManualApiToken,\n setParameters,\n\n // Response management\n setResponse,\n setLoading,\n\n // UI management\n setSidebarOpen,\n\n // Actions\n clearAll,\n sendRequest,\n };\n\n return <PlaygroundContext.Provider value={contextValue}>{children}</PlaygroundContext.Provider>;\n}; "]}
@@ -1,6 +1,6 @@
1
- export { VideoControls, VideoErrorFallback, VideoPlayer, createVideoErrorFallback } from './chunk-UOMPPIED.mjs';
1
+ export { VideoControls, VideoErrorFallback, VideoPlayer, createVideoErrorFallback } from './chunk-4G4UGMOP.mjs';
2
2
  import './chunk-JWB2EWQO.mjs';
3
3
  import './chunk-LTJX2JXE.mjs';
4
4
  import './chunk-CGILA3WO.mjs';
5
- //# sourceMappingURL=components-EASJYK45.mjs.map
6
- //# sourceMappingURL=components-EASJYK45.mjs.map
5
+ //# sourceMappingURL=components-4YSJ5ALL.mjs.map
6
+ //# sourceMappingURL=components-4YSJ5ALL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"components-CJ2IB65O.cjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-4YSJ5ALL.mjs"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk47T5ECYV_cjs = require('./chunk-47T5ECYV.cjs');
3
+ var chunkCY3CQS26_cjs = require('./chunk-CY3CQS26.cjs');
4
4
  require('./chunk-F2N7P5XU.cjs');
5
5
  require('./chunk-XTBRWVIV.cjs');
6
6
  require('./chunk-WGEGR3DF.cjs');
@@ -9,19 +9,19 @@ require('./chunk-WGEGR3DF.cjs');
9
9
 
10
10
  Object.defineProperty(exports, "VideoControls", {
11
11
  enumerable: true,
12
- get: function () { return chunk47T5ECYV_cjs.VideoControls; }
12
+ get: function () { return chunkCY3CQS26_cjs.VideoControls; }
13
13
  });
14
14
  Object.defineProperty(exports, "VideoErrorFallback", {
15
15
  enumerable: true,
16
- get: function () { return chunk47T5ECYV_cjs.VideoErrorFallback; }
16
+ get: function () { return chunkCY3CQS26_cjs.VideoErrorFallback; }
17
17
  });
18
18
  Object.defineProperty(exports, "VideoPlayer", {
19
19
  enumerable: true,
20
- get: function () { return chunk47T5ECYV_cjs.VideoPlayer; }
20
+ get: function () { return chunkCY3CQS26_cjs.VideoPlayer; }
21
21
  });
22
22
  Object.defineProperty(exports, "createVideoErrorFallback", {
23
23
  enumerable: true,
24
- get: function () { return chunk47T5ECYV_cjs.createVideoErrorFallback; }
24
+ get: function () { return chunkCY3CQS26_cjs.createVideoErrorFallback; }
25
25
  });
26
- //# sourceMappingURL=components-CJ2IB65O.cjs.map
27
- //# sourceMappingURL=components-CJ2IB65O.cjs.map
26
+ //# sourceMappingURL=components-BSTP3VLD.cjs.map
27
+ //# sourceMappingURL=components-BSTP3VLD.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"components-EASJYK45.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-BSTP3VLD.cjs"}
package/dist/index.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkEVGWYASL_cjs = require('./chunk-EVGWYASL.cjs');
4
- var chunk47T5ECYV_cjs = require('./chunk-47T5ECYV.cjs');
4
+ var chunkCY3CQS26_cjs = require('./chunk-CY3CQS26.cjs');
5
5
  require('./chunk-F2N7P5XU.cjs');
6
6
  var chunkTEFRA7GW_cjs = require('./chunk-TEFRA7GW.cjs');
7
7
  var chunkXTBRWVIV_cjs = require('./chunk-XTBRWVIV.cjs');
8
- var chunkDI3HUXHK_cjs = require('./chunk-DI3HUXHK.cjs');
9
- var chunk5QT3QYFZ_cjs = require('./chunk-5QT3QYFZ.cjs');
8
+ var chunkOYLQZT62_cjs = require('./chunk-OYLQZT62.cjs');
9
+ var chunkEGYUND4E_cjs = require('./chunk-EGYUND4E.cjs');
10
10
  var chunkPNZSJN6T_cjs = require('./chunk-PNZSJN6T.cjs');
11
11
  var chunkPRPG2T2E_cjs = require('./chunk-PRPG2T2E.cjs');
12
12
  var chunkWGEGR3DF_cjs = require('./chunk-WGEGR3DF.cjs');
@@ -206,7 +206,7 @@ function createLazyComponent(loader, options = {}) {
206
206
  return WrappedComponent;
207
207
  }
208
208
  chunkWGEGR3DF_cjs.__name(createLazyComponent, "createLazyComponent");
209
- var MermaidClient = React3.lazy(() => import('./Mermaid.client-PNXEC6YL.cjs'));
209
+ var MermaidClient = React3.lazy(() => import('./Mermaid.client-AF4WOQZR.cjs'));
210
210
  var LoadingFallback2 = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative bg-card rounded-sm border border-border overflow-hidden", children: [
211
211
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 border-b border-border bg-muted/50", children: [
212
212
  /* @__PURE__ */ jsxRuntime.jsx("h6", { className: "text-sm font-semibold text-foreground", children: "Diagram" }),
@@ -366,7 +366,7 @@ var CodeBlock = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(({ code, language, isUs
366
366
  }
367
367
  ),
368
368
  /* @__PURE__ */ jsxRuntime.jsx(
369
- chunkDI3HUXHK_cjs.PrettyCode_default,
369
+ chunkOYLQZT62_cjs.PrettyCode_default,
370
370
  {
371
371
  data: code,
372
372
  language,
@@ -694,7 +694,7 @@ var LazyMapView = createLazyComponent(
694
694
  }
695
695
  );
696
696
  var LazyMermaid = createLazyComponent(
697
- () => import('./Mermaid.client-PNXEC6YL.cjs'),
697
+ () => import('./Mermaid.client-AF4WOQZR.cjs'),
698
698
  {
699
699
  displayName: "LazyMermaid",
700
700
  fallback: /* @__PURE__ */ jsxRuntime.jsx(
@@ -729,14 +729,14 @@ function OpenapiLoadingFallback() {
729
729
  }
730
730
  chunkWGEGR3DF_cjs.__name(OpenapiLoadingFallback, "OpenapiLoadingFallback");
731
731
  var LazyPlaygroundLayout = createLazyComponent(
732
- () => import('./PlaygroundLayout-SYMEAG3J.cjs').then((mod) => ({ default: mod.PlaygroundLayout })),
732
+ () => import('./PlaygroundLayout-RZMJWH3Y.cjs').then((mod) => ({ default: mod.PlaygroundLayout })),
733
733
  {
734
734
  displayName: "LazyPlaygroundLayout",
735
735
  fallback: /* @__PURE__ */ jsxRuntime.jsx(OpenapiLoadingFallback, {})
736
736
  }
737
737
  );
738
738
  var LazyOpenapiViewer = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(({ config }) => {
739
- return /* @__PURE__ */ jsxRuntime.jsx(chunkDI3HUXHK_cjs.PlaygroundProvider, { config, children: /* @__PURE__ */ jsxRuntime.jsx(LazyPlaygroundLayout, {}) });
739
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkOYLQZT62_cjs.PlaygroundProvider, { config, children: /* @__PURE__ */ jsxRuntime.jsx(LazyPlaygroundLayout, {}) });
740
740
  }, "LazyOpenapiViewer");
741
741
  LazyOpenapiViewer.displayName = "LazyOpenapiViewer";
742
742
  var LazyJsonSchemaForm = createLazyComponent(
@@ -827,14 +827,14 @@ function VideoLoadingFallback() {
827
827
  }
828
828
  chunkWGEGR3DF_cjs.__name(VideoLoadingFallback, "VideoLoadingFallback");
829
829
  var LazyVideoPlayer = createLazyComponent(
830
- () => import('./components-CJ2IB65O.cjs').then((mod) => ({ default: mod.VideoPlayer })),
830
+ () => import('./components-BSTP3VLD.cjs').then((mod) => ({ default: mod.VideoPlayer })),
831
831
  {
832
832
  displayName: "LazyVideoPlayer",
833
833
  fallback: /* @__PURE__ */ jsxRuntime.jsx(VideoLoadingFallback, {})
834
834
  }
835
835
  );
836
836
  var LazyJsonTree = createLazyComponent(
837
- () => import('./JsonTree-7OH6CIHT.cjs'),
837
+ () => import('./JsonTree-TWXUBBIG.cjs'),
838
838
  {
839
839
  displayName: "LazyJsonTree",
840
840
  fallback: /* @__PURE__ */ jsxRuntime.jsx(LoadingFallback, { minHeight: 100, text: "Loading JSON viewer..." })
@@ -859,11 +859,11 @@ function LottiePlayer(props) {
859
859
  }
860
860
  chunkWGEGR3DF_cjs.__name(LottiePlayer, "LottiePlayer");
861
861
  var PlaygroundLayout = React3.lazy(
862
- () => import('./PlaygroundLayout-SYMEAG3J.cjs').then((mod) => ({ default: mod.PlaygroundLayout }))
862
+ () => import('./PlaygroundLayout-RZMJWH3Y.cjs').then((mod) => ({ default: mod.PlaygroundLayout }))
863
863
  );
864
864
  var LoadingFallback9 = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(() => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center min-h-[400px]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: "Loading API Playground..." }) }), "LoadingFallback");
865
865
  var Playground = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(({ config }) => {
866
- return /* @__PURE__ */ jsxRuntime.jsx(chunkDI3HUXHK_cjs.PlaygroundProvider, { config, children: /* @__PURE__ */ jsxRuntime.jsx(React3.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(LoadingFallback9, {}), children: /* @__PURE__ */ jsxRuntime.jsx(PlaygroundLayout, {}) }) });
866
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkOYLQZT62_cjs.PlaygroundProvider, { config, children: /* @__PURE__ */ jsxRuntime.jsx(React3.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(LoadingFallback9, {}), children: /* @__PURE__ */ jsxRuntime.jsx(PlaygroundLayout, {}) }) });
867
867
  }, "Playground");
868
868
  var OpenapiViewer_default = Playground;
869
869
 
@@ -1001,55 +1001,55 @@ Object.defineProperty(exports, "useVisualization", {
1001
1001
  });
1002
1002
  Object.defineProperty(exports, "NativeProvider", {
1003
1003
  enumerable: true,
1004
- get: function () { return chunk47T5ECYV_cjs.NativeProvider; }
1004
+ get: function () { return chunkCY3CQS26_cjs.NativeProvider; }
1005
1005
  });
1006
1006
  Object.defineProperty(exports, "StreamProvider", {
1007
1007
  enumerable: true,
1008
- get: function () { return chunk47T5ECYV_cjs.StreamProvider; }
1008
+ get: function () { return chunkCY3CQS26_cjs.StreamProvider; }
1009
1009
  });
1010
1010
  Object.defineProperty(exports, "VideoControls", {
1011
1011
  enumerable: true,
1012
- get: function () { return chunk47T5ECYV_cjs.VideoControls; }
1012
+ get: function () { return chunkCY3CQS26_cjs.VideoControls; }
1013
1013
  });
1014
1014
  Object.defineProperty(exports, "VideoErrorFallback", {
1015
1015
  enumerable: true,
1016
- get: function () { return chunk47T5ECYV_cjs.VideoErrorFallback; }
1016
+ get: function () { return chunkCY3CQS26_cjs.VideoErrorFallback; }
1017
1017
  });
1018
1018
  Object.defineProperty(exports, "VideoPlayer", {
1019
1019
  enumerable: true,
1020
- get: function () { return chunk47T5ECYV_cjs.VideoPlayer; }
1020
+ get: function () { return chunkCY3CQS26_cjs.VideoPlayer; }
1021
1021
  });
1022
1022
  Object.defineProperty(exports, "VideoPlayerProvider", {
1023
1023
  enumerable: true,
1024
- get: function () { return chunk47T5ECYV_cjs.VideoPlayerProvider; }
1024
+ get: function () { return chunkCY3CQS26_cjs.VideoPlayerProvider; }
1025
1025
  });
1026
1026
  Object.defineProperty(exports, "VidstackProvider", {
1027
1027
  enumerable: true,
1028
- get: function () { return chunk47T5ECYV_cjs.VidstackProvider; }
1028
+ get: function () { return chunkCY3CQS26_cjs.VidstackProvider; }
1029
1029
  });
1030
1030
  Object.defineProperty(exports, "createVideoErrorFallback", {
1031
1031
  enumerable: true,
1032
- get: function () { return chunk47T5ECYV_cjs.createVideoErrorFallback; }
1032
+ get: function () { return chunkCY3CQS26_cjs.createVideoErrorFallback; }
1033
1033
  });
1034
1034
  Object.defineProperty(exports, "isSimpleStreamSource", {
1035
1035
  enumerable: true,
1036
- get: function () { return chunk47T5ECYV_cjs.isSimpleStreamSource; }
1036
+ get: function () { return chunkCY3CQS26_cjs.isSimpleStreamSource; }
1037
1037
  });
1038
1038
  Object.defineProperty(exports, "resolveFileSource", {
1039
1039
  enumerable: true,
1040
- get: function () { return chunk47T5ECYV_cjs.resolveFileSource; }
1040
+ get: function () { return chunkCY3CQS26_cjs.resolveFileSource; }
1041
1041
  });
1042
1042
  Object.defineProperty(exports, "resolvePlayerMode", {
1043
1043
  enumerable: true,
1044
- get: function () { return chunk47T5ECYV_cjs.resolvePlayerMode; }
1044
+ get: function () { return chunkCY3CQS26_cjs.resolvePlayerMode; }
1045
1045
  });
1046
1046
  Object.defineProperty(exports, "resolveStreamSource", {
1047
1047
  enumerable: true,
1048
- get: function () { return chunk47T5ECYV_cjs.resolveStreamSource; }
1048
+ get: function () { return chunkCY3CQS26_cjs.resolveStreamSource; }
1049
1049
  });
1050
1050
  Object.defineProperty(exports, "useVideoPlayerContext", {
1051
1051
  enumerable: true,
1052
- get: function () { return chunk47T5ECYV_cjs.useVideoPlayerContext; }
1052
+ get: function () { return chunkCY3CQS26_cjs.useVideoPlayerContext; }
1053
1053
  });
1054
1054
  Object.defineProperty(exports, "ImageViewer", {
1055
1055
  enumerable: true,
@@ -1085,11 +1085,11 @@ Object.defineProperty(exports, "useVideoPlayerSettings", {
1085
1085
  });
1086
1086
  Object.defineProperty(exports, "PrettyCode", {
1087
1087
  enumerable: true,
1088
- get: function () { return chunkDI3HUXHK_cjs.PrettyCode_default; }
1088
+ get: function () { return chunkOYLQZT62_cjs.PrettyCode_default; }
1089
1089
  });
1090
1090
  Object.defineProperty(exports, "JsonTree", {
1091
1091
  enumerable: true,
1092
- get: function () { return chunk5QT3QYFZ_cjs.JsonTree_default; }
1092
+ get: function () { return chunkEGYUND4E_cjs.JsonTree_default; }
1093
1093
  });
1094
1094
  Object.defineProperty(exports, "ArrayFieldItemTemplate", {
1095
1095
  enumerable: true,