diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/feature-icon.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/feature-icon.tsx
index e9f59cd38e..54987e6720 100644
--- a/web/app/components/header/account-setting/model-provider-page/model-selector/feature-icon.tsx
+++ b/web/app/components/header/account-setting/model-provider-page/model-selector/feature-icon.tsx
@@ -6,10 +6,13 @@ import {
ModelFeatureTextEnum,
} from '../declarations'
import {
+ AudioSupportIcon,
+ DocumentSupportIcon,
// MagicBox,
MagicEyes,
// MagicWand,
// Robot,
+ VideoSupportIcon,
} from '@/app/components/base/icons/src/vender/solid/mediaAndDevices'
import Tooltip from '@/app/components/base/tooltip'
@@ -73,6 +76,48 @@ const FeatureIcon: FC
= ({
)
}
+ if (feature === ModelFeatureEnum.document) {
+ return (
+
+
+
+
+
+
+
+ )
+ }
+
+ if (feature === ModelFeatureEnum.audio) {
+ return (
+
+
+
+ )
+ }
+
+ if (feature === ModelFeatureEnum.video) {
+ return (
+
+
+
+
+
+
+
+ )
+ }
+
return null
}
diff --git a/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx b/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx
index db1866693d..09c47f670b 100644
--- a/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx
+++ b/web/app/components/header/account-setting/model-provider-page/model-selector/model-trigger.tsx
@@ -34,18 +34,20 @@ const ModelTrigger: FC = ({
return (
-
+
+
+
-
+
{verified &&
}
diff --git a/web/app/components/tools/types.ts b/web/app/components/tools/types.ts
index 19432f4217..32c468cde8 100644
--- a/web/app/components/tools/types.ts
+++ b/web/app/components/tools/types.ts
@@ -49,6 +49,7 @@ export type Collection = {
allow_delete: boolean
labels: string[]
plugin_id?: string
+ letter?: string
}
export type ToolParameter = {
diff --git a/web/app/components/workflow/block-selector/tool/tool-list-flat-view/list.tsx b/web/app/components/workflow/block-selector/tool/tool-list-flat-view/list.tsx
index 8e07eb5650..04622cabff 100644
--- a/web/app/components/workflow/block-selector/tool/tool-list-flat-view/list.tsx
+++ b/web/app/components/workflow/block-selector/tool/tool-list-flat-view/list.tsx
@@ -6,31 +6,53 @@ import type { BlockEnum } from '../../../types'
import type { ToolDefaultValue } from '../../types'
import Tool from '../tool'
import { ViewType } from '../../view-type-select'
+import { useMemo } from 'react'
type Props = {
payload: ToolWithProvider[]
isShowLetterIndex: boolean
hasSearchText: boolean
onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void
+ letters: string[]
+ toolRefs: any
}
const ToolViewFlatView: FC
= ({
+ letters,
payload,
isShowLetterIndex,
hasSearchText,
onSelect,
+ toolRefs,
}) => {
+ const firstLetterToolIds = useMemo(() => {
+ const res: Record = {}
+ letters.forEach((letter) => {
+ const firstToolId = payload.find(tool => tool.letter === letter)?.id
+ if (firstToolId)
+ res[firstToolId] = letter
+ })
+ return res
+ }, [payload, letters])
return (
{payload.map(tool => (
-
+ ref={(el) => {
+ const letter = firstLetterToolIds[tool.id]
+ if (letter)
+ toolRefs.current[letter] = el
+ }}
+ >
+
+
))}
)
diff --git a/web/app/components/workflow/block-selector/tools.tsx b/web/app/components/workflow/block-selector/tools.tsx
index c19eecf88b..060f6dfa2c 100644
--- a/web/app/components/workflow/block-selector/tools.tsx
+++ b/web/app/components/workflow/block-selector/tools.tsx
@@ -71,7 +71,12 @@ const Blocks = ({
const result: ToolWithProvider[] = []
letters.forEach((letter) => {
Object.keys(withLetterAndGroupViewToolsData[letter]).forEach((groupName) => {
- result.push(...withLetterAndGroupViewToolsData[letter][groupName])
+ result.push(...withLetterAndGroupViewToolsData[letter][groupName].map((item) => {
+ return {
+ ...item,
+ letter,
+ }
+ }))
})
})
@@ -95,6 +100,8 @@ const Blocks = ({
{!!tools.length && (
isFlatView ? (