| 
														 | 
														 | 
														 | 
														 | 
														 | 
													
													
												
													
														 | 
														 | 
														import { | 
														 | 
														 | 
														import { | 
													
													
												
													
														 | 
														 | 
														  memo, | 
														 | 
														 | 
														  memo, | 
													
													
												
													
														 | 
														 | 
														  useCallback, | 
														 | 
														 | 
														  useCallback, | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														  useMemo, | 
													
													
												
													
														 | 
														 | 
														  useState, | 
														 | 
														 | 
														  useState, | 
													
													
												
													
														 | 
														 | 
														} from 'react' | 
														 | 
														 | 
														} from 'react' | 
													
													
												
													
														 | 
														 | 
														import { useTranslation } from 'react-i18next' | 
														 | 
														 | 
														import { useTranslation } from 'react-i18next' | 
													
													
												
											
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														 | 
													
													
												
													
														 | 
														 | 
														} from '@remixicon/react' | 
														 | 
														 | 
														} from '@remixicon/react' | 
													
													
												
													
														 | 
														 | 
														import type { BlockEnum, OnSelectBlock } from '../types' | 
														 | 
														 | 
														import type { BlockEnum, OnSelectBlock } from '../types' | 
													
													
												
													
														 | 
														 | 
														import Tabs from './tabs' | 
														 | 
														 | 
														import Tabs from './tabs' | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														import { TabsEnum } from './types' | 
													
													
												
													
														 | 
														 | 
														import { | 
														 | 
														 | 
														import { | 
													
													
												
													
														 | 
														 | 
														  PortalToFollowElem, | 
														 | 
														 | 
														  PortalToFollowElem, | 
													
													
												
													
														 | 
														 | 
														  PortalToFollowElemContent, | 
														 | 
														 | 
														  PortalToFollowElemContent, | 
													
													
												
											
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														 | 
													
													
												
													
														 | 
														 | 
														  const handleOpenChange = useCallback((newOpen: boolean) => { | 
														 | 
														 | 
														  const handleOpenChange = useCallback((newOpen: boolean) => { | 
													
													
												
													
														 | 
														 | 
														    setLocalOpen(newOpen) | 
														 | 
														 | 
														    setLocalOpen(newOpen) | 
													
													
												
													
														 | 
														 | 
														
  | 
														 | 
														 | 
														
  | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														    if (!newOpen) | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														      setSearchText('') | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														
  | 
													
													
												
													
														 | 
														 | 
														    if (onOpenChange) | 
														 | 
														 | 
														    if (onOpenChange) | 
													
													
												
													
														 | 
														 | 
														      onOpenChange(newOpen) | 
														 | 
														 | 
														      onOpenChange(newOpen) | 
													
													
												
													
														 | 
														 | 
														  }, [onOpenChange]) | 
														 | 
														 | 
														  }, [onOpenChange]) | 
													
													
												
											
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														 | 
													
													
												
													
														 | 
														 | 
														    onSelect(type, toolDefaultValue) | 
														 | 
														 | 
														    onSelect(type, toolDefaultValue) | 
													
													
												
													
														 | 
														 | 
														  }, [handleOpenChange, onSelect]) | 
														 | 
														 | 
														  }, [handleOpenChange, onSelect]) | 
													
													
												
													
														 | 
														 | 
														
  | 
														 | 
														 | 
														
  | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														  const [activeTab, setActiveTab] = useState(noBlocks ? TabsEnum.Tools : TabsEnum.Blocks) | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														  const handleActiveTabChange = useCallback((newActiveTab: TabsEnum) => { | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														    setActiveTab(newActiveTab) | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														  }, []) | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														  const searchPlaceholder = useMemo(() => { | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														    if (activeTab === TabsEnum.Blocks) | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														      return t('workflow.tabs.searchBlock') | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														
  | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														    if (activeTab === TabsEnum.Tools) | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														      return t('workflow.tabs.searchTool') | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														    return '' | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														  }, [activeTab, t]) | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														
  | 
													
													
												
													
														 | 
														 | 
														  return ( | 
														 | 
														 | 
														  return ( | 
													
													
												
													
														 | 
														 | 
														    <PortalToFollowElem | 
														 | 
														 | 
														    <PortalToFollowElem | 
													
													
												
													
														 | 
														 | 
														      placement={placement} | 
														 | 
														 | 
														      placement={placement} | 
													
													
												
											
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														 | 
													
													
												
													
														 | 
														 | 
														              <input | 
														 | 
														 | 
														              <input | 
													
													
												
													
														 | 
														 | 
														                value={searchText} | 
														 | 
														 | 
														                value={searchText} | 
													
													
												
													
														 | 
														 | 
														                className='grow px-0.5 py-[7px] text-[13px] text-gray-700 bg-transparent appearance-none outline-none caret-primary-600 placeholder:text-gray-400' | 
														 | 
														 | 
														                className='grow px-0.5 py-[7px] text-[13px] text-gray-700 bg-transparent appearance-none outline-none caret-primary-600 placeholder:text-gray-400' | 
													
													
												
													
														 | 
														 | 
														                placeholder={t('workflow.tabs.searchBlock') || ''} | 
														 | 
														 | 
														 | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														                placeholder={searchPlaceholder} | 
													
													
												
													
														 | 
														 | 
														                onChange={e => setSearchText(e.target.value)} | 
														 | 
														 | 
														                onChange={e => setSearchText(e.target.value)} | 
													
													
												
													
														 | 
														 | 
														                autoFocus | 
														 | 
														 | 
														                autoFocus | 
													
													
												
													
														 | 
														 | 
														              /> | 
														 | 
														 | 
														              /> | 
													
													
												
											
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														 | 
													
													
												
													
														 | 
														 | 
														            </div> | 
														 | 
														 | 
														            </div> | 
													
													
												
													
														 | 
														 | 
														          </div> | 
														 | 
														 | 
														          </div> | 
													
													
												
													
														 | 
														 | 
														          <Tabs | 
														 | 
														 | 
														          <Tabs | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														            activeTab={activeTab} | 
													
													
												
													
														 | 
														 | 
														 | 
														 | 
														 | 
														            onActiveTabChange={handleActiveTabChange} | 
													
													
												
													
														 | 
														 | 
														            onSelect={handleSelect} | 
														 | 
														 | 
														            onSelect={handleSelect} | 
													
													
												
													
														 | 
														 | 
														            searchText={searchText} | 
														 | 
														 | 
														            searchText={searchText} | 
													
													
												
													
														 | 
														 | 
														            availableBlocksTypes={availableBlocksTypes} | 
														 | 
														 | 
														            availableBlocksTypes={availableBlocksTypes} |