@motiadev/plugin-endpoint 0.14.0-beta.165-958021 → 0.14.0-beta.165-246284

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["cn","Input","Search","X","EndpointsSearchProps","value","onChange","onClear","EndpointsSearch","t0","$","_c","t1","Symbol","for","t2","e","target","t3","t4","t5","t6","visible","invisible","t7","t8","cn","React","memo","ApiRouteMethod","getMethodStyles","method","toUpperCase","BadgeProps","HTMLAttributes","HTMLDivElement","variant","EndpointBadge","t0","$","_c","className","props","t1","methodClasses","t2","FC","useMemo","ApiRouteMethod","EndpointBadge","EndpointPathProps","method","path","PathSeparator","$","_c","t0","Symbol","for","EndpointPath","t1","parts","split","filter","Boolean","partsLength","length","t2","part","index","isLast","key","separator","undefined","startsWith","flatMap","pathView","t3","t4","t5","t6","cn","FC","ApiEndpoint","EndpointPath","EndpointItemProps","endpoint","isSelected","isLast","onSelect","id","EndpointItem","t0","$","_c","t1","method","path","t2","t3","t4","t5","t6","t7","description","t8","t9","cn","ChevronDown","FC","ApiEndpoint","EndpointItem","FlowGroupProps","flow","endpoints","isOpen","isSelected","onToggle","onClearSelection","selectedEndpointId","onSelectEndpoint","id","FlowGroup","t0","$","_c","t1","t2","t3","t4","t5","t6","hidden","t7","Symbol","for","t8","t9","t10","t11","t12","t13","t14","t15","length","endpoint","index","map","t16","create","createJSONStorage","devtools","persist","ConfigurationLitItem","name","value","active","Headers","key","Params","defaultHeaders","CONTENT_TYPE","USER_AGENT","ACCEPT","ResponseData","headers","Record","body","statusCode","executionTime","Actions","setResponse","response","Response","startTime","setHeaders","removeHeaders","setBody","setSelectedEndpointId","selectedEndpointId","setQueryParams","params","removeQueryParams","setPathParams","pathParams","removePathParams","setBodyIsValid","bodyIsValid","toggleFlowGroupStatus","flow","State","queryParams","flowGroupStatus","UseEndpointConfiguration","getHeadersSelector","state","getBodyIsValidSelector","getBodySelector","getResponseSelector","undefined","getQueryParamsSelector","getPathParamsSelector","useEndpointConfiguration","set","newQueryParams","newPathParams","contentType","get","includes","text","json","blob","toJSON","error","console","Date","now","status","Object","fromEntries","entries","currentHeaders","newHeaders","storage","localStorage","useStreamGroup","useMemo","ApiEndpoint","useGetEndpoints","$","_c","t0","Symbol","for","streamName","groupId","data","endpoints","t1","reduce","_temp","Record","groupedEndpoints","t2","acc","endpoint","flows","length","forEach","flow","push","usePathParams","path","pathParams","match","map","param","slice","resolveRef","ref","rootSchema","Record","startsWith","undefined","defName","replace","$defs","convertSchemaToJson","schema","effectiveRootSchema","$ref","resolvedSchema","anyOf","Array","isArray","nonNullSchema","find","item","type","result","properties","Object","entries","forEach","key","value","items","enum","description","useEffect","useState","convertSchemaToJson","useJsonSchemaToJson","schema","$","_c","body","setBody","t0","t1","JSON","stringify","t2","Panel","FC","ReactJson","ApiEndpoint","Props","endpoint","value","panelName","EndpointBodyPanel","t0","$","_c","shouldHaveBody","includes","method","toLowerCase","t1","t2","JSON","parse","t3","Symbol","for","backgroundColor","t4","t5","Panel","FC","usePathParams","ApiEndpoint","Props","endpoint","EndpointPathParamsPanel","t0","$","_c","pathParams","path","length","t1","Symbol","for","gridTemplateColumns","t2","map","_temp","t3","param","Panel","FC","Fragment","ApiEndpoint","Props","endpoint","EndpointQueryParamsPanel","t0","$","_c","queryParams","length","t1","Symbol","for","gridTemplateColumns","gridTemplateRows","t2","map","_temp","t3","param","name","description","Tabs","TabsContent","TabsList","TabsTrigger","useThemeStore","FC","useMemo","ReactJson","convertSchemaToJson","EndpointResponseItem","responseCode","bodySchema","Record","EndpointResponseProps","items","EndpointResponseSchemaItem","t0","$","_c","theme","_temp","t1","schema","description","t2","backgroundColor","t3","EndpointResponseSchema","length","map","_temp2","t4","_temp3","t5","store","item","props","Sidebar","X","FC","EndpointPath","useJsonSchemaToJson","ApiEndpoint","EndpointBodyPanel","EndpointPathParamsPanel","EndpointQueryParamsPanel","EndpointResponseSchema","Props","endpoint","onClose","SpecSidePanel","t0","$","_c","body","bodySchema","t1","method","path","t2","t3","icon","onClick","t4","t5","t6","t7","responseSchema","Object","entries","map","_temp","t8","description","status","schema","responseCode","Editor","useMonaco","useThemeStore","FC","useEffect","useLayoutEffect","useMemo","useRef","useState","JsonEditorProps","value","schema","Record","onChange","onValidate","isValid","language","readOnly","JsonEditor","t0","$","_c","t1","t2","undefined","monaco","theme","_temp","editorTheme","editor","setEditor","resizeAnimationFrameRef","isValidatingRef","t3","t4","defineTheme","base","inherit","rules","colors","focusBorder","t5","t6","languages","typescript","javascriptDefaults","setCompilerOptions","isolatedModules","json","jsonDefaults","setDiagnosticsOptions","schemas","uri","window","location","href","fileMatch","t7","t8","setTheme","t10","t9","container","getContainerDomNode","parentElement","handleResize","current","cancelAnimationFrame","requestAnimationFrame","width","height","getBoundingClientRect","layout","resizeObserver","ResizeObserver","observe","disconnect","t11","t12","model","getModel","isEmptyWithSchema","timeoutId","setTimeout","markers","getModelMarkers","resource","length","clearTimeout","t13","JSON","stringify","editorKey","t14","value_0","t15","markers_0","isEmptyWithSchema_0","t16","Symbol","for","enabled","t17","automaticLayout","scrollBeyondLastLine","minimap","overviewRulerLanes","t18","state","CircleX","FC","memo","useCallback","useEffect","useRef","useShallow","JsonEditor","getBodyIsValidSelector","getBodySelector","useEndpointConfiguration","convertSchemaToJson","SidePanelBodyTabProps","schema","Record","SidePanelBodyTab","t0","$","_c","setBody","setBodyIsValid","bodyIsValid","body","previousSchemaRef","userClearedRef","t1","t2","schemaChanged","current","JSON","stringify","t3","value","isEmptyWithSchema","handleBodyChange","t4","t5","t6","Button","Checkbox","cn","Input","AlertCircle","Check","Trash2","FC","memo","useCallback","useRef","useState","ConfigurationLitItem","ConfigurationListItemProps","value","id","onUpdate","key","field","onRemove","required","ConfigurationListItem","t0","$","_c","t1","undefined","activeConfiguration","setActiveConfiguration","valueToDelete","setValueToDelete","deleteTimeout","isActive","t2","Symbol","for","clearTimeout","current","setTimeout","onDelete","t3","onMouseOver","t4","onMouseLeave","t5","t6","t7","checked","t8","t9","active","t10","t11","t12","t13","e","target","t14","name","t15","t16","t17","e_0","t18","t19","t20","t21","t22","t23","t24","t25","t26","Button","Plus","useCallback","useShallow","ConfigurationListItem","getHeadersSelector","useEndpointConfiguration","SidePanelHeadersTab","setHeaders","removeHeaders","headers","addHeader","newHeader","name","value","active","Date","getTime","toString","updateHeader","key","field","Object","entries","map","header","length","useMemo","useShallow","getPathParamsSelector","getQueryParamsSelector","UseEndpointConfiguration","useEndpointConfiguration","queryParamsSelector","state","Object","values","filter","param","active","value","name","usePathUrl","path","$","_c","pathParams","queryParams","t0","Symbol","for","t1","match","p1","url","replace","t2","length","map","_temp","join","Button","cn","Check","Copy","FC","useState","usePathUrl","EndpointPathPreviewProps","path","baseUrl","EndpointPathPreview","t0","$","_c","t1","undefined","window","location","origin","pathUrl","fullUrl","copied","setCopied","t2","navigator","clipboard","writeText","setTimeout","t3","err","console","error","handleCopy","Symbol","for","t4","t5","t6","t7","t8","t9","Button","Plus","useCallback","useMemo","useShallow","ConfigurationListItem","EndpointPathPreview","getPathParamsSelector","getQueryParamsSelector","useEndpointConfiguration","SidePanelParamsTabProps","path","SidePanelParamsTab","setQueryParams","removeQueryParams","setPathParams","queryParams","pathParams","pathParamsConfig","params","match","map","param","name","slice","value","active","addParam","newParam","Date","getTime","toString","updateParam","key","field","updatePathParam","length","pathName","Object","entries","useStreamItem","useStateStream","object","$","_c","t0","__motia","rest","data","originalData","Array","isArray","t1","isStreamed","JSON","stringify","t2","t3","statusMessages","Record","getStatusMessage","statusCode","cn","FC","getStatusMessage","ResponseCodeProps","statusCode","ResponseCode","t0","$","_c","t1","statusMessage","isSuccess","isWarning","isError","t2","t3","t4","t5","t6","t7","Button","useThemeStore","Download","React","Prism","SyntaxHighlighter","atomDark","oneLight","CodeDisplayProps","code","blob","Blob","contentType","codeTagProps","style","fontFamily","fontSize","customStyle","margin","borderRadius","padding","useLanguage","includes","ResponseContent","FC","t0","$","_c","theme","_temp","themeStyle","language","t1","url","URL","createObjectURL","window","open","onDownload","t2","t3","t4","state","Button","Tabs","TabsContent","TabsList","TabsTrigger","X","memo","useState","getResponseSelector","useEndpointConfiguration","useStateStream","ResponseCode","ResponseContent","ActiveTab","SidePanelResponse","$","_c","setResponse","response","data","body","Blob","undefined","activeTab","setActiveTab","t0","onClose","t1","Symbol","for","value","t2","t3","t4","t5","statusCode","t6","executionTime","t7","t8","t9","headers","t10","t11","Object","entries","map","_temp","t12","t13","key","value_0","Button","Loader2","memo","useState","useShallow","getBodySelector","getHeadersSelector","useEndpointConfiguration","usePathUrl","TriggerButtonProps","method","path","TriggerButton","setResponse","headers","body","pathUrl","isLoading","setIsLoading","onClick","_headers","Object","values","filter","header","active","name","value","reduce","acc","toLowerCase","Record","startTime","Date","now","response","fetch","includes","error","console","BackgroundEffect","Badge","Button","cn","Tabs","TabsContent","TabsList","TabsTrigger","Book","X","FC","memo","useState","useShallow","EndpointPath","getHeadersSelector","getQueryParamsSelector","getResponseSelector","UseEndpointConfiguration","useEndpointConfiguration","usePathParams","SpecSidePanel","ApiEndpoint","SidePanelBodyTab","SidePanelHeadersTab","SidePanelParamsTab","SidePanelResponse","TriggerButton","EndpointSidePanelProps","endpoint","onClose","ActiveTab","headersCountSelector","state","Object","keys","length","hasResponseSelector","undefined","paramsCountSelector","SidePanel","t0","$","_c","isGetOrDelete","method","activeTab","setActiveTab","isSpecOpen","setIsSpecOpen","headersCount","hasResponse","pathParamsCount","path","queryParamsCount","paramsCount","t1","Symbol","for","t2","t3","description","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","value","t14","t15","t16","t17","t18","t19","toString","t20","t21","t22","t23","bodySchema","t24","t25","t26","t27","t28","t29","cn","useCallback","useMemo","useState","EndpointsSearch","FlowGroup","useEndpointConfiguration","useGetEndpoints","SidePanel","ApiEndpoint","EndpointsPage","$","_c","endpoints","groupedEndpoints","selectedEndpointId","setSelectedEndpointId","toggleFlowGroupStatus","flowGroupStatus","t0","t1","endpoint","id","find","selectedEndpoint","onClose","search","setSearch","t2","Object","entries","filter","t3","endpoints_0","some","endpoint_0","method","toLowerCase","includes","path","filteredEndpoints","t4","t5","Symbol","for","t6","t7","map","t8","flow","endpoints_1","isSelected","endpoint_1","isOpen","t9","t10"],"sources":["../src/components/endpoints-search.tsx","../src/components/endpoint-badge.tsx","../src/components/endpoint-path.tsx","../src/components/endpoint-item.tsx","../src/components/flow-group.tsx","../src/hooks/use-endpoint-configuration.ts","../src/hooks/use-get-endpoints.ts","../src/hooks/use-path-params.ts","../src/hooks/utils.ts","../src/hooks/use-json-schema-to-json.tsx","../src/spec/spec-body-panel.tsx","../src/spec/spec-path-params-panel.tsx","../src/spec/spec-query-params-panel.tsx","../src/spec/spec-response-schema.tsx","../src/spec/spec-side-panel.tsx","../src/components/json-editor.tsx","../src/play/side-panel-body-tab.tsx","../src/components/configuration-list-item.tsx","../src/play/side-panel-headers-tab.tsx","../src/hooks/use-path-url.ts","../src/components/endpoint-path-preview.tsx","../src/play/side-panel-params-tab.tsx","../src/hooks/use-state-stream.ts","../src/play/reponse-code/utils.ts","../src/play/response-code.tsx","../src/play/response-content.tsx","../src/play/side-panel-response.tsx","../src/play/trigger-button.tsx","../src/play/side-panel.tsx","../src/endpoints-page.tsx"],"sourcesContent":["import { cn, Input } from '@motiadev/ui'\nimport { Search, X } from 'lucide-react'\n\ntype EndpointsSearchProps = {\n value: string\n onChange: (value: string) => void\n onClear: () => void\n}\n\nexport const EndpointsSearch = ({ value, onChange, onClear }: EndpointsSearchProps) => {\n return (\n <div className=\"p-2 border-b gap-4\" data-testid=\"endpoints-search-container\">\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground/50\" />\n <Input\n variant=\"shade\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"px-9! font-medium\"\n placeholder=\"Search by Method or Path\"\n />\n <X\n className={cn(\n 'cursor-pointer absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground/50 hover:text-muted-foreground',\n {\n visible: value !== '',\n invisible: value === '',\n },\n )}\n onClick={onClear}\n />\n </div>\n </div>\n )\n}\n","import { cn } from '@motiadev/ui'\nimport type * as React from 'react'\nimport { memo } from 'react'\nimport type { ApiRouteMethod } from '../types/endpoint'\n\nconst getMethodStyles = (method: ApiRouteMethod): string => {\n switch (method.toUpperCase()) {\n case 'POST':\n return 'bg-[#258DC3]/15 text-[#258DC3]'\n case 'GET':\n return 'bg-[#709A2D]/15 text-[#709A2D]'\n case 'DELETE':\n return 'bg-[#DE2134]/15 text-[#DE2134]'\n case 'PUT':\n return 'bg-[#B9922D]/15 text-[#B9922D]'\n case 'PATCH':\n return 'bg-[#B9922D]/15 text-[#B9922D]'\n case 'HEAD':\n return 'bg-[#E221DF]/15 text-[#E221DF]'\n case 'OPTIONS':\n return 'bg-[#B9922D]/15 text-[#B9922D]'\n default:\n return 'bg-[#258DC3]/15 text-[#258DC3]' // default to GET\n }\n}\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n variant: ApiRouteMethod\n}\n\nexport const EndpointBadge = memo(({ className, variant, ...props }: BadgeProps) => {\n const baseClasses = 'rounded-lg px-2 py-0.5 text-xs font-mono font-bold transition-colors'\n const methodClasses = getMethodStyles(variant)\n\n return <div className={cn(baseClasses, methodClasses, className)} {...props} />\n})\n","import { type FC, useMemo } from 'react'\nimport type { ApiRouteMethod } from '../types/endpoint'\nimport { EndpointBadge } from './endpoint-badge'\n\ninterface EndpointPathProps {\n method: string\n path: string\n}\n\nconst PathSeparator = () => {\n return <div className=\"text-muted-foreground\">/</div>\n}\n\nexport const EndpointPath: FC<EndpointPathProps> = ({ method, path }) => {\n const pathView = useMemo(() => {\n const parts = path.split('/').filter(Boolean)\n const partsLength = parts.length - 1\n return parts.flatMap((part, index) => {\n const isLast = index === partsLength\n const key = `part-${part}-${index}`\n const separator = isLast ? undefined : <PathSeparator key={`separator-${key}`} />\n\n if (part.startsWith(':')) {\n return [\n <div\n key={key}\n className=\"bg-[#2862FE]/20 text-[#2862FE] rounded-sm px-1 py-0.5 text-sm font-mono font-bold font-medium\"\n >\n {part}\n </div>,\n separator,\n ]\n }\n return [<div key={key}>{part}</div>, separator]\n })\n }, [path])\n\n return (\n <div className=\"grid grid-cols-[auto_1fr] gap-2 items-center\">\n <EndpointBadge variant={method as ApiRouteMethod}>{method}</EndpointBadge>\n <span className=\"font-mono font-bold whitespace-nowrap flex flex-row gap-2 items-center truncate\">\n <PathSeparator />\n {pathView}\n </span>\n </div>\n )\n}\n","import { cn } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport type { ApiEndpoint } from '../types/endpoint'\nimport { EndpointPath } from './endpoint-path'\n\ntype EndpointItemProps = {\n endpoint: ApiEndpoint\n isSelected: boolean\n isLast: boolean\n onSelect: (id: string) => void\n}\n\nexport const EndpointItem: FC<EndpointItemProps> = ({ endpoint, isSelected, isLast, onSelect }) => (\n <div\n data-testid={`endpoint-${endpoint.method}-${endpoint.path}`}\n onClick={() => onSelect(endpoint.id)}\n className={cn(\n 'grid grid-cols-[auto_1fr] items-center justify-center px-[17px] select-none hover:bg-muted-foreground/10 cursor-pointer',\n isSelected && 'bg-muted-foreground/10',\n )}\n >\n {isLast ? (\n <svg width=\"14\" height=\"34\" viewBox=\"0 0 12 34\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6.5 16.5C6.50006 19.2614 8.7386 21.4999 11.5 21.5C11.7759 21.5003 12 21.724 12 22C12 22.276 11.7759 22.4997 11.5 22.5C8.18632 22.4999 5.50006 19.8137 5.5 16.5V0H6.5V16.5Z\"\n className=\"fill-[#555]\"\n />\n </svg>\n ) : (\n <svg width=\"14\" height=\"34\" viewBox=\"0 0 12 34\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6.5 0V11.5C6.50007 14.2614 8.73861 16.4999 11.5 16.5C11.7759 16.5003 12 16.724 12 17C12 17.276 11.7759 17.4997 11.5 17.5C9.41273 17.5 7.57486 16.4335 6.5 14.8164V34H5.5V0H6.5Z\"\n className=\"fill-[#555]\"\n />\n </svg>\n )}\n\n <div>\n <div className=\"grid grid-cols-[auto_1fr] items-center gap-3 px-2\">\n <EndpointPath method={endpoint.method} path={endpoint.path} />\n <span className=\"text-sm text-muted-foreground truncate\">{endpoint.description}</span>\n </div>\n </div>\n </div>\n)\n","import { cn } from '@motiadev/ui'\nimport { ChevronDown } from 'lucide-react'\nimport type { FC } from 'react'\nimport type { ApiEndpoint } from '../types/endpoint'\nimport { EndpointItem } from './endpoint-item'\n\ntype FlowGroupProps = {\n flow: string\n endpoints: ApiEndpoint[]\n isOpen: boolean\n isSelected: boolean\n onToggle: (flow: string) => void\n onClearSelection: () => void\n selectedEndpointId?: string\n onSelectEndpoint: (id: string) => void\n}\n\nexport const FlowGroup: FC<FlowGroupProps> = ({\n flow,\n endpoints,\n isOpen,\n isSelected,\n onToggle,\n onClearSelection,\n selectedEndpointId,\n onSelectEndpoint,\n}: FlowGroupProps) => {\n return (\n <div className=\"pt-2\">\n <button\n data-testid={`flow-group-${flow}`}\n className=\"w-full grid grid-cols-[auto_1fr] items-center gap-3 hover:bg-muted/40 cursor-pointer min-h-8.5 select-none hover:bg-muted-foreground/10 px-4\"\n onClick={() => {\n if (isSelected) {\n onClearSelection()\n }\n onToggle(flow)\n }}\n >\n <div className=\"grid grid-cols-1\">\n <ChevronDown\n className={cn('w-4 h-4 transition-transform duration-300 text-[#555]', { 'rotate-180 mt-2.5': isOpen })}\n strokeWidth={1.5}\n />\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"2\"\n height=\"10\"\n viewBox=\"0 0 2 10\"\n fill=\"none\"\n className={cn('ml-[7px]', { hidden: !isOpen })}\n >\n <path\n d=\"M1.5 1C1.5 0.723858 1.27614 0.5 1 0.5C0.723858 0.5 0.5 0.723858 0.5 1H1H1.5ZM1 1H0.5V10H1H1.5V1H1Z\"\n className=\"fill-[#555]\"\n />\n </svg>\n </div>\n <h3 className=\"text-sm font-medium text-left\">{flow}</h3>\n </button>\n\n <div className={cn('grid grid-cols-1 items-center justify-center', { hidden: !isOpen })}>\n {endpoints.map((endpoint: ApiEndpoint, index: number) => (\n <EndpointItem\n key={endpoint.id}\n endpoint={endpoint}\n isSelected={selectedEndpointId === endpoint.id}\n isLast={index === endpoints.length - 1}\n onSelect={onSelectEndpoint}\n />\n ))}\n </div>\n </div>\n )\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, devtools, persist } from 'zustand/middleware'\n\nexport type ConfigurationLitItem = {\n name: string\n value: string\n active: boolean\n}\n\nexport type Headers = {\n [key: string]: ConfigurationLitItem\n}\n\nexport type Params = {\n [key: string]: ConfigurationLitItem\n}\n\nconst defaultHeaders: Headers = {\n CONTENT_TYPE: { name: 'Content-Type', value: 'application/json', active: true },\n USER_AGENT: { name: 'User-Agent', value: 'Motia/1.0', active: true },\n ACCEPT: { name: 'Accept', value: 'application/json', active: true },\n}\n\nexport type ResponseData = {\n headers: Record<string, string>\n body: Record<string, any>\n statusCode: number\n executionTime: number\n}\n\ntype Actions = {\n setResponse: (response: Response | undefined, startTime?: number) => void\n setHeaders: (headers: Headers) => void\n removeHeaders: (key: string) => void\n setBody: (body: string) => void\n setSelectedEndpointId: (selectedEndpointId: string | undefined) => void\n setQueryParams: (params: Params) => void\n removeQueryParams: (key: string) => void\n setPathParams: (pathParams: Params) => void\n removePathParams: (key: string) => void\n setBodyIsValid: (bodyIsValid: boolean) => void\n toggleFlowGroupStatus: (flow: string) => void\n}\n\ntype State = {\n selectedEndpointId: string\n headers: Record<string, Headers>\n body: Record<string, string>\n bodyIsValid: Record<string, boolean>\n response: Record<string, ResponseData | undefined>\n queryParams: Record<string, Params>\n pathParams: Record<string, Params>\n flowGroupStatus: Record<string, boolean>\n}\n\nexport type UseEndpointConfiguration = State & Actions\n\nexport const getHeadersSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.headers[selectedEndpointId] || defaultHeaders\n }\n return defaultHeaders\n}\n\nexport const getBodyIsValidSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.bodyIsValid[selectedEndpointId]\n }\n return true\n}\n\nexport const getBodySelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.body[selectedEndpointId] || ''\n }\n return ''\n}\n\nexport const getResponseSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.response[selectedEndpointId] || undefined\n }\n return undefined\n}\n\nexport const getQueryParamsSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.queryParams[selectedEndpointId] || {}\n }\n return {}\n}\n\nexport const getPathParamsSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.pathParams[selectedEndpointId] || {}\n }\n return {}\n}\n\nexport const useEndpointConfiguration = create<UseEndpointConfiguration>()(\n persist(\n devtools((set) => ({\n selectedEndpointId: '',\n headers: {},\n body: {},\n bodyIsValid: {},\n response: {},\n queryParams: {},\n pathParams: {},\n flowGroupStatus: {},\n toggleFlowGroupStatus: (flow: string) =>\n set((state) => ({ flowGroupStatus: { ...state.flowGroupStatus, [flow]: !state.flowGroupStatus[flow] } })),\n setSelectedEndpointId: (selectedEndpointId: string) => set({ selectedEndpointId }),\n setQueryParams: (queryParams: Params) =>\n set((state) => ({ queryParams: { ...state.queryParams, [state.selectedEndpointId]: queryParams } })),\n removeQueryParams: (key: string) =>\n set((state) => {\n const newQueryParams = { ...state.queryParams[state.selectedEndpointId] }\n delete newQueryParams[key]\n return {\n queryParams: {\n ...state.queryParams,\n [state.selectedEndpointId]: newQueryParams,\n },\n }\n }),\n setPathParams: (pathParams: Params) =>\n set((state) => ({ pathParams: { ...state.pathParams, [state.selectedEndpointId]: pathParams } })),\n removePathParams: (key: string) =>\n set((state) => {\n const newPathParams = { ...state.pathParams[state.selectedEndpointId] }\n delete newPathParams[key]\n return {\n pathParams: {\n ...state.pathParams,\n [state.selectedEndpointId]: newPathParams,\n },\n }\n }),\n setHeaders: (headers: Headers) =>\n set((state) => ({ headers: { ...state.headers, [state.selectedEndpointId]: headers } })),\n setResponse: async (response: Response | undefined, startTime: number) => {\n if (!response) {\n set((state) => ({\n response: {\n ...state.response,\n [state.selectedEndpointId]: undefined,\n },\n }))\n return\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let body: any\n try {\n const contentType = response?.headers.get('content-type') ?? ''\n\n if (contentType.includes('text/')) {\n body = response ? await response.text() : undefined\n } else if (contentType.includes('application/json')) {\n body = response ? await response.json() : undefined\n } else {\n body = response ? await response.blob() : undefined\n // this is important to avoid the body being serialized to JSON\n body.toJSON = () => 'Preview not available'\n }\n } catch (error) {\n console.error('Error setting response:', error)\n }\n set((state) => ({\n response: {\n ...state.response,\n [state.selectedEndpointId]: {\n executionTime: Date.now() - startTime,\n statusCode: response?.status,\n headers: response?.headers ? Object.fromEntries(response.headers.entries()) : {},\n body: body,\n },\n },\n }))\n },\n setBody: (body: string) => set((state) => ({ body: { ...state.body, [state.selectedEndpointId]: body } })),\n removeHeaders: (key: string) =>\n set((state) => {\n const currentHeaders = state.headers[state.selectedEndpointId] || defaultHeaders\n const newHeaders = { ...currentHeaders }\n delete newHeaders[key]\n return {\n headers: {\n ...state.headers,\n [state.selectedEndpointId]: newHeaders,\n },\n }\n }),\n setBodyIsValid: (bodyIsValid: boolean) =>\n set((state) => ({ bodyIsValid: { ...state.bodyIsValid, [state.selectedEndpointId]: bodyIsValid } })),\n })),\n {\n name: 'motia-endpoint-configuration',\n storage: createJSONStorage(() => localStorage),\n },\n ),\n)\n","import { useStreamGroup } from '@motiadev/stream-client-react'\nimport { useMemo } from 'react'\nimport type { ApiEndpoint } from '../types/endpoint'\n\nexport const useGetEndpoints = () => {\n const { data: endpoints } = useStreamGroup<ApiEndpoint>({\n streamName: '__motia.api-endpoints',\n groupId: 'default',\n })\n\n const groupedEndpoints = useMemo(() => {\n return endpoints.reduce(\n (acc, endpoint) => {\n if (endpoint.flows && endpoint.flows.length > 0) {\n endpoint.flows.forEach((flow) => {\n acc[flow] = acc[flow] || []\n acc[flow].push(endpoint)\n })\n } else {\n acc['no-flow'] = acc['no-flow'] || []\n acc['no-flow'].push(endpoint)\n }\n return acc\n },\n {} as Record<string, ApiEndpoint[]>,\n )\n }, [endpoints])\n\n return { endpoints, groupedEndpoints }\n}\n","export const usePathParams = (path: string) => {\n const pathParams = path.match(/:(\\w+)/g)\n return pathParams?.map((param) => param.slice(1)) ?? []\n}\n","const resolveRef = (ref: string, rootSchema?: Record<string, any>): Record<string, any> | undefined => {\n if (!rootSchema || !ref.startsWith('#/$defs/')) {\n return undefined\n }\n\n const defName = ref.replace('#/$defs/', '')\n return rootSchema.$defs?.[defName]\n}\n\n/**\n * Converts a schema to a JSON object with default values\n * Supports both TypeScript step schemas (inline definitions) and Python step schemas ($defs/$ref)\n * @param schema - The schema to convert\n * @param rootSchema - Optional root schema containing $defs for $ref resolution. Defaults to schema if not provided.\n */\nexport const convertSchemaToJson = (schema?: Record<string, any>, rootSchema?: Record<string, any>): any => {\n if (!schema) return {}\n\n const effectiveRootSchema = rootSchema ?? schema\n\n if (schema.$ref) {\n const resolvedSchema = resolveRef(schema.$ref, effectiveRootSchema)\n if (resolvedSchema) {\n return convertSchemaToJson(resolvedSchema, effectiveRootSchema)\n }\n return {}\n }\n\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const nonNullSchema = schema.anyOf.find((item: any) => item && item.type !== 'null')\n if (nonNullSchema) {\n return convertSchemaToJson(nonNullSchema, effectiveRootSchema)\n }\n return null\n }\n\n if (schema.type === 'object') {\n const result: Record<string, any> = {}\n\n if (schema.properties) {\n Object.entries(schema.properties).forEach(([key, value]: [string, any]) => {\n result[key] = convertSchemaToJson(value, effectiveRootSchema)\n })\n }\n\n return result\n }\n\n switch (schema.type) {\n case 'array':\n return schema.items ? [convertSchemaToJson(schema.items, effectiveRootSchema)] : []\n case 'string':\n return schema.enum?.[0] ?? schema.description ?? 'string'\n case 'number':\n return schema.description ?? 0\n case 'integer':\n return 0\n case 'boolean':\n return schema.description ?? false\n case 'null':\n return null\n default:\n return undefined\n }\n}\n","import { useEffect, useState } from 'react'\nimport { convertSchemaToJson } from './utils'\n\nexport const useJsonSchemaToJson = (schema: Record<string, any> | undefined) => {\n const [body, setBody] = useState<string>('')\n\n useEffect(() => {\n if (schema) {\n setBody(JSON.stringify(convertSchemaToJson(schema), null, 2))\n }\n }, [schema])\n\n return { body, setBody }\n}\n","import { Panel } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport ReactJson from 'react18-json-view'\nimport 'react18-json-view/src/dark.css'\nimport 'react18-json-view/src/style.css'\nimport type { ApiEndpoint } from '../types/endpoint'\n\ntype Props = {\n endpoint: ApiEndpoint\n value: string\n panelName: string\n}\n\nexport const EndpointBodyPanel: FC<Props> = ({ endpoint, panelName, value }) => {\n const shouldHaveBody = ['post', 'put', 'patch'].includes(endpoint.method.toLowerCase())\n\n if (!shouldHaveBody) {\n return null\n }\n\n return (\n <Panel title=\"Body\" size=\"sm\" contentClassName=\"p-0\" data-testid={`endpoint-body-panel__${panelName}`}>\n <ReactJson\n src={value ? JSON.parse(value) : {}}\n theme=\"default\"\n enableClipboard={false}\n style={{ backgroundColor: 'transparent' }}\n />\n </Panel>\n )\n}\n","import { Panel } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport { usePathParams } from '../hooks/use-path-params'\nimport type { ApiEndpoint } from '../types/endpoint'\n\ntype Props = {\n endpoint: ApiEndpoint\n}\n\nexport const EndpointPathParamsPanel: FC<Props> = ({ endpoint }) => {\n const pathParams = usePathParams(endpoint.path)\n\n if (!pathParams.length) {\n return null\n }\n\n return (\n <Panel title=\"Path params\" size=\"sm\" variant=\"default\">\n <div className=\"grid gap-3\" style={{ gridTemplateColumns: '1fr 2fr' }}>\n {pathParams.map((param: string) => (\n <div key={param} className=\"font-bold leading-[36px] flex text-xs\">\n {param}\n </div>\n ))}\n </div>\n </Panel>\n )\n}\n","import { Panel } from '@motiadev/ui'\nimport { type FC, Fragment } from 'react'\nimport type { ApiEndpoint } from '../types/endpoint'\n\ntype Props = {\n endpoint: ApiEndpoint\n}\n\nexport const EndpointQueryParamsPanel: FC<Props> = ({ endpoint }) => {\n if (!endpoint.queryParams?.length) {\n return null\n }\n\n return (\n <Panel title=\"Query params\" size=\"sm\" variant=\"outlined\">\n <div className=\"grid gap-3\" style={{ gridTemplateColumns: '1fr 2fr', gridTemplateRows: '1fr 1fr' }}>\n {endpoint.queryParams.map((param: { name: string; description: string }) => (\n <Fragment key={param.name}>\n <div className=\"font-bold leading-[36px] flex text-xs\">{param.name}</div>\n <div className=\"flex items-center text-xs \">\n <span>{param.description}</span>\n </div>\n </Fragment>\n ))}\n </div>\n </Panel>\n )\n}\n","import { Tabs, TabsContent, TabsList, TabsTrigger, useThemeStore } from '@motiadev/ui'\nimport { type FC, useMemo } from 'react'\nimport ReactJson from 'react18-json-view'\nimport { convertSchemaToJson } from '../hooks/utils'\n\nexport type EndpointResponseItem = {\n responseCode: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n bodySchema: Record<string, any>\n}\n\ntype EndpointResponseProps = {\n items: EndpointResponseItem[]\n}\n\nconst EndpointResponseSchemaItem: FC<EndpointResponseItem> = ({ responseCode, bodySchema }) => {\n const theme = useThemeStore((store: { theme: string }) => store.theme)\n const schema = useMemo(() => convertSchemaToJson(bodySchema), [bodySchema])\n const description = typeof bodySchema.description === 'string' ? bodySchema.description : ''\n\n return (\n <TabsContent value={responseCode} key={responseCode} className=\"border-t\">\n <div className=\"text-xs font-mono rounded-lg whitespace-pre-wrap\">\n {schema ? (\n <ReactJson\n src={schema}\n dark={theme === 'dark'}\n enableClipboard={false}\n style={{ backgroundColor: 'transparent' }}\n />\n ) : (\n <div className=\"text-xs font-mono rounded-lg whitespace-pre-wrap p-4\">{description}</div>\n )}\n </div>\n </TabsContent>\n )\n}\n\nexport const EndpointResponseSchema: FC<EndpointResponseProps> = ({ items }) => {\n if (items.length === 0) {\n return null\n }\n\n return (\n <div className=\"flex flex-col rounded-lg border\">\n <Tabs defaultValue={items[0].responseCode}>\n <div className=\"flex items-center justify-between bg-card\">\n <TabsList className=\"bg-transparent p-0\">\n {items.map((item) => (\n <TabsTrigger\n value={item.responseCode}\n key={item.responseCode}\n className=\"text-xs font-bold cursor-pointer\"\n >\n {item.responseCode}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n\n {items.map((props) => (\n <EndpointResponseSchemaItem key={props.responseCode} {...props} />\n ))}\n </Tabs>\n </div>\n )\n}\n","import { Sidebar } from '@motiadev/ui'\nimport { X } from 'lucide-react'\nimport type { FC } from 'react'\nimport { EndpointPath } from '../components/endpoint-path'\nimport { useJsonSchemaToJson } from '../hooks/use-json-schema-to-json'\nimport type { ApiEndpoint } from '../types/endpoint'\nimport { EndpointBodyPanel } from './spec-body-panel'\nimport { EndpointPathParamsPanel } from './spec-path-params-panel'\nimport { EndpointQueryParamsPanel } from './spec-query-params-panel'\nimport { EndpointResponseSchema } from './spec-response-schema'\n\ntype Props = { endpoint: ApiEndpoint; onClose: () => void }\n\nexport const SpecSidePanel: FC<Props> = ({ endpoint, onClose }) => {\n const { body } = useJsonSchemaToJson(endpoint.bodySchema)\n\n return (\n <Sidebar\n initialWidth={600}\n subtitle={endpoint.description}\n title={<EndpointPath method={endpoint.method} path={endpoint.path} />}\n onClose={onClose}\n actions={[\n {\n icon: <X className=\"cursor-pointer w-4 h-4\" onClick={onClose} />,\n onClick: onClose,\n },\n ]}\n >\n <EndpointPathParamsPanel endpoint={endpoint} />\n <EndpointQueryParamsPanel endpoint={endpoint} />\n <EndpointBodyPanel endpoint={endpoint} panelName=\"details\" value={body} />\n <EndpointResponseSchema\n items={Object.entries(endpoint?.responseSchema ?? {}).map(([status, schema]) => ({\n responseCode: status,\n bodySchema: schema,\n }))}\n />\n </Sidebar>\n )\n}\n","import { Editor, useMonaco } from '@monaco-editor/react'\nimport { useThemeStore } from '@motiadev/ui'\nimport { type FC, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\ntype JsonEditorProps = {\n value: string\n schema?: Record<string, unknown>\n onChange?: (value: string) => void\n onValidate?: (isValid: boolean) => void\n language?: 'json' | string\n readOnly?: boolean\n}\n\nexport const JsonEditor: FC<JsonEditorProps> = ({\n value,\n schema,\n onChange,\n onValidate,\n language = 'json',\n readOnly = false,\n}) => {\n const monaco = useMonaco()\n const theme = useThemeStore((state: { theme: string }) => state.theme)\n const editorTheme = useMemo(() => (theme === 'dark' ? 'transparent-dark' : 'transparent-light'), [theme])\n const [editor, setEditor] = useState<any>(null)\n const resizeAnimationFrameRef = useRef<number | null>(null)\n const isValidatingRef = useRef(false)\n\n useLayoutEffect(() => {\n if (!monaco) return\n\n monaco.editor.defineTheme('transparent-light', {\n base: 'vs',\n inherit: true,\n rules: [],\n colors: {\n 'editor.background': '#00000000',\n 'editor.lineHighlightBackground': '#00000000',\n 'editorLineNumber.foreground': '#999999',\n 'editorLineNumber.activeForeground': '#000000',\n focusBorder: '#00000000',\n 'widget.border': '#00000000',\n 'editor.border': '#00000000',\n 'editorWidget.border': '#00000000',\n },\n })\n monaco.editor.defineTheme('transparent-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: [],\n colors: {\n 'editor.background': '#00000000',\n 'editor.lineHighlightBackground': '#00000000',\n 'editorLineNumber.foreground': '#666666',\n 'editorLineNumber.activeForeground': '#ffffff',\n focusBorder: '#00000000',\n 'widget.border': '#00000000',\n 'editor.border': '#00000000',\n 'editorWidget.border': '#00000000',\n },\n })\n }, [monaco])\n\n useEffect(() => {\n if (!monaco) return\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({ isolatedModules: true })\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n schemas: schema\n ? [\n {\n uri: window.location.href,\n fileMatch: ['*'],\n schema,\n },\n ]\n : [],\n })\n }, [monaco, schema])\n\n useLayoutEffect(() => {\n if (!monaco) return\n monaco.editor.setTheme(editorTheme)\n }, [monaco, editorTheme])\n\n useEffect(() => {\n if (!editor) return\n\n const container = editor.getContainerDomNode().parentElement?.parentElement\n if (!container) return\n\n const handleResize = () => {\n if (resizeAnimationFrameRef.current !== null) {\n cancelAnimationFrame(resizeAnimationFrameRef.current)\n }\n\n resizeAnimationFrameRef.current = requestAnimationFrame(() => {\n const { width, height } = container.getBoundingClientRect()\n editor.layout({ width, height })\n resizeAnimationFrameRef.current = null\n })\n }\n\n handleResize()\n\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(container)\n\n return () => {\n resizeObserver.disconnect()\n if (resizeAnimationFrameRef.current !== null) {\n cancelAnimationFrame(resizeAnimationFrameRef.current)\n }\n }\n }, [editor])\n\n useEffect(() => {\n if (!editor || !monaco || !onValidate || isValidatingRef.current) return\n\n const model = editor.getModel()\n if (!model) return\n\n const isEmptyWithSchema = schema && !value\n if (isEmptyWithSchema) {\n isValidatingRef.current = true\n onValidate(false)\n isValidatingRef.current = false\n return\n }\n\n isValidatingRef.current = true\n const timeoutId = setTimeout(() => {\n const markers = monaco.editor.getModelMarkers({ resource: model.uri })\n const isValid = markers.length === 0\n onValidate(isValid)\n isValidatingRef.current = false\n }, 100)\n\n return () => {\n clearTimeout(timeoutId)\n isValidatingRef.current = false\n }\n }, [editor, monaco, onValidate, value, schema])\n\n const editorKey = useMemo(() => (schema ? JSON.stringify(schema) : 'no-schema'), [schema])\n\n return (\n <Editor\n key={editorKey}\n data-testid=\"json-editor\"\n language={language}\n value={value}\n loading=\"\"\n theme={editorTheme}\n onMount={setEditor}\n onChange={(value: string | undefined) => {\n onChange?.(value ?? '')\n }}\n onValidate={(markers: any[]) => {\n if (!onValidate || isValidatingRef.current) return\n isValidatingRef.current = true\n const isEmptyWithSchema = schema && !value\n if (isEmptyWithSchema) {\n onValidate(false)\n } else {\n onValidate(markers.length === 0)\n }\n isValidatingRef.current = false\n }}\n options={{\n automaticLayout: false,\n readOnly,\n scrollBeyondLastLine: false,\n minimap: { enabled: false },\n overviewRulerLanes: 0,\n }}\n />\n )\n}\n","import { CircleX } from 'lucide-react'\nimport { type FC, memo, useCallback, useEffect, useRef } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { JsonEditor } from '../components/json-editor'\nimport { getBodyIsValidSelector, getBodySelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration'\nimport { convertSchemaToJson } from '../hooks/utils'\n\ntype SidePanelBodyTabProps = {\n schema: Record<string, any> | undefined\n}\n\nexport const SidePanelBodyTab: FC<SidePanelBodyTabProps> = memo(({ schema }) => {\n const { setBody, setBodyIsValid } = useEndpointConfiguration()\n const bodyIsValid = useEndpointConfiguration(useShallow(getBodyIsValidSelector))\n const body = useEndpointConfiguration(getBodySelector)\n const previousSchemaRef = useRef<Record<string, any> | undefined>(schema)\n const userClearedRef = useRef(false)\n\n useEffect(() => {\n const schemaChanged = previousSchemaRef.current !== schema\n previousSchemaRef.current = schema\n\n if (schemaChanged) {\n userClearedRef.current = false\n }\n\n if (schema && !body && !userClearedRef.current) {\n setBody(JSON.stringify(convertSchemaToJson(schema), null, 2))\n return\n }\n\n if (!schema) {\n setBody(body || '')\n setBodyIsValid(true)\n }\n }, [schema, body, setBody, setBodyIsValid])\n\n const handleBodyChange = useCallback(\n (value: string) => {\n setBody(value)\n const isEmptyWithSchema = schema && !value\n if (isEmptyWithSchema) {\n setBodyIsValid(false)\n userClearedRef.current = true\n } else {\n userClearedRef.current = false\n }\n },\n [setBody, schema, setBodyIsValid],\n )\n\n return (\n <div className=\"max-h-full h-full relative\">\n <JsonEditor value={body} schema={schema} onChange={handleBodyChange} onValidate={setBodyIsValid} />\n {bodyIsValid === false && (\n <div\n className=\"absolute bottom-0 left-0 right-0 border-t border-border p-3 text-sm dark:text-yellow-500 text-yellow-700 flex items-center gap-1 font-medium\"\n data-testid=\"endpoint-body-tab-invalid\"\n >\n <CircleX className=\"w-4 h-4\" />\n The body payload is invalid\n </div>\n )}\n </div>\n )\n})\n","import { Button, Checkbox, cn, Input } from '@motiadev/ui'\nimport { AlertCircle, Check, Trash2 } from 'lucide-react'\nimport { type FC, memo, useCallback, useRef, useState } from 'react'\nimport type { ConfigurationLitItem } from '../hooks/use-endpoint-configuration'\n\ninterface ConfigurationListItemProps {\n value: ConfigurationLitItem\n id: string\n onUpdate: (key: string, field: 'name' | 'value' | 'active', value: string | boolean) => void\n onRemove?: (key: string) => void\n required?: boolean\n}\n\nexport const ConfigurationListItem: FC<ConfigurationListItemProps> = memo(\n ({ value, id, onUpdate, onRemove, required = false }) => {\n const [activeConfiguration, setActiveConfiguration] = useState<string | null>(null)\n const [valueToDelete, setValueToDelete] = useState<string | null>(null)\n const deleteTimeout = useRef<NodeJS.Timeout | undefined>(undefined)\n const isActive = activeConfiguration === id\n\n const onDelete = useCallback(\n (key: string) => {\n clearTimeout(deleteTimeout.current)\n setValueToDelete(key)\n deleteTimeout.current = setTimeout(() => {\n setValueToDelete(null)\n }, 5000)\n },\n [setValueToDelete],\n )\n\n const onMouseOver = useCallback(() => {\n if (required) return\n setActiveConfiguration(id)\n }, [id, required])\n\n const onMouseLeave = useCallback(() => {\n if (required) return\n setActiveConfiguration(null)\n }, [required])\n\n return (\n <div\n className={cn(\n 'grid grid-cols-[auto_1fr_auto] items-center py-2 px-4 bg-muted/30 rounded-lg gap-2',\n isActive && 'bg-card',\n )}\n onMouseOver={onMouseOver}\n onMouseLeave={onMouseLeave}\n >\n <Checkbox\n checked={value.active}\n onCheckedChange={(checked: boolean) => onUpdate(id, 'active', checked)}\n disabled={required}\n >\n <Check className=\"h-3 w-3\" />\n </Checkbox>\n <div className=\"grid grid-cols-2 gap-2\">\n <Input\n readOnly={required}\n disabled={!value.active}\n variant={required ? 'outlineReadonly' : 'outline'}\n id={`name-${id}`}\n defaultValue={value.name}\n onBlur={(e: React.ChangeEvent<HTMLInputElement>) => onUpdate(id, 'name', e.target.value)}\n placeholder=\"Name\"\n className=\"h-8\"\n />\n <Input\n disabled={!value.active}\n variant={'outline'}\n id={`value-${id}`}\n defaultValue={value.value}\n onBlur={(e: React.FocusEvent<HTMLInputElement>) => onUpdate(id, 'value', e.target.value)}\n placeholder=\"Value\"\n className=\"h-8\"\n />\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => {\n if (valueToDelete === id) {\n onRemove?.(id)\n } else {\n onDelete(id)\n }\n }}\n className={cn('h-6 w-6 opacity-0 transition-opacity duration-200', isActive && 'opacity-100')}\n title={valueToDelete === id && isActive ? 'Click again to remove' : 'Remove'}\n >\n {valueToDelete === id ? <AlertCircle className=\"h-3 w-3 text-destructive\" /> : <Trash2 className=\"h-3 w-3\" />}\n </Button>\n </div>\n )\n },\n)\n","import { Button } from '@motiadev/ui'\nimport { Plus } from 'lucide-react'\nimport { useCallback } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { ConfigurationListItem } from '../components/configuration-list-item'\nimport { getHeadersSelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration'\n\nexport const SidePanelHeadersTab = () => {\n const { setHeaders, removeHeaders } = useEndpointConfiguration()\n const headers = useEndpointConfiguration(useShallow(getHeadersSelector))\n\n const addHeader = useCallback(() => {\n const newHeader = {\n name: '',\n value: '',\n active: true,\n }\n setHeaders({ ...headers, [new Date().getTime().toString()]: newHeader })\n }, [headers, setHeaders])\n\n const updateHeader = useCallback(\n (key: string, field: 'name' | 'value' | 'active', value: string | boolean) => {\n if (!key) return\n setHeaders({ ...headers, [key]: { ...headers[key], [field]: value } })\n },\n [headers, setHeaders],\n )\n\n return (\n <div className=\"h-full max-h-full grid grid-rows-[auto_1fr]\">\n <div className=\"grid px-4 border-b h-10 items-center grid-cols-[auto_1fr]\">\n <Button size=\"sm\" onClick={addHeader}>\n <Plus className=\"h-3 w-3\" />\n Add\n </Button>\n </div>\n\n <div className=\"p-2\">\n {Object.entries(headers).map(([key, header]) => (\n <ConfigurationListItem key={key} value={header} id={key} onUpdate={updateHeader} onRemove={removeHeaders} />\n ))}\n\n {Object.entries(headers).length === 0 && (\n <div className=\"grid grid-cols-1 items-center h-full\">\n <div className=\"text-sm text-muted-foreground text-center\">There are no headers in this endpoint</div>\n </div>\n )}\n </div>\n </div>\n )\n}\n","import { useMemo } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport {\n getPathParamsSelector,\n getQueryParamsSelector,\n type UseEndpointConfiguration,\n useEndpointConfiguration,\n} from './use-endpoint-configuration'\n\nconst queryParamsSelector = (state: UseEndpointConfiguration) =>\n Object.values(getQueryParamsSelector(state)).filter(\n (param) => param.active && param.value !== '' && param.name !== '',\n )\n\nexport const usePathUrl = (path: string) => {\n const pathParams = useEndpointConfiguration(useShallow(getPathParamsSelector))\n const queryParams = useEndpointConfiguration(useShallow(queryParamsSelector))\n\n return useMemo(() => {\n const url = path.replace(/:(\\w+)/g, (match, p1) => {\n return pathParams[p1]?.value || match\n })\n return (\n url + (queryParams.length > 0 ? `?${queryParams.map((param) => `${param.name}=${param.value}`).join('&')}` : '')\n )\n }, [path, pathParams, queryParams])\n}\n","import { Button, cn } from '@motiadev/ui'\nimport { Check, Copy } from 'lucide-react'\nimport { type FC, useState } from 'react'\nimport { usePathUrl } from '../hooks/use-path-url'\n\ninterface EndpointPathPreviewProps {\n path: string\n baseUrl?: string\n}\n\nexport const EndpointPathPreview: FC<EndpointPathPreviewProps> = ({ path, baseUrl = window.location.origin }) => {\n const pathUrl = usePathUrl(path)\n const fullUrl = `${baseUrl}${pathUrl}`\n const [copied, setCopied] = useState(false)\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(fullUrl)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n } catch (err) {\n console.error('Failed to copy URL:', err)\n }\n }\n\n return (\n <div className=\"grid grid-cols-[auto_1fr] items-center gap-5 px-5 relative border-b border-border\">\n <div className=\"text-sm font-medium py-2\">URL Preview</div>\n\n <div className=\"bg-muted-foreground/10 box-border grid grid-cols-[1fr_auto] gap-1 h-6 items-center px-2 py-1 rounded border border-border\">\n <div className=\"min-w-0\">\n <div className=\"font-medium text-xs text-muted-foreground truncate\" title={fullUrl}>\n {fullUrl}\n </div>\n </div>\n\n <Button\n onClick={handleCopy}\n className={cn(\n 'w-3 h-3 grid place-items-center transition-colors cursor-pointer',\n copied ? 'text-green-400' : 'text-muted-foreground',\n )}\n variant=\"icon\"\n size=\"sm\"\n aria-label=\"Copy URL\"\n >\n {copied ? <Check className=\"w-2.5 h-2.5\" /> : <Copy className=\"w-2.5 h-2.5\" />}\n </Button>\n </div>\n </div>\n )\n}\n","import { Button } from '@motiadev/ui'\nimport { Plus } from 'lucide-react'\nimport { useCallback, useMemo } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { ConfigurationListItem } from '../components/configuration-list-item'\nimport { EndpointPathPreview } from '../components/endpoint-path-preview'\nimport {\n getPathParamsSelector,\n getQueryParamsSelector,\n useEndpointConfiguration,\n} from '../hooks/use-endpoint-configuration'\n\ntype SidePanelParamsTabProps = {\n path: string\n}\n\nexport const SidePanelParamsTab = ({ path }: SidePanelParamsTabProps) => {\n const { setQueryParams, removeQueryParams, setPathParams } = useEndpointConfiguration()\n const queryParams = useEndpointConfiguration(useShallow(getQueryParamsSelector))\n const pathParams = useEndpointConfiguration(useShallow(getPathParamsSelector))\n const pathParamsConfig = useMemo(() => {\n const params = path.match(/:(\\w+)/g)\n return (\n params?.map((param) => {\n return { name: param.slice(1), value: pathParams[param.slice(1)]?.value ?? '', active: true }\n }) ?? []\n )\n }, [path])\n\n const addParam = useCallback(() => {\n const newParam = {\n name: '',\n value: '',\n active: true,\n }\n setQueryParams({ ...queryParams, [new Date().getTime().toString()]: newParam })\n }, [queryParams, setQueryParams])\n\n const updateParam = useCallback(\n (key: string, field: 'name' | 'value' | 'active', value: string | boolean) => {\n if (!key) return\n setQueryParams({ ...queryParams, [key]: { ...queryParams[key], [field]: value } })\n },\n [queryParams, setQueryParams],\n )\n\n const updatePathParam = useCallback(\n (key: string, field: 'name' | 'value' | 'active', value: string | boolean) => {\n if (!key) return\n setPathParams({ ...pathParams, [key]: { ...pathParams[key], [field]: value } })\n },\n [pathParams, setPathParams],\n )\n\n return (\n <div className=\"h-full grid grid-rows-[auto_auto_1fr]\">\n <div className=\"grid px-4 border-b h-10 items-center grid-cols-[auto_1fr]\">\n <Button size=\"sm\" onClick={addParam}>\n <Plus className=\"h-3 w-3\" />\n Add\n </Button>\n </div>\n <EndpointPathPreview path={path} />\n\n <div className=\"grid grid-rows-[1fr_1fr]\">\n {pathParamsConfig.length > 0 && (\n <div className=\"p-2\">\n <div className=\"text-sm font-medium pl-3\">Path variables</div>\n {pathParamsConfig.map((pathName) => (\n <ConfigurationListItem\n key={pathName.name}\n value={{ name: pathName.name, value: pathName.value, active: pathName.active }}\n id={pathName.name}\n required={true}\n onUpdate={updatePathParam}\n />\n ))}\n </div>\n )}\n\n <div className=\"p-2 border-b border-border\">\n <div className=\"text-sm font-medium pl-3\">Query parameters</div>\n {Object.entries(queryParams).map(([key, param]) => (\n <ConfigurationListItem\n key={key}\n value={param}\n id={key}\n onUpdate={updateParam}\n onRemove={removeQueryParams}\n />\n ))}\n\n {Object.entries(queryParams).length === 0 && (\n <div className=\"grid grid-cols-1 items-center h-full\">\n <div className=\"text-sm text-muted-foreground text-center\">\n There are no query params in this endpoint\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import { useStreamItem } from '@motiadev/stream-client-react'\n\nexport const useStateStream = (object: Record<string, any> | undefined) => {\n const { __motia, ...rest } = typeof object === 'string' ? {} : object || {}\n const { data } = useStreamItem(__motia)\n const originalData = Array.isArray(object) ? object : rest || object\n\n if (typeof object === 'string') {\n return {\n data: object,\n originalData: object,\n isStreamed: false,\n }\n }\n\n return {\n data: JSON.stringify(data || originalData, null, 2),\n originalData,\n isStreamed: !!__motia,\n }\n}\n","const statusMessages: Record<number, string> = {\n // 1xx Informational\n 100: 'Continue',\n 101: 'Switching Protocols',\n 102: 'Processing',\n 103: 'Early Hints',\n\n // 2xx Success\n 200: 'OK',\n 201: 'Created',\n 202: 'Accepted',\n 203: 'Non-Authoritative Information',\n 204: 'No Content',\n 205: 'Reset Content',\n 206: 'Partial Content',\n 207: 'Multi-Status',\n 208: 'Already Reported',\n 226: 'IM Used',\n\n // 3xx Redirection\n 300: 'Multiple Choices',\n 301: 'Moved Permanently',\n 302: 'Found',\n 303: 'See Other',\n 304: 'Not Modified',\n 305: 'Use Proxy',\n 307: 'Temporary Redirect',\n 308: 'Permanent Redirect',\n\n // 4xx Client Error\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Timeout',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed',\n 413: 'Payload Too Large',\n 414: 'URI Too Long',\n 415: 'Unsupported Media Type',\n 416: 'Range Not Satisfiable',\n 417: 'Expectation Failed',\n 418: \"I'm a teapot\",\n 421: 'Misdirected Request',\n 422: 'Unprocessable Entity',\n 423: 'Locked',\n 424: 'Failed Dependency',\n 425: 'Too Early',\n 426: 'Upgrade Required',\n 428: 'Precondition Required',\n 429: 'Too Many Requests',\n 431: 'Request Header Fields Too Large',\n 451: 'Unavailable For Legal Reasons',\n\n // 5xx Server Error\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates',\n 507: 'Insufficient Storage',\n 508: 'Loop Detected',\n 510: 'Not Extended',\n 511: 'Network Authentication Required',\n}\n\nexport const getStatusMessage = (statusCode: number) => {\n return statusMessages[statusCode] || 'Unknown'\n}\n","import { cn } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport { getStatusMessage } from './reponse-code/utils'\n\ntype ResponseCodeProps = {\n statusCode: number\n}\n\nexport const ResponseCode: FC<ResponseCodeProps> = ({ statusCode }) => {\n const statusMessage = getStatusMessage(statusCode)\n const isSuccess = statusCode > 0 && statusCode < 400\n const isWarning = statusCode >= 400 && statusCode < 500\n const isError = statusCode >= 500\n\n return (\n <div\n className={cn(\n 'px-2 py-1 rounded-sm flex items-center gap-1',\n isWarning && 'dark:bg-[#EAB71F]/20 dark:text-[#EAB71F] bg-[#EAB71F] text-white',\n isError && 'dark:bg-[#F8367D]/20 dark:text-[#F8367D] bg-[#F8367D] text-white',\n isSuccess && 'dark:bg-accent-200 dark:text-primary bg-accent text-white',\n )}\n >\n <span className=\"font-bold font-mono\">{statusCode}</span> {statusMessage}\n </div>\n )\n}\n","import { Button, useThemeStore } from '@motiadev/ui'\nimport { Download } from 'lucide-react'\nimport type React from 'react'\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'\nimport { atomDark, oneLight } from 'react-syntax-highlighter/dist/esm/styles/prism'\n\ntype CodeDisplayProps = {\n code: string\n blob: Blob | undefined\n contentType: string\n}\n\nconst codeTagProps = {\n style: {\n fontFamily: 'DM Mono, monospace',\n fontSize: '16px',\n },\n}\n\nconst customStyle = {\n margin: 0,\n borderRadius: 0,\n padding: 0,\n}\n\nconst useLanguage = (contentType: string) => {\n if (contentType?.includes('json')) {\n return 'json'\n }\n if (contentType?.includes('html')) {\n return 'html'\n }\n return 'text'\n}\n\nexport const ResponseContent: React.FC<CodeDisplayProps> = ({ code, blob, contentType }) => {\n const theme = useThemeStore((state) => state.theme)\n const themeStyle = theme === 'dark' ? atomDark : oneLight\n const language = useLanguage(contentType)\n\n const onDownload = () => {\n if (blob) {\n const url = URL.createObjectURL(blob)\n window.open(url, '_blank')\n }\n }\n\n return (\n <div className=\"flex flex-col h-full overflow-y-auto\">\n {blob && (\n <div className=\"flex p-8 justify-center\">\n <Button variant=\"default\" onClick={onDownload}>\n <Download className=\"h-4 w-4\" /> Download\n </Button>\n </div>\n )}\n\n {!blob && code && (\n <SyntaxHighlighter\n showLineNumbers\n language={language}\n style={themeStyle}\n codeTagProps={codeTagProps}\n customStyle={customStyle}\n wrapLines\n >\n {code}\n </SyntaxHighlighter>\n )}\n </div>\n )\n}\n","import { Button, Tabs, TabsContent, TabsList, TabsTrigger } from '@motiadev/ui'\nimport { X } from 'lucide-react'\nimport { memo, useState } from 'react'\nimport { getResponseSelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration'\nimport { useStateStream } from '../hooks/use-state-stream'\nimport { ResponseCode } from './response-code'\nimport { ResponseContent } from './response-content'\n\ntype ActiveTab = 'preview' | 'headers'\n\nexport const SidePanelResponse = memo(() => {\n const { setResponse } = useEndpointConfiguration()\n const response = useEndpointConfiguration(getResponseSelector)\n const { data } = useStateStream(response?.body instanceof Blob ? undefined : response?.body)\n const [activeTab, setActiveTab] = useState<ActiveTab>('preview')\n const onClose = () => setResponse(undefined)\n\n if (!response) {\n return null\n }\n\n return (\n <Tabs\n value={activeTab}\n onValueChange={(value: string) => setActiveTab(value as ActiveTab)}\n className=\"border-l border-border\"\n data-testid=\"endpoint-response-container\"\n >\n <div className=\"grid grid-cols-[1fr_auto] items-center h-10 border-b px-5 bg-card\">\n <TabsList>\n <TabsTrigger value=\"preview\" className=\"cursor-pointer\">\n Preview\n </TabsTrigger>\n <TabsTrigger value=\"headers\" className=\"grid grid-cols-[auto_auto] gap-2 items-center cursor-pointer\">\n Headers\n </TabsTrigger>\n </TabsList>\n <Button variant=\"ghost\" size=\"icon\" onClick={onClose}>\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"sticky bottom-0 border-b border-border p-3 text-sm flex items-center gap-1 font-medium\">\n <div className=\"flex flex-row items-center flex-1 gap-3\">\n <ResponseCode statusCode={response.statusCode} />\n {!!response.executionTime && (\n <div className=\"text-muted-foreground bg-muted-foreground/10 px-2 py-1 rounded-sm\">\n {response.executionTime}ms\n </div>\n )}\n </div>\n </div>\n\n <TabsContent value=\"preview\">\n <ResponseContent\n code={data}\n blob={response?.body instanceof Blob ? response.body : undefined}\n contentType={response.headers['content-type']}\n />\n </TabsContent>\n\n <TabsContent value=\"headers\">\n <div className=\"grid grid-cols-[auto_minmax(0,1fr)] gap-4 p-4 overflow-auto auto-rows-max h-full\">\n {response.headers &&\n Object.entries(response.headers).map(([key, value]) => (\n <>\n <span className=\"font-bold text-sm h-8 items-center grid whitespace-nowrap\">{key}</span>\n <span className=\"text-sm text-muted-foreground h-8 items-center grid whitespace-nowrap\">{value}</span>\n </>\n ))}\n </div>\n </TabsContent>\n </Tabs>\n )\n})\n","import { Button } from '@motiadev/ui'\nimport { Loader2 } from 'lucide-react'\nimport { memo, useState } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { getBodySelector, getHeadersSelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration'\nimport { usePathUrl } from '../hooks/use-path-url'\n\ntype TriggerButtonProps = {\n method: string\n path: string\n}\n\nexport const TriggerButton = memo(({ method, path }: TriggerButtonProps) => {\n const { setResponse } = useEndpointConfiguration()\n const headers = useEndpointConfiguration(useShallow(getHeadersSelector))\n const body = useEndpointConfiguration(useShallow(getBodySelector))\n const pathUrl = usePathUrl(path)\n\n const [isLoading, setIsLoading] = useState(false)\n\n const onClick = async () => {\n try {\n setIsLoading(true)\n\n const _headers = Object.values(headers)\n .filter((header) => header.active && header.name !== '' && header.value !== '')\n .reduce(\n (acc, header) => {\n acc[header.name.toLowerCase()] = header.value\n return acc\n },\n {} as Record<string, string>,\n )\n\n const startTime = Date.now()\n const response = await fetch(pathUrl, {\n method: method,\n headers: _headers,\n body: ['GET', 'DELETE', 'HEAD', 'OPTIONS'].includes(method) ? null : body,\n })\n\n setResponse(response, startTime)\n } catch (error) {\n console.error('Error triggering endpoint:', error)\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n <Button variant=\"accent\" size=\"sm\" onClick={onClick} disabled={isLoading} data-testid=\"endpoint-play-button\">\n {isLoading ? <Loader2 className=\"animate-spin\" /> : 'Send'}\n </Button>\n )\n})\n","import { BackgroundEffect, Badge, Button, cn, Tabs, TabsContent, TabsList, TabsTrigger } from '@motiadev/ui'\nimport { Book, X } from 'lucide-react'\nimport { type FC, memo, useState } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { EndpointPath } from '../components/endpoint-path'\nimport {\n getHeadersSelector,\n getQueryParamsSelector,\n getResponseSelector,\n type UseEndpointConfiguration,\n useEndpointConfiguration,\n} from '../hooks/use-endpoint-configuration'\nimport { usePathParams } from '../hooks/use-path-params'\nimport { SpecSidePanel } from '../spec/spec-side-panel'\nimport type { ApiEndpoint } from '../types/endpoint'\nimport { SidePanelBodyTab } from './side-panel-body-tab'\nimport { SidePanelHeadersTab } from './side-panel-headers-tab'\nimport { SidePanelParamsTab } from './side-panel-params-tab'\nimport { SidePanelResponse } from './side-panel-response'\nimport { TriggerButton } from './trigger-button'\n\ntype EndpointSidePanelProps = { endpoint: ApiEndpoint; onClose: () => void }\n\ntype ActiveTab = 'body' | 'headers' | 'params'\n\nconst headersCountSelector = (state: UseEndpointConfiguration) => Object.keys(getHeadersSelector(state)).length\nconst hasResponseSelector = (state: UseEndpointConfiguration) => getResponseSelector(state) !== undefined\nconst paramsCountSelector = (state: UseEndpointConfiguration) => Object.keys(getQueryParamsSelector(state)).length\n\nexport const SidePanel: FC<EndpointSidePanelProps> = memo(({ endpoint, onClose }) => {\n const isGetOrDelete = endpoint.method === 'GET' || endpoint.method === 'DELETE'\n const [activeTab, setActiveTab] = useState<ActiveTab>(isGetOrDelete ? 'params' : 'body')\n const [isSpecOpen, setIsSpecOpen] = useState(false)\n const headersCount = useEndpointConfiguration(useShallow(headersCountSelector))\n const hasResponse = useEndpointConfiguration(useShallow(hasResponseSelector))\n const pathParamsCount = usePathParams(endpoint.path).length\n const queryParamsCount = useEndpointConfiguration(useShallow(paramsCountSelector))\n const paramsCount = queryParamsCount + pathParamsCount\n\n return (\n <div\n className=\"isolate grid grid-cols-1 overflow-y-auto min-w-0 grid-rows-[auto_1fr] border-l border-border\"\n data-testid=\"endpoint-details-panel\"\n >\n <BackgroundEffect />\n <div className=\"grid grid-cols-[1fr_1fr_auto] items-start gap-4 px-5 py-4 border-b bg-card w-full\">\n <div className=\"grid grid-rows-2 gap-2\">\n <EndpointPath method={endpoint.method} path={endpoint.path} />\n {endpoint.description && <p className=\"text-sm text-muted-foreground\">{endpoint.description}</p>}\n </div>\n <div className=\"flex items-end justify-end\">\n <Button\n variant=\"icon\"\n size=\"icon\"\n onClick={() => setIsSpecOpen(!isSpecOpen)}\n data-testid=\"endpoint-spec-button\"\n >\n <Book />\n </Button>\n </div>\n <Button variant=\"icon\" size=\"icon\" onClick={onClose}>\n <X />\n </Button>\n </div>\n <div className={cn('grid grid-cols-[minmax(380px,1fr)_minmax(auto,1fr)]', !hasResponse && 'grid-cols-1')}>\n <Tabs value={activeTab} onValueChange={(value: string) => setActiveTab(value as ActiveTab)}>\n <div className=\"grid grid-cols-[1fr_auto] items-center h-10 border-b px-5 bg-card\">\n <TabsList>\n <TabsTrigger\n value=\"params\"\n className=\"grid grid-cols-[auto_auto] gap-2 items-center cursor-pointer\"\n data-testid=\"endpoint-params-tab\"\n >\n Params\n <Badge variant=\"outline\" className=\"h-4 px-1.5 text-xs\">\n {paramsCount}\n </Badge>\n </TabsTrigger>\n <TabsTrigger value=\"body\" className=\"cursor-pointer\" data-testid=\"endpoint-body-tab\">\n Body\n </TabsTrigger>\n <TabsTrigger\n value=\"headers\"\n className=\"grid grid-cols-[auto_auto] gap-2 items-center cursor-pointer\"\n data-testid=\"endpoint-headers-tab\"\n >\n Headers\n <Badge variant=\"outline\" className=\"h-4 px-1.5 text-xs\">\n {headersCount}\n </Badge>\n </TabsTrigger>\n </TabsList>\n <TriggerButton method={endpoint.method} path={endpoint.path.toString()} />\n </div>\n\n <TabsContent value=\"params\">\n <SidePanelParamsTab path={endpoint.path} />\n </TabsContent>\n <TabsContent value=\"body\">\n <SidePanelBodyTab schema={endpoint.bodySchema} />\n </TabsContent>\n\n <TabsContent value=\"headers\">\n <SidePanelHeadersTab />\n </TabsContent>\n </Tabs>\n <SidePanelResponse />\n </div>\n\n {isSpecOpen && <SpecSidePanel endpoint={endpoint} onClose={() => setIsSpecOpen(false)} />}\n </div>\n )\n})\n","import { cn } from '@motiadev/ui'\nimport { useCallback, useMemo, useState } from 'react'\nimport { EndpointsSearch } from './components/endpoints-search'\nimport { FlowGroup } from './components/flow-group'\nimport { useEndpointConfiguration } from './hooks/use-endpoint-configuration'\nimport { useGetEndpoints } from './hooks/use-get-endpoints'\nimport { SidePanel } from './play/side-panel'\nimport type { ApiEndpoint } from './types/endpoint'\n\nexport const EndpointsPage = () => {\n const { endpoints, groupedEndpoints } = useGetEndpoints()\n const { selectedEndpointId, setSelectedEndpointId, toggleFlowGroupStatus, flowGroupStatus } =\n useEndpointConfiguration()\n const selectedEndpoint = useMemo(\n () => endpoints.find((endpoint: ApiEndpoint) => endpoint.id === selectedEndpointId),\n [endpoints, selectedEndpointId],\n )\n\n const onClose = useCallback(() => {\n setSelectedEndpointId('')\n }, [setSelectedEndpointId])\n\n const [search, setSearch] = useState('')\n\n const filteredEndpoints = useMemo(() => {\n return Object.entries(groupedEndpoints).filter(([_, endpoints]) => {\n return endpoints.some(\n (endpoint) =>\n endpoint.method?.toLowerCase().includes(search.toLowerCase()) ||\n endpoint.path?.toLowerCase().includes(search.toLowerCase()),\n )\n })\n }, [groupedEndpoints, search])\n\n return (\n <div\n className={cn('grid h-full max-h-full', selectedEndpoint ? 'grid-cols-[300px_1fr] ' : 'grid-cols-1')}\n data-testid=\"endpoints-list\"\n >\n <div className=\"grid grid-rows-[auto_1fr] h-full overflow-auto min-w-0\">\n <EndpointsSearch value={search} onChange={setSearch} onClear={() => setSearch('')} />\n <div className=\"grid grid-cols-1 auto-rows-max overflow-auto min-w-0\">\n {filteredEndpoints.map(([flow, endpoints]) => {\n const isSelected = endpoints.some((endpoint) => endpoint.id === selectedEndpointId)\n const isOpen = !flowGroupStatus[flow] || isSelected || search !== ''\n return (\n <FlowGroup\n key={flow}\n flow={flow}\n endpoints={endpoints as ApiEndpoint[]}\n isOpen={isOpen}\n isSelected={isSelected}\n onToggle={toggleFlowGroupStatus}\n onClearSelection={() => setSelectedEndpointId('')}\n selectedEndpointId={selectedEndpointId}\n onSelectEndpoint={setSelectedEndpointId}\n />\n )\n })}\n </div>\n </div>\n\n {selectedEndpoint && <SidePanel endpoint={selectedEndpoint} onClose={onClose} />}\n </div>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["cn","Input","Search","X","EndpointsSearchProps","value","onChange","onClear","EndpointsSearch","t0","$","_c","$i","Symbol","for","t1","t2","e","target","t3","t4","t5","t6","visible","invisible","t7","t8","cn","React","memo","ApiRouteMethod","getMethodStyles","method","toUpperCase","BadgeProps","HTMLAttributes","HTMLDivElement","variant","EndpointBadge","t0","$","_c","$i","Symbol","for","className","props","t1","methodClasses","t2","FC","useMemo","ApiRouteMethod","EndpointBadge","EndpointPathProps","method","path","PathSeparator","$","_c","$i","Symbol","for","t0","EndpointPath","t1","parts","split","filter","Boolean","partsLength","length","t2","part","index","isLast","key","separator","undefined","startsWith","flatMap","pathView","t3","t4","t5","t6","cn","FC","ApiEndpoint","EndpointPath","EndpointItemProps","endpoint","isSelected","isLast","onSelect","id","EndpointItem","t0","$","_c","$i","Symbol","for","t1","method","path","t2","t3","t4","t5","t6","t7","description","t8","t9","cn","ChevronDown","FC","ApiEndpoint","EndpointItem","FlowGroupProps","flow","endpoints","isOpen","isSelected","onToggle","onClearSelection","selectedEndpointId","onSelectEndpoint","id","FlowGroup","t0","$","_c","$i","Symbol","for","t1","t2","t3","t4","t5","t6","hidden","t7","t8","t9","t10","t11","t12","t13","t14","t15","length","endpoint","index","map","t16","create","createJSONStorage","devtools","persist","ConfigurationLitItem","name","value","active","Headers","key","Params","defaultHeaders","CONTENT_TYPE","USER_AGENT","ACCEPT","ResponseData","headers","Record","body","statusCode","executionTime","Actions","setResponse","response","Response","startTime","setHeaders","removeHeaders","setBody","setSelectedEndpointId","selectedEndpointId","setQueryParams","params","removeQueryParams","setPathParams","pathParams","removePathParams","setBodyIsValid","bodyIsValid","toggleFlowGroupStatus","flow","State","queryParams","flowGroupStatus","UseEndpointConfiguration","getHeadersSelector","state","getBodyIsValidSelector","getBodySelector","getResponseSelector","undefined","getQueryParamsSelector","getPathParamsSelector","useEndpointConfiguration","set","newQueryParams","newPathParams","contentType","get","includes","text","json","blob","toJSON","error","console","Date","now","status","Object","fromEntries","entries","currentHeaders","newHeaders","storage","localStorage","useStreamGroup","useMemo","ApiEndpoint","useGetEndpoints","$","_c","$i","Symbol","for","t0","streamName","groupId","data","endpoints","t1","reduce","_temp","Record","groupedEndpoints","t2","acc","endpoint","flows","length","forEach","flow","push","usePathParams","path","pathParams","match","map","param","slice","resolveRef","ref","rootSchema","Record","startsWith","undefined","defName","replace","$defs","convertSchemaToJson","schema","effectiveRootSchema","$ref","resolvedSchema","anyOf","Array","isArray","nonNullSchema","find","item","type","result","properties","Object","entries","forEach","key","value","items","enum","description","useEffect","useState","convertSchemaToJson","useJsonSchemaToJson","schema","$","_c","$i","Symbol","for","body","setBody","t0","t1","JSON","stringify","t2","Panel","FC","ReactJson","ApiEndpoint","Props","endpoint","value","panelName","EndpointBodyPanel","t0","$","_c","$i","Symbol","for","shouldHaveBody","includes","method","toLowerCase","t1","t2","JSON","parse","t3","backgroundColor","t4","t5","Panel","FC","usePathParams","ApiEndpoint","Props","endpoint","EndpointPathParamsPanel","t0","$","_c","$i","Symbol","for","pathParams","path","length","t1","gridTemplateColumns","t2","map","_temp","t3","param","Panel","FC","Fragment","ApiEndpoint","Props","endpoint","EndpointQueryParamsPanel","t0","$","_c","$i","Symbol","for","queryParams","length","t1","gridTemplateColumns","gridTemplateRows","t2","map","_temp","t3","param","name","description","Tabs","TabsContent","TabsList","TabsTrigger","useThemeStore","FC","useMemo","ReactJson","convertSchemaToJson","EndpointResponseItem","responseCode","bodySchema","Record","EndpointResponseProps","items","EndpointResponseSchemaItem","t0","$","_c","$i","Symbol","for","theme","_temp","t1","schema","description","t2","backgroundColor","t3","EndpointResponseSchema","length","map","_temp2","t4","_temp3","t5","store","item","props","Sidebar","X","FC","EndpointPath","useJsonSchemaToJson","ApiEndpoint","EndpointBodyPanel","EndpointPathParamsPanel","EndpointQueryParamsPanel","EndpointResponseSchema","Props","endpoint","onClose","SpecSidePanel","t0","$","_c","$i","Symbol","for","body","bodySchema","t1","method","path","t2","t3","icon","onClick","t4","t5","t6","t7","responseSchema","Object","entries","map","_temp","t8","description","status","schema","responseCode","Editor","useMonaco","useThemeStore","FC","useEffect","useLayoutEffect","useMemo","useRef","useState","JsonEditorProps","value","schema","Record","onChange","onValidate","isValid","language","readOnly","JsonEditor","t0","$","_c","$i","Symbol","for","t1","t2","undefined","monaco","theme","_temp","editorTheme","editor","setEditor","resizeAnimationFrameRef","isValidatingRef","t3","t4","defineTheme","base","inherit","rules","colors","focusBorder","t5","t6","languages","typescript","javascriptDefaults","setCompilerOptions","isolatedModules","json","jsonDefaults","setDiagnosticsOptions","schemas","uri","window","location","href","fileMatch","t7","t8","setTheme","t10","t9","container","getContainerDomNode","parentElement","handleResize","current","cancelAnimationFrame","requestAnimationFrame","width","height","getBoundingClientRect","layout","resizeObserver","ResizeObserver","observe","disconnect","t11","t12","model","getModel","isEmptyWithSchema","timeoutId","setTimeout","markers","getModelMarkers","resource","length","clearTimeout","t13","JSON","stringify","editorKey","t14","value_0","t15","markers_0","isEmptyWithSchema_0","t16","enabled","t17","automaticLayout","scrollBeyondLastLine","minimap","overviewRulerLanes","t18","state","CircleX","FC","memo","useCallback","useEffect","useRef","useShallow","JsonEditor","getBodyIsValidSelector","getBodySelector","useEndpointConfiguration","convertSchemaToJson","SidePanelBodyTabProps","schema","Record","SidePanelBodyTab","t0","$","_c","$i","Symbol","for","setBody","setBodyIsValid","bodyIsValid","body","previousSchemaRef","userClearedRef","t1","t2","schemaChanged","current","JSON","stringify","t3","value","isEmptyWithSchema","handleBodyChange","t4","t5","t6","Button","Checkbox","cn","Input","AlertCircle","Check","Trash2","FC","memo","useCallback","useRef","useState","ConfigurationLitItem","ConfigurationListItemProps","value","id","onUpdate","key","field","onRemove","required","ConfigurationListItem","t0","$","_c","$i","Symbol","for","t1","undefined","activeConfiguration","setActiveConfiguration","valueToDelete","setValueToDelete","deleteTimeout","isActive","t2","clearTimeout","current","setTimeout","onDelete","t3","onMouseOver","t4","onMouseLeave","t5","t6","t7","checked","t8","t9","active","t10","t11","t12","t13","e","target","t14","name","t15","t16","t17","e_0","t18","t19","t20","t21","t22","t23","t24","t25","t26","Button","Plus","useCallback","useShallow","ConfigurationListItem","getHeadersSelector","useEndpointConfiguration","SidePanelHeadersTab","setHeaders","removeHeaders","headers","addHeader","newHeader","name","value","active","Date","getTime","toString","updateHeader","key","field","Object","entries","map","header","length","useMemo","useShallow","getPathParamsSelector","getQueryParamsSelector","UseEndpointConfiguration","useEndpointConfiguration","queryParamsSelector","state","Object","values","filter","param","active","value","name","usePathUrl","path","$","_c","$i","Symbol","for","pathParams","queryParams","t0","t1","match","p1","url","replace","t2","length","map","_temp","join","Button","cn","Check","Copy","FC","useState","usePathUrl","EndpointPathPreviewProps","path","baseUrl","EndpointPathPreview","t0","$","_c","$i","Symbol","for","t1","undefined","window","location","origin","pathUrl","fullUrl","copied","setCopied","t2","navigator","clipboard","writeText","setTimeout","t3","err","console","error","handleCopy","t4","t5","t6","t7","t8","t9","Button","Plus","useCallback","useMemo","useShallow","ConfigurationListItem","EndpointPathPreview","getPathParamsSelector","getQueryParamsSelector","useEndpointConfiguration","SidePanelParamsTabProps","path","SidePanelParamsTab","setQueryParams","removeQueryParams","setPathParams","queryParams","pathParams","pathParamsConfig","params","match","map","param","name","slice","value","active","addParam","newParam","Date","getTime","toString","updateParam","key","field","updatePathParam","length","pathName","Object","entries","useStreamItem","useStateStream","object","$","_c","$i","Symbol","for","t0","__motia","rest","data","originalData","Array","isArray","t1","isStreamed","JSON","stringify","t2","t3","statusMessages","Record","getStatusMessage","statusCode","cn","FC","getStatusMessage","ResponseCodeProps","statusCode","ResponseCode","t0","$","_c","$i","Symbol","for","t1","statusMessage","isSuccess","isWarning","isError","t2","t3","t4","t5","t6","t7","Button","useThemeStore","Download","React","Prism","SyntaxHighlighter","atomDark","oneLight","CodeDisplayProps","code","blob","Blob","contentType","codeTagProps","style","fontFamily","fontSize","customStyle","margin","borderRadius","padding","useLanguage","includes","ResponseContent","FC","t0","$","_c","$i","Symbol","for","theme","_temp","themeStyle","language","t1","url","URL","createObjectURL","window","open","onDownload","t2","t3","t4","state","Button","Tabs","TabsContent","TabsList","TabsTrigger","X","memo","useState","getResponseSelector","useEndpointConfiguration","useStateStream","ResponseCode","ResponseContent","ActiveTab","SidePanelResponse","$","_c","$i","Symbol","for","setResponse","response","data","body","Blob","undefined","activeTab","setActiveTab","t0","onClose","t1","value","t2","t3","t4","t5","statusCode","t6","executionTime","t7","t8","t9","headers","t10","t11","Object","entries","map","_temp","t12","t13","key","value_0","Button","Loader2","memo","useState","useShallow","getBodySelector","getHeadersSelector","useEndpointConfiguration","usePathUrl","TriggerButtonProps","method","path","TriggerButton","setResponse","headers","body","pathUrl","isLoading","setIsLoading","onClick","_headers","Object","values","filter","header","active","name","value","reduce","acc","toLowerCase","Record","startTime","Date","now","response","fetch","includes","error","console","BackgroundEffect","Badge","Button","cn","Tabs","TabsContent","TabsList","TabsTrigger","Book","X","FC","memo","useState","useShallow","EndpointPath","getHeadersSelector","getQueryParamsSelector","getResponseSelector","UseEndpointConfiguration","useEndpointConfiguration","usePathParams","SpecSidePanel","ApiEndpoint","SidePanelBodyTab","SidePanelHeadersTab","SidePanelParamsTab","SidePanelResponse","TriggerButton","EndpointSidePanelProps","endpoint","onClose","ActiveTab","headersCountSelector","state","Object","keys","length","hasResponseSelector","undefined","paramsCountSelector","SidePanel","t0","$","_c","$i","Symbol","for","isGetOrDelete","method","activeTab","setActiveTab","isSpecOpen","setIsSpecOpen","headersCount","hasResponse","pathParamsCount","path","queryParamsCount","paramsCount","t1","t2","t3","description","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","value","t14","t15","t16","t17","t18","t19","toString","t20","t21","t22","t23","bodySchema","t24","t25","t26","t27","t28","t29","cn","useCallback","useMemo","useState","EndpointsSearch","FlowGroup","useEndpointConfiguration","useGetEndpoints","SidePanel","ApiEndpoint","EndpointsPage","$","_c","$i","Symbol","for","endpoints","groupedEndpoints","selectedEndpointId","setSelectedEndpointId","toggleFlowGroupStatus","flowGroupStatus","t0","t1","endpoint","id","find","selectedEndpoint","onClose","search","setSearch","t2","Object","entries","filter","t3","endpoints_0","some","endpoint_0","method","toLowerCase","includes","path","filteredEndpoints","t4","t5","t6","t7","map","t8","flow","endpoints_1","isSelected","endpoint_1","isOpen","t9","t10"],"sources":["../src/components/endpoints-search.tsx","../src/components/endpoint-badge.tsx","../src/components/endpoint-path.tsx","../src/components/endpoint-item.tsx","../src/components/flow-group.tsx","../src/hooks/use-endpoint-configuration.ts","../src/hooks/use-get-endpoints.ts","../src/hooks/use-path-params.ts","../src/hooks/utils.ts","../src/hooks/use-json-schema-to-json.tsx","../src/spec/spec-body-panel.tsx","../src/spec/spec-path-params-panel.tsx","../src/spec/spec-query-params-panel.tsx","../src/spec/spec-response-schema.tsx","../src/spec/spec-side-panel.tsx","../src/components/json-editor.tsx","../src/play/side-panel-body-tab.tsx","../src/components/configuration-list-item.tsx","../src/play/side-panel-headers-tab.tsx","../src/hooks/use-path-url.ts","../src/components/endpoint-path-preview.tsx","../src/play/side-panel-params-tab.tsx","../src/hooks/use-state-stream.ts","../src/play/reponse-code/utils.ts","../src/play/response-code.tsx","../src/play/response-content.tsx","../src/play/side-panel-response.tsx","../src/play/trigger-button.tsx","../src/play/side-panel.tsx","../src/endpoints-page.tsx"],"sourcesContent":["import { cn, Input } from '@motiadev/ui'\nimport { Search, X } from 'lucide-react'\n\ntype EndpointsSearchProps = {\n value: string\n onChange: (value: string) => void\n onClear: () => void\n}\n\nexport const EndpointsSearch = ({ value, onChange, onClear }: EndpointsSearchProps) => {\n return (\n <div className=\"p-2 border-b gap-4\" data-testid=\"endpoints-search-container\">\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground/50\" />\n <Input\n variant=\"shade\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"px-9! font-medium\"\n placeholder=\"Search by Method or Path\"\n />\n <X\n className={cn(\n 'cursor-pointer absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground/50 hover:text-muted-foreground',\n {\n visible: value !== '',\n invisible: value === '',\n },\n )}\n onClick={onClear}\n />\n </div>\n </div>\n )\n}\n","import { cn } from '@motiadev/ui'\nimport type * as React from 'react'\nimport { memo } from 'react'\nimport type { ApiRouteMethod } from '../types/endpoint'\n\nconst getMethodStyles = (method: ApiRouteMethod): string => {\n switch (method.toUpperCase()) {\n case 'POST':\n return 'bg-[#258DC3]/15 text-[#258DC3]'\n case 'GET':\n return 'bg-[#709A2D]/15 text-[#709A2D]'\n case 'DELETE':\n return 'bg-[#DE2134]/15 text-[#DE2134]'\n case 'PUT':\n return 'bg-[#B9922D]/15 text-[#B9922D]'\n case 'PATCH':\n return 'bg-[#B9922D]/15 text-[#B9922D]'\n case 'HEAD':\n return 'bg-[#E221DF]/15 text-[#E221DF]'\n case 'OPTIONS':\n return 'bg-[#B9922D]/15 text-[#B9922D]'\n default:\n return 'bg-[#258DC3]/15 text-[#258DC3]' // default to GET\n }\n}\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n variant: ApiRouteMethod\n}\n\nexport const EndpointBadge = memo(({ className, variant, ...props }: BadgeProps) => {\n const baseClasses = 'rounded-lg px-2 py-0.5 text-xs font-mono font-bold transition-colors'\n const methodClasses = getMethodStyles(variant)\n\n return <div className={cn(baseClasses, methodClasses, className)} {...props} />\n})\n","import { type FC, useMemo } from 'react'\nimport type { ApiRouteMethod } from '../types/endpoint'\nimport { EndpointBadge } from './endpoint-badge'\n\ninterface EndpointPathProps {\n method: string\n path: string\n}\n\nconst PathSeparator = () => {\n return <div className=\"text-muted-foreground\">/</div>\n}\n\nexport const EndpointPath: FC<EndpointPathProps> = ({ method, path }) => {\n const pathView = useMemo(() => {\n const parts = path.split('/').filter(Boolean)\n const partsLength = parts.length - 1\n return parts.flatMap((part, index) => {\n const isLast = index === partsLength\n const key = `part-${part}-${index}`\n const separator = isLast ? undefined : <PathSeparator key={`separator-${key}`} />\n\n if (part.startsWith(':')) {\n return [\n <div\n key={key}\n className=\"bg-[#2862FE]/20 text-[#2862FE] rounded-sm px-1 py-0.5 text-sm font-mono font-bold font-medium\"\n >\n {part}\n </div>,\n separator,\n ]\n }\n return [<div key={key}>{part}</div>, separator]\n })\n }, [path])\n\n return (\n <div className=\"grid grid-cols-[auto_1fr] gap-2 items-center\">\n <EndpointBadge variant={method as ApiRouteMethod}>{method}</EndpointBadge>\n <span className=\"font-mono font-bold whitespace-nowrap flex flex-row gap-2 items-center truncate\">\n <PathSeparator />\n {pathView}\n </span>\n </div>\n )\n}\n","import { cn } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport type { ApiEndpoint } from '../types/endpoint'\nimport { EndpointPath } from './endpoint-path'\n\ntype EndpointItemProps = {\n endpoint: ApiEndpoint\n isSelected: boolean\n isLast: boolean\n onSelect: (id: string) => void\n}\n\nexport const EndpointItem: FC<EndpointItemProps> = ({ endpoint, isSelected, isLast, onSelect }) => (\n <div\n data-testid={`endpoint-${endpoint.method}-${endpoint.path}`}\n onClick={() => onSelect(endpoint.id)}\n className={cn(\n 'grid grid-cols-[auto_1fr] items-center justify-center px-[17px] select-none hover:bg-muted-foreground/10 cursor-pointer',\n isSelected && 'bg-muted-foreground/10',\n )}\n >\n {isLast ? (\n <svg width=\"14\" height=\"34\" viewBox=\"0 0 12 34\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6.5 16.5C6.50006 19.2614 8.7386 21.4999 11.5 21.5C11.7759 21.5003 12 21.724 12 22C12 22.276 11.7759 22.4997 11.5 22.5C8.18632 22.4999 5.50006 19.8137 5.5 16.5V0H6.5V16.5Z\"\n className=\"fill-[#555]\"\n />\n </svg>\n ) : (\n <svg width=\"14\" height=\"34\" viewBox=\"0 0 12 34\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6.5 0V11.5C6.50007 14.2614 8.73861 16.4999 11.5 16.5C11.7759 16.5003 12 16.724 12 17C12 17.276 11.7759 17.4997 11.5 17.5C9.41273 17.5 7.57486 16.4335 6.5 14.8164V34H5.5V0H6.5Z\"\n className=\"fill-[#555]\"\n />\n </svg>\n )}\n\n <div>\n <div className=\"grid grid-cols-[auto_1fr] items-center gap-3 px-2\">\n <EndpointPath method={endpoint.method} path={endpoint.path} />\n <span className=\"text-sm text-muted-foreground truncate\">{endpoint.description}</span>\n </div>\n </div>\n </div>\n)\n","import { cn } from '@motiadev/ui'\nimport { ChevronDown } from 'lucide-react'\nimport type { FC } from 'react'\nimport type { ApiEndpoint } from '../types/endpoint'\nimport { EndpointItem } from './endpoint-item'\n\ntype FlowGroupProps = {\n flow: string\n endpoints: ApiEndpoint[]\n isOpen: boolean\n isSelected: boolean\n onToggle: (flow: string) => void\n onClearSelection: () => void\n selectedEndpointId?: string\n onSelectEndpoint: (id: string) => void\n}\n\nexport const FlowGroup: FC<FlowGroupProps> = ({\n flow,\n endpoints,\n isOpen,\n isSelected,\n onToggle,\n onClearSelection,\n selectedEndpointId,\n onSelectEndpoint,\n}: FlowGroupProps) => {\n return (\n <div className=\"pt-2\">\n <button\n data-testid={`flow-group-${flow}`}\n className=\"w-full grid grid-cols-[auto_1fr] items-center gap-3 hover:bg-muted/40 cursor-pointer min-h-8.5 select-none hover:bg-muted-foreground/10 px-4\"\n onClick={() => {\n if (isSelected) {\n onClearSelection()\n }\n onToggle(flow)\n }}\n >\n <div className=\"grid grid-cols-1\">\n <ChevronDown\n className={cn('w-4 h-4 transition-transform duration-300 text-[#555]', { 'rotate-180 mt-2.5': isOpen })}\n strokeWidth={1.5}\n />\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"2\"\n height=\"10\"\n viewBox=\"0 0 2 10\"\n fill=\"none\"\n className={cn('ml-[7px]', { hidden: !isOpen })}\n >\n <path\n d=\"M1.5 1C1.5 0.723858 1.27614 0.5 1 0.5C0.723858 0.5 0.5 0.723858 0.5 1H1H1.5ZM1 1H0.5V10H1H1.5V1H1Z\"\n className=\"fill-[#555]\"\n />\n </svg>\n </div>\n <h3 className=\"text-sm font-medium text-left\">{flow}</h3>\n </button>\n\n <div className={cn('grid grid-cols-1 items-center justify-center', { hidden: !isOpen })}>\n {endpoints.map((endpoint: ApiEndpoint, index: number) => (\n <EndpointItem\n key={endpoint.id}\n endpoint={endpoint}\n isSelected={selectedEndpointId === endpoint.id}\n isLast={index === endpoints.length - 1}\n onSelect={onSelectEndpoint}\n />\n ))}\n </div>\n </div>\n )\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, devtools, persist } from 'zustand/middleware'\n\nexport type ConfigurationLitItem = {\n name: string\n value: string\n active: boolean\n}\n\nexport type Headers = {\n [key: string]: ConfigurationLitItem\n}\n\nexport type Params = {\n [key: string]: ConfigurationLitItem\n}\n\nconst defaultHeaders: Headers = {\n CONTENT_TYPE: { name: 'Content-Type', value: 'application/json', active: true },\n USER_AGENT: { name: 'User-Agent', value: 'Motia/1.0', active: true },\n ACCEPT: { name: 'Accept', value: 'application/json', active: true },\n}\n\nexport type ResponseData = {\n headers: Record<string, string>\n body: Record<string, any>\n statusCode: number\n executionTime: number\n}\n\ntype Actions = {\n setResponse: (response: Response | undefined, startTime?: number) => void\n setHeaders: (headers: Headers) => void\n removeHeaders: (key: string) => void\n setBody: (body: string) => void\n setSelectedEndpointId: (selectedEndpointId: string | undefined) => void\n setQueryParams: (params: Params) => void\n removeQueryParams: (key: string) => void\n setPathParams: (pathParams: Params) => void\n removePathParams: (key: string) => void\n setBodyIsValid: (bodyIsValid: boolean) => void\n toggleFlowGroupStatus: (flow: string) => void\n}\n\ntype State = {\n selectedEndpointId: string\n headers: Record<string, Headers>\n body: Record<string, string>\n bodyIsValid: Record<string, boolean>\n response: Record<string, ResponseData | undefined>\n queryParams: Record<string, Params>\n pathParams: Record<string, Params>\n flowGroupStatus: Record<string, boolean>\n}\n\nexport type UseEndpointConfiguration = State & Actions\n\nexport const getHeadersSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.headers[selectedEndpointId] || defaultHeaders\n }\n return defaultHeaders\n}\n\nexport const getBodyIsValidSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.bodyIsValid[selectedEndpointId]\n }\n return true\n}\n\nexport const getBodySelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.body[selectedEndpointId] || ''\n }\n return ''\n}\n\nexport const getResponseSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.response[selectedEndpointId] || undefined\n }\n return undefined\n}\n\nexport const getQueryParamsSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.queryParams[selectedEndpointId] || {}\n }\n return {}\n}\n\nexport const getPathParamsSelector = (state: UseEndpointConfiguration) => {\n const selectedEndpointId = state.selectedEndpointId\n if (selectedEndpointId) {\n return state.pathParams[selectedEndpointId] || {}\n }\n return {}\n}\n\nexport const useEndpointConfiguration = create<UseEndpointConfiguration>()(\n persist(\n devtools((set) => ({\n selectedEndpointId: '',\n headers: {},\n body: {},\n bodyIsValid: {},\n response: {},\n queryParams: {},\n pathParams: {},\n flowGroupStatus: {},\n toggleFlowGroupStatus: (flow: string) =>\n set((state) => ({ flowGroupStatus: { ...state.flowGroupStatus, [flow]: !state.flowGroupStatus[flow] } })),\n setSelectedEndpointId: (selectedEndpointId: string) => set({ selectedEndpointId }),\n setQueryParams: (queryParams: Params) =>\n set((state) => ({ queryParams: { ...state.queryParams, [state.selectedEndpointId]: queryParams } })),\n removeQueryParams: (key: string) =>\n set((state) => {\n const newQueryParams = { ...state.queryParams[state.selectedEndpointId] }\n delete newQueryParams[key]\n return {\n queryParams: {\n ...state.queryParams,\n [state.selectedEndpointId]: newQueryParams,\n },\n }\n }),\n setPathParams: (pathParams: Params) =>\n set((state) => ({ pathParams: { ...state.pathParams, [state.selectedEndpointId]: pathParams } })),\n removePathParams: (key: string) =>\n set((state) => {\n const newPathParams = { ...state.pathParams[state.selectedEndpointId] }\n delete newPathParams[key]\n return {\n pathParams: {\n ...state.pathParams,\n [state.selectedEndpointId]: newPathParams,\n },\n }\n }),\n setHeaders: (headers: Headers) =>\n set((state) => ({ headers: { ...state.headers, [state.selectedEndpointId]: headers } })),\n setResponse: async (response: Response | undefined, startTime: number) => {\n if (!response) {\n set((state) => ({\n response: {\n ...state.response,\n [state.selectedEndpointId]: undefined,\n },\n }))\n return\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let body: any\n try {\n const contentType = response?.headers.get('content-type') ?? ''\n\n if (contentType.includes('text/')) {\n body = response ? await response.text() : undefined\n } else if (contentType.includes('application/json')) {\n body = response ? await response.json() : undefined\n } else {\n body = response ? await response.blob() : undefined\n // this is important to avoid the body being serialized to JSON\n body.toJSON = () => 'Preview not available'\n }\n } catch (error) {\n console.error('Error setting response:', error)\n }\n set((state) => ({\n response: {\n ...state.response,\n [state.selectedEndpointId]: {\n executionTime: Date.now() - startTime,\n statusCode: response?.status,\n headers: response?.headers ? Object.fromEntries(response.headers.entries()) : {},\n body: body,\n },\n },\n }))\n },\n setBody: (body: string) => set((state) => ({ body: { ...state.body, [state.selectedEndpointId]: body } })),\n removeHeaders: (key: string) =>\n set((state) => {\n const currentHeaders = state.headers[state.selectedEndpointId] || defaultHeaders\n const newHeaders = { ...currentHeaders }\n delete newHeaders[key]\n return {\n headers: {\n ...state.headers,\n [state.selectedEndpointId]: newHeaders,\n },\n }\n }),\n setBodyIsValid: (bodyIsValid: boolean) =>\n set((state) => ({ bodyIsValid: { ...state.bodyIsValid, [state.selectedEndpointId]: bodyIsValid } })),\n })),\n {\n name: 'motia-endpoint-configuration',\n storage: createJSONStorage(() => localStorage),\n },\n ),\n)\n","import { useStreamGroup } from '@motiadev/stream-client-react'\nimport { useMemo } from 'react'\nimport type { ApiEndpoint } from '../types/endpoint'\n\nexport const useGetEndpoints = () => {\n const { data: endpoints } = useStreamGroup<ApiEndpoint>({\n streamName: '__motia.api-endpoints',\n groupId: 'default',\n })\n\n const groupedEndpoints = useMemo(() => {\n return endpoints.reduce(\n (acc, endpoint) => {\n if (endpoint.flows && endpoint.flows.length > 0) {\n endpoint.flows.forEach((flow) => {\n acc[flow] = acc[flow] || []\n acc[flow].push(endpoint)\n })\n } else {\n acc['no-flow'] = acc['no-flow'] || []\n acc['no-flow'].push(endpoint)\n }\n return acc\n },\n {} as Record<string, ApiEndpoint[]>,\n )\n }, [endpoints])\n\n return { endpoints, groupedEndpoints }\n}\n","export const usePathParams = (path: string) => {\n const pathParams = path.match(/:(\\w+)/g)\n return pathParams?.map((param) => param.slice(1)) ?? []\n}\n","const resolveRef = (ref: string, rootSchema?: Record<string, any>): Record<string, any> | undefined => {\n if (!rootSchema || !ref.startsWith('#/$defs/')) {\n return undefined\n }\n\n const defName = ref.replace('#/$defs/', '')\n return rootSchema.$defs?.[defName]\n}\n\n/**\n * Converts a schema to a JSON object with default values\n * Supports both TypeScript step schemas (inline definitions) and Python step schemas ($defs/$ref)\n * @param schema - The schema to convert\n * @param rootSchema - Optional root schema containing $defs for $ref resolution. Defaults to schema if not provided.\n */\nexport const convertSchemaToJson = (schema?: Record<string, any>, rootSchema?: Record<string, any>): any => {\n if (!schema) return {}\n\n const effectiveRootSchema = rootSchema ?? schema\n\n if (schema.$ref) {\n const resolvedSchema = resolveRef(schema.$ref, effectiveRootSchema)\n if (resolvedSchema) {\n return convertSchemaToJson(resolvedSchema, effectiveRootSchema)\n }\n return {}\n }\n\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const nonNullSchema = schema.anyOf.find((item: any) => item && item.type !== 'null')\n if (nonNullSchema) {\n return convertSchemaToJson(nonNullSchema, effectiveRootSchema)\n }\n return null\n }\n\n if (schema.type === 'object') {\n const result: Record<string, any> = {}\n\n if (schema.properties) {\n Object.entries(schema.properties).forEach(([key, value]: [string, any]) => {\n result[key] = convertSchemaToJson(value, effectiveRootSchema)\n })\n }\n\n return result\n }\n\n switch (schema.type) {\n case 'array':\n return schema.items ? [convertSchemaToJson(schema.items, effectiveRootSchema)] : []\n case 'string':\n return schema.enum?.[0] ?? schema.description ?? 'string'\n case 'number':\n return schema.description ?? 0\n case 'integer':\n return 0\n case 'boolean':\n return schema.description ?? false\n case 'null':\n return null\n default:\n return undefined\n }\n}\n","import { useEffect, useState } from 'react'\nimport { convertSchemaToJson } from './utils'\n\nexport const useJsonSchemaToJson = (schema: Record<string, any> | undefined) => {\n const [body, setBody] = useState<string>('')\n\n useEffect(() => {\n if (schema) {\n setBody(JSON.stringify(convertSchemaToJson(schema), null, 2))\n }\n }, [schema])\n\n return { body, setBody }\n}\n","import { Panel } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport ReactJson from 'react18-json-view'\nimport 'react18-json-view/src/dark.css'\nimport 'react18-json-view/src/style.css'\nimport type { ApiEndpoint } from '../types/endpoint'\n\ntype Props = {\n endpoint: ApiEndpoint\n value: string\n panelName: string\n}\n\nexport const EndpointBodyPanel: FC<Props> = ({ endpoint, panelName, value }) => {\n const shouldHaveBody = ['post', 'put', 'patch'].includes(endpoint.method.toLowerCase())\n\n if (!shouldHaveBody) {\n return null\n }\n\n return (\n <Panel title=\"Body\" size=\"sm\" contentClassName=\"p-0\" data-testid={`endpoint-body-panel__${panelName}`}>\n <ReactJson\n src={value ? JSON.parse(value) : {}}\n theme=\"default\"\n enableClipboard={false}\n style={{ backgroundColor: 'transparent' }}\n />\n </Panel>\n )\n}\n","import { Panel } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport { usePathParams } from '../hooks/use-path-params'\nimport type { ApiEndpoint } from '../types/endpoint'\n\ntype Props = {\n endpoint: ApiEndpoint\n}\n\nexport const EndpointPathParamsPanel: FC<Props> = ({ endpoint }) => {\n const pathParams = usePathParams(endpoint.path)\n\n if (!pathParams.length) {\n return null\n }\n\n return (\n <Panel title=\"Path params\" size=\"sm\" variant=\"default\">\n <div className=\"grid gap-3\" style={{ gridTemplateColumns: '1fr 2fr' }}>\n {pathParams.map((param: string) => (\n <div key={param} className=\"font-bold leading-[36px] flex text-xs\">\n {param}\n </div>\n ))}\n </div>\n </Panel>\n )\n}\n","import { Panel } from '@motiadev/ui'\nimport { type FC, Fragment } from 'react'\nimport type { ApiEndpoint } from '../types/endpoint'\n\ntype Props = {\n endpoint: ApiEndpoint\n}\n\nexport const EndpointQueryParamsPanel: FC<Props> = ({ endpoint }) => {\n if (!endpoint.queryParams?.length) {\n return null\n }\n\n return (\n <Panel title=\"Query params\" size=\"sm\" variant=\"outlined\">\n <div className=\"grid gap-3\" style={{ gridTemplateColumns: '1fr 2fr', gridTemplateRows: '1fr 1fr' }}>\n {endpoint.queryParams.map((param: { name: string; description: string }) => (\n <Fragment key={param.name}>\n <div className=\"font-bold leading-[36px] flex text-xs\">{param.name}</div>\n <div className=\"flex items-center text-xs \">\n <span>{param.description}</span>\n </div>\n </Fragment>\n ))}\n </div>\n </Panel>\n )\n}\n","import { Tabs, TabsContent, TabsList, TabsTrigger, useThemeStore } from '@motiadev/ui'\nimport { type FC, useMemo } from 'react'\nimport ReactJson from 'react18-json-view'\nimport { convertSchemaToJson } from '../hooks/utils'\n\nexport type EndpointResponseItem = {\n responseCode: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n bodySchema: Record<string, any>\n}\n\ntype EndpointResponseProps = {\n items: EndpointResponseItem[]\n}\n\nconst EndpointResponseSchemaItem: FC<EndpointResponseItem> = ({ responseCode, bodySchema }) => {\n const theme = useThemeStore((store: { theme: string }) => store.theme)\n const schema = useMemo(() => convertSchemaToJson(bodySchema), [bodySchema])\n const description = typeof bodySchema.description === 'string' ? bodySchema.description : ''\n\n return (\n <TabsContent value={responseCode} key={responseCode} className=\"border-t\">\n <div className=\"text-xs font-mono rounded-lg whitespace-pre-wrap\">\n {schema ? (\n <ReactJson\n src={schema}\n dark={theme === 'dark'}\n enableClipboard={false}\n style={{ backgroundColor: 'transparent' }}\n />\n ) : (\n <div className=\"text-xs font-mono rounded-lg whitespace-pre-wrap p-4\">{description}</div>\n )}\n </div>\n </TabsContent>\n )\n}\n\nexport const EndpointResponseSchema: FC<EndpointResponseProps> = ({ items }) => {\n if (items.length === 0) {\n return null\n }\n\n return (\n <div className=\"flex flex-col rounded-lg border\">\n <Tabs defaultValue={items[0].responseCode}>\n <div className=\"flex items-center justify-between bg-card\">\n <TabsList className=\"bg-transparent p-0\">\n {items.map((item) => (\n <TabsTrigger\n value={item.responseCode}\n key={item.responseCode}\n className=\"text-xs font-bold cursor-pointer\"\n >\n {item.responseCode}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n\n {items.map((props) => (\n <EndpointResponseSchemaItem key={props.responseCode} {...props} />\n ))}\n </Tabs>\n </div>\n )\n}\n","import { Sidebar } from '@motiadev/ui'\nimport { X } from 'lucide-react'\nimport type { FC } from 'react'\nimport { EndpointPath } from '../components/endpoint-path'\nimport { useJsonSchemaToJson } from '../hooks/use-json-schema-to-json'\nimport type { ApiEndpoint } from '../types/endpoint'\nimport { EndpointBodyPanel } from './spec-body-panel'\nimport { EndpointPathParamsPanel } from './spec-path-params-panel'\nimport { EndpointQueryParamsPanel } from './spec-query-params-panel'\nimport { EndpointResponseSchema } from './spec-response-schema'\n\ntype Props = { endpoint: ApiEndpoint; onClose: () => void }\n\nexport const SpecSidePanel: FC<Props> = ({ endpoint, onClose }) => {\n const { body } = useJsonSchemaToJson(endpoint.bodySchema)\n\n return (\n <Sidebar\n initialWidth={600}\n subtitle={endpoint.description}\n title={<EndpointPath method={endpoint.method} path={endpoint.path} />}\n onClose={onClose}\n actions={[\n {\n icon: <X className=\"cursor-pointer w-4 h-4\" onClick={onClose} />,\n onClick: onClose,\n },\n ]}\n >\n <EndpointPathParamsPanel endpoint={endpoint} />\n <EndpointQueryParamsPanel endpoint={endpoint} />\n <EndpointBodyPanel endpoint={endpoint} panelName=\"details\" value={body} />\n <EndpointResponseSchema\n items={Object.entries(endpoint?.responseSchema ?? {}).map(([status, schema]) => ({\n responseCode: status,\n bodySchema: schema,\n }))}\n />\n </Sidebar>\n )\n}\n","import { Editor, useMonaco } from '@monaco-editor/react'\nimport { useThemeStore } from '@motiadev/ui'\nimport { type FC, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\ntype JsonEditorProps = {\n value: string\n schema?: Record<string, unknown>\n onChange?: (value: string) => void\n onValidate?: (isValid: boolean) => void\n language?: 'json' | string\n readOnly?: boolean\n}\n\nexport const JsonEditor: FC<JsonEditorProps> = ({\n value,\n schema,\n onChange,\n onValidate,\n language = 'json',\n readOnly = false,\n}) => {\n const monaco = useMonaco()\n const theme = useThemeStore((state: { theme: string }) => state.theme)\n const editorTheme = useMemo(() => (theme === 'dark' ? 'transparent-dark' : 'transparent-light'), [theme])\n const [editor, setEditor] = useState<any>(null)\n const resizeAnimationFrameRef = useRef<number | null>(null)\n const isValidatingRef = useRef(false)\n\n useLayoutEffect(() => {\n if (!monaco) return\n\n monaco.editor.defineTheme('transparent-light', {\n base: 'vs',\n inherit: true,\n rules: [],\n colors: {\n 'editor.background': '#00000000',\n 'editor.lineHighlightBackground': '#00000000',\n 'editorLineNumber.foreground': '#999999',\n 'editorLineNumber.activeForeground': '#000000',\n focusBorder: '#00000000',\n 'widget.border': '#00000000',\n 'editor.border': '#00000000',\n 'editorWidget.border': '#00000000',\n },\n })\n monaco.editor.defineTheme('transparent-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: [],\n colors: {\n 'editor.background': '#00000000',\n 'editor.lineHighlightBackground': '#00000000',\n 'editorLineNumber.foreground': '#666666',\n 'editorLineNumber.activeForeground': '#ffffff',\n focusBorder: '#00000000',\n 'widget.border': '#00000000',\n 'editor.border': '#00000000',\n 'editorWidget.border': '#00000000',\n },\n })\n }, [monaco])\n\n useEffect(() => {\n if (!monaco) return\n monaco.languages.typescript.javascriptDefaults.setCompilerOptions({ isolatedModules: true })\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n schemas: schema\n ? [\n {\n uri: window.location.href,\n fileMatch: ['*'],\n schema,\n },\n ]\n : [],\n })\n }, [monaco, schema])\n\n useLayoutEffect(() => {\n if (!monaco) return\n monaco.editor.setTheme(editorTheme)\n }, [monaco, editorTheme])\n\n useEffect(() => {\n if (!editor) return\n\n const container = editor.getContainerDomNode().parentElement?.parentElement\n if (!container) return\n\n const handleResize = () => {\n if (resizeAnimationFrameRef.current !== null) {\n cancelAnimationFrame(resizeAnimationFrameRef.current)\n }\n\n resizeAnimationFrameRef.current = requestAnimationFrame(() => {\n const { width, height } = container.getBoundingClientRect()\n editor.layout({ width, height })\n resizeAnimationFrameRef.current = null\n })\n }\n\n handleResize()\n\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(container)\n\n return () => {\n resizeObserver.disconnect()\n if (resizeAnimationFrameRef.current !== null) {\n cancelAnimationFrame(resizeAnimationFrameRef.current)\n }\n }\n }, [editor])\n\n useEffect(() => {\n if (!editor || !monaco || !onValidate || isValidatingRef.current) return\n\n const model = editor.getModel()\n if (!model) return\n\n const isEmptyWithSchema = schema && !value\n if (isEmptyWithSchema) {\n isValidatingRef.current = true\n onValidate(false)\n isValidatingRef.current = false\n return\n }\n\n isValidatingRef.current = true\n const timeoutId = setTimeout(() => {\n const markers = monaco.editor.getModelMarkers({ resource: model.uri })\n const isValid = markers.length === 0\n onValidate(isValid)\n isValidatingRef.current = false\n }, 100)\n\n return () => {\n clearTimeout(timeoutId)\n isValidatingRef.current = false\n }\n }, [editor, monaco, onValidate, value, schema])\n\n const editorKey = useMemo(() => (schema ? JSON.stringify(schema) : 'no-schema'), [schema])\n\n return (\n <Editor\n key={editorKey}\n data-testid=\"json-editor\"\n language={language}\n value={value}\n loading=\"\"\n theme={editorTheme}\n onMount={setEditor}\n onChange={(value: string | undefined) => {\n onChange?.(value ?? '')\n }}\n onValidate={(markers: any[]) => {\n if (!onValidate || isValidatingRef.current) return\n isValidatingRef.current = true\n const isEmptyWithSchema = schema && !value\n if (isEmptyWithSchema) {\n onValidate(false)\n } else {\n onValidate(markers.length === 0)\n }\n isValidatingRef.current = false\n }}\n options={{\n automaticLayout: false,\n readOnly,\n scrollBeyondLastLine: false,\n minimap: { enabled: false },\n overviewRulerLanes: 0,\n }}\n />\n )\n}\n","import { CircleX } from 'lucide-react'\nimport { type FC, memo, useCallback, useEffect, useRef } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { JsonEditor } from '../components/json-editor'\nimport { getBodyIsValidSelector, getBodySelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration'\nimport { convertSchemaToJson } from '../hooks/utils'\n\ntype SidePanelBodyTabProps = {\n schema: Record<string, any> | undefined\n}\n\nexport const SidePanelBodyTab: FC<SidePanelBodyTabProps> = memo(({ schema }) => {\n const { setBody, setBodyIsValid } = useEndpointConfiguration()\n const bodyIsValid = useEndpointConfiguration(useShallow(getBodyIsValidSelector))\n const body = useEndpointConfiguration(getBodySelector)\n const previousSchemaRef = useRef<Record<string, any> | undefined>(schema)\n const userClearedRef = useRef(false)\n\n useEffect(() => {\n const schemaChanged = previousSchemaRef.current !== schema\n previousSchemaRef.current = schema\n\n if (schemaChanged) {\n userClearedRef.current = false\n }\n\n if (schema && !body && !userClearedRef.current) {\n setBody(JSON.stringify(convertSchemaToJson(schema), null, 2))\n return\n }\n\n if (!schema) {\n setBody(body || '')\n setBodyIsValid(true)\n }\n }, [schema, body, setBody, setBodyIsValid])\n\n const handleBodyChange = useCallback(\n (value: string) => {\n setBody(value)\n const isEmptyWithSchema = schema && !value\n if (isEmptyWithSchema) {\n setBodyIsValid(false)\n userClearedRef.current = true\n } else {\n userClearedRef.current = false\n }\n },\n [setBody, schema, setBodyIsValid],\n )\n\n return (\n <div className=\"max-h-full h-full relative\">\n <JsonEditor value={body} schema={schema} onChange={handleBodyChange} onValidate={setBodyIsValid} />\n {bodyIsValid === false && (\n <div\n className=\"absolute bottom-0 left-0 right-0 border-t border-border p-3 text-sm dark:text-yellow-500 text-yellow-700 flex items-center gap-1 font-medium\"\n data-testid=\"endpoint-body-tab-invalid\"\n >\n <CircleX className=\"w-4 h-4\" />\n The body payload is invalid\n </div>\n )}\n </div>\n )\n})\n","import { Button, Checkbox, cn, Input } from '@motiadev/ui'\nimport { AlertCircle, Check, Trash2 } from 'lucide-react'\nimport { type FC, memo, useCallback, useRef, useState } from 'react'\nimport type { ConfigurationLitItem } from '../hooks/use-endpoint-configuration'\n\ninterface ConfigurationListItemProps {\n value: ConfigurationLitItem\n id: string\n onUpdate: (key: string, field: 'name' | 'value' | 'active', value: string | boolean) => void\n onRemove?: (key: string) => void\n required?: boolean\n}\n\nexport const ConfigurationListItem: FC<ConfigurationListItemProps> = memo(\n ({ value, id, onUpdate, onRemove, required = false }) => {\n const [activeConfiguration, setActiveConfiguration] = useState<string | null>(null)\n const [valueToDelete, setValueToDelete] = useState<string | null>(null)\n const deleteTimeout = useRef<NodeJS.Timeout | undefined>(undefined)\n const isActive = activeConfiguration === id\n\n const onDelete = useCallback(\n (key: string) => {\n clearTimeout(deleteTimeout.current)\n setValueToDelete(key)\n deleteTimeout.current = setTimeout(() => {\n setValueToDelete(null)\n }, 5000)\n },\n [setValueToDelete],\n )\n\n const onMouseOver = useCallback(() => {\n if (required) return\n setActiveConfiguration(id)\n }, [id, required])\n\n const onMouseLeave = useCallback(() => {\n if (required) return\n setActiveConfiguration(null)\n }, [required])\n\n return (\n <div\n className={cn(\n 'grid grid-cols-[auto_1fr_auto] items-center py-2 px-4 bg-muted/30 rounded-lg gap-2',\n isActive && 'bg-card',\n )}\n onMouseOver={onMouseOver}\n onMouseLeave={onMouseLeave}\n >\n <Checkbox\n checked={value.active}\n onCheckedChange={(checked: boolean) => onUpdate(id, 'active', checked)}\n disabled={required}\n >\n <Check className=\"h-3 w-3\" />\n </Checkbox>\n <div className=\"grid grid-cols-2 gap-2\">\n <Input\n readOnly={required}\n disabled={!value.active}\n variant={required ? 'outlineReadonly' : 'outline'}\n id={`name-${id}`}\n defaultValue={value.name}\n onBlur={(e: React.ChangeEvent<HTMLInputElement>) => onUpdate(id, 'name', e.target.value)}\n placeholder=\"Name\"\n className=\"h-8\"\n />\n <Input\n disabled={!value.active}\n variant={'outline'}\n id={`value-${id}`}\n defaultValue={value.value}\n onBlur={(e: React.FocusEvent<HTMLInputElement>) => onUpdate(id, 'value', e.target.value)}\n placeholder=\"Value\"\n className=\"h-8\"\n />\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => {\n if (valueToDelete === id) {\n onRemove?.(id)\n } else {\n onDelete(id)\n }\n }}\n className={cn('h-6 w-6 opacity-0 transition-opacity duration-200', isActive && 'opacity-100')}\n title={valueToDelete === id && isActive ? 'Click again to remove' : 'Remove'}\n >\n {valueToDelete === id ? <AlertCircle className=\"h-3 w-3 text-destructive\" /> : <Trash2 className=\"h-3 w-3\" />}\n </Button>\n </div>\n )\n },\n)\n","import { Button } from '@motiadev/ui'\nimport { Plus } from 'lucide-react'\nimport { useCallback } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { ConfigurationListItem } from '../components/configuration-list-item'\nimport { getHeadersSelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration'\n\nexport const SidePanelHeadersTab = () => {\n const { setHeaders, removeHeaders } = useEndpointConfiguration()\n const headers = useEndpointConfiguration(useShallow(getHeadersSelector))\n\n const addHeader = useCallback(() => {\n const newHeader = {\n name: '',\n value: '',\n active: true,\n }\n setHeaders({ ...headers, [new Date().getTime().toString()]: newHeader })\n }, [headers, setHeaders])\n\n const updateHeader = useCallback(\n (key: string, field: 'name' | 'value' | 'active', value: string | boolean) => {\n if (!key) return\n setHeaders({ ...headers, [key]: { ...headers[key], [field]: value } })\n },\n [headers, setHeaders],\n )\n\n return (\n <div className=\"h-full max-h-full grid grid-rows-[auto_1fr]\">\n <div className=\"grid px-4 border-b h-10 items-center grid-cols-[auto_1fr]\">\n <Button size=\"sm\" onClick={addHeader}>\n <Plus className=\"h-3 w-3\" />\n Add\n </Button>\n </div>\n\n <div className=\"p-2\">\n {Object.entries(headers).map(([key, header]) => (\n <ConfigurationListItem key={key} value={header} id={key} onUpdate={updateHeader} onRemove={removeHeaders} />\n ))}\n\n {Object.entries(headers).length === 0 && (\n <div className=\"grid grid-cols-1 items-center h-full\">\n <div className=\"text-sm text-muted-foreground text-center\">There are no headers in this endpoint</div>\n </div>\n )}\n </div>\n </div>\n )\n}\n","import { useMemo } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport {\n getPathParamsSelector,\n getQueryParamsSelector,\n type UseEndpointConfiguration,\n useEndpointConfiguration,\n} from './use-endpoint-configuration'\n\nconst queryParamsSelector = (state: UseEndpointConfiguration) =>\n Object.values(getQueryParamsSelector(state)).filter(\n (param) => param.active && param.value !== '' && param.name !== '',\n )\n\nexport const usePathUrl = (path: string) => {\n const pathParams = useEndpointConfiguration(useShallow(getPathParamsSelector))\n const queryParams = useEndpointConfiguration(useShallow(queryParamsSelector))\n\n return useMemo(() => {\n const url = path.replace(/:(\\w+)/g, (match, p1) => {\n return pathParams[p1]?.value || match\n })\n return (\n url + (queryParams.length > 0 ? `?${queryParams.map((param) => `${param.name}=${param.value}`).join('&')}` : '')\n )\n }, [path, pathParams, queryParams])\n}\n","import { Button, cn } from '@motiadev/ui'\nimport { Check, Copy } from 'lucide-react'\nimport { type FC, useState } from 'react'\nimport { usePathUrl } from '../hooks/use-path-url'\n\ninterface EndpointPathPreviewProps {\n path: string\n baseUrl?: string\n}\n\nexport const EndpointPathPreview: FC<EndpointPathPreviewProps> = ({ path, baseUrl = window.location.origin }) => {\n const pathUrl = usePathUrl(path)\n const fullUrl = `${baseUrl}${pathUrl}`\n const [copied, setCopied] = useState(false)\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(fullUrl)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n } catch (err) {\n console.error('Failed to copy URL:', err)\n }\n }\n\n return (\n <div className=\"grid grid-cols-[auto_1fr] items-center gap-5 px-5 relative border-b border-border\">\n <div className=\"text-sm font-medium py-2\">URL Preview</div>\n\n <div className=\"bg-muted-foreground/10 box-border grid grid-cols-[1fr_auto] gap-1 h-6 items-center px-2 py-1 rounded border border-border\">\n <div className=\"min-w-0\">\n <div className=\"font-medium text-xs text-muted-foreground truncate\" title={fullUrl}>\n {fullUrl}\n </div>\n </div>\n\n <Button\n onClick={handleCopy}\n className={cn(\n 'w-3 h-3 grid place-items-center transition-colors cursor-pointer',\n copied ? 'text-green-400' : 'text-muted-foreground',\n )}\n variant=\"icon\"\n size=\"sm\"\n aria-label=\"Copy URL\"\n >\n {copied ? <Check className=\"w-2.5 h-2.5\" /> : <Copy className=\"w-2.5 h-2.5\" />}\n </Button>\n </div>\n </div>\n )\n}\n","import { Button } from '@motiadev/ui'\nimport { Plus } from 'lucide-react'\nimport { useCallback, useMemo } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { ConfigurationListItem } from '../components/configuration-list-item'\nimport { EndpointPathPreview } from '../components/endpoint-path-preview'\nimport {\n getPathParamsSelector,\n getQueryParamsSelector,\n useEndpointConfiguration,\n} from '../hooks/use-endpoint-configuration'\n\ntype SidePanelParamsTabProps = {\n path: string\n}\n\nexport const SidePanelParamsTab = ({ path }: SidePanelParamsTabProps) => {\n const { setQueryParams, removeQueryParams, setPathParams } = useEndpointConfiguration()\n const queryParams = useEndpointConfiguration(useShallow(getQueryParamsSelector))\n const pathParams = useEndpointConfiguration(useShallow(getPathParamsSelector))\n const pathParamsConfig = useMemo(() => {\n const params = path.match(/:(\\w+)/g)\n return (\n params?.map((param) => {\n return { name: param.slice(1), value: pathParams[param.slice(1)]?.value ?? '', active: true }\n }) ?? []\n )\n }, [path])\n\n const addParam = useCallback(() => {\n const newParam = {\n name: '',\n value: '',\n active: true,\n }\n setQueryParams({ ...queryParams, [new Date().getTime().toString()]: newParam })\n }, [queryParams, setQueryParams])\n\n const updateParam = useCallback(\n (key: string, field: 'name' | 'value' | 'active', value: string | boolean) => {\n if (!key) return\n setQueryParams({ ...queryParams, [key]: { ...queryParams[key], [field]: value } })\n },\n [queryParams, setQueryParams],\n )\n\n const updatePathParam = useCallback(\n (key: string, field: 'name' | 'value' | 'active', value: string | boolean) => {\n if (!key) return\n setPathParams({ ...pathParams, [key]: { ...pathParams[key], [field]: value } })\n },\n [pathParams, setPathParams],\n )\n\n return (\n <div className=\"h-full grid grid-rows-[auto_auto_1fr]\">\n <div className=\"grid px-4 border-b h-10 items-center grid-cols-[auto_1fr]\">\n <Button size=\"sm\" onClick={addParam}>\n <Plus className=\"h-3 w-3\" />\n Add\n </Button>\n </div>\n <EndpointPathPreview path={path} />\n\n <div className=\"grid grid-rows-[1fr_1fr]\">\n {pathParamsConfig.length > 0 && (\n <div className=\"p-2\">\n <div className=\"text-sm font-medium pl-3\">Path variables</div>\n {pathParamsConfig.map((pathName) => (\n <ConfigurationListItem\n key={pathName.name}\n value={{ name: pathName.name, value: pathName.value, active: pathName.active }}\n id={pathName.name}\n required={true}\n onUpdate={updatePathParam}\n />\n ))}\n </div>\n )}\n\n <div className=\"p-2 border-b border-border\">\n <div className=\"text-sm font-medium pl-3\">Query parameters</div>\n {Object.entries(queryParams).map(([key, param]) => (\n <ConfigurationListItem\n key={key}\n value={param}\n id={key}\n onUpdate={updateParam}\n onRemove={removeQueryParams}\n />\n ))}\n\n {Object.entries(queryParams).length === 0 && (\n <div className=\"grid grid-cols-1 items-center h-full\">\n <div className=\"text-sm text-muted-foreground text-center\">\n There are no query params in this endpoint\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import { useStreamItem } from '@motiadev/stream-client-react'\n\nexport const useStateStream = (object: Record<string, any> | undefined) => {\n const { __motia, ...rest } = typeof object === 'string' ? {} : object || {}\n const { data } = useStreamItem(__motia)\n const originalData = Array.isArray(object) ? object : rest || object\n\n if (typeof object === 'string') {\n return {\n data: object,\n originalData: object,\n isStreamed: false,\n }\n }\n\n return {\n data: JSON.stringify(data || originalData, null, 2),\n originalData,\n isStreamed: !!__motia,\n }\n}\n","const statusMessages: Record<number, string> = {\n // 1xx Informational\n 100: 'Continue',\n 101: 'Switching Protocols',\n 102: 'Processing',\n 103: 'Early Hints',\n\n // 2xx Success\n 200: 'OK',\n 201: 'Created',\n 202: 'Accepted',\n 203: 'Non-Authoritative Information',\n 204: 'No Content',\n 205: 'Reset Content',\n 206: 'Partial Content',\n 207: 'Multi-Status',\n 208: 'Already Reported',\n 226: 'IM Used',\n\n // 3xx Redirection\n 300: 'Multiple Choices',\n 301: 'Moved Permanently',\n 302: 'Found',\n 303: 'See Other',\n 304: 'Not Modified',\n 305: 'Use Proxy',\n 307: 'Temporary Redirect',\n 308: 'Permanent Redirect',\n\n // 4xx Client Error\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 402: 'Payment Required',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 406: 'Not Acceptable',\n 407: 'Proxy Authentication Required',\n 408: 'Request Timeout',\n 409: 'Conflict',\n 410: 'Gone',\n 411: 'Length Required',\n 412: 'Precondition Failed',\n 413: 'Payload Too Large',\n 414: 'URI Too Long',\n 415: 'Unsupported Media Type',\n 416: 'Range Not Satisfiable',\n 417: 'Expectation Failed',\n 418: \"I'm a teapot\",\n 421: 'Misdirected Request',\n 422: 'Unprocessable Entity',\n 423: 'Locked',\n 424: 'Failed Dependency',\n 425: 'Too Early',\n 426: 'Upgrade Required',\n 428: 'Precondition Required',\n 429: 'Too Many Requests',\n 431: 'Request Header Fields Too Large',\n 451: 'Unavailable For Legal Reasons',\n\n // 5xx Server Error\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n 504: 'Gateway Timeout',\n 505: 'HTTP Version Not Supported',\n 506: 'Variant Also Negotiates',\n 507: 'Insufficient Storage',\n 508: 'Loop Detected',\n 510: 'Not Extended',\n 511: 'Network Authentication Required',\n}\n\nexport const getStatusMessage = (statusCode: number) => {\n return statusMessages[statusCode] || 'Unknown'\n}\n","import { cn } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport { getStatusMessage } from './reponse-code/utils'\n\ntype ResponseCodeProps = {\n statusCode: number\n}\n\nexport const ResponseCode: FC<ResponseCodeProps> = ({ statusCode }) => {\n const statusMessage = getStatusMessage(statusCode)\n const isSuccess = statusCode > 0 && statusCode < 400\n const isWarning = statusCode >= 400 && statusCode < 500\n const isError = statusCode >= 500\n\n return (\n <div\n className={cn(\n 'px-2 py-1 rounded-sm flex items-center gap-1',\n isWarning && 'dark:bg-[#EAB71F]/20 dark:text-[#EAB71F] bg-[#EAB71F] text-white',\n isError && 'dark:bg-[#F8367D]/20 dark:text-[#F8367D] bg-[#F8367D] text-white',\n isSuccess && 'dark:bg-accent-200 dark:text-primary bg-accent text-white',\n )}\n >\n <span className=\"font-bold font-mono\">{statusCode}</span> {statusMessage}\n </div>\n )\n}\n","import { Button, useThemeStore } from '@motiadev/ui'\nimport { Download } from 'lucide-react'\nimport type React from 'react'\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'\nimport { atomDark, oneLight } from 'react-syntax-highlighter/dist/esm/styles/prism'\n\ntype CodeDisplayProps = {\n code: string\n blob: Blob | undefined\n contentType: string\n}\n\nconst codeTagProps = {\n style: {\n fontFamily: 'DM Mono, monospace',\n fontSize: '16px',\n },\n}\n\nconst customStyle = {\n margin: 0,\n borderRadius: 0,\n padding: 0,\n}\n\nconst useLanguage = (contentType: string) => {\n if (contentType?.includes('json')) {\n return 'json'\n }\n if (contentType?.includes('html')) {\n return 'html'\n }\n return 'text'\n}\n\nexport const ResponseContent: React.FC<CodeDisplayProps> = ({ code, blob, contentType }) => {\n const theme = useThemeStore((state) => state.theme)\n const themeStyle = theme === 'dark' ? atomDark : oneLight\n const language = useLanguage(contentType)\n\n const onDownload = () => {\n if (blob) {\n const url = URL.createObjectURL(blob)\n window.open(url, '_blank')\n }\n }\n\n return (\n <div className=\"flex flex-col h-full overflow-y-auto\">\n {blob && (\n <div className=\"flex p-8 justify-center\">\n <Button variant=\"default\" onClick={onDownload}>\n <Download className=\"h-4 w-4\" /> Download\n </Button>\n </div>\n )}\n\n {!blob && code && (\n <SyntaxHighlighter\n showLineNumbers\n language={language}\n style={themeStyle}\n codeTagProps={codeTagProps}\n customStyle={customStyle}\n wrapLines\n >\n {code}\n </SyntaxHighlighter>\n )}\n </div>\n )\n}\n","import { Button, Tabs, TabsContent, TabsList, TabsTrigger } from '@motiadev/ui'\nimport { X } from 'lucide-react'\nimport { memo, useState } from 'react'\nimport { getResponseSelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration'\nimport { useStateStream } from '../hooks/use-state-stream'\nimport { ResponseCode } from './response-code'\nimport { ResponseContent } from './response-content'\n\ntype ActiveTab = 'preview' | 'headers'\n\nexport const SidePanelResponse = memo(() => {\n const { setResponse } = useEndpointConfiguration()\n const response = useEndpointConfiguration(getResponseSelector)\n const { data } = useStateStream(response?.body instanceof Blob ? undefined : response?.body)\n const [activeTab, setActiveTab] = useState<ActiveTab>('preview')\n const onClose = () => setResponse(undefined)\n\n if (!response) {\n return null\n }\n\n return (\n <Tabs\n value={activeTab}\n onValueChange={(value: string) => setActiveTab(value as ActiveTab)}\n className=\"border-l border-border\"\n data-testid=\"endpoint-response-container\"\n >\n <div className=\"grid grid-cols-[1fr_auto] items-center h-10 border-b px-5 bg-card\">\n <TabsList>\n <TabsTrigger value=\"preview\" className=\"cursor-pointer\">\n Preview\n </TabsTrigger>\n <TabsTrigger value=\"headers\" className=\"grid grid-cols-[auto_auto] gap-2 items-center cursor-pointer\">\n Headers\n </TabsTrigger>\n </TabsList>\n <Button variant=\"ghost\" size=\"icon\" onClick={onClose}>\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"sticky bottom-0 border-b border-border p-3 text-sm flex items-center gap-1 font-medium\">\n <div className=\"flex flex-row items-center flex-1 gap-3\">\n <ResponseCode statusCode={response.statusCode} />\n {!!response.executionTime && (\n <div className=\"text-muted-foreground bg-muted-foreground/10 px-2 py-1 rounded-sm\">\n {response.executionTime}ms\n </div>\n )}\n </div>\n </div>\n\n <TabsContent value=\"preview\">\n <ResponseContent\n code={data}\n blob={response?.body instanceof Blob ? response.body : undefined}\n contentType={response.headers['content-type']}\n />\n </TabsContent>\n\n <TabsContent value=\"headers\">\n <div className=\"grid grid-cols-[auto_minmax(0,1fr)] gap-4 p-4 overflow-auto auto-rows-max h-full\">\n {response.headers &&\n Object.entries(response.headers).map(([key, value]) => (\n <>\n <span className=\"font-bold text-sm h-8 items-center grid whitespace-nowrap\">{key}</span>\n <span className=\"text-sm text-muted-foreground h-8 items-center grid whitespace-nowrap\">{value}</span>\n </>\n ))}\n </div>\n </TabsContent>\n </Tabs>\n )\n})\n","import { Button } from '@motiadev/ui'\nimport { Loader2 } from 'lucide-react'\nimport { memo, useState } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { getBodySelector, getHeadersSelector, useEndpointConfiguration } from '../hooks/use-endpoint-configuration'\nimport { usePathUrl } from '../hooks/use-path-url'\n\ntype TriggerButtonProps = {\n method: string\n path: string\n}\n\nexport const TriggerButton = memo(({ method, path }: TriggerButtonProps) => {\n const { setResponse } = useEndpointConfiguration()\n const headers = useEndpointConfiguration(useShallow(getHeadersSelector))\n const body = useEndpointConfiguration(useShallow(getBodySelector))\n const pathUrl = usePathUrl(path)\n\n const [isLoading, setIsLoading] = useState(false)\n\n const onClick = async () => {\n try {\n setIsLoading(true)\n\n const _headers = Object.values(headers)\n .filter((header) => header.active && header.name !== '' && header.value !== '')\n .reduce(\n (acc, header) => {\n acc[header.name.toLowerCase()] = header.value\n return acc\n },\n {} as Record<string, string>,\n )\n\n const startTime = Date.now()\n const response = await fetch(pathUrl, {\n method: method,\n headers: _headers,\n body: ['GET', 'DELETE', 'HEAD', 'OPTIONS'].includes(method) ? null : body,\n })\n\n setResponse(response, startTime)\n } catch (error) {\n console.error('Error triggering endpoint:', error)\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n <Button variant=\"accent\" size=\"sm\" onClick={onClick} disabled={isLoading} data-testid=\"endpoint-play-button\">\n {isLoading ? <Loader2 className=\"animate-spin\" /> : 'Send'}\n </Button>\n )\n})\n","import { BackgroundEffect, Badge, Button, cn, Tabs, TabsContent, TabsList, TabsTrigger } from '@motiadev/ui'\nimport { Book, X } from 'lucide-react'\nimport { type FC, memo, useState } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { EndpointPath } from '../components/endpoint-path'\nimport {\n getHeadersSelector,\n getQueryParamsSelector,\n getResponseSelector,\n type UseEndpointConfiguration,\n useEndpointConfiguration,\n} from '../hooks/use-endpoint-configuration'\nimport { usePathParams } from '../hooks/use-path-params'\nimport { SpecSidePanel } from '../spec/spec-side-panel'\nimport type { ApiEndpoint } from '../types/endpoint'\nimport { SidePanelBodyTab } from './side-panel-body-tab'\nimport { SidePanelHeadersTab } from './side-panel-headers-tab'\nimport { SidePanelParamsTab } from './side-panel-params-tab'\nimport { SidePanelResponse } from './side-panel-response'\nimport { TriggerButton } from './trigger-button'\n\ntype EndpointSidePanelProps = { endpoint: ApiEndpoint; onClose: () => void }\n\ntype ActiveTab = 'body' | 'headers' | 'params'\n\nconst headersCountSelector = (state: UseEndpointConfiguration) => Object.keys(getHeadersSelector(state)).length\nconst hasResponseSelector = (state: UseEndpointConfiguration) => getResponseSelector(state) !== undefined\nconst paramsCountSelector = (state: UseEndpointConfiguration) => Object.keys(getQueryParamsSelector(state)).length\n\nexport const SidePanel: FC<EndpointSidePanelProps> = memo(({ endpoint, onClose }) => {\n const isGetOrDelete = endpoint.method === 'GET' || endpoint.method === 'DELETE'\n const [activeTab, setActiveTab] = useState<ActiveTab>(isGetOrDelete ? 'params' : 'body')\n const [isSpecOpen, setIsSpecOpen] = useState(false)\n const headersCount = useEndpointConfiguration(useShallow(headersCountSelector))\n const hasResponse = useEndpointConfiguration(useShallow(hasResponseSelector))\n const pathParamsCount = usePathParams(endpoint.path).length\n const queryParamsCount = useEndpointConfiguration(useShallow(paramsCountSelector))\n const paramsCount = queryParamsCount + pathParamsCount\n\n return (\n <div\n className=\"isolate grid grid-cols-1 overflow-y-auto min-w-0 grid-rows-[auto_1fr] border-l border-border\"\n data-testid=\"endpoint-details-panel\"\n >\n <BackgroundEffect />\n <div className=\"grid grid-cols-[1fr_1fr_auto] items-start gap-4 px-5 py-4 border-b bg-card w-full\">\n <div className=\"grid grid-rows-2 gap-2\">\n <EndpointPath method={endpoint.method} path={endpoint.path} />\n {endpoint.description && <p className=\"text-sm text-muted-foreground\">{endpoint.description}</p>}\n </div>\n <div className=\"flex items-end justify-end\">\n <Button\n variant=\"icon\"\n size=\"icon\"\n onClick={() => setIsSpecOpen(!isSpecOpen)}\n data-testid=\"endpoint-spec-button\"\n >\n <Book />\n </Button>\n </div>\n <Button variant=\"icon\" size=\"icon\" onClick={onClose}>\n <X />\n </Button>\n </div>\n <div className={cn('grid grid-cols-[minmax(380px,1fr)_minmax(auto,1fr)]', !hasResponse && 'grid-cols-1')}>\n <Tabs value={activeTab} onValueChange={(value: string) => setActiveTab(value as ActiveTab)}>\n <div className=\"grid grid-cols-[1fr_auto] items-center h-10 border-b px-5 bg-card\">\n <TabsList>\n <TabsTrigger\n value=\"params\"\n className=\"grid grid-cols-[auto_auto] gap-2 items-center cursor-pointer\"\n data-testid=\"endpoint-params-tab\"\n >\n Params\n <Badge variant=\"outline\" className=\"h-4 px-1.5 text-xs\">\n {paramsCount}\n </Badge>\n </TabsTrigger>\n <TabsTrigger value=\"body\" className=\"cursor-pointer\" data-testid=\"endpoint-body-tab\">\n Body\n </TabsTrigger>\n <TabsTrigger\n value=\"headers\"\n className=\"grid grid-cols-[auto_auto] gap-2 items-center cursor-pointer\"\n data-testid=\"endpoint-headers-tab\"\n >\n Headers\n <Badge variant=\"outline\" className=\"h-4 px-1.5 text-xs\">\n {headersCount}\n </Badge>\n </TabsTrigger>\n </TabsList>\n <TriggerButton method={endpoint.method} path={endpoint.path.toString()} />\n </div>\n\n <TabsContent value=\"params\">\n <SidePanelParamsTab path={endpoint.path} />\n </TabsContent>\n <TabsContent value=\"body\">\n <SidePanelBodyTab schema={endpoint.bodySchema} />\n </TabsContent>\n\n <TabsContent value=\"headers\">\n <SidePanelHeadersTab />\n </TabsContent>\n </Tabs>\n <SidePanelResponse />\n </div>\n\n {isSpecOpen && <SpecSidePanel endpoint={endpoint} onClose={() => setIsSpecOpen(false)} />}\n </div>\n )\n})\n","import { cn } from '@motiadev/ui'\nimport { useCallback, useMemo, useState } from 'react'\nimport { EndpointsSearch } from './components/endpoints-search'\nimport { FlowGroup } from './components/flow-group'\nimport { useEndpointConfiguration } from './hooks/use-endpoint-configuration'\nimport { useGetEndpoints } from './hooks/use-get-endpoints'\nimport { SidePanel } from './play/side-panel'\nimport type { ApiEndpoint } from './types/endpoint'\n\nexport const EndpointsPage = () => {\n const { endpoints, groupedEndpoints } = useGetEndpoints()\n const { selectedEndpointId, setSelectedEndpointId, toggleFlowGroupStatus, flowGroupStatus } =\n useEndpointConfiguration()\n const selectedEndpoint = useMemo(\n () => endpoints.find((endpoint: ApiEndpoint) => endpoint.id === selectedEndpointId),\n [endpoints, selectedEndpointId],\n )\n\n const onClose = useCallback(() => {\n setSelectedEndpointId('')\n }, [setSelectedEndpointId])\n\n const [search, setSearch] = useState('')\n\n const filteredEndpoints = useMemo(() => {\n return Object.entries(groupedEndpoints).filter(([_, endpoints]) => {\n return endpoints.some(\n (endpoint) =>\n endpoint.method?.toLowerCase().includes(search.toLowerCase()) ||\n endpoint.path?.toLowerCase().includes(search.toLowerCase()),\n )\n })\n }, [groupedEndpoints, search])\n\n return (\n <div\n className={cn('grid h-full max-h-full', selectedEndpoint ? 'grid-cols-[300px_1fr] ' : 'grid-cols-1')}\n data-testid=\"endpoints-list\"\n >\n <div className=\"grid grid-rows-[auto_1fr] h-full overflow-auto min-w-0\">\n <EndpointsSearch value={search} onChange={setSearch} onClear={() => setSearch('')} />\n <div className=\"grid grid-cols-1 auto-rows-max overflow-auto min-w-0\">\n {filteredEndpoints.map(([flow, endpoints]) => {\n const isSelected = endpoints.some((endpoint) => endpoint.id === selectedEndpointId)\n const isOpen = !flowGroupStatus[flow] || isSelected || search !== ''\n return (\n <FlowGroup\n key={flow}\n flow={flow}\n endpoints={endpoints as ApiEndpoint[]}\n isOpen={isOpen}\n isSelected={isSelected}\n onToggle={toggleFlowGroupStatus}\n onClearSelection={() => setSelectedEndpointId('')}\n selectedEndpointId={selectedEndpointId}\n onSelectEndpoint={setSelectedEndpointId}\n />\n )\n })}\n </div>\n </div>\n\n {selectedEndpoint && <SidePanel endpoint={selectedEndpoint} onClose={onClose} />}\n </div>\n )\n}\n"],"mappings":"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"}