@motiadev/workbench 0.13.0-beta.162-439402 → 0.13.0-beta.162-315243
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 +1 -1
- package/dist/src/src/components/flow/flow-page.tsx +3 -3
- package/dist/src/src/components/flow/flow-tab-menu-item.tsx +3 -3
- package/dist/src/src/components/flow/flow-view.tsx +1 -1
- package/dist/src/src/components/flow/hooks/use-get-flow-state.tsx +1 -1
- package/dist/src/src/components/flow/hooks/use-save-workflow-config.ts +1 -1
- package/dist/src/src/components/flow/node-organizer.tsx +1 -1
- package/dist/src/src/components/flow/nodes/api-flow-node.tsx +2 -2
- package/dist/src/src/components/flow/nodes/cron-flow-node.tsx +2 -2
- package/dist/src/src/components/flow/nodes/event-flow-node.tsx +2 -2
- package/dist/src/src/components/flow/nodes/noop-flow-node.tsx +2 -2
- package/dist/src/src/components/header/deploy-button.tsx +1 -1
- package/dist/src/src/components/header/header.tsx +5 -3
- package/dist/src/src/components/root-motia.tsx +1 -1
- package/dist/src/src/components/tutorial/tutorial-button.tsx +1 -1
- package/dist/src/src/components/tutorial/tutorial.tsx +1 -1
- package/dist/src/src/hooks/use-fetch-flows.ts +2 -2
- package/dist/src/src/lib/plugins.tsx +1 -1
- package/dist/src/src/lib/utils.ts +1 -1
- package/dist/src/src/publicComponents/base-node/base-node.tsx +2 -2
- package/dist/src/src/publicComponents/base-node/code-display.tsx +1 -1
- package/dist/src/src/publicComponents/base-node/emits.tsx +1 -1
- package/dist/src/src/publicComponents/base-node/feature-card.tsx +1 -1
- package/dist/src/src/publicComponents/base-node/language-indicator.tsx +1 -1
- package/dist/src/src/publicComponents/base-node/node-sidebar.tsx +1 -1
- package/dist/src/src/stores/use-tabs-store.ts +1 -1
- package/eslint.config.cjs +22 -0
- package/package.json +4 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["workbenchXPath","sidebarContainer","closePanelButton","bottomPanel","flows","dropdownFlow","flowId","feature","featureId","previewButton","stepId","node","endpoints","endpointsList","endpoint","method","path","callPanel","specButton","bodyTab","headersTab","paramsTab","callTab","response","playButton","tracing","trace","index","details","timeline","logs","container","searchContainer","traceColumn","row","states","links","Position","useReactFlow","useUpdateNodeInternals","BaseNodeProps","useHandlePositions","data","$","_c","reactFlow","updateNodeInternals","sourcePosition","nodeConfig","sourceHandlePosition","Bottom","Right","targetPosition","targetHandlePosition","Top","Left","t0","position","updateNode","id","updateSourcePosition","t1","position_0","updateTargetPosition","t2","newPosition","toggleTargetPosition","t3","newPosition_0","toggleSourcePosition","t4","HandleProps","Position","Handle","RFHandle","clsx","React","HTMLAttributes","Props","Omit","HTMLDivElement","isHidden","onTogglePosition","BaseHandle","FC","props","$","_c","position","rest","isHorizontal","Left","Right","t0","Top","t1","Bottom","t2","t3","t4","t5","t6","t7","Symbol","for","background","t8","t9","cn","cva","VariantProps","CalendarClock","CircleOff","Link2","Waypoints","React","PropsWithChildren","baseIcon","variants","variant","event","api","noop","cron","NodeIcon","t0","$","_c","t1","Symbol","for","t2","Props","text","className","NodeHeader","FC","children","t3","t4","t5","t6","t7","cn","React","Feature","Props","feature","highlighted","onClick","onHover","FeatureCard","FC","t0","$","_c","t1","id","t2","t3","t4","title","t5","description","t6","link","t7","cn","FC","EventNodeData","Props","language","className","size","showLabel","LanguageIndicator","t0","$","_c","t1","t2","undefined","t3","language_0","renderIcon","t4","t5","t6","t7","useThemeStore","React","useRef","useState","Prism","SyntaxHighlighter","oneDark","oneLight","Feature","FeatureCard","LanguageIndicator","CodeDisplayProps","code","language","features","codeTagProps","style","fontFamily","fontSize","customStyle","margin","borderRadius","padding","isHighlighted","lines","lineNumber","some","line","start","end","split","map","num","parseInt","undefined","getFirstLineNumber","CodeDisplay","FC","t0","$","_c","theme","_temp","themeStyle","t1","Symbol","for","highlightedLines","setHighlightedLines","selectedFeature","setSelectedFeature","ref","handleFeatureClick","feature","current","querySelector","scrollIntoView","behavior","block","t2","t3","t4","t5","t6","t7","length","feature_0","index","t8","lineNumber_0","borderLeft","backgroundColor","t9","t10","t11","t12","state","Sidebar","X","React","Feature","CodeDisplay","NodeSidebarProps","content","features","title","subtitle","variant","language","isOpen","onClose","NodeSidebar","FC","t0","$","_c","t1","Symbol","for","t2","icon","onClick","label","t3","t4","Button","cn","ScanSearch","React","PropsWithChildren","useCallback","useEffect","useState","useHandlePositions","Feature","BaseNodeProps","BaseHandle","NodeHeader","NodeSidebar","Props","title","subtitle","variant","language","className","disableSourceHandle","disableTargetHandle","data","BaseNode","FC","t0","$","_c","children","isOpen","setIsOpen","sourcePosition","targetPosition","toggleTargetPosition","toggleSourcePosition","content","setContent","t1","Symbol","for","features","setFeatures","t2","id","response","fetch","responseData","json","fetchContent","t3","t4","t5","t6","toLowerCase","replace","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","PropsWithChildren","BaseNode","ApiNodeProps","Props","ApiNode","t0","$","_c","data","children","t1","emits","length","virtualEmits","t2","subscribes","virtualSubscribes","t3","webhookUrl","t4","name","language","description","React","PropsWithChildren","BaseNode","EventNodeProps","EventNode","FC","t0","$","_c","data","children","t1","emits","length","virtualEmits","t2","subscribes","virtualSubscribes","t3","name","description","language","React","PropsWithChildren","BaseNode","NoopNodeProps","NoopNode","FC","t0","$","_c","data","children","t1","virtualEmits","length","t2","subscribes","t3","name","description"],"sources":["../src/components/tutorial/engine/workbench-xpath.ts","../src/hooks/use-update-handle-positions.ts","../src/publicComponents/base-node/base-handle.tsx","../src/publicComponents/base-node/node-header.tsx","../src/publicComponents/base-node/feature-card.tsx","../src/publicComponents/base-node/language-indicator.tsx","../src/publicComponents/base-node/code-display.tsx","../src/publicComponents/base-node/node-sidebar.tsx","../src/publicComponents/base-node/base-node.tsx","../src/publicComponents/api-node.tsx","../src/publicComponents/event-node.tsx","../src/publicComponents/noop-node.tsx"],"sourcesContent":["export const workbenchXPath = {\n sidebarContainer: '//div[@data-testid=\"sidebar-panel\"]',\n closePanelButton: '//div[@id=\"app-sidebar-container\"]//button[@data-testid=\"close-panel\"]',\n bottomPanel: '//div[@id=\"bottom-panel\"]',\n\n flows: {\n dropdownFlow: (flowId: string) => `//div[@data-testid=\"dropdown-${flowId}\"]`,\n feature: (featureId: string) => `//div[@data-feature-id=\"${featureId}\"]`,\n previewButton: (stepId: string) => `//button[@data-testid=\"open-code-preview-button-${stepId}\"]`,\n node: (stepId: string) => `//div[@data-testid=\"node-${stepId}\"]`,\n },\n\n endpoints: {\n endpointsList: '//div[@data-testid=\"endpoints-list\"]',\n endpoint: (method: string, path: string) => `//div[@data-testid=\"endpoint-${method}-${path}\"]`,\n callPanel: '//div[@data-testid=\"endpoint-details-panel\"]',\n specButton: '//button[@data-testid=\"endpoint-spec-button\"]',\n\n bodyTab: '//button[@data-testid=\"endpoint-body-tab\"]',\n headersTab: '//button[@data-testid=\"endpoint-headers-tab\"]',\n paramsTab: '//button[@data-testid=\"endpoint-params-tab\"]',\n\n callTab: '//button[@data-testid=\"endpoint-body-tab\"]', // deprecated\n response: '//div[@data-testid=\"endpoint-response-container\"]',\n playButton: '//button[@data-testid=\"endpoint-play-button\"]',\n },\n\n tracing: {\n trace: (index: number) => `(//button[contains(@class, 'motia-trace-group')])[${index}]`,\n details: '//div[@data-testid=\"trace-details\"]',\n timeline: (index: number) => `(//div[@data-testid=\"trace-timeline-item\"])[${index}]`,\n },\n\n logs: {\n container: '//div[@data-testid=\"logs-container\"]',\n searchContainer: '//div[@data-testid=\"logs-search-container\"]',\n traceColumn: (index: number) => `(//td[starts-with(@data-testid, 'trace')])[${index}]`,\n row: '//div[@data-testid=\"log-row\"]',\n },\n\n states: {\n container: '//div[@data-testid=\"states-container\"]',\n row: (index: number) => `(//tr[starts-with(@data-testid, 'item-')])[${index}]`,\n },\n\n links: {\n flows: '//div[@data-testid=\"flows-dropdown-trigger\"]',\n endpoints: '//button[@data-testid=\"endpoints-link\"]',\n tracing: '//button[@data-testid=\"tracing-link\"]',\n logs: '//button[@data-testid=\"logs-link\"]',\n states: '//button[@data-testid=\"states-link\"]',\n },\n}\n","import { Position, useReactFlow, useUpdateNodeInternals } from '@xyflow/react'\nimport type { BaseNodeProps } from '../publicComponents/node-props'\n\nexport const useHandlePositions = (data: BaseNodeProps) => {\n const reactFlow = useReactFlow()\n const updateNodeInternals = useUpdateNodeInternals()\n const sourcePosition = data.nodeConfig?.sourceHandlePosition === 'bottom' ? Position.Bottom : Position.Right\n const targetPosition = data.nodeConfig?.targetHandlePosition === 'top' ? Position.Top : Position.Left\n\n const updateSourcePosition = (position: 'bottom' | 'right') => {\n reactFlow.updateNode(data.id, {\n data: { ...data, nodeConfig: { ...data.nodeConfig, sourceHandlePosition: position } },\n })\n updateNodeInternals(data.id)\n }\n\n const updateTargetPosition = (position: 'top' | 'left') => {\n reactFlow.updateNode(data.id, {\n data: { ...data, nodeConfig: { ...data.nodeConfig, targetHandlePosition: position } },\n })\n updateNodeInternals(data.id)\n }\n\n const toggleTargetPosition = () => {\n const newPosition = targetPosition === Position.Top ? Position.Left : Position.Top\n updateTargetPosition(newPosition)\n }\n\n const toggleSourcePosition = () => {\n const newPosition = sourcePosition === Position.Bottom ? Position.Right : Position.Bottom\n updateSourcePosition(newPosition)\n }\n\n return {\n sourcePosition,\n targetPosition,\n updateSourcePosition,\n updateTargetPosition,\n toggleTargetPosition,\n toggleSourcePosition,\n }\n}\n","import { type HandleProps, Position, Handle as RFHandle } from '@xyflow/react'\nimport clsx from 'clsx'\nimport type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\ntype Props = HandleProps &\n Omit<HTMLAttributes<HTMLDivElement>, 'id'> & {\n isHidden?: boolean\n onTogglePosition?: () => void\n }\n\nexport const BaseHandle: React.FC<Props> = (props) => {\n const { isHidden, position, onTogglePosition, ...rest } = props\n const isHorizontal = position === Position.Left || position === Position.Right\n\n return (\n <div\n className={clsx(\n 'absolute w-[6px] h-[6px]',\n position === Position.Top && '-top-[4px]',\n position === Position.Bottom && '-bottom-[4px]',\n position === Position.Left && '-left-[4px]',\n position === Position.Right && '-right-[4px]',\n isHorizontal ? 'top-1/2 -mt-[2px]' : 'left-1/2 -ml-[2px]',\n isHidden && 'hidden',\n )}\n onClick={onTogglePosition}\n >\n <RFHandle\n {...rest}\n position={position}\n style={{ background: 'rgb(30,118,231)' }}\n className=\"\n bg-white/50\n !static\n !w-[6px]\n !h-[6px]\n !min-w-[6px]\n !min-h-[6px]\n !p-0\n !border-none\n !transform-none\n !rounded-full\n !outline-none\n !shadow-none\n \"\n />\n </div>\n )\n}\n","import { cn } from '@motiadev/ui'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { CalendarClock, CircleOff, Link2, Waypoints } from 'lucide-react'\nimport type React from 'react'\nimport type { PropsWithChildren } from 'react'\n\nconst baseIcon = cva('rounded-md p-2', {\n variants: {\n variant: {\n event: 'bg-[rgba(30,118,231,0.2)] text-[rgb(30,118,231)]',\n api: 'dark:bg-[rgba(192,255,17,0.2)] dark:text-[rgb(192,255,17)] bg-[rgb(231,255,166)] text-[rgb(94,125,11)]',\n noop: 'bg-[rgba(239,18,229,0.2)] text-[rgb(239,18,229)]',\n cron: 'bg-[rgba(241,105,15,0.2)] text-[rgb(241,105,15)]',\n },\n },\n})\n\nconst NodeIcon = ({ variant }: { variant: VariantProps<typeof baseIcon>['variant'] }) => {\n if (variant === 'cron') {\n return <CalendarClock className=\"w-5 h-5\" />\n } else if (variant === 'api') {\n return <Link2 className=\"w-5 h-5\" />\n } else if (variant === 'noop') {\n return <CircleOff className=\"w-5 h-5\" />\n } else if (variant === 'event') {\n return <Waypoints className=\"w-5 h-5\" />\n }\n return <div className={cn(baseIcon({ variant }))}>Icon</div>\n}\n\ntype Props = PropsWithChildren<{\n text: string\n variant: VariantProps<typeof baseIcon>['variant']\n className?: string\n}>\n\nexport const NodeHeader: React.FC<Props> = ({ text, variant, children, className }) => (\n <div className={cn('flex items-center gap-2 p-2', className)}>\n <div className={baseIcon({ variant })}>\n <NodeIcon variant={variant} />\n </div>\n <div className=\"flex flex-1 justify-between items-start gap-4\">\n <div className=\"flex flex-col\">\n <div className=\"text-sm font-semibold leading-[1.25] tracking-[-0.25px]\">{text}</div>\n </div>\n {children}\n </div>\n </div>\n)\n","import { cn } from '@motiadev/ui'\nimport type React from 'react'\nimport type { Feature } from '@/types/file'\n\ntype Props = {\n feature: Feature\n highlighted: boolean\n onClick: () => void\n onHover: () => void\n}\n\nexport const FeatureCard: React.FC<Props> = ({ feature, highlighted, onClick, onHover }) => {\n return (\n <div\n data-feature-id={feature.id}\n className={cn(\n 'p-4 rounded-lg bg-card shadow-sm cursor-pointer hover:bg-card/50 border-2 border-transparent',\n highlighted && 'border-2 border-accent-1000 bg-accent-100',\n )}\n onClick={onClick}\n onMouseEnter={onHover}\n >\n <div className=\"text-md font-semibold text-foreground leading-tight whitespace-nowrap mb-2\">{feature.title}</div>\n <div className=\"text-sm font-medium text-muted-foreground leading-tight\">{feature.description}</div>\n {feature.link && (\n <div className=\"text-sm font-medium text-muted-foreground leading-tight\">\n <a href={feature.link}>Learn more</a>\n </div>\n )}\n </div>\n )\n}\n","import { cn } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport type { EventNodeData } from '@/types/flow'\n\ntype Props = { language: EventNodeData['language']; className?: string; size?: number; showLabel?: boolean }\n\nexport const LanguageIndicator: FC<Props> = ({ language, className, size = 18, showLabel = false }) => {\n const renderIcon = (language?: string) => {\n if (language === 'typescript') {\n return (\n <>\n {showLabel ? <>TypeScript</> : null}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 3V21H21V3H3ZM9 12H13.5V13.5H12V19.5H10.5V13.5H9V12ZM16.5 12H19.5V13.5H16.5V15H18C18.3975 15.0012 18.7783 15.1596 19.0593 15.4407C19.3404 15.7217 19.4988 16.1025 19.5 16.5V18C19.4988 18.3975 19.3404 18.7783 19.0593 19.0593C18.7783 19.3404 18.3975 19.4988 18 19.5H15V18H18V16.5H16.5C16.1025 16.4988 15.7217 16.3404 15.4407 16.0593C15.1596 15.7783 15.0012 15.3975 15 15V13.5C15.0012 13.1025 15.1596 12.7217 15.4407 12.4407C15.7217 12.1596 16.1025 12.0012 16.5 12Z\"\n fill=\"#0288D1\"\n />\n </svg>\n </>\n )\n }\n\n if (language === 'javascript') {\n return (\n <>\n {showLabel ? <>JavaScript</> : null}\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <g clipPath=\"url(#clip0_42_2938)\">\n <path\n d=\"M0 0H20V20H0V0ZM18.3617 15.23C18.2158 14.3175 17.6217 13.5508 15.8592 12.8358C15.2458 12.5483 14.5642 12.3483 14.3617 11.8858C14.2858 11.6108 14.2742 11.4608 14.3233 11.2983C14.4483 10.76 15.0858 10.5983 15.5858 10.7483C15.9108 10.8483 16.2108 11.0983 16.3992 11.4983C17.2608 10.935 17.2608 10.935 17.8617 10.5608C17.6367 10.2108 17.525 10.06 17.3733 9.91083C16.8483 9.32333 16.1492 9.02333 15.0117 9.04917L14.4242 9.12333C13.8608 9.26083 13.3242 9.56083 12.9992 9.96083C12.0492 11.0367 12.3233 12.9117 13.4733 13.6867C14.6108 14.5367 16.2742 14.7233 16.4867 15.5242C16.6867 16.4992 15.7617 16.8117 14.8483 16.6992C14.1725 16.5492 13.7983 16.2108 13.3858 15.5858L11.8608 16.4617C12.0358 16.8617 12.2358 17.0358 12.5358 17.3858C13.9858 18.8492 17.6108 18.7742 18.2617 16.5492C18.2858 16.4742 18.4617 15.9617 18.3233 15.1742L18.3617 15.23ZM10.8758 9.1925H9.0025C9.0025 10.8075 8.995 12.4125 8.995 14.03C8.995 15.0567 9.0475 15.9992 8.88 16.2892C8.605 16.8633 7.89667 16.79 7.575 16.6892C7.245 16.5258 7.0775 16.3008 6.88333 15.9767C6.83083 15.8892 6.79167 15.8133 6.7775 15.8133L5.25667 16.7508C5.51083 17.2758 5.88167 17.7275 6.36 18.015C7.0725 18.44 8.03 18.5775 9.0325 18.3525C9.685 18.1642 10.2475 17.7767 10.5417 17.1767C10.9667 16.4017 10.8767 15.4517 10.8725 14.3883C10.8825 12.6767 10.8725 10.9642 10.8725 9.23917L10.8758 9.1925Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_42_2938\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </>\n )\n }\n\n if (language === 'python') {\n return (\n <>\n {showLabel ? <>Python</> : null}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M9.86 2C9.10148 2 8.37403 2.30132 7.83767 2.83767C7.30132 3.37403 7 4.10148 7 4.86V6.54H11.29C11.68 6.54 12 7.11 12 7.5H4.86C4.10148 7.5 3.37403 7.80132 2.83767 8.33767C2.30132 8.87403 2 9.60148 2 10.36V14.141C2 14.8995 2.30132 15.627 2.83767 16.1633C3.37403 16.6997 4.10148 17.001 4.86 17.001H6.04V14.321C6.03868 13.9459 6.11143 13.5742 6.25407 13.2273C6.3967 12.8803 6.60642 12.565 6.8712 12.2993C7.13598 12.0336 7.45061 11.8227 7.79704 11.6789C8.14347 11.535 8.51489 11.461 8.89 11.461H14.14C15.72 11.461 17 10.19 17 8.61V4.86C17 4.10148 16.6987 3.37403 16.1623 2.83767C15.626 2.30132 14.8985 2 14.14 2H9.86ZM9.14 3.61C9.54 3.61 9.86 3.73 9.86 4.32C9.86 4.91 9.54 5.211 9.14 5.211C8.75 5.211 8.43 4.911 8.43 4.321C8.43 3.731 8.75 3.61 9.14 3.61Z\"\n fill=\"#0288D1\"\n />\n <path\n d=\"M17.959 7V9.68C17.9602 10.055 17.8873 10.4266 17.7446 10.7734C17.602 11.1202 17.3922 11.4355 17.1274 11.7011C16.8627 11.9667 16.5481 12.1774 16.2017 12.3212C15.8554 12.465 15.484 12.539 15.109 12.539H9.86C9.48489 12.5377 9.11321 12.6104 8.76628 12.7531C8.41935 12.8957 8.10399 13.1054 7.83828 13.3702C7.57257 13.635 7.36175 13.9496 7.2179 14.296C7.07405 14.6425 7 15.0139 7 15.389V19.139C7 19.8975 7.30132 20.625 7.83767 21.1613C8.37403 21.6977 9.10148 21.999 9.86 21.999H14.14C14.8983 21.999 15.6256 21.6978 16.162 21.1617C16.6983 20.6255 16.9997 19.8983 17 19.14V17.46H12.709C12.319 17.46 12 16.89 12 16.5H19.14C19.8985 16.5 20.626 16.1987 21.1623 15.6623C21.6987 15.126 22 14.3985 22 13.64V9.86C22 9.10148 21.6987 8.37403 21.1623 7.83767C20.626 7.30132 19.8985 7 19.14 7H17.959ZM8.32 11.513L8.316 11.517L8.354 11.513H8.32ZM14.86 18.789C15.25 18.789 15.57 19.089 15.57 19.679C15.57 19.7722 15.5516 19.8646 15.516 19.9507C15.4803 20.0368 15.428 20.1151 15.362 20.181C15.2961 20.247 15.2178 20.2993 15.1317 20.335C15.0456 20.3706 14.9532 20.389 14.86 20.389C14.46 20.389 14.14 20.269 14.14 19.679C14.14 19.089 14.46 18.789 14.86 18.789Z\"\n fill=\"#FDD835\"\n />\n </svg>\n </>\n )\n }\n\n if (language === 'go') {\n return (\n <>\n {showLabel ? <>Go</> : null}\n <svg viewBox=\"0 0 128 128\" width={size} height={size} className={className}>\n <path d=\"M108.7 64.4c-1.6-1.2-3.8-1.9-6-1.9-.1-3.6-.2-7.2-.2-10.7-.1-9.5-.1-19.3-2.6-28.6 6.5-2.5 6.2-7.6 5.9-9.2-.7-3.8-4-7.9-9-7.9-1.9 0-3.9.6-5.8 1.9C83.4 1.6 73 .5 62.5.5 53 1.3 46.4 2.8 41 5.4c-2.3 1.1-4.2 2.4-6 3.9-1.8-1.1-3.7-1.7-5.5-1.7-5.1 0-8.8 4.1-9.4 8.1-.6 4 1.6 7.3 6 8.9-2.2 8.9-1.5 18.1-.7 27 .3 3.7.6 7.6.7 11.4h-.5c-2.3 0-4.6.7-6.3 1.9-.7.5-2.1 2-2 3.3 0 .4.2.9.9 1.3.2 2.1 1.5 2.4 2.3 2.4 1.6 0 3.4-1.1 3.9-1.5.5-.3.9-.5 1.2-.6l.5-.2c-.1 2.2-.3 4.5-.5 7-.9 11.7-2 25 3.9 34.6 1.2 1.9 2.6 3.6 4.3 5.1l-.9.6c-2.7 1.9-6.7 4.7-4.3 8.5v.1c.4.4.6.5.9.5h.1c.3.5.9 1.6 2.4 1.6.6 0 1.3-.2 2-.6 1.1-.6 2.1-1.4 3-2.2 1.5-1.3 3-2.6 5-2.9l.6-.1.7.3c6.4 2.6 12.9 3.3 17.3 3.4h2.6c7.7 0 14.8-1.2 20.5-3.5 1.2-.5 2.4-1.1 3.5-1.7 1.2.5 2.3 1.7 3.4 3 1.4 1.6 2.8 3.2 4.5 3.2.8 0 1.6-.4 2.4-1.1 1.2-.7 1.8-1.7 1.8-2.9 0-2.6-2.9-5.7-5.2-7.2 2-2 3.6-4.2 4.9-6.7 5.9-11.8 5-26.2 4.2-39l.5.3c.5.4 2.3 1.5 3.9 1.5.8 0 2.1-.3 2.3-2.4.7-.4.8-.9.9-1.3 0-1.3-1.4-2.8-2.1-3.3zm-17.1-56c1.7-1.1 3.4-1.7 5.2-1.7 4.4 0 7.7 3.7 8.3 7.3.6 3.7-1.4 6.8-5.4 8.4 0-.2-.1-.3-.2-.5l-.6-2.1-.3-.8-.9-2.4c0-.1 0-.1-.1-.2 0 0 0-.1-.1-.1-.4-.7-.7-1.4-1.1-2l-.2-.3-1.2-1.8c-.1-.1-.2-.2-.3-.4-.4-.5-.8-1-1.3-1.5-.1-.2-.3-.3-.5-.5l-1.2-1.2c.1.1 0-.1-.1-.2-.2zM26.3 23.9c-4-1.5-6.1-4.5-5.5-8.1.6-3.7 4-7.5 8.7-7.5 1.7 0 3.3.5 4.9 1.4l-.1.1-.3.3c-.5.5-1 1-1.4 1.5l-.3.3c-.5.6-1 1.2-1.5 1.9l-.2.3c-.5.7-.9 1.3-1.3 2 0 0 0 .1-.1.1-.4.7-.8 1.5-1.1 2.3 0 .2-.1.4-.1.5-.3.8-.7 1.6-.9 2.4 0 .1 0 .1-.1.2l-.6 2-.1.3zm-.9 45.2c-.3.1-.8.3-1.4.7-1 .7-2.4 1.4-3.5 1.4-.6 0-1.4-.2-1.6-1.7.5-.2 1-.4 1.4-.9.1-.2.1-.4-.1-.5-.2-.1-.4-.1-.5.1-.3.3-.6.5-1.1.6h-.1c-.3-.2-.5-.4-.6-.7.1-.9 1.1-2.1 1.8-2.7 1.6-1.2 3.7-1.8 5.9-1.8h.6v2.9l-.1 1c-.1 1.4-.2 1.4-.7 1.6zm15.8 52l.1.1c-1.9.5-3.4 1.7-4.8 2.9-.9.8-1.8 1.6-2.9 2.1-.6.4-1.1.5-1.6.5-1 0-1.5-.8-1.7-1.2.1-.8.5-1.5 1-2.2.3-.4.6-.9.8-1.4.1-.2 0-.4-.2-.5-.2-.1-.4 0-.5.2-.2.4-.5.8-.7 1.3-.4.7-.9 1.4-1.1 2.2h-.1c-.1 0-.2-.1-.4-.3-2-3.2 1.4-5.5 4.2-7.5l.9-.6h.2l.2.1 1.2.9.4.3c.4.3.8.6 1.3.9l.5.3 1.3.8.6.3c.4.3.8.5 1.3.8zm52.3-5.3c2.1 1.4 5 4.4 5 6.7 0 .8-.4 1.5-1.1 2-.1-.3-.2-.6-.4-.9-.3-.9-.7-1.9-1.5-2.6-.1-.1-.4-.1-.5 0-.1.1-.1.4 0 .5.7.6 1 1.5 1.3 2.4l.4 1.1c-.6.5-1.2.8-1.8.8-1.4 0-2.6-1.5-3.9-3-1-1.1-2-2.3-3.1-3l.3-.2c.3-.1.5-.3.7-.5l1.3-.9.8-.6 1.4-1.1c.2-.2.4-.4.7-.6.2.1.3 0 .4-.1zm4.7-7.5c-1.2 2.5-3.4 5.7-7.1 8.5l-.2.1c-.3.3-.7.5-1.1.8l-1.1.7-.2.1-1.6.9-.7.4c-5.4 2.8-12.8 4.8-23.2 4.8h-2.6c-8.1-.3-14.3-2-18.9-4.2h-.1c-1.1-.5-2.1-1.1-3.1-1.7-4.6-2.9-7.1-6.1-8.3-8-5.8-9.4-4.8-22.5-3.8-34.1.2-3 .5-5.7.6-8.4l.1-1.8.1-.1v-.1l-.1-.5V63c-.1-4-.4-7.7-.7-11.5-.8-9-1.5-18.4.9-27.4.2-.8.4-1.6.7-2.3v-.1l.1-.3c.1-.4.3-.8.5-1.2.1-.3.2-.5.3-.7l.3-.8.4-.8.3-.6c.1-.3.3-.6.4-.8.1-.2.2-.4.3-.5.2-.4.5-.8.7-1.1.2-.3.4-.6.6-.8.1-.2.2-.3.4-.5l.6-.8c.1-.1.2-.2.3-.4l.9-1 .1-.1 1.2-1.2.2-.2c7-6 17-7.8 27.1-8.6 5.9 0 13.5.3 20 2.7 3.2 1.2 6 2.8 8.4 4.9.3.3.6.6.9.8l.9.9 1 1.2.6.7 1 1.4.5.7.9 1.5.4.8c.3.6.5 1.3.7 2 0 .1.1.2.1.4.2.6.4 1.2.6 1.7l.1.3c3 9.9 3.1 20.2 3.1 30.4 0 3.5 0 7.4.2 10.4v.6c0 .9.1 1.8.1 2.5v.1l.1 1.9c0 .6.1 1.3.1 2v.3c.9 12.6 1.9 27.1-4 38.8zm11.2-40c-.5-.2-.9-.3-1.2-.7-.1-.2-.3-.2-.5-.1s-.2.3-.1.5c.4.5.9.7 1.4.9-.2 1.5-1 1.7-1.6 1.7-1.1 0-2.5-.7-3.5-1.4-.4-.3-.7-.4-1-.5l-.2-2.4c0-.4 0-.8-.1-1.1 0-.6-.1-1.3-.1-2 2.1.1 4.1.7 5.6 1.8.7.5 1.8 1.8 1.7 2.6.1.3-.1.6-.4.7zM77.7 7.2c-3.8 0-7.5 1.6-9.9 4.1-2.2 2.4-3.3 5.4-3.1 8.8v.1C66 27.4 72 30 76.8 30c4.2 0 8.1-1.8 10.4-4.7 2-2.5 2.7-5.8 1.8-9.3-1.5-6.4-6.8-8.8-11.3-8.8zm8.9 17.5c-2.1 2.7-5.9 4.3-9.9 4.3-2.7 0-5.2-.7-7.2-2.1-2.2-1.6-3.6-3.9-4.1-6.9-.2-3.2.8-6 2.9-8.2 2.3-2.5 5.8-3.9 9.4-3.9 4.2 0 9.2 2.1 10.6 8.1.8 3.4.2 6.4-1.7 8.7zm-27-5.5c-.4-7.3-6.2-10.6-11.8-10.6-4.1 0-7.9 1.7-10.3 4.5-2.1 2.6-2.8 5.9-2.1 9.6 1.6 6.3 7 8.5 11.5 8.5 3.8 0 7.4-1.5 9.8-4 2.1-2.2 3.1-5 2.9-8zM47 30.5c-4.2 0-9.3-2.1-10.8-8-.7-3.5 0-6.6 2-9 2.2-2.7 5.8-4.3 9.7-4.3 7.7 0 10.8 5.4 11.1 10 .2 2.9-.7 5.5-2.6 7.5-2.3 2.4-5.8 3.8-9.4 3.8zm-5.4-13.9c-1.9 0-3.5 1.7-3.5 3.8 0 2.1 1.6 3.8 3.5 3.8s3.5-1.7 3.5-3.8c0-2.1-1.6-3.8-3.5-3.8zm1.6 5.7c-.5 0-.8-.4-.8-1 0-.5.4-1 .8-1 .5 0 .8.4.8 1 0 .5-.4 1-.8 1zm27.9-6.6c-1.9 0-3.5 1.7-3.5 3.8 0 2.1 1.6 3.8 3.5 3.8s3.5-1.7 3.5-3.8c0-2.1-1.5-3.8-3.5-3.8zm1.6 5.6c-.5 0-.8-.4-.8-1 0-.5.4-1 .8-1 .5 0 .8.4.8 1s-.3 1-.8 1zm-4.2 9c.1-.3.1-.7 0-1.1-1.1-4.1-10.4-3.5-10.4 1.3 0-.4-.1-.6-.1-.8 0 .3.1.6.1.8-1.5.2-2.8 1.2-3.6 2.7-.7 1.4-.8 2.9-.1 4.2.6 1.1 1.6 1.7 2.8 1.7-.4 2.1 0 4.6 1 6 .5.7 1.2 1.1 1.8 1.1.9 0 1.9-.7 2.8-1.8.6 1 1.5 1.7 2.7 1.9h.2c.2-.1.4-.2.6-.2.7-.2 1.4-.5 1.9-1.3v-.1c.3-1.4.1-2.9 0-4.3l-.1-1.2c.5.2 1 .3 1.5.3 1 0 1.8-.4 2.5-1.2.9-1 1.2-2 1-3-.1-2.3-2.4-4-4.6-5zm-5.9 13.2c-.9 1.1-1.7 1.7-2.4 1.7-.5 0-.9-.3-1.3-.7-.9-1.2-1.3-3.7-.9-5.6l.5-.1h.2l.6-.1h.1l1.2-.4.6-.2c.1 0 .1 0 .2-.1.2-.1.3-.1.5-.1.2-.1.4-.1.7-.2h.2l-.1 1.3c-.1 1.3-.2 2.9-.1 4.5zm5.2-3.3c.1 1.3.2 2.7 0 4-.3.6-.8.7-1.5 1l-.6.2c-1-.2-1.8-.8-2.2-1.8-.2-1.5-.1-3 .1-4.6l.1-1.5h.1c1.1 0 2.1.5 3.1.9l.7.3c.1.4.2.9.2 1.5zm4.1-2.7c-.6.7-1.3 1-2 1-.6 0-1.1-.2-1.7-.4-.3-.1-.6-.2-.9-.4-1.1-.4-2.2-.9-3.4-.9h-1.3l-.4.1c-.1 0-.2 0-.3.1-.2 0-.3.1-.5.2-.1 0-.2 0-.2.1l-.8.3c-.1.1-.3.1-.4.1l-.3.1-.3.1c-.2.1-.3.1-.5.1-.1 0-.2 0-.3.1l-.5.1h-.2l-.6.1c-1 0-1.7-.4-2.2-1.3-.6-1-.6-2.3.1-3.5.7-1.2 1.9-2.1 3.1-2.3 1.2 2.5 8.1 2.2 9.9-.2 2 .9 4.2 2.5 4.5 4.2.2.7-.1 1.5-.8 2.3zM58 29.4z\"></path>\n </svg>\n </>\n )\n }\n\n if (language === 'ruby') {\n return (\n <>\n {showLabel ? <>Ruby</> : null}\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <g clipPath=\"url(#clip0_42_2969)\">\n <path\n d=\"M16.7967 0.0691243C19.3242 0.506624 20.0408 2.23412 19.9875 4.04412L20 4.01829L18.8625 18.925L4.075 19.9383H4.08833C2.86083 19.8866 0.125 19.7741 0 15.9491L1.37083 13.4491L3.72 18.9375L4.13917 19.9141L6.47667 12.2941L6.45167 12.3L6.465 12.275L14.1775 14.7383L13.0142 10.2125L12.1892 6.96246L19.5392 6.48829L19.0267 6.06329L13.75 1.76162L16.7992 0.060791L16.7967 0.0691243ZM4.275 4.22746C7.2425 1.28329 11.0725 -0.456709 12.5433 1.02746C14.0117 2.50829 12.4558 6.11496 9.4825 9.05746C6.51333 12.0008 2.73 13.8358 1.2625 12.355C-0.209167 10.8741 1.3 7.17412 4.2725 4.22996L4.275 4.22746Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_42_2969\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </>\n )\n }\n\n if (language === 'php') {\n return (\n <>\n {showLabel ? <>PHP</> : null}\n <svg viewBox=\"0 0 128 128\" width={size} height={size} className={className}>\n <path d=\"M64 30.332C28.654 30.332 0 45.407 0 64s28.654 33.668 64 33.668c35.345 0 64-15.075 64-33.668S99.346 30.332 64 30.332zm-5.982 9.81h7.293v.003l-1.745 8.968h6.496c4.087 0 6.908.714 8.458 2.139 1.553 1.427 2.017 2.017 3.737 3.737 5.946 1.719 2.209-2.209 2.209-5.928 0-8.137zm-51.051 51.372c0-3.757-1.072-5.686-3.214-5.791a6.03 6.03 0 00-2.495.409c-.646.231-1.082.461-1.311.692v8.968c1.371.86 2.588 1.26 3.649 1.197 2.247-.148 3.371-1.971 3.371-5.475zm2.643.157c0 1.909-.447 3.493-1.348 4.753-1.003 1.427-2.394 2.16-4.172 2.201-1.34.043-2.721-.378-4.142-1.258v8.151l-2.298-.82V107.14c.377-.462.862-.859 1.451-1.196 1.368-.798 3.031-1.207 4.987-1.228l.033.032c1.788-.022 3.166.712 4.134 2.201.902 1.366 1.355 3.117 1.355 5.257zm14.049 5.349c0 2.56-.257 4.333-.77 5.318-.516.986-1.497 1.773-2.945 2.359-1.174.463-2.444.714-3.808.757l-.38-1.448c1.386-.188 2.362-.378 2.928-.566 1.114-.377 1.878-.955 2.298-1.73.337-.631.503-1.835.503-3.618v-.599a11.809 11.809 0 01-4.941 1.068c-1.132 0-2.13-.354-2.99-1.068-.966-.777-1.449-1.764-1.449-2.958v-9.566l2.299-.787v9.63c0 1.028.332 1.82.996 2.376s1.524.822 2.578.803c1.054-.022 2.183-.431 3.382-1.228v-11.234h2.299v12.491zm8.973 1.479a9.457 9.457 0 01-.757.032c-1.3 0-2.314-.309-3.038-.93-.722-.622-1.084-1.479-1.084-2.573v-9.054h-1.574v-1.446h1.574v-3.84l2.296-.817v4.657h2.583v1.446h-2.583v8.991c0 .862.231 1.474.694 1.83.397.295 1.029.463 1.889.506v1.198zm13.917-.189h-2.298v-8.873c0-.902-.211-1.68-.631-2.329-.485-.734-1.159-1.102-2.024-1.102-1.054 0-2.372.556-3.954 1.668v10.636h-2.298V97.637l2.298-.725v9.659c1.469-1.068 3.073-1.604 4.816-1.604 1.218 0 2.203.41 2.958 1.228.757.817 1.134 1.836 1.134 3.053v9.597h-.001zm12.218-7.157c0-1.444-.274-2.636-.82-3.579-.649-1.149-1.657-1.756-3.021-1.818-2.52.146-3.778 1.951-3.778 5.412 0 1.587.262 2.912.79 3.976.674 1.356 1.685 2.024 3.033 2.002 2.531-.02 3.796-2.017 3.796-5.993zm2.518.015c0 2.055-.526 3.765-1.575 5.131-1.154 1.528-2.749 2.296-4.783 2.296-2.017 0-3.589-.768-4.723-2.296-1.028-1.366-1.542-3.076-1.542-5.131 0-1.932.556-3.556 1.668-4.879 1.174-1.403 2.718-2.107 4.627-2.107 1.909 0 3.463.704 4.66 2.107 1.111 1.323 1.668 2.947 1.668 4.879zm13.178 7.142h-2.299v-9.376c0-1.028-.31-1.831-.928-2.409-.619-.576-1.443-.855-2.472-.833-1.091.021-2.13.378-3.116 1.069v11.549h-2.299v-11.833c1.323-.963 2.54-1.592 3.652-1.886 1.049-.274 1.974-.41 2.771-.41.545 0 1.059.053 1.542.158.903.209 1.637.596 2.203 1.164.631.629.946 1.384.946 2.267v10.54z\"></path>\n </svg>\n </>\n )\n }\n\n return\n }\n return (\n <div\n className={cn('text-muted-foreground', {\n 'text-sm flex items-center justify-center flex-row gap-2': showLabel,\n 'font-mono text-xs': !showLabel,\n })}\n >\n {renderIcon(language)}\n </div>\n )\n}\n","import { useThemeStore } from '@motiadev/ui'\nimport type React from 'react'\nimport { useRef, useState } from 'react'\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'\nimport { oneDark, oneLight } from 'react-syntax-highlighter/dist/esm/styles/prism'\nimport type { Feature } from '@/types/file'\nimport { FeatureCard } from './feature-card'\nimport { LanguageIndicator } from './language-indicator'\n\ntype CodeDisplayProps = {\n code: string\n language?: string\n features?: Feature[]\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 isHighlighted = (lines: string[], lineNumber: number) => {\n return lines.some((line) => {\n const [start, end] = line.split('-').map((num) => parseInt(num, 10))\n\n if (end !== undefined) {\n return lineNumber >= start && lineNumber <= end\n }\n\n return lineNumber == start\n })\n}\n\nconst getFirstLineNumber = (line: string) => {\n const [start] = line.split('-').map((num) => parseInt(num, 10))\n return start\n}\n\nexport const CodeDisplay: React.FC<CodeDisplayProps> = ({ code, language, features }) => {\n const theme = useThemeStore((state) => state.theme)\n const themeStyle = theme === 'dark' ? oneDark : oneLight\n const [highlightedLines, setHighlightedLines] = useState<string[]>([])\n const [selectedFeature, setSelectedFeature] = useState<Feature | null>(null)\n const ref = useRef<HTMLDivElement>(null)\n\n const handleFeatureClick = (feature: Feature) => {\n setSelectedFeature(feature)\n setHighlightedLines(feature.lines)\n const lineNumber = getFirstLineNumber(feature.lines[0])\n const line = ref.current?.querySelector(`[data-line-number=\"${lineNumber}\"]`)\n\n if (line) {\n line.scrollIntoView({ behavior: 'smooth', block: 'center' })\n }\n }\n\n return (\n <div className=\"flex flex-col h-full overflow-hidden\">\n <div className=\"flex items-center py-2 px-5 dark:bg-[#1e1e1e] gap-2 justify-center\">\n <div className=\"text-sm text-muted-foreground\">Read only</div>\n <div className=\"flex-1\" />\n <LanguageIndicator language={language} className=\"w-4 h-4\" size={16} showLabel />\n </div>\n <div className=\"flex flex-row h-[calc(100%-36px)]\">\n {features && features.length > 0 && (\n <div className=\"flex flex-col gap-2 p-2 bg-card overflow-y-auto min-w-[200px] w-[300px]\">\n {features.map((feature, index) => (\n <FeatureCard\n key={index}\n feature={feature}\n highlighted={selectedFeature === feature}\n onClick={() => handleFeatureClick(feature)}\n onHover={() => handleFeatureClick(feature)}\n />\n ))}\n </div>\n )}\n\n <div className=\"overflow-y-auto\" ref={ref}>\n <SyntaxHighlighter\n showLineNumbers\n language={language}\n style={themeStyle}\n codeTagProps={codeTagProps}\n customStyle={customStyle}\n wrapLines\n lineProps={(lineNumber) => {\n if (isHighlighted(highlightedLines, lineNumber)) {\n return {\n 'data-line-number': lineNumber,\n style: {\n borderLeft: '2px solid var(--accent-1000)',\n backgroundColor: 'rgb(from var(--accent-1000) r g b / 0.2)',\n },\n }\n }\n\n return {\n 'data-line-number': lineNumber,\n style: {\n borderLeft: '2px solid transparent',\n },\n }\n }}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n </div>\n </div>\n )\n}\n","import { Sidebar } from '@motiadev/ui'\nimport { X } from 'lucide-react'\nimport type React from 'react'\nimport type { Feature } from '@/types/file'\nimport { CodeDisplay } from './code-display'\n\ntype NodeSidebarProps = {\n content: string\n features: Feature[]\n title: string\n subtitle?: string\n variant: 'event' | 'api' | 'noop' | 'cron'\n language?: string\n isOpen: boolean\n onClose: () => void\n}\n\nexport const NodeSidebar: React.FC<NodeSidebarProps> = ({\n content,\n title,\n subtitle,\n language,\n isOpen,\n onClose,\n features,\n}) => {\n if (!isOpen) return null\n\n return (\n <Sidebar\n title={title}\n subtitle={subtitle}\n initialWidth={900}\n contentClassName=\"p-0 h-full gap-0\"\n onClose={onClose}\n actions={[{ icon: <X />, onClick: onClose, label: 'Close' }]}\n >\n <CodeDisplay code={content} language={language} features={features} />\n </Sidebar>\n )\n}\n","import { Button, cn } from '@motiadev/ui'\nimport { ScanSearch } from 'lucide-react'\nimport type React from 'react'\nimport { type PropsWithChildren, useCallback, useEffect, useState } from 'react'\nimport { useHandlePositions } from '@/hooks/use-update-handle-positions'\nimport type { Feature } from '@/types/file'\nimport type { BaseNodeProps } from '../node-props'\nimport { BaseHandle } from './base-handle'\nimport { NodeHeader } from './node-header'\nimport { NodeSidebar } from './node-sidebar'\n\ntype Props = PropsWithChildren<{\n title: string\n subtitle?: string\n variant: 'event' | 'api' | 'noop' | 'cron'\n language?: string\n className?: string\n disableSourceHandle?: boolean\n disableTargetHandle?: boolean\n data: BaseNodeProps\n}>\n\nexport const BaseNode: React.FC<Props> = ({\n title,\n variant,\n children,\n disableSourceHandle,\n disableTargetHandle,\n language,\n subtitle,\n data,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n const { sourcePosition, targetPosition, toggleTargetPosition, toggleSourcePosition } = useHandlePositions(data)\n\n const [content, setContent] = useState<string | null>(null)\n const [features, setFeatures] = useState<Feature[]>([])\n\n const fetchContent = useCallback(async () => {\n const response = await fetch(`/__motia/step/${data.id}`)\n const responseData = await response.json()\n setContent(responseData.content)\n setFeatures(responseData.features)\n }, [data.id])\n\n useEffect(() => {\n if (data.id && isOpen) {\n fetchContent()\n }\n }, [data.id, isOpen, fetchContent])\n\n return (\n <div\n className={cn('p-1 rounded-lg max-w-[350px]', {\n 'bg-muted-foreground/20': isOpen,\n })}\n >\n <div\n className=\"rounded-lg dark:bg-[#101010] bg-background border-1 border-muted-foreground/30 border-solid\"\n data-testid={`node-${title?.toLowerCase().replace(/ /g, '-')}`}\n >\n <div className=\"group relative\">\n {/* Main node content */}\n <NodeHeader text={title} variant={variant} className=\"border-b-2 border-muted-foreground/10\">\n <div className=\"flex justify-end\">\n <Button\n data-testid={`open-code-preview-button-${title?.toLowerCase()}`}\n variant=\"ghost\"\n className=\"h-5 p-0.5\"\n onClick={() => setIsOpen(true)}\n >\n <ScanSearch className=\"w-4 h-4\" />\n </Button>\n </div>\n </NodeHeader>\n\n {subtitle && <div className=\"py-4 px-6 text-sm text-muted-foreground\">{subtitle}</div>}\n {children && (\n <div className=\"p-2\">\n <div\n className={cn('space-y-3 p-4 text-sm text-muted-foreground', {\n 'bg-card': variant !== 'noop',\n })}\n >\n {children}\n </div>\n </div>\n )}\n\n {/* Connection points */}\n {!disableTargetHandle && (\n <BaseHandle type=\"target\" position={targetPosition} onTogglePosition={toggleTargetPosition} />\n )}\n {!disableSourceHandle && (\n <BaseHandle type=\"source\" position={sourcePosition} onTogglePosition={toggleSourcePosition} />\n )}\n </div>\n </div>\n\n {content && (\n <NodeSidebar\n features={features}\n content={content}\n title={title}\n subtitle={subtitle}\n variant={variant}\n language={language}\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n />\n )}\n </div>\n )\n}\n","import type { PropsWithChildren } from 'react'\nimport { BaseNode } from './base-node/base-node'\nimport type { ApiNodeProps } from './node-props'\n\ntype Props = PropsWithChildren<ApiNodeProps>\n\nexport const ApiNode = ({ data, children }: Props) => {\n return (\n <BaseNode\n data={data}\n variant=\"api\"\n title={data.name}\n language={data.language}\n subtitle={data.description}\n disableSourceHandle={!data.emits?.length && !data.virtualEmits?.length}\n disableTargetHandle={!data.subscribes?.length && !data.virtualSubscribes?.length}\n >\n {data.webhookUrl && (\n <div className=\"flex gap-1 items-center text-muted-foreground\">\n <div className=\"font-mono\">{data.webhookUrl}</div>\n </div>\n )}\n {children}\n </BaseNode>\n )\n}\n","import type React from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { BaseNode } from './base-node/base-node'\nimport type { EventNodeProps } from './node-props'\n\nexport const EventNode: React.FC<PropsWithChildren<EventNodeProps>> = ({ data, children }) => {\n return (\n <BaseNode\n data={data}\n variant=\"event\"\n title={data.name}\n subtitle={data.description}\n language={data.language}\n disableSourceHandle={!data.emits?.length && !data.virtualEmits?.length}\n disableTargetHandle={!data.subscribes?.length && !data.virtualSubscribes?.length}\n >\n {children}\n </BaseNode>\n )\n}\n","import type React from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { BaseNode } from './base-node/base-node'\nimport type { NoopNodeProps } from './node-props'\n\nexport const NoopNode: React.FC<PropsWithChildren<NoopNodeProps>> = ({ data, children }) => {\n return (\n <BaseNode\n data={data}\n variant=\"noop\"\n title={data.name}\n subtitle={data.description}\n disableSourceHandle={!data.virtualEmits.length}\n disableTargetHandle={!data.subscribes?.length}\n >\n {children}\n </BaseNode>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["workbenchXPath","sidebarContainer","closePanelButton","bottomPanel","flows","dropdownFlow","flowId","feature","featureId","previewButton","stepId","node","endpoints","endpointsList","endpoint","method","path","callPanel","specButton","bodyTab","headersTab","paramsTab","callTab","response","playButton","tracing","trace","index","details","timeline","logs","container","searchContainer","traceColumn","row","states","links","Position","useReactFlow","useUpdateNodeInternals","BaseNodeProps","useHandlePositions","data","$","_c","reactFlow","updateNodeInternals","sourcePosition","nodeConfig","sourceHandlePosition","Bottom","Right","targetPosition","targetHandlePosition","Top","Left","t0","position","updateNode","id","updateSourcePosition","t1","position_0","updateTargetPosition","t2","newPosition","toggleTargetPosition","t3","newPosition_0","toggleSourcePosition","t4","HandleProps","Position","Handle","RFHandle","clsx","React","HTMLAttributes","Props","Omit","HTMLDivElement","isHidden","onTogglePosition","BaseHandle","FC","props","$","_c","position","rest","isHorizontal","Left","Right","t0","Top","t1","Bottom","t2","t3","t4","t5","t6","t7","Symbol","for","background","t8","t9","cn","cva","VariantProps","CalendarClock","CircleOff","Link2","Waypoints","React","PropsWithChildren","baseIcon","variants","variant","event","api","noop","cron","NodeIcon","t0","$","_c","t1","Symbol","for","t2","Props","text","className","NodeHeader","FC","children","t3","t4","t5","t6","t7","cn","React","Feature","Props","feature","highlighted","onClick","onHover","FeatureCard","FC","t0","$","_c","t1","id","t2","t3","t4","title","t5","description","t6","link","t7","cn","FC","EventNodeData","Props","language","className","size","showLabel","LanguageIndicator","t0","$","_c","t1","t2","undefined","t3","language_0","renderIcon","t4","t5","t6","t7","useThemeStore","React","useRef","useState","Prism","SyntaxHighlighter","oneDark","oneLight","Feature","FeatureCard","LanguageIndicator","CodeDisplayProps","code","language","features","codeTagProps","style","fontFamily","fontSize","customStyle","margin","borderRadius","padding","isHighlighted","lines","lineNumber","some","line","start","end","split","map","num","parseInt","undefined","getFirstLineNumber","CodeDisplay","FC","t0","$","_c","theme","_temp","themeStyle","t1","Symbol","for","highlightedLines","setHighlightedLines","selectedFeature","setSelectedFeature","ref","handleFeatureClick","feature","current","querySelector","scrollIntoView","behavior","block","t2","t3","t4","t5","t6","t7","length","feature_0","index","t8","lineNumber_0","borderLeft","backgroundColor","t9","t10","t11","t12","state","Sidebar","X","React","Feature","CodeDisplay","NodeSidebarProps","content","features","title","subtitle","variant","language","isOpen","onClose","NodeSidebar","FC","t0","$","_c","t1","Symbol","for","t2","icon","onClick","label","t3","t4","Button","cn","ScanSearch","React","PropsWithChildren","useCallback","useEffect","useState","useHandlePositions","Feature","BaseNodeProps","BaseHandle","NodeHeader","NodeSidebar","Props","title","subtitle","variant","language","className","disableSourceHandle","disableTargetHandle","data","BaseNode","FC","t0","$","_c","children","isOpen","setIsOpen","sourcePosition","targetPosition","toggleTargetPosition","toggleSourcePosition","content","setContent","t1","Symbol","for","features","setFeatures","t2","id","response","fetch","responseData","json","fetchContent","t3","t4","t5","t6","toLowerCase","replace","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","PropsWithChildren","BaseNode","ApiNodeProps","Props","ApiNode","t0","$","_c","data","children","t1","emits","length","virtualEmits","t2","subscribes","virtualSubscribes","t3","webhookUrl","t4","name","language","description","React","PropsWithChildren","BaseNode","EventNodeProps","EventNode","FC","t0","$","_c","data","children","t1","emits","length","virtualEmits","t2","subscribes","virtualSubscribes","t3","name","description","language","React","PropsWithChildren","BaseNode","NoopNodeProps","NoopNode","FC","t0","$","_c","data","children","t1","virtualEmits","length","t2","subscribes","t3","name","description"],"sources":["../src/components/tutorial/engine/workbench-xpath.ts","../src/hooks/use-update-handle-positions.ts","../src/publicComponents/base-node/base-handle.tsx","../src/publicComponents/base-node/node-header.tsx","../src/publicComponents/base-node/feature-card.tsx","../src/publicComponents/base-node/language-indicator.tsx","../src/publicComponents/base-node/code-display.tsx","../src/publicComponents/base-node/node-sidebar.tsx","../src/publicComponents/base-node/base-node.tsx","../src/publicComponents/api-node.tsx","../src/publicComponents/event-node.tsx","../src/publicComponents/noop-node.tsx"],"sourcesContent":["export const workbenchXPath = {\n sidebarContainer: '//div[@data-testid=\"sidebar-panel\"]',\n closePanelButton: '//div[@id=\"app-sidebar-container\"]//button[@data-testid=\"close-panel\"]',\n bottomPanel: '//div[@id=\"bottom-panel\"]',\n\n flows: {\n dropdownFlow: (flowId: string) => `//div[@data-testid=\"dropdown-${flowId}\"]`,\n feature: (featureId: string) => `//div[@data-feature-id=\"${featureId}\"]`,\n previewButton: (stepId: string) => `//button[@data-testid=\"open-code-preview-button-${stepId}\"]`,\n node: (stepId: string) => `//div[@data-testid=\"node-${stepId}\"]`,\n },\n\n endpoints: {\n endpointsList: '//div[@data-testid=\"endpoints-list\"]',\n endpoint: (method: string, path: string) => `//div[@data-testid=\"endpoint-${method}-${path}\"]`,\n callPanel: '//div[@data-testid=\"endpoint-details-panel\"]',\n specButton: '//button[@data-testid=\"endpoint-spec-button\"]',\n\n bodyTab: '//button[@data-testid=\"endpoint-body-tab\"]',\n headersTab: '//button[@data-testid=\"endpoint-headers-tab\"]',\n paramsTab: '//button[@data-testid=\"endpoint-params-tab\"]',\n\n callTab: '//button[@data-testid=\"endpoint-body-tab\"]', // deprecated\n response: '//div[@data-testid=\"endpoint-response-container\"]',\n playButton: '//button[@data-testid=\"endpoint-play-button\"]',\n },\n\n tracing: {\n trace: (index: number) => `(//button[contains(@class, 'motia-trace-group')])[${index}]`,\n details: '//div[@data-testid=\"trace-details\"]',\n timeline: (index: number) => `(//div[@data-testid=\"trace-timeline-item\"])[${index}]`,\n },\n\n logs: {\n container: '//div[@data-testid=\"logs-container\"]',\n searchContainer: '//div[@data-testid=\"logs-search-container\"]',\n traceColumn: (index: number) => `(//td[starts-with(@data-testid, 'trace')])[${index}]`,\n row: '//div[@data-testid=\"log-row\"]',\n },\n\n states: {\n container: '//div[@data-testid=\"states-container\"]',\n row: (index: number) => `(//tr[starts-with(@data-testid, 'item-')])[${index}]`,\n },\n\n links: {\n flows: '//div[@data-testid=\"flows-dropdown-trigger\"]',\n endpoints: '//button[@data-testid=\"endpoints-link\"]',\n tracing: '//button[@data-testid=\"tracing-link\"]',\n logs: '//button[@data-testid=\"logs-link\"]',\n states: '//button[@data-testid=\"states-link\"]',\n },\n}\n","import { Position, useReactFlow, useUpdateNodeInternals } from '@xyflow/react'\nimport type { BaseNodeProps } from '../publicComponents/node-props'\n\nexport const useHandlePositions = (data: BaseNodeProps) => {\n const reactFlow = useReactFlow()\n const updateNodeInternals = useUpdateNodeInternals()\n const sourcePosition = data.nodeConfig?.sourceHandlePosition === 'bottom' ? Position.Bottom : Position.Right\n const targetPosition = data.nodeConfig?.targetHandlePosition === 'top' ? Position.Top : Position.Left\n\n const updateSourcePosition = (position: 'bottom' | 'right') => {\n reactFlow.updateNode(data.id, {\n data: { ...data, nodeConfig: { ...data.nodeConfig, sourceHandlePosition: position } },\n })\n updateNodeInternals(data.id)\n }\n\n const updateTargetPosition = (position: 'top' | 'left') => {\n reactFlow.updateNode(data.id, {\n data: { ...data, nodeConfig: { ...data.nodeConfig, targetHandlePosition: position } },\n })\n updateNodeInternals(data.id)\n }\n\n const toggleTargetPosition = () => {\n const newPosition = targetPosition === Position.Top ? Position.Left : Position.Top\n updateTargetPosition(newPosition)\n }\n\n const toggleSourcePosition = () => {\n const newPosition = sourcePosition === Position.Bottom ? Position.Right : Position.Bottom\n updateSourcePosition(newPosition)\n }\n\n return {\n sourcePosition,\n targetPosition,\n updateSourcePosition,\n updateTargetPosition,\n toggleTargetPosition,\n toggleSourcePosition,\n }\n}\n","import { type HandleProps, Position, Handle as RFHandle } from '@xyflow/react'\nimport clsx from 'clsx'\nimport type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\ntype Props = HandleProps &\n Omit<HTMLAttributes<HTMLDivElement>, 'id'> & {\n isHidden?: boolean\n onTogglePosition?: () => void\n }\n\nexport const BaseHandle: React.FC<Props> = (props) => {\n const { isHidden, position, onTogglePosition, ...rest } = props\n const isHorizontal = position === Position.Left || position === Position.Right\n\n return (\n <div\n className={clsx(\n 'absolute w-[6px] h-[6px]',\n position === Position.Top && '-top-[4px]',\n position === Position.Bottom && '-bottom-[4px]',\n position === Position.Left && '-left-[4px]',\n position === Position.Right && '-right-[4px]',\n isHorizontal ? 'top-1/2 -mt-[2px]' : 'left-1/2 -ml-[2px]',\n isHidden && 'hidden',\n )}\n onClick={onTogglePosition}\n >\n <RFHandle\n {...rest}\n position={position}\n style={{ background: 'rgb(30,118,231)' }}\n className=\"\n bg-white/50\n !static\n !w-[6px]\n !h-[6px]\n !min-w-[6px]\n !min-h-[6px]\n !p-0\n !border-none\n !transform-none\n !rounded-full\n !outline-none\n !shadow-none\n \"\n />\n </div>\n )\n}\n","import { cn } from '@motiadev/ui'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { CalendarClock, CircleOff, Link2, Waypoints } from 'lucide-react'\nimport type React from 'react'\nimport type { PropsWithChildren } from 'react'\n\nconst baseIcon = cva('rounded-md p-2', {\n variants: {\n variant: {\n event: 'bg-[rgba(30,118,231,0.2)] text-[rgb(30,118,231)]',\n api: 'dark:bg-[rgba(192,255,17,0.2)] dark:text-[rgb(192,255,17)] bg-[rgb(231,255,166)] text-[rgb(94,125,11)]',\n noop: 'bg-[rgba(239,18,229,0.2)] text-[rgb(239,18,229)]',\n cron: 'bg-[rgba(241,105,15,0.2)] text-[rgb(241,105,15)]',\n },\n },\n})\n\nconst NodeIcon = ({ variant }: { variant: VariantProps<typeof baseIcon>['variant'] }) => {\n if (variant === 'cron') {\n return <CalendarClock className=\"w-5 h-5\" />\n } else if (variant === 'api') {\n return <Link2 className=\"w-5 h-5\" />\n } else if (variant === 'noop') {\n return <CircleOff className=\"w-5 h-5\" />\n } else if (variant === 'event') {\n return <Waypoints className=\"w-5 h-5\" />\n }\n return <div className={cn(baseIcon({ variant }))}>Icon</div>\n}\n\ntype Props = PropsWithChildren<{\n text: string\n variant: VariantProps<typeof baseIcon>['variant']\n className?: string\n}>\n\nexport const NodeHeader: React.FC<Props> = ({ text, variant, children, className }) => (\n <div className={cn('flex items-center gap-2 p-2', className)}>\n <div className={baseIcon({ variant })}>\n <NodeIcon variant={variant} />\n </div>\n <div className=\"flex flex-1 justify-between items-start gap-4\">\n <div className=\"flex flex-col\">\n <div className=\"text-sm font-semibold leading-[1.25] tracking-[-0.25px]\">{text}</div>\n </div>\n {children}\n </div>\n </div>\n)\n","import { cn } from '@motiadev/ui'\nimport type React from 'react'\nimport type { Feature } from '../../types/file'\n\ntype Props = {\n feature: Feature\n highlighted: boolean\n onClick: () => void\n onHover: () => void\n}\n\nexport const FeatureCard: React.FC<Props> = ({ feature, highlighted, onClick, onHover }) => {\n return (\n <div\n data-feature-id={feature.id}\n className={cn(\n 'p-4 rounded-lg bg-card shadow-sm cursor-pointer hover:bg-card/50 border-2 border-transparent',\n highlighted && 'border-2 border-accent-1000 bg-accent-100',\n )}\n onClick={onClick}\n onMouseEnter={onHover}\n >\n <div className=\"text-md font-semibold text-foreground leading-tight whitespace-nowrap mb-2\">{feature.title}</div>\n <div className=\"text-sm font-medium text-muted-foreground leading-tight\">{feature.description}</div>\n {feature.link && (\n <div className=\"text-sm font-medium text-muted-foreground leading-tight\">\n <a href={feature.link}>Learn more</a>\n </div>\n )}\n </div>\n )\n}\n","import { cn } from '@motiadev/ui'\nimport type { FC } from 'react'\nimport type { EventNodeData } from '../../types/flow'\n\ntype Props = { language: EventNodeData['language']; className?: string; size?: number; showLabel?: boolean }\n\nexport const LanguageIndicator: FC<Props> = ({ language, className, size = 18, showLabel = false }) => {\n const renderIcon = (language?: string) => {\n if (language === 'typescript') {\n return (\n <>\n {showLabel ? <>TypeScript</> : null}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 3V21H21V3H3ZM9 12H13.5V13.5H12V19.5H10.5V13.5H9V12ZM16.5 12H19.5V13.5H16.5V15H18C18.3975 15.0012 18.7783 15.1596 19.0593 15.4407C19.3404 15.7217 19.4988 16.1025 19.5 16.5V18C19.4988 18.3975 19.3404 18.7783 19.0593 19.0593C18.7783 19.3404 18.3975 19.4988 18 19.5H15V18H18V16.5H16.5C16.1025 16.4988 15.7217 16.3404 15.4407 16.0593C15.1596 15.7783 15.0012 15.3975 15 15V13.5C15.0012 13.1025 15.1596 12.7217 15.4407 12.4407C15.7217 12.1596 16.1025 12.0012 16.5 12Z\"\n fill=\"#0288D1\"\n />\n </svg>\n </>\n )\n }\n\n if (language === 'javascript') {\n return (\n <>\n {showLabel ? <>JavaScript</> : null}\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <g clipPath=\"url(#clip0_42_2938)\">\n <path\n d=\"M0 0H20V20H0V0ZM18.3617 15.23C18.2158 14.3175 17.6217 13.5508 15.8592 12.8358C15.2458 12.5483 14.5642 12.3483 14.3617 11.8858C14.2858 11.6108 14.2742 11.4608 14.3233 11.2983C14.4483 10.76 15.0858 10.5983 15.5858 10.7483C15.9108 10.8483 16.2108 11.0983 16.3992 11.4983C17.2608 10.935 17.2608 10.935 17.8617 10.5608C17.6367 10.2108 17.525 10.06 17.3733 9.91083C16.8483 9.32333 16.1492 9.02333 15.0117 9.04917L14.4242 9.12333C13.8608 9.26083 13.3242 9.56083 12.9992 9.96083C12.0492 11.0367 12.3233 12.9117 13.4733 13.6867C14.6108 14.5367 16.2742 14.7233 16.4867 15.5242C16.6867 16.4992 15.7617 16.8117 14.8483 16.6992C14.1725 16.5492 13.7983 16.2108 13.3858 15.5858L11.8608 16.4617C12.0358 16.8617 12.2358 17.0358 12.5358 17.3858C13.9858 18.8492 17.6108 18.7742 18.2617 16.5492C18.2858 16.4742 18.4617 15.9617 18.3233 15.1742L18.3617 15.23ZM10.8758 9.1925H9.0025C9.0025 10.8075 8.995 12.4125 8.995 14.03C8.995 15.0567 9.0475 15.9992 8.88 16.2892C8.605 16.8633 7.89667 16.79 7.575 16.6892C7.245 16.5258 7.0775 16.3008 6.88333 15.9767C6.83083 15.8892 6.79167 15.8133 6.7775 15.8133L5.25667 16.7508C5.51083 17.2758 5.88167 17.7275 6.36 18.015C7.0725 18.44 8.03 18.5775 9.0325 18.3525C9.685 18.1642 10.2475 17.7767 10.5417 17.1767C10.9667 16.4017 10.8767 15.4517 10.8725 14.3883C10.8825 12.6767 10.8725 10.9642 10.8725 9.23917L10.8758 9.1925Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_42_2938\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </>\n )\n }\n\n if (language === 'python') {\n return (\n <>\n {showLabel ? <>Python</> : null}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M9.86 2C9.10148 2 8.37403 2.30132 7.83767 2.83767C7.30132 3.37403 7 4.10148 7 4.86V6.54H11.29C11.68 6.54 12 7.11 12 7.5H4.86C4.10148 7.5 3.37403 7.80132 2.83767 8.33767C2.30132 8.87403 2 9.60148 2 10.36V14.141C2 14.8995 2.30132 15.627 2.83767 16.1633C3.37403 16.6997 4.10148 17.001 4.86 17.001H6.04V14.321C6.03868 13.9459 6.11143 13.5742 6.25407 13.2273C6.3967 12.8803 6.60642 12.565 6.8712 12.2993C7.13598 12.0336 7.45061 11.8227 7.79704 11.6789C8.14347 11.535 8.51489 11.461 8.89 11.461H14.14C15.72 11.461 17 10.19 17 8.61V4.86C17 4.10148 16.6987 3.37403 16.1623 2.83767C15.626 2.30132 14.8985 2 14.14 2H9.86ZM9.14 3.61C9.54 3.61 9.86 3.73 9.86 4.32C9.86 4.91 9.54 5.211 9.14 5.211C8.75 5.211 8.43 4.911 8.43 4.321C8.43 3.731 8.75 3.61 9.14 3.61Z\"\n fill=\"#0288D1\"\n />\n <path\n d=\"M17.959 7V9.68C17.9602 10.055 17.8873 10.4266 17.7446 10.7734C17.602 11.1202 17.3922 11.4355 17.1274 11.7011C16.8627 11.9667 16.5481 12.1774 16.2017 12.3212C15.8554 12.465 15.484 12.539 15.109 12.539H9.86C9.48489 12.5377 9.11321 12.6104 8.76628 12.7531C8.41935 12.8957 8.10399 13.1054 7.83828 13.3702C7.57257 13.635 7.36175 13.9496 7.2179 14.296C7.07405 14.6425 7 15.0139 7 15.389V19.139C7 19.8975 7.30132 20.625 7.83767 21.1613C8.37403 21.6977 9.10148 21.999 9.86 21.999H14.14C14.8983 21.999 15.6256 21.6978 16.162 21.1617C16.6983 20.6255 16.9997 19.8983 17 19.14V17.46H12.709C12.319 17.46 12 16.89 12 16.5H19.14C19.8985 16.5 20.626 16.1987 21.1623 15.6623C21.6987 15.126 22 14.3985 22 13.64V9.86C22 9.10148 21.6987 8.37403 21.1623 7.83767C20.626 7.30132 19.8985 7 19.14 7H17.959ZM8.32 11.513L8.316 11.517L8.354 11.513H8.32ZM14.86 18.789C15.25 18.789 15.57 19.089 15.57 19.679C15.57 19.7722 15.5516 19.8646 15.516 19.9507C15.4803 20.0368 15.428 20.1151 15.362 20.181C15.2961 20.247 15.2178 20.2993 15.1317 20.335C15.0456 20.3706 14.9532 20.389 14.86 20.389C14.46 20.389 14.14 20.269 14.14 19.679C14.14 19.089 14.46 18.789 14.86 18.789Z\"\n fill=\"#FDD835\"\n />\n </svg>\n </>\n )\n }\n\n if (language === 'go') {\n return (\n <>\n {showLabel ? <>Go</> : null}\n <svg viewBox=\"0 0 128 128\" width={size} height={size} className={className}>\n <path d=\"M108.7 64.4c-1.6-1.2-3.8-1.9-6-1.9-.1-3.6-.2-7.2-.2-10.7-.1-9.5-.1-19.3-2.6-28.6 6.5-2.5 6.2-7.6 5.9-9.2-.7-3.8-4-7.9-9-7.9-1.9 0-3.9.6-5.8 1.9C83.4 1.6 73 .5 62.5.5 53 1.3 46.4 2.8 41 5.4c-2.3 1.1-4.2 2.4-6 3.9-1.8-1.1-3.7-1.7-5.5-1.7-5.1 0-8.8 4.1-9.4 8.1-.6 4 1.6 7.3 6 8.9-2.2 8.9-1.5 18.1-.7 27 .3 3.7.6 7.6.7 11.4h-.5c-2.3 0-4.6.7-6.3 1.9-.7.5-2.1 2-2 3.3 0 .4.2.9.9 1.3.2 2.1 1.5 2.4 2.3 2.4 1.6 0 3.4-1.1 3.9-1.5.5-.3.9-.5 1.2-.6l.5-.2c-.1 2.2-.3 4.5-.5 7-.9 11.7-2 25 3.9 34.6 1.2 1.9 2.6 3.6 4.3 5.1l-.9.6c-2.7 1.9-6.7 4.7-4.3 8.5v.1c.4.4.6.5.9.5h.1c.3.5.9 1.6 2.4 1.6.6 0 1.3-.2 2-.6 1.1-.6 2.1-1.4 3-2.2 1.5-1.3 3-2.6 5-2.9l.6-.1.7.3c6.4 2.6 12.9 3.3 17.3 3.4h2.6c7.7 0 14.8-1.2 20.5-3.5 1.2-.5 2.4-1.1 3.5-1.7 1.2.5 2.3 1.7 3.4 3 1.4 1.6 2.8 3.2 4.5 3.2.8 0 1.6-.4 2.4-1.1 1.2-.7 1.8-1.7 1.8-2.9 0-2.6-2.9-5.7-5.2-7.2 2-2 3.6-4.2 4.9-6.7 5.9-11.8 5-26.2 4.2-39l.5.3c.5.4 2.3 1.5 3.9 1.5.8 0 2.1-.3 2.3-2.4.7-.4.8-.9.9-1.3 0-1.3-1.4-2.8-2.1-3.3zm-17.1-56c1.7-1.1 3.4-1.7 5.2-1.7 4.4 0 7.7 3.7 8.3 7.3.6 3.7-1.4 6.8-5.4 8.4 0-.2-.1-.3-.2-.5l-.6-2.1-.3-.8-.9-2.4c0-.1 0-.1-.1-.2 0 0 0-.1-.1-.1-.4-.7-.7-1.4-1.1-2l-.2-.3-1.2-1.8c-.1-.1-.2-.2-.3-.4-.4-.5-.8-1-1.3-1.5-.1-.2-.3-.3-.5-.5l-1.2-1.2c.1.1 0-.1-.1-.2-.2zM26.3 23.9c-4-1.5-6.1-4.5-5.5-8.1.6-3.7 4-7.5 8.7-7.5 1.7 0 3.3.5 4.9 1.4l-.1.1-.3.3c-.5.5-1 1-1.4 1.5l-.3.3c-.5.6-1 1.2-1.5 1.9l-.2.3c-.5.7-.9 1.3-1.3 2 0 0 0 .1-.1.1-.4.7-.8 1.5-1.1 2.3 0 .2-.1.4-.1.5-.3.8-.7 1.6-.9 2.4 0 .1 0 .1-.1.2l-.6 2-.1.3zm-.9 45.2c-.3.1-.8.3-1.4.7-1 .7-2.4 1.4-3.5 1.4-.6 0-1.4-.2-1.6-1.7.5-.2 1-.4 1.4-.9.1-.2.1-.4-.1-.5-.2-.1-.4-.1-.5.1-.3.3-.6.5-1.1.6h-.1c-.3-.2-.5-.4-.6-.7.1-.9 1.1-2.1 1.8-2.7 1.6-1.2 3.7-1.8 5.9-1.8h.6v2.9l-.1 1c-.1 1.4-.2 1.4-.7 1.6zm15.8 52l.1.1c-1.9.5-3.4 1.7-4.8 2.9-.9.8-1.8 1.6-2.9 2.1-.6.4-1.1.5-1.6.5-1 0-1.5-.8-1.7-1.2.1-.8.5-1.5 1-2.2.3-.4.6-.9.8-1.4.1-.2 0-.4-.2-.5-.2-.1-.4 0-.5.2-.2.4-.5.8-.7 1.3-.4.7-.9 1.4-1.1 2.2h-.1c-.1 0-.2-.1-.4-.3-2-3.2 1.4-5.5 4.2-7.5l.9-.6h.2l.2.1 1.2.9.4.3c.4.3.8.6 1.3.9l.5.3 1.3.8.6.3c.4.3.8.5 1.3.8zm52.3-5.3c2.1 1.4 5 4.4 5 6.7 0 .8-.4 1.5-1.1 2-.1-.3-.2-.6-.4-.9-.3-.9-.7-1.9-1.5-2.6-.1-.1-.4-.1-.5 0-.1.1-.1.4 0 .5.7.6 1 1.5 1.3 2.4l.4 1.1c-.6.5-1.2.8-1.8.8-1.4 0-2.6-1.5-3.9-3-1-1.1-2-2.3-3.1-3l.3-.2c.3-.1.5-.3.7-.5l1.3-.9.8-.6 1.4-1.1c.2-.2.4-.4.7-.6.2.1.3 0 .4-.1zm4.7-7.5c-1.2 2.5-3.4 5.7-7.1 8.5l-.2.1c-.3.3-.7.5-1.1.8l-1.1.7-.2.1-1.6.9-.7.4c-5.4 2.8-12.8 4.8-23.2 4.8h-2.6c-8.1-.3-14.3-2-18.9-4.2h-.1c-1.1-.5-2.1-1.1-3.1-1.7-4.6-2.9-7.1-6.1-8.3-8-5.8-9.4-4.8-22.5-3.8-34.1.2-3 .5-5.7.6-8.4l.1-1.8.1-.1v-.1l-.1-.5V63c-.1-4-.4-7.7-.7-11.5-.8-9-1.5-18.4.9-27.4.2-.8.4-1.6.7-2.3v-.1l.1-.3c.1-.4.3-.8.5-1.2.1-.3.2-.5.3-.7l.3-.8.4-.8.3-.6c.1-.3.3-.6.4-.8.1-.2.2-.4.3-.5.2-.4.5-.8.7-1.1.2-.3.4-.6.6-.8.1-.2.2-.3.4-.5l.6-.8c.1-.1.2-.2.3-.4l.9-1 .1-.1 1.2-1.2.2-.2c7-6 17-7.8 27.1-8.6 5.9 0 13.5.3 20 2.7 3.2 1.2 6 2.8 8.4 4.9.3.3.6.6.9.8l.9.9 1 1.2.6.7 1 1.4.5.7.9 1.5.4.8c.3.6.5 1.3.7 2 0 .1.1.2.1.4.2.6.4 1.2.6 1.7l.1.3c3 9.9 3.1 20.2 3.1 30.4 0 3.5 0 7.4.2 10.4v.6c0 .9.1 1.8.1 2.5v.1l.1 1.9c0 .6.1 1.3.1 2v.3c.9 12.6 1.9 27.1-4 38.8zm11.2-40c-.5-.2-.9-.3-1.2-.7-.1-.2-.3-.2-.5-.1s-.2.3-.1.5c.4.5.9.7 1.4.9-.2 1.5-1 1.7-1.6 1.7-1.1 0-2.5-.7-3.5-1.4-.4-.3-.7-.4-1-.5l-.2-2.4c0-.4 0-.8-.1-1.1 0-.6-.1-1.3-.1-2 2.1.1 4.1.7 5.6 1.8.7.5 1.8 1.8 1.7 2.6.1.3-.1.6-.4.7zM77.7 7.2c-3.8 0-7.5 1.6-9.9 4.1-2.2 2.4-3.3 5.4-3.1 8.8v.1C66 27.4 72 30 76.8 30c4.2 0 8.1-1.8 10.4-4.7 2-2.5 2.7-5.8 1.8-9.3-1.5-6.4-6.8-8.8-11.3-8.8zm8.9 17.5c-2.1 2.7-5.9 4.3-9.9 4.3-2.7 0-5.2-.7-7.2-2.1-2.2-1.6-3.6-3.9-4.1-6.9-.2-3.2.8-6 2.9-8.2 2.3-2.5 5.8-3.9 9.4-3.9 4.2 0 9.2 2.1 10.6 8.1.8 3.4.2 6.4-1.7 8.7zm-27-5.5c-.4-7.3-6.2-10.6-11.8-10.6-4.1 0-7.9 1.7-10.3 4.5-2.1 2.6-2.8 5.9-2.1 9.6 1.6 6.3 7 8.5 11.5 8.5 3.8 0 7.4-1.5 9.8-4 2.1-2.2 3.1-5 2.9-8zM47 30.5c-4.2 0-9.3-2.1-10.8-8-.7-3.5 0-6.6 2-9 2.2-2.7 5.8-4.3 9.7-4.3 7.7 0 10.8 5.4 11.1 10 .2 2.9-.7 5.5-2.6 7.5-2.3 2.4-5.8 3.8-9.4 3.8zm-5.4-13.9c-1.9 0-3.5 1.7-3.5 3.8 0 2.1 1.6 3.8 3.5 3.8s3.5-1.7 3.5-3.8c0-2.1-1.6-3.8-3.5-3.8zm1.6 5.7c-.5 0-.8-.4-.8-1 0-.5.4-1 .8-1 .5 0 .8.4.8 1 0 .5-.4 1-.8 1zm27.9-6.6c-1.9 0-3.5 1.7-3.5 3.8 0 2.1 1.6 3.8 3.5 3.8s3.5-1.7 3.5-3.8c0-2.1-1.5-3.8-3.5-3.8zm1.6 5.6c-.5 0-.8-.4-.8-1 0-.5.4-1 .8-1 .5 0 .8.4.8 1s-.3 1-.8 1zm-4.2 9c.1-.3.1-.7 0-1.1-1.1-4.1-10.4-3.5-10.4 1.3 0-.4-.1-.6-.1-.8 0 .3.1.6.1.8-1.5.2-2.8 1.2-3.6 2.7-.7 1.4-.8 2.9-.1 4.2.6 1.1 1.6 1.7 2.8 1.7-.4 2.1 0 4.6 1 6 .5.7 1.2 1.1 1.8 1.1.9 0 1.9-.7 2.8-1.8.6 1 1.5 1.7 2.7 1.9h.2c.2-.1.4-.2.6-.2.7-.2 1.4-.5 1.9-1.3v-.1c.3-1.4.1-2.9 0-4.3l-.1-1.2c.5.2 1 .3 1.5.3 1 0 1.8-.4 2.5-1.2.9-1 1.2-2 1-3-.1-2.3-2.4-4-4.6-5zm-5.9 13.2c-.9 1.1-1.7 1.7-2.4 1.7-.5 0-.9-.3-1.3-.7-.9-1.2-1.3-3.7-.9-5.6l.5-.1h.2l.6-.1h.1l1.2-.4.6-.2c.1 0 .1 0 .2-.1.2-.1.3-.1.5-.1.2-.1.4-.1.7-.2h.2l-.1 1.3c-.1 1.3-.2 2.9-.1 4.5zm5.2-3.3c.1 1.3.2 2.7 0 4-.3.6-.8.7-1.5 1l-.6.2c-1-.2-1.8-.8-2.2-1.8-.2-1.5-.1-3 .1-4.6l.1-1.5h.1c1.1 0 2.1.5 3.1.9l.7.3c.1.4.2.9.2 1.5zm4.1-2.7c-.6.7-1.3 1-2 1-.6 0-1.1-.2-1.7-.4-.3-.1-.6-.2-.9-.4-1.1-.4-2.2-.9-3.4-.9h-1.3l-.4.1c-.1 0-.2 0-.3.1-.2 0-.3.1-.5.2-.1 0-.2 0-.2.1l-.8.3c-.1.1-.3.1-.4.1l-.3.1-.3.1c-.2.1-.3.1-.5.1-.1 0-.2 0-.3.1l-.5.1h-.2l-.6.1c-1 0-1.7-.4-2.2-1.3-.6-1-.6-2.3.1-3.5.7-1.2 1.9-2.1 3.1-2.3 1.2 2.5 8.1 2.2 9.9-.2 2 .9 4.2 2.5 4.5 4.2.2.7-.1 1.5-.8 2.3zM58 29.4z\"></path>\n </svg>\n </>\n )\n }\n\n if (language === 'ruby') {\n return (\n <>\n {showLabel ? <>Ruby</> : null}\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <g clipPath=\"url(#clip0_42_2969)\">\n <path\n d=\"M16.7967 0.0691243C19.3242 0.506624 20.0408 2.23412 19.9875 4.04412L20 4.01829L18.8625 18.925L4.075 19.9383H4.08833C2.86083 19.8866 0.125 19.7741 0 15.9491L1.37083 13.4491L3.72 18.9375L4.13917 19.9141L6.47667 12.2941L6.45167 12.3L6.465 12.275L14.1775 14.7383L13.0142 10.2125L12.1892 6.96246L19.5392 6.48829L19.0267 6.06329L13.75 1.76162L16.7992 0.060791L16.7967 0.0691243ZM4.275 4.22746C7.2425 1.28329 11.0725 -0.456709 12.5433 1.02746C14.0117 2.50829 12.4558 6.11496 9.4825 9.05746C6.51333 12.0008 2.73 13.8358 1.2625 12.355C-0.209167 10.8741 1.3 7.17412 4.2725 4.22996L4.275 4.22746Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_42_2969\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </>\n )\n }\n\n if (language === 'php') {\n return (\n <>\n {showLabel ? <>PHP</> : null}\n <svg viewBox=\"0 0 128 128\" width={size} height={size} className={className}>\n <path d=\"M64 30.332C28.654 30.332 0 45.407 0 64s28.654 33.668 64 33.668c35.345 0 64-15.075 64-33.668S99.346 30.332 64 30.332zm-5.982 9.81h7.293v.003l-1.745 8.968h6.496c4.087 0 6.908.714 8.458 2.139 1.553 1.427 2.017 2.017 3.737 3.737 5.946 1.719 2.209-2.209 2.209-5.928 0-8.137zm-51.051 51.372c0-3.757-1.072-5.686-3.214-5.791a6.03 6.03 0 00-2.495.409c-.646.231-1.082.461-1.311.692v8.968c1.371.86 2.588 1.26 3.649 1.197 2.247-.148 3.371-1.971 3.371-5.475zm2.643.157c0 1.909-.447 3.493-1.348 4.753-1.003 1.427-2.394 2.16-4.172 2.201-1.34.043-2.721-.378-4.142-1.258v8.151l-2.298-.82V107.14c.377-.462.862-.859 1.451-1.196 1.368-.798 3.031-1.207 4.987-1.228l.033.032c1.788-.022 3.166.712 4.134 2.201.902 1.366 1.355 3.117 1.355 5.257zm14.049 5.349c0 2.56-.257 4.333-.77 5.318-.516.986-1.497 1.773-2.945 2.359-1.174.463-2.444.714-3.808.757l-.38-1.448c1.386-.188 2.362-.378 2.928-.566 1.114-.377 1.878-.955 2.298-1.73.337-.631.503-1.835.503-3.618v-.599a11.809 11.809 0 01-4.941 1.068c-1.132 0-2.13-.354-2.99-1.068-.966-.777-1.449-1.764-1.449-2.958v-9.566l2.299-.787v9.63c0 1.028.332 1.82.996 2.376s1.524.822 2.578.803c1.054-.022 2.183-.431 3.382-1.228v-11.234h2.299v12.491zm8.973 1.479a9.457 9.457 0 01-.757.032c-1.3 0-2.314-.309-3.038-.93-.722-.622-1.084-1.479-1.084-2.573v-9.054h-1.574v-1.446h1.574v-3.84l2.296-.817v4.657h2.583v1.446h-2.583v8.991c0 .862.231 1.474.694 1.83.397.295 1.029.463 1.889.506v1.198zm13.917-.189h-2.298v-8.873c0-.902-.211-1.68-.631-2.329-.485-.734-1.159-1.102-2.024-1.102-1.054 0-2.372.556-3.954 1.668v10.636h-2.298V97.637l2.298-.725v9.659c1.469-1.068 3.073-1.604 4.816-1.604 1.218 0 2.203.41 2.958 1.228.757.817 1.134 1.836 1.134 3.053v9.597h-.001zm12.218-7.157c0-1.444-.274-2.636-.82-3.579-.649-1.149-1.657-1.756-3.021-1.818-2.52.146-3.778 1.951-3.778 5.412 0 1.587.262 2.912.79 3.976.674 1.356 1.685 2.024 3.033 2.002 2.531-.02 3.796-2.017 3.796-5.993zm2.518.015c0 2.055-.526 3.765-1.575 5.131-1.154 1.528-2.749 2.296-4.783 2.296-2.017 0-3.589-.768-4.723-2.296-1.028-1.366-1.542-3.076-1.542-5.131 0-1.932.556-3.556 1.668-4.879 1.174-1.403 2.718-2.107 4.627-2.107 1.909 0 3.463.704 4.66 2.107 1.111 1.323 1.668 2.947 1.668 4.879zm13.178 7.142h-2.299v-9.376c0-1.028-.31-1.831-.928-2.409-.619-.576-1.443-.855-2.472-.833-1.091.021-2.13.378-3.116 1.069v11.549h-2.299v-11.833c1.323-.963 2.54-1.592 3.652-1.886 1.049-.274 1.974-.41 2.771-.41.545 0 1.059.053 1.542.158.903.209 1.637.596 2.203 1.164.631.629.946 1.384.946 2.267v10.54z\"></path>\n </svg>\n </>\n )\n }\n\n return\n }\n return (\n <div\n className={cn('text-muted-foreground', {\n 'text-sm flex items-center justify-center flex-row gap-2': showLabel,\n 'font-mono text-xs': !showLabel,\n })}\n >\n {renderIcon(language)}\n </div>\n )\n}\n","import { useThemeStore } from '@motiadev/ui'\nimport type React from 'react'\nimport { useRef, useState } from 'react'\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'\nimport { oneDark, oneLight } from 'react-syntax-highlighter/dist/esm/styles/prism'\nimport type { Feature } from '../../types/file'\nimport { FeatureCard } from './feature-card'\nimport { LanguageIndicator } from './language-indicator'\n\ntype CodeDisplayProps = {\n code: string\n language?: string\n features?: Feature[]\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 isHighlighted = (lines: string[], lineNumber: number) => {\n return lines.some((line) => {\n const [start, end] = line.split('-').map((num) => parseInt(num, 10))\n\n if (end !== undefined) {\n return lineNumber >= start && lineNumber <= end\n }\n\n return lineNumber == start\n })\n}\n\nconst getFirstLineNumber = (line: string) => {\n const [start] = line.split('-').map((num) => parseInt(num, 10))\n return start\n}\n\nexport const CodeDisplay: React.FC<CodeDisplayProps> = ({ code, language, features }) => {\n const theme = useThemeStore((state) => state.theme)\n const themeStyle = theme === 'dark' ? oneDark : oneLight\n const [highlightedLines, setHighlightedLines] = useState<string[]>([])\n const [selectedFeature, setSelectedFeature] = useState<Feature | null>(null)\n const ref = useRef<HTMLDivElement>(null)\n\n const handleFeatureClick = (feature: Feature) => {\n setSelectedFeature(feature)\n setHighlightedLines(feature.lines)\n const lineNumber = getFirstLineNumber(feature.lines[0])\n const line = ref.current?.querySelector(`[data-line-number=\"${lineNumber}\"]`)\n\n if (line) {\n line.scrollIntoView({ behavior: 'smooth', block: 'center' })\n }\n }\n\n return (\n <div className=\"flex flex-col h-full overflow-hidden\">\n <div className=\"flex items-center py-2 px-5 dark:bg-[#1e1e1e] gap-2 justify-center\">\n <div className=\"text-sm text-muted-foreground\">Read only</div>\n <div className=\"flex-1\" />\n <LanguageIndicator language={language} className=\"w-4 h-4\" size={16} showLabel />\n </div>\n <div className=\"flex flex-row h-[calc(100%-36px)]\">\n {features && features.length > 0 && (\n <div className=\"flex flex-col gap-2 p-2 bg-card overflow-y-auto min-w-[200px] w-[300px]\">\n {features.map((feature, index) => (\n <FeatureCard\n key={index}\n feature={feature}\n highlighted={selectedFeature === feature}\n onClick={() => handleFeatureClick(feature)}\n onHover={() => handleFeatureClick(feature)}\n />\n ))}\n </div>\n )}\n\n <div className=\"overflow-y-auto\" ref={ref}>\n <SyntaxHighlighter\n showLineNumbers\n language={language}\n style={themeStyle}\n codeTagProps={codeTagProps}\n customStyle={customStyle}\n wrapLines\n lineProps={(lineNumber) => {\n if (isHighlighted(highlightedLines, lineNumber)) {\n return {\n 'data-line-number': lineNumber,\n style: {\n borderLeft: '2px solid var(--accent-1000)',\n backgroundColor: 'rgb(from var(--accent-1000) r g b / 0.2)',\n },\n }\n }\n\n return {\n 'data-line-number': lineNumber,\n style: {\n borderLeft: '2px solid transparent',\n },\n }\n }}\n >\n {code}\n </SyntaxHighlighter>\n </div>\n </div>\n </div>\n )\n}\n","import { Sidebar } from '@motiadev/ui'\nimport { X } from 'lucide-react'\nimport type React from 'react'\nimport type { Feature } from '../../types/file'\nimport { CodeDisplay } from './code-display'\n\ntype NodeSidebarProps = {\n content: string\n features: Feature[]\n title: string\n subtitle?: string\n variant: 'event' | 'api' | 'noop' | 'cron'\n language?: string\n isOpen: boolean\n onClose: () => void\n}\n\nexport const NodeSidebar: React.FC<NodeSidebarProps> = ({\n content,\n title,\n subtitle,\n language,\n isOpen,\n onClose,\n features,\n}) => {\n if (!isOpen) return null\n\n return (\n <Sidebar\n title={title}\n subtitle={subtitle}\n initialWidth={900}\n contentClassName=\"p-0 h-full gap-0\"\n onClose={onClose}\n actions={[{ icon: <X />, onClick: onClose, label: 'Close' }]}\n >\n <CodeDisplay code={content} language={language} features={features} />\n </Sidebar>\n )\n}\n","import { Button, cn } from '@motiadev/ui'\nimport { ScanSearch } from 'lucide-react'\nimport type React from 'react'\nimport { type PropsWithChildren, useCallback, useEffect, useState } from 'react'\nimport { useHandlePositions } from '../../hooks/use-update-handle-positions'\nimport type { Feature } from '../../types/file'\nimport type { BaseNodeProps } from '../node-props'\nimport { BaseHandle } from './base-handle'\nimport { NodeHeader } from './node-header'\nimport { NodeSidebar } from './node-sidebar'\n\ntype Props = PropsWithChildren<{\n title: string\n subtitle?: string\n variant: 'event' | 'api' | 'noop' | 'cron'\n language?: string\n className?: string\n disableSourceHandle?: boolean\n disableTargetHandle?: boolean\n data: BaseNodeProps\n}>\n\nexport const BaseNode: React.FC<Props> = ({\n title,\n variant,\n children,\n disableSourceHandle,\n disableTargetHandle,\n language,\n subtitle,\n data,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n const { sourcePosition, targetPosition, toggleTargetPosition, toggleSourcePosition } = useHandlePositions(data)\n\n const [content, setContent] = useState<string | null>(null)\n const [features, setFeatures] = useState<Feature[]>([])\n\n const fetchContent = useCallback(async () => {\n const response = await fetch(`/__motia/step/${data.id}`)\n const responseData = await response.json()\n setContent(responseData.content)\n setFeatures(responseData.features)\n }, [data.id])\n\n useEffect(() => {\n if (data.id && isOpen) {\n fetchContent()\n }\n }, [data.id, isOpen, fetchContent])\n\n return (\n <div\n className={cn('p-1 rounded-lg max-w-[350px]', {\n 'bg-muted-foreground/20': isOpen,\n })}\n >\n <div\n className=\"rounded-lg dark:bg-[#101010] bg-background border-1 border-muted-foreground/30 border-solid\"\n data-testid={`node-${title?.toLowerCase().replace(/ /g, '-')}`}\n >\n <div className=\"group relative\">\n {/* Main node content */}\n <NodeHeader text={title} variant={variant} className=\"border-b-2 border-muted-foreground/10\">\n <div className=\"flex justify-end\">\n <Button\n data-testid={`open-code-preview-button-${title?.toLowerCase()}`}\n variant=\"ghost\"\n className=\"h-5 p-0.5\"\n onClick={() => setIsOpen(true)}\n >\n <ScanSearch className=\"w-4 h-4\" />\n </Button>\n </div>\n </NodeHeader>\n\n {subtitle && <div className=\"py-4 px-6 text-sm text-muted-foreground\">{subtitle}</div>}\n {children && (\n <div className=\"p-2\">\n <div\n className={cn('space-y-3 p-4 text-sm text-muted-foreground', {\n 'bg-card': variant !== 'noop',\n })}\n >\n {children}\n </div>\n </div>\n )}\n\n {/* Connection points */}\n {!disableTargetHandle && (\n <BaseHandle type=\"target\" position={targetPosition} onTogglePosition={toggleTargetPosition} />\n )}\n {!disableSourceHandle && (\n <BaseHandle type=\"source\" position={sourcePosition} onTogglePosition={toggleSourcePosition} />\n )}\n </div>\n </div>\n\n {content && (\n <NodeSidebar\n features={features}\n content={content}\n title={title}\n subtitle={subtitle}\n variant={variant}\n language={language}\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n />\n )}\n </div>\n )\n}\n","import type { PropsWithChildren } from 'react'\nimport { BaseNode } from './base-node/base-node'\nimport type { ApiNodeProps } from './node-props'\n\ntype Props = PropsWithChildren<ApiNodeProps>\n\nexport const ApiNode = ({ data, children }: Props) => {\n return (\n <BaseNode\n data={data}\n variant=\"api\"\n title={data.name}\n language={data.language}\n subtitle={data.description}\n disableSourceHandle={!data.emits?.length && !data.virtualEmits?.length}\n disableTargetHandle={!data.subscribes?.length && !data.virtualSubscribes?.length}\n >\n {data.webhookUrl && (\n <div className=\"flex gap-1 items-center text-muted-foreground\">\n <div className=\"font-mono\">{data.webhookUrl}</div>\n </div>\n )}\n {children}\n </BaseNode>\n )\n}\n","import type React from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { BaseNode } from './base-node/base-node'\nimport type { EventNodeProps } from './node-props'\n\nexport const EventNode: React.FC<PropsWithChildren<EventNodeProps>> = ({ data, children }) => {\n return (\n <BaseNode\n data={data}\n variant=\"event\"\n title={data.name}\n subtitle={data.description}\n language={data.language}\n disableSourceHandle={!data.emits?.length && !data.virtualEmits?.length}\n disableTargetHandle={!data.subscribes?.length && !data.virtualSubscribes?.length}\n >\n {children}\n </BaseNode>\n )\n}\n","import type React from 'react'\nimport type { PropsWithChildren } from 'react'\nimport { BaseNode } from './base-node/base-node'\nimport type { NoopNodeProps } from './node-props'\n\nexport const NoopNode: React.FC<PropsWithChildren<NoopNodeProps>> = ({ data, children }) => {\n return (\n <BaseNode\n data={data}\n variant=\"noop\"\n title={data.name}\n subtitle={data.description}\n disableSourceHandle={!data.virtualEmits.length}\n disableTargetHandle={!data.subscribes?.length}\n >\n {children}\n </BaseNode>\n )\n}\n"],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ import { ReactFlowProvider } from '@xyflow/react'
|
|
|
4
4
|
import { ExternalLink, Workflow } from 'lucide-react'
|
|
5
5
|
import { memo, useMemo } from 'react'
|
|
6
6
|
import { useShallow } from 'zustand/react/shallow'
|
|
7
|
-
import { motiaAnalytics } from '
|
|
8
|
-
import { useFlowStore } from '
|
|
9
|
-
import type { FlowConfigResponse, FlowResponse } from '
|
|
7
|
+
import { motiaAnalytics } from '../../lib/motia-analytics'
|
|
8
|
+
import { useFlowStore } from '../../stores/use-flow-store'
|
|
9
|
+
import type { FlowConfigResponse, FlowResponse } from '../../types/flow'
|
|
10
10
|
import { FlowView } from './flow-view'
|
|
11
11
|
|
|
12
12
|
export const FlowPage = memo(() => {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@motiadev/ui'
|
|
2
2
|
import { ChevronsUpDown, Workflow } from 'lucide-react'
|
|
3
3
|
import { useShallow } from 'zustand/react/shallow'
|
|
4
|
-
import { useFetchFlows } from '
|
|
5
|
-
import { motiaAnalytics } from '
|
|
6
|
-
import { useFlowStore } from '
|
|
4
|
+
import { useFetchFlows } from '../../hooks/use-fetch-flows'
|
|
5
|
+
import { motiaAnalytics } from '../../lib/motia-analytics'
|
|
6
|
+
import { useFlowStore } from '../../stores/use-flow-store'
|
|
7
7
|
|
|
8
8
|
export const FlowTabMenuItem = () => {
|
|
9
9
|
useFetchFlows()
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from '@xyflow/react'
|
|
10
10
|
import type React from 'react'
|
|
11
11
|
import { useCallback, useState } from 'react'
|
|
12
|
-
import type { EdgeData, FlowConfigResponse, FlowResponse, NodeData } from '
|
|
12
|
+
import type { EdgeData, FlowConfigResponse, FlowResponse, NodeData } from '../../types/flow'
|
|
13
13
|
import { BaseEdge } from './base-edge'
|
|
14
14
|
import { FlowLoader } from './flow-loader'
|
|
15
15
|
import { useGetFlowState } from './hooks/use-get-flow-state'
|
|
@@ -2,7 +2,7 @@ import { type Edge, type Node, useEdgesState, useNodesState } from '@xyflow/reac
|
|
|
2
2
|
import isEqual from 'fast-deep-equal'
|
|
3
3
|
import type React from 'react'
|
|
4
4
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
5
|
-
import type { EdgeData, FlowConfigResponse, FlowResponse, NodeConfig, NodeData } from '
|
|
5
|
+
import type { EdgeData, FlowConfigResponse, FlowResponse, NodeConfig, NodeData } from '../../../types/flow'
|
|
6
6
|
import { ApiFlowNode } from '../nodes/api-flow-node'
|
|
7
7
|
import { CronFlowNode } from '../nodes/cron-flow-node'
|
|
8
8
|
import { EventFlowNode } from '../nodes/event-flow-node'
|
|
@@ -3,7 +3,7 @@ import dagre from 'dagre'
|
|
|
3
3
|
import isEqual from 'fast-deep-equal'
|
|
4
4
|
import type React from 'react'
|
|
5
5
|
import { useEffect, useRef } from 'react'
|
|
6
|
-
import type { EdgeData, NodeData } from '
|
|
6
|
+
import type { EdgeData, NodeData } from '../../types/flow'
|
|
7
7
|
|
|
8
8
|
const organizeNodes = (nodes: Node<NodeData>[], edges: Edge<EdgeData>[]): Node<NodeData>[] => {
|
|
9
9
|
const dagreGraph = new dagre.graphlib.Graph({ directed: true, compound: false, multigraph: false })
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ApiNode } from '
|
|
2
|
-
import type { ApiNodeProps } from '
|
|
1
|
+
import { ApiNode } from '../../../publicComponents/api-node'
|
|
2
|
+
import type { ApiNodeProps } from '../../../publicComponents/node-props'
|
|
3
3
|
|
|
4
4
|
export const ApiFlowNode = ({ data }: ApiNodeProps) => {
|
|
5
5
|
return <ApiNode data={data} />
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CronNode } from '
|
|
2
|
-
import type { CronNodeProps } from '
|
|
1
|
+
import { CronNode } from '../../../publicComponents/cron-node'
|
|
2
|
+
import type { CronNodeProps } from '../../../publicComponents/node-props'
|
|
3
3
|
|
|
4
4
|
export const CronFlowNode = ({ data }: CronNodeProps) => {
|
|
5
5
|
return <CronNode data={data} />
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventNode } from '
|
|
2
|
-
import type { EventNodeProps } from '
|
|
1
|
+
import { EventNode } from '../../../publicComponents/event-node'
|
|
2
|
+
import type { EventNodeProps } from '../../../publicComponents/node-props'
|
|
3
3
|
|
|
4
4
|
export const EventFlowNode = ({ data }: EventNodeProps) => {
|
|
5
5
|
return <EventNode data={data} />
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { NoopNodeProps } from '
|
|
2
|
-
import { NoopNode } from '
|
|
1
|
+
import type { NoopNodeProps } from '../../../publicComponents/node-props'
|
|
2
|
+
import { NoopNode } from '../../../publicComponents/noop-node'
|
|
3
3
|
|
|
4
4
|
export const NoopFlowNode = ({ data }: NoopNodeProps) => {
|
|
5
5
|
return <NoopNode data={data} />
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@motiadev/ui'
|
|
2
2
|
import { Rocket } from 'lucide-react'
|
|
3
3
|
import { useState } from 'react'
|
|
4
|
-
import { motiaAnalytics } from '
|
|
4
|
+
import { motiaAnalytics } from '../../lib/motia-analytics'
|
|
5
5
|
|
|
6
6
|
export const DeployButton = () => {
|
|
7
7
|
const [isOpen, setIsOpen] = useState(false)
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { useThemeStore } from '@motiadev/ui'
|
|
2
2
|
import type React from 'react'
|
|
3
3
|
import { memo, useEffect } from 'react'
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import
|
|
4
|
+
import { useMotiaConfigStore } from '../../stores/use-motia-config-store'
|
|
5
|
+
// @ts-expect-error: PNG asset types
|
|
6
|
+
import motiaLogoDark from '../assets/motia-dark.png'
|
|
7
|
+
// @ts-expect-error: PNG asset types
|
|
8
|
+
import motiaLogoLight from '../assets/motia-light.png'
|
|
7
9
|
import { Tutorial } from '../tutorial/tutorial'
|
|
8
10
|
import { TutorialButton } from '../tutorial/tutorial-button'
|
|
9
11
|
import { ThemeToggle } from '../ui/theme-toggle'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PropsWithChildren } from 'react'
|
|
2
2
|
import { memo } from 'react'
|
|
3
|
-
import { useAnalytics } from '
|
|
3
|
+
import { useAnalytics } from '../lib/motia-analytics'
|
|
4
4
|
|
|
5
5
|
export const RootMotia: React.FC<PropsWithChildren> = memo(({ children }) => {
|
|
6
6
|
useAnalytics()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Button } from '@motiadev/ui'
|
|
2
2
|
import { Book } from 'lucide-react'
|
|
3
3
|
import type { FC } from 'react'
|
|
4
|
-
import { motiaAnalytics } from '
|
|
4
|
+
import { motiaAnalytics } from '../../lib/motia-analytics'
|
|
5
5
|
import { Tooltip } from '../ui/tooltip'
|
|
6
6
|
import { useTutorial } from './hooks/use-tutorial'
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useStreamGroup } from '@motiadev/stream-client-react'
|
|
2
2
|
import { useEffect } from 'react'
|
|
3
|
-
import { useFlowStore } from '
|
|
4
|
-
import type { FlowResponse } from '
|
|
3
|
+
import { useFlowStore } from '../stores/use-flow-store'
|
|
4
|
+
import type { FlowResponse } from '../types/flow'
|
|
5
5
|
|
|
6
6
|
const streamGroupArgs = { streamName: '__motia.flows', groupId: 'default' }
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { plugins } from 'virtual:motia-plugins'
|
|
2
2
|
import { DynamicIcon, dynamicIconImports, type IconName } from 'lucide-react/dynamic'
|
|
3
3
|
import { memo } from 'react'
|
|
4
|
-
import { type AppTab, TabLocation, useAppTabsStore } from '
|
|
4
|
+
import { type AppTab, TabLocation, useAppTabsStore } from '../stores/use-app-tabs-store'
|
|
5
5
|
import { isValidTabLocation } from './utils'
|
|
6
6
|
|
|
7
7
|
export const registerPluginTabs = (addTab: (position: TabLocation, tab: AppTab) => void): void => {
|
|
@@ -2,8 +2,8 @@ import { Button, cn } from '@motiadev/ui'
|
|
|
2
2
|
import { ScanSearch } from 'lucide-react'
|
|
3
3
|
import type React from 'react'
|
|
4
4
|
import { type PropsWithChildren, useCallback, useEffect, useState } from 'react'
|
|
5
|
-
import { useHandlePositions } from '
|
|
6
|
-
import type { Feature } from '
|
|
5
|
+
import { useHandlePositions } from '../../hooks/use-update-handle-positions'
|
|
6
|
+
import type { Feature } from '../../types/file'
|
|
7
7
|
import type { BaseNodeProps } from '../node-props'
|
|
8
8
|
import { BaseHandle } from './base-handle'
|
|
9
9
|
import { NodeHeader } from './node-header'
|
|
@@ -3,7 +3,7 @@ import type React from 'react'
|
|
|
3
3
|
import { useRef, useState } from 'react'
|
|
4
4
|
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'
|
|
5
5
|
import { oneDark, oneLight } from 'react-syntax-highlighter/dist/esm/styles/prism'
|
|
6
|
-
import type { Feature } from '
|
|
6
|
+
import type { Feature } from '../../types/file'
|
|
7
7
|
import { FeatureCard } from './feature-card'
|
|
8
8
|
import { LanguageIndicator } from './language-indicator'
|
|
9
9
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react'
|
|
2
|
-
import type { EventNodeData } from '
|
|
2
|
+
import type { EventNodeData } from '../../types/flow'
|
|
3
3
|
|
|
4
4
|
const toTopic = (emit: string | { topic: string; label?: string; conditional?: boolean }) =>
|
|
5
5
|
typeof emit === 'string' ? emit : emit.topic
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { cn } from '@motiadev/ui'
|
|
2
2
|
import type { FC } from 'react'
|
|
3
|
-
import type { EventNodeData } from '
|
|
3
|
+
import type { EventNodeData } from '../../types/flow'
|
|
4
4
|
|
|
5
5
|
type Props = { language: EventNodeData['language']; className?: string; size?: number; showLabel?: boolean }
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Sidebar } from '@motiadev/ui'
|
|
2
2
|
import { X } from 'lucide-react'
|
|
3
3
|
import type React from 'react'
|
|
4
|
-
import type { Feature } from '
|
|
4
|
+
import type { Feature } from '../../types/file'
|
|
5
5
|
import { CodeDisplay } from './code-display'
|
|
6
6
|
|
|
7
7
|
type NodeSidebarProps = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { create } from 'zustand'
|
|
2
2
|
import { createJSONStorage, persist } from 'zustand/middleware'
|
|
3
|
-
import { motiaAnalytics } from '
|
|
3
|
+
import { motiaAnalytics } from '../lib/motia-analytics'
|
|
4
4
|
|
|
5
5
|
interface TabsState {
|
|
6
6
|
tab: Record<string, string>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const config = require('../../eslint.config.js')
|
|
2
|
+
|
|
3
|
+
module.exports = [
|
|
4
|
+
// ignore src files
|
|
5
|
+
{ ignores: ['**/src/**/*'] },
|
|
6
|
+
...config.map((cfg) => {
|
|
7
|
+
if (!cfg.files) {
|
|
8
|
+
return cfg
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return {
|
|
12
|
+
...cfg,
|
|
13
|
+
languageOptions: {
|
|
14
|
+
...cfg.languageOptions,
|
|
15
|
+
parserOptions: {
|
|
16
|
+
project: null,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
files: ['middleware.ts', 'tailwind.config.ts', 'vite.config.ts'],
|
|
20
|
+
}
|
|
21
|
+
}),
|
|
22
|
+
]
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@motiadev/workbench",
|
|
3
3
|
"description": "A web-based interface for building and managing Motia workflows.",
|
|
4
|
-
"version": "0.13.0-beta.162-
|
|
4
|
+
"version": "0.13.0-beta.162-315243",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
"vite": "^7.2.4",
|
|
52
52
|
"zod": "^4.1.13",
|
|
53
53
|
"zustand": "^5.0.8",
|
|
54
|
-
"@motiadev/core": "0.13.0-beta.162-
|
|
55
|
-
"@motiadev/ui": "0.13.0-beta.162-
|
|
56
|
-
"@motiadev/stream-client-react": "0.13.0-beta.162-
|
|
54
|
+
"@motiadev/core": "0.13.0-beta.162-315243",
|
|
55
|
+
"@motiadev/ui": "0.13.0-beta.162-315243",
|
|
56
|
+
"@motiadev/stream-client-react": "0.13.0-beta.162-315243"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@bosh-code/tsdown-plugin-inject-css": "^2.0.0",
|