in kotlin-styled-next/src/jsMain/kotlin/styled/sheets/CSSOMSheet.kt [55:88]
fun removeGroups(groupIds: List<GroupId>) {
for (groupId in groupIds) {
if (groupId in scheduledGroups) {
scheduledGroups.remove(groupId)
continue
}
val removedGroup = groups.remove(groupId) ?: throw IllegalArgumentException("Group $groupId does not exist")
if (!removedGroup.rulesRange.isEmpty()) {
val sheet = removedGroup.element.cssSheet
removedGroup.rulesRange.reversed().forEach {
sheet.deleteRule(it)
}
if (sheet.cssRules.length == 0) {
removedGroup.element.removeAndCleanUp()
}
}
val rulesShift = removedGroup.rulesRange.last - removedGroup.rulesRange.first + 1
for (entry in groups) {
val (otherGroupId, otherGroup) = entry
if (otherGroup.element == removedGroup.element && otherGroupId > groupId) {
val otherRange = otherGroup.rulesRange
val shiftedRange = (otherRange.first - rulesShift)..(otherRange.last - rulesShift)
entry.setValue(otherGroup.copy(rulesRange = shiftedRange))
}
}
}
compressSheets()
}