index.tsx 1.1 KB

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