namespace zero.Spaces; public static class FlavorOptionsExtensions { public static void AddSpace(this FlavorOptions options) where T : SpaceType, new() where TEntity : Space, new() { options.Add(new T()); } public static void AddSpaceList(this FlavorOptions options, string alias, string name, string description, string icon, string editorAlias = null) where T : Space, new() { options.Add(new SpaceType(typeof(T)) { Alias = alias, EditorAlias = editorAlias.Or(alias), View = SpaceView.List, Construct = _ => new T(), Name = name, Description = description, Icon = icon }); } public static void AddSpaceEditor(this FlavorOptions options, string alias, string name, string description, string icon, string editorAlias = null) where T : Space, new() { options.Add(new SpaceType(typeof(T)) { Alias = alias, EditorAlias = editorAlias.Or(alias), View = SpaceView.Editor, Construct = _ => new T(), Name = name, Description = description, Icon = icon }); } public static void AddSpaceCustom(this FlavorOptions options, string componentPath, string alias, string name, string description, string icon, string editorAlias = null) where T : Space, new() { options.Add(new SpaceType(typeof(T)) { Alias = alias, EditorAlias = editorAlias.Or(alias), View = SpaceView.Custom, Construct = _ => new T(), ComponentPath = componentPath, Name = name, Description = description, Icon = icon }); } }