index.tsx 1.3 KB

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