private void InitializeLibraries() { factories.Clear(); // FIXME: only retrieve from current package and its dependencies var allLibraries = Session.AllPackages .GroupBy(p => p.Package.IsSystem) .ToDictionary(p => p.Key, p => p.SelectMany(x => x.Assets).OfType <UILibraryViewModel>()); // system libraries foreach (var sysLib in allLibraries[true]) { var asset = sysLib.Asset; factories.AddRange(asset.PublicUIElements.Select(x => new UIElementFromSystemLibrary(ServiceProvider, sysLib, x.Key))); } PanelFactories = factories.Where(f => f.Category == "Panel").OrderBy(f => f.Name).ToList(); // user libraries foreach (var userLib in allLibraries[false]) { RemoveLibrary(userLib); AddLibrary(userLib); } }