insertRule method

int insertRule(
  1. String text,
  2. int index
)

Implementation

int insertRule(String text, int index) {
  final Document document = _sheetBinding.document;
  final double windowWidth = document.viewport?.viewportSize.width ?? document.preloadViewportSize?.width ?? -1;
  final double windowHeight = document.viewport?.viewportSize.height ?? document.preloadViewportSize?.height ?? -1;
  final bool isDarkMode = ownerView.rootController.isDarkMode ?? false;

  final List<CSSRule> rules = CSSParser(text, href: _sheetBinding.sheet.href)
      .parseRules(windowWidth: windowWidth, windowHeight: windowHeight, isDarkMode: isDarkMode);

  if (index < 0 || index > _rule.cssRules.length) {
    throw RangeError.index(index, _rule.cssRules, 'index');
  }

  final List<String> layerPrefix = _rule.layerNamePath;
  for (final r in rules) {
    r.parentStyleSheet = _sheetBinding.sheet;
    _prefixLayerForInsertedRule(r, layerPrefix);
  }

  _rule.cssRules.insertAll(index, rules);
  cssRules.refresh();
  _sheetBinding.scheduleStyleUpdateForCSSOM();
  return index;
}