index.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. 'use client'
  2. import type { FC } from 'react'
  3. import React from 'react'
  4. import ModelConfig from './model-config'
  5. import DataConfig from './data-config'
  6. import PluginConfig from './plugins-config'
  7. import type { ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations'
  8. import type { DataSet } from '@/models/datasets'
  9. export type IConfigProps = {
  10. className?: string
  11. readonly?: boolean
  12. modelId: string
  13. providerName: ProviderEnum
  14. onModelChange?: (modelId: string, providerName: ProviderEnum) => void
  15. plugins: Record<string, boolean>
  16. onPluginChange?: (key: string, value: boolean) => void
  17. dataSets: DataSet[]
  18. onDataSetsChange?: (contexts: DataSet[]) => void
  19. }
  20. const Config: FC<IConfigProps> = ({
  21. className,
  22. readonly,
  23. modelId,
  24. providerName,
  25. onModelChange,
  26. plugins,
  27. onPluginChange,
  28. dataSets,
  29. onDataSetsChange,
  30. }) => {
  31. return (
  32. <div className={className}>
  33. <ModelConfig
  34. readonly={readonly}
  35. modelId={modelId}
  36. providerName={providerName}
  37. onChange={onModelChange}
  38. />
  39. <PluginConfig
  40. readonly={readonly}
  41. config={plugins}
  42. onChange={onPluginChange}
  43. />
  44. {(!readonly || (readonly && dataSets.length > 0)) && (
  45. <DataConfig
  46. readonly={readonly}
  47. dataSets={dataSets}
  48. onChange={onDataSetsChange}
  49. />
  50. )}
  51. </div>
  52. )
  53. }
  54. export default React.memo(Config)