mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-03-29 13:51:37 +00:00
61 lines
3.4 KiB
C#
61 lines
3.4 KiB
C#
using AIStudio.Tools.PluginSystem.Assistants.DataModel;
|
|
using AIStudio.Tools.PluginSystem.Assistants.DataModel.Layout;
|
|
|
|
namespace AIStudio.Tools.PluginSystem.Assistants;
|
|
|
|
public class AssistantComponentFactory
|
|
{
|
|
private static readonly ILogger<AssistantComponentFactory> LOGGER = Program.LOGGER_FACTORY.CreateLogger<AssistantComponentFactory>();
|
|
|
|
public static IAssistantComponent CreateComponent(
|
|
AssistantComponentType type,
|
|
Dictionary<string, object> props,
|
|
List<IAssistantComponent> children)
|
|
{
|
|
switch (type)
|
|
{
|
|
case AssistantComponentType.FORM:
|
|
return new AssistantForm { Props = props, Children = children };
|
|
case AssistantComponentType.TEXT_AREA:
|
|
return new AssistantTextArea { Props = props, Children = children };
|
|
case AssistantComponentType.BUTTON:
|
|
return new AssistantButton { Props = props, Children = children};
|
|
case AssistantComponentType.BUTTON_GROUP:
|
|
return new AssistantButtonGroup { Props = props, Children = children };
|
|
case AssistantComponentType.DROPDOWN:
|
|
return new AssistantDropdown { Props = props, Children = children };
|
|
case AssistantComponentType.PROVIDER_SELECTION:
|
|
return new AssistantProviderSelection { Props = props, Children = children };
|
|
case AssistantComponentType.PROFILE_SELECTION:
|
|
return new AssistantProfileSelection { Props = props, Children = children };
|
|
case AssistantComponentType.SWITCH:
|
|
return new AssistantSwitch { Props = props, Children = children };
|
|
case AssistantComponentType.HEADING:
|
|
return new AssistantHeading { Props = props, Children = children };
|
|
case AssistantComponentType.TEXT:
|
|
return new AssistantText { Props = props, Children = children };
|
|
case AssistantComponentType.LIST:
|
|
return new AssistantList { Props = props, Children = children };
|
|
case AssistantComponentType.WEB_CONTENT_READER:
|
|
return new AssistantWebContentReader { Props = props, Children = children };
|
|
case AssistantComponentType.FILE_CONTENT_READER:
|
|
return new AssistantFileContentReader { Props = props, Children = children };
|
|
case AssistantComponentType.IMAGE:
|
|
return new AssistantImage { Props = props, Children = children };
|
|
case AssistantComponentType.COLOR_PICKER:
|
|
return new AssistantColorPicker { Props = props, Children = children };
|
|
case AssistantComponentType.LAYOUT_ITEM:
|
|
return new AssistantItem { Props = props, Children = children };
|
|
case AssistantComponentType.LAYOUT_GRID:
|
|
return new AssistantGrid { Props = props, Children = children };
|
|
case AssistantComponentType.LAYOUT_PAPER:
|
|
return new AssistantPaper { Props = props, Children = children };
|
|
case AssistantComponentType.LAYOUT_STACK:
|
|
return new AssistantStack { Props = props, Children = children };
|
|
default:
|
|
LOGGER.LogError($"Unknown assistant component type!\n{type} is not a supported assistant component type");
|
|
throw new Exception($"Unknown assistant component type: {type}");
|
|
}
|
|
}
|
|
}
|