public static void RemoveUSSFromAsset(BuilderPaneWindow paneWindow, BuilderSelection selection, VisualElement clickedElement) { // We need to save all files before we remove the USS references. // If we don't do this, changes in the removed USS will be lost. var shouldContinue = s_CheckForUnsavedChanges(paneWindow); if (!shouldContinue) { return; } var selectedElements = selection.selection; if (!selectedElements.Contains(clickedElement)) { // Removed just clicked element var clickedStyleSheetIndex = (int)clickedElement.GetProperty(BuilderConstants.ElementLinkedStyleSheetIndexVEPropertyName); BuilderAssetUtilities.RemoveStyleSheetFromAsset(paneWindow.document, clickedStyleSheetIndex); } else { // Removed selected elements var styleSheetIndexes = selectedElements.Where(x => BuilderSharedStyles.IsStyleSheetElement(x) && string.IsNullOrEmpty(x.GetProperty(BuilderConstants.ExplorerItemLinkedUXMLFileName) as string)) .Select(x => (int)x.GetProperty(BuilderConstants.ElementLinkedStyleSheetIndexVEPropertyName)) .OrderByDescending(x => x) .ToArray(); BuilderAssetUtilities.RemoveStyleSheetsFromAsset(paneWindow.document, styleSheetIndexes); } paneWindow.OnEnableAfterAllSerialization(); }