|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import {
- useCallback,
- useRef,
- } from 'react'
- import Link from 'next/link'
- import { useTranslation } from 'react-i18next'
- import { RiArrowRightUpLine } from '@remixicon/react'
- import { BlockEnum } from '../types'
- import type {
- OnSelectBlock,
- ToolWithProvider,
- } from '../types'
- import type { ToolDefaultValue } from './types'
- import Tools from './tools'
- import { ViewType } from './view-type-select'
- import cn from '@/utils/classnames'
- import type { ListRef } from '@/app/components/workflow/block-selector/market-place-plugin/list'
- import { getMarketplaceUrl } from '@/utils/var'
- import { useGlobalPublicStore } from '@/context/global-public-context'
-
- type AllToolsProps = {
- className?: string
- toolContentClassName?: string
- searchText: string
- onSelect: OnSelectBlock
- dataSources: ToolWithProvider[]
- }
-
- const DataSources = ({
- className,
- toolContentClassName,
- searchText,
- onSelect,
- dataSources,
- }: AllToolsProps) => {
- const { t } = useTranslation()
- const pluginRef = useRef<ListRef>(null)
- const wrapElemRef = useRef<HTMLDivElement>(null)
- const handleSelect = useCallback((_: any, toolDefaultValue: ToolDefaultValue) => {
- onSelect(BlockEnum.DataSource, toolDefaultValue && {
- plugin_id: toolDefaultValue?.provider_id,
- provider_type: toolDefaultValue?.provider_type,
- provider_name: toolDefaultValue?.provider_name,
- datasource_name: toolDefaultValue?.tool_name,
- datasource_label: toolDefaultValue?.tool_label,
- title: toolDefaultValue?.title,
- output_schema: toolDefaultValue?.output_schema,
- })
- }, [onSelect])
- const { enable_marketplace } = useGlobalPublicStore(s => s.systemFeatures)
-
- return (
- <div className={cn(className)}>
- <div
- ref={wrapElemRef}
- className='max-h-[464px] overflow-y-auto'
- onScroll={pluginRef.current?.handleScroll}
- >
- <Tools
- className={toolContentClassName}
- tools={dataSources}
- onSelect={handleSelect as OnSelectBlock}
- viewType={ViewType.flat}
- hasSearchText={!!searchText}
- canNotSelectMultiple
- />
- {
- enable_marketplace && (
- <Link
- className='system-sm-medium sticky bottom-0 z-10 flex h-8 cursor-pointer items-center rounded-b-lg border-[0.5px] border-t border-components-panel-border bg-components-panel-bg-blur px-4 py-1 text-text-accent-light-mode-only shadow-lg'
- href={getMarketplaceUrl('')}
- target='_blank'
- >
- <span>{t('plugin.findMoreInMarketplace')}</span>
- <RiArrowRightUpLine className='ml-0.5 h-3 w-3' />
- </Link>
- )
- }
- </div>
- </div>
- )
- }
-
- export default DataSources
|