fun removeGroups()

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()
    }